//***************************************************
// Чтение свойств НПС из архива (для Г1)
//***************************************************
//0x006A31E0 protected: virtual void __thiscall oCNpc::Unarchive(class zCArchiver &)
static void __fastcall Npc_Unarchive(oCNpc* _this, void* vt, zCArchiver& ar);
static CInvoke <void(__thiscall*)(oCNpc*, zCArchiver&)> pNpc_Unarchive(0x006A31E0, Npc_Unarchive, IVK_AUTO);
static void __fastcall Npc_Unarchive(oCNpc* _this, void* vt, zCArchiver& ar)
{
// Сначала вызываем оригинальную функцию
pNpc_Unarchive(_this, ar);
// Если _this - это мёртвый гоблин
if (_this && _this->guild == NPC_GIL_GOBBO && _this->attribute[NPC_ATR_HITPOINTS] == 0)
{
// берём указатель на модель гоблина
zCModel* pModel = _this->GetModel();
// если указателя нет, то выходим
if (!pModel) return;
// получаем указатель на узел правой руки
zCModelNodeInst* pNodeInst = pModel->SearchNode(NPC_NODE_RIGHTHAND);
// если указателя нет, то выходим
if (!pNodeInst) return;
// иначе, стираем визуал узла
pModel->SetNodeVisual(pNodeInst, NULL, FALSE);
}
}