void CGodMode::DemiGodDeath() { if (!gEnv->bMultiplayer && eGMS_DemiGodMode == GetCurrentState()) { CActor* player = static_cast<CActor*>(g_pGame->GetIGameFramework()->GetClientActor()); player->GetEntity()->GetAI()->Event(AIEVENT_DISABLE, NULL); player->SetHealth(0); player->CreateScriptEvent("kill", 0); m_respawningFromDemiGodDeath = true; m_elapsedTime = 0.0; } }
//------------------------------------------------------------------------ void SSleepEffect::Activate(EntityId targetId, EntityId ownerId, EntityId weaponId, const char *effect, const char *defaultEffect) { CActor *pActor = (CActor *)gEnv->pGame->GetIGameFramework()->GetIActorSystem()->GetActor(targetId); if (pActor) { IAISystem *pAISystem=gEnv->pAISystem; if (pAISystem) { if(IEntity* pEntity=pActor->GetEntity()) { if(IAIObject* pAIObj=pEntity->GetAI()) { IAISignalExtraData *pEData = pAISystem->CreateSignalExtraData(); // no leak - this will be deleted inside SendAnonymousSignal // try to retrieve the shooter position if (IEntity* pOwnerEntity = gEnv->pEntitySystem->GetEntity(ownerId)) pEData->point = pOwnerEntity->GetWorldPos(); else pEData->point = pEntity->GetWorldPos(); IAIActor* pAIActor = pAIObj->CastToIAIActor(); if(pAIActor) pAIActor->SetSignal(1,"TRANQUILIZED",0,pEData); } } } pActor->CreateScriptEvent("sleep", 0); pActor->GetGameObject()->SetPhysicalizationProfile(eAP_Sleep); // no dropping weapons for AI if(pActor->IsPlayer()) pActor->DropItem(pActor->GetCurrentItemId(), 1.0f, false); pActor->SetSleepTimer(12.5f); } }