//------------------------------------------------------------------------ void CParachute::Close(bool drop/*=false*/) { // not used any more return; CryLog("Closing Parachute.."); if (m_actorId) { IEntity* pEnt = m_pEntitySystem->GetEntity(m_actorId); if (pEnt && pEnt->GetParent()->GetId() == m_canvasId) { pEnt->DetachThis(); } m_actorId = 0; } CActor* pActor = GetOwnerActor(); if (pActor) { pActor->LinkToVehicle(0); if (IsOpened()) { if (drop) pActor->DropItem(GetEntity()->GetId(), 1.0f, false); } } m_isOpened = false; }
//------------------------------------------------------------------------ int CScriptBind_Actor::DropItem(IFunctionHandler *pH, ScriptHandle itemId) { CActor *pActor = GetActor(pH); if (!pActor) return pH->EndFunction(); float impulse=1.0f; bool bydeath=false; if (pH->GetParamCount()>1 && pH->GetParamType(2)==svtNumber) pH->GetParam(2, impulse); if (pH->GetParamCount()>2 && pH->GetParamType(3)==svtNumber||pH->GetParamType(2)==svtBool) pH->GetParam(3, bydeath); pActor->DropItem((EntityId)itemId.n, impulse, true, bydeath); return pH->EndFunction(); }
//------------------------------------------------------------------------ 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); } }