bool Controller::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_Fade("FADE"); static CParsedMsg::CToken s_cTok_Flicker("FLICKER"); static CParsedMsg::CToken s_cTok_Off("OFF"); if(cMsg.GetArg(0) == s_cTok_Fade) { HandleFadeCommand(cMsg); } else if(cMsg.GetArg(0) == s_cTok_Flicker) { HandleFlickerCommand(cMsg); } else if(cMsg.GetArg(0) == s_cTok_Off) { HandleOffCommand(cMsg); } else if(!GameBaseLite::OnTrigger(hSender, cMsg)) { ShowTriggerError(cMsg); return false; } else { return GameBaseLite::OnTrigger( hSender, cMsg ); } return true; }
void Spawner::HandleSpawnFromMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { LTVector vPos; LTRotation rRot; const char *pName = ""; ObjArray<HOBJECT, 1> objArray; g_pLTServer->FindNamedObjects( const_cast<char*>(crParsedMsg.GetArg(1).c_str()), objArray ); // Spawn the target object from the position of the specified object... if( objArray.NumObjects() == 1 ) { g_pLTServer->GetObjectPos( objArray.GetObject(0), &vPos ); g_pLTServer->GetObjectRotation( objArray.GetObject(0), &rRot ); } else { g_pLTServer->GetObjectPos( m_hObject, &vPos ); g_pLTServer->GetObjectRotation( m_hObject, &rRot ); } // Rename the object if desired if( crParsedMsg.GetArgCount() > 2 ) { pName = crParsedMsg.GetArg(2); } // Spawn using a target template... Spawn( m_sTarget.c_str(), pName, vPos, rRot ); }
void GameBase::HandleMoveMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { // Make sure we have all the arguments. if( crParsedMsg.GetArgCount( ) < 4 ) return; static CParsedMsg::CToken s_cTok_SetPos( "SETPOS" ); bool bSetPos = ( crParsedMsg.GetArg( 0 ) == s_cTok_SetPos ); // Get the position they specified. This is in WorldEdit space. LTVector vPos; vPos.x = ( float )atof( crParsedMsg.GetArg( 1 )); vPos.y = ( float )atof( crParsedMsg.GetArg( 2 )); vPos.z = ( float )atof( crParsedMsg.GetArg( 3 )); // Transform the position to runtime space. LTVector vOffset; g_pLTServer->GetSourceWorldOffset(vOffset); vPos -= vOffset; if( bSetPos ) g_pLTServer->SetObjectPos( m_hObject, vPos ); else g_pLTServer->Physics()->MoveObject( m_hObject, vPos, 0 ); }
void Controller::HandleFlickerCommand(const CParsedMsg &cMsg) { const char *pMin, *pMax, *pMessage; if (cMsg.GetArgCount() < 4) { ShowTriggerError(cMsg); return; } pMin = cMsg.GetArg(1); pMax = cMsg.GetArg(2); pMessage = cMsg.GetArg(3); if(strlen(pMessage) > MAX_FLICKERMSG_LEN) { g_pLTServer->CPrint("Controller: Warning, msg '%s' greater than %d", pMessage, MAX_FLICKERMSG_LEN); } m_fIntervalMin = (float)atof(pMin); m_fIntervalMax = (float)atof(pMax); SAFE_STRCPY(m_FlickerMsg, pMessage); m_FlickerCounter = FLICKER_FOREVER; if(cMsg.GetArgCount() >= 5) { m_FlickerCounter = (uint32)atof(cMsg.GetArg(4)); } m_fNextFlickerTime = g_pLTServer->GetTime() + GetRandom(m_fIntervalMin, m_fIntervalMax); m_State = CState_Flicker; Activate(); }
void CDestructibleModel::HandleHiddenMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { static CParsedMsg::CToken s_cTok_1("1"); static CParsedMsg::CToken s_cTok_True("TRUE"); static CParsedMsg::CToken s_cTok_0("0"); static CParsedMsg::CToken s_cTok_False("FALSE"); // Game Base will take care of the solid and visible flags for us... if( (crParsedMsg.GetArg(1) == s_cTok_1) || (crParsedMsg.GetArg(1) == s_cTok_True) ) { m_DestructibleModelFlags = ( m_DestructibleModelFlags & ~kDestructibleModelFlag_SaveCanDamage ) | ( GetCanDamage() ? kDestructibleModelFlag_SaveCanDamage : 0 ); m_DestructibleModelFlags = ( m_DestructibleModelFlags & ~kDestructibleModelFlag_SaveNeverDestroy ) | ( GetNeverDestroy() ? kDestructibleModelFlag_SaveNeverDestroy : 0 ); SetCanDamage(false); SetNeverDestroy(true); } else if((crParsedMsg.GetArg(1) == s_cTok_0) || (crParsedMsg.GetArg(1) == s_cTok_False) ) { SetCanDamage(( m_DestructibleModelFlags & kDestructibleModelFlag_SaveCanDamage ) != 0 ); SetNeverDestroy(( m_DestructibleModelFlags & kDestructibleModelFlag_SaveNeverDestroy ) != 0 ); } }
bool PlayerVehicle::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_Activate( "ACTIVATE" ); static CParsedMsg::CToken s_cTok_Lock( "LOCK" ); static CParsedMsg::CToken s_cTok_UnLock( "UNLOCK" ); if (cMsg.GetArg(0) == s_cTok_Activate) { // Vehicle already being ridden. if( m_bRidden ) return true; DoActivate(hSender); // Let Prop have a shot at it so activate commands are processed... if (!m_bLocked) { return Prop::OnTrigger(hSender, cMsg); } } else if( cMsg.GetArg(0) == s_cTok_Lock ) { m_bLocked = true; } else if( cMsg.GetArg(0) == s_cTok_UnLock ) { m_bLocked = false; } else { return Prop::OnTrigger(hSender, cMsg); } return true; }
void GunMount::HandleFireMsg( HOBJECT hSender, const CParsedMsg &cMsg ) { static CParsedMsg::CToken s_cTok_Fire( "FIRE" ); static CParsedMsg::CToken s_cTok_BeginFire( "BEGINFIRE" ); static CParsedMsg::CToken s_cTok_EndFire( "ENDFIRE" ); if (cMsg.GetArg(0) == s_cTok_Fire) { // Check if they specified how many rounds to fire. if( cMsg.GetArgCount( ) > 1 ) { m_nRoundsToFire = atoi( cMsg.GetArg( 1 )); } else { m_nRoundsToFire = 1; } StartPreFiring( ); return; } else if (cMsg.GetArg(0) == s_cTok_BeginFire) { m_nRoundsToFire = -1; StartPreFiring( ); return; } else if (cMsg.GetArg(0) == s_cTok_EndFire) { StartPostFiring( ); } }
void GameBase::HandleCastShadowMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { EEngineLOD eShadowLOD; g_pLTServer->GetObjectShadowLOD( m_hObject, eShadowLOD ); if( eShadowLOD != eEngineLOD_Never ) { m_eOriginalShadowLOD = eShadowLOD; } if ((crParsedMsg.GetArg(1) == s_cTok_1) || (crParsedMsg.GetArg(1) == s_cTok_True)) { eShadowLOD = m_eOriginalShadowLOD; } else { if ((crParsedMsg.GetArg(1) == s_cTok_0) || (crParsedMsg.GetArg(1) == s_cTok_False)) { eShadowLOD = eEngineLOD_Never; } } g_pLTServer->SetObjectShadowLOD( m_hObject, eShadowLOD ); }
void Camera::HandleFOVMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { if( crParsedMsg.GetArgCount() >= 3 ) { m_fFovY = (float)atof( crParsedMsg.GetArg(1) ); m_fFovAspectScale = (float)atof( crParsedMsg.GetArg(2) ); float fT = 0.0f; if( crParsedMsg.GetArgCount() >= 4 ) { fT = (float)atof( crParsedMsg.GetArg(3) ); } CAutoMessage cMsg; cMsg.Writeuint8(MID_SFX_MESSAGE); cMsg.Writeuint8(SFX_CAMERA_ID); cMsg.WriteObject(m_hObject); cMsg.Writeuint8(CAMFX_FOV); cMsg.Writefloat(m_fFovY); cMsg.Writefloat(m_fFovAspectScale); cMsg.Writefloat(fT); // Send the message to all connected clients g_pLTServer->SendToClient(cMsg.Read(), NULL, MESSAGE_GUARANTEED); // Update the SpecialFX Message... CreateSFXMsg(); } }
bool Fire::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_On("ON"); static CParsedMsg::CToken s_cTok_Off("OFF"); static CParsedMsg::CToken s_cTok_Remove("REMOVE"); if ((cMsg.GetArg(0) == s_cTok_On) && !m_bOn) { g_pCommonLT->SetObjectFlags(m_hObject, OFT_User, USRFLG_VISIBLE, FLAGMASK_ALL); m_bOn = LTTRUE; } else if ((cMsg.GetArg(0) == s_cTok_Off) && m_bOn) { g_pCommonLT->SetObjectFlags(m_hObject, OFT_User, 0, FLAGMASK_ALL); m_bOn = LTFALSE; } else if (cMsg.GetArg(0) == s_cTok_Remove) { g_pLTServer->RemoveObject(m_hObject); } else return GameBase::OnTrigger(hSender, cMsg); return true; }
bool SecurityCamera::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_Off(s_szOff); static CParsedMsg::CToken s_cTok_Reset(s_szReset); static CParsedMsg::CToken s_cTok_Gadget(s_szGadget); static CParsedMsg::CToken s_cTok_Tripped(s_szTripped); if (cMsg.GetArg(0) == s_cTok_Off) { SetState(eStateOff); } else if (cMsg.GetArg(0) == s_cTok_Reset) { SetState(eStateReset); } else if (cMsg.GetArg(0) == s_cTok_Gadget) { HandleGadgetMsg(cMsg); } else if (cMsg.GetArg(0) == s_cTok_Tripped) { m_bTripped = LTTRUE; SetLightColor(eRed); SetState(eStateOff); } else return CScanner::OnTrigger(hSender, cMsg); return true; }
bool SpecialFX::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_Trigger(SFX_MSG_TRIGGER); static CParsedMsg::CToken s_cTok_On(SFX_MSG_ON); static CParsedMsg::CToken s_cTok_Off(SFX_MSG_OFF); if( cMsg.GetArg(0) == s_cTok_Trigger ) { m_bIsOn ? TurnOFF() : TurnON() ; } else if( cMsg.GetArg(0) == s_cTok_On ) { TurnON(); } else if( cMsg.GetArg(0) == s_cTok_Off ) { TurnOFF(); } else { return GameBase::OnTrigger(hSender, cMsg); } return true; }
bool TextureFX::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_SetVar("SETVAR"); bool bUpdate = false; if ((cMsg.GetArg(0) == s_cTok_SetVar) && (cMsg.GetArgCount() >= 4)) { uint32 nStage = (uint32)atoi(cMsg.GetArg(1)) - 1; uint32 nVar = (uint32)atoi(cMsg.GetArg(2)) - 1; float fVal = (float)atof(cMsg.GetArg(3)); if((nStage < NUM_STAGES) && (nVar < NUM_VARS)) { //save the variable m_Stages[nStage].m_fVars[nVar] = fVal; //mark it as changes m_Stages[nStage].m_nChanged |= (1 << nVar); //we need to update the clients bUpdate = true; } } else return GameBase::OnTrigger(hSender, cMsg); // Tell the clients about the change if(bUpdate) UpdateClients(); return true; }
void GameBase::HandleSolidMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { uint32 dwFlags; g_pCommonLT->GetObjectFlags(m_hObject, OFT_Flags, dwFlags); if( !m_dwOriginalFlags ) { m_dwOriginalFlags = dwFlags; } if ((crParsedMsg.GetArg(1) == s_cTok_1) || (crParsedMsg.GetArg(1) == s_cTok_True)) { dwFlags |= FLAG_SOLID; if (m_dwOriginalFlags & FLAG_RAYHIT) { dwFlags |= FLAG_RAYHIT; } } else { if ((crParsedMsg.GetArg(1) == s_cTok_0) || (crParsedMsg.GetArg(1) == s_cTok_False)) { dwFlags &= ~FLAG_SOLID; dwFlags &= ~FLAG_RAYHIT; } } g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, dwFlags, FLAGMASK_ALL); }
bool CAIState::HandleCommand(const CParsedMsg &cMsg) { // If the command starts with the type name if this state, // handle it. if( cMsg.GetArg(0) == s_aszStateTypes[GetStateType()] ) { // First token specifies the state. Skip it. char szTempBuffer[256]; char* szName; char* szValue; for(uint8 iToken=1; iToken < cMsg.GetArgCount(); ++iToken) { SAFE_STRCPY(szTempBuffer, cMsg.GetArg(iToken)); szName = strtok(szTempBuffer, "="); szValue = strtok(LTNULL, ""); // Check for legal NAME=VALUE pair. AIASSERT(szName && szValue, LTNULL, "CAIState::HandleCommand: Name or Value is NULL."); if ( !(szName && szValue) ) { g_pLTServer->CPrint("Garbage name/value pair = %s", cMsg.GetArg(iToken).c_str()); continue; } HandleNameValuePair(szName, szValue); } return true; } return false; }
void GameBase::HandleHiddenMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { uint32 dwFlags; g_pCommonLT->GetObjectFlags(m_hObject, OFT_Flags, dwFlags); if( !m_dwOriginalFlags ) { m_dwOriginalFlags = dwFlags; } EEngineLOD eShadowLOD; g_pLTServer->GetObjectShadowLOD( m_hObject, eShadowLOD ); if( eShadowLOD != eEngineLOD_Never ) { m_eOriginalShadowLOD = eShadowLOD; } if ((crParsedMsg.GetArg(1) == s_cTok_1) || (crParsedMsg.GetArg(1) == s_cTok_True)) { dwFlags &= ~FLAG_SOLID; dwFlags &= ~FLAG_RAYHIT; dwFlags &= ~FLAG_VISIBLE; eShadowLOD = eEngineLOD_Never; } else { if ((crParsedMsg.GetArg(1) == s_cTok_0) || (crParsedMsg.GetArg(1) == s_cTok_False)) { // Not all objects should have solid set to true. // (e.g. AIs should never set solid true) if( m_dwOriginalFlags & FLAG_SOLID ) { dwFlags |= FLAG_SOLID; } if( m_dwOriginalFlags & FLAG_VISIBLE ) { dwFlags |= FLAG_VISIBLE; } if (m_dwOriginalFlags & FLAG_RAYHIT) { dwFlags |= FLAG_RAYHIT; } eShadowLOD = m_eOriginalShadowLOD; } } g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, dwFlags, FLAGMASK_ALL); g_pLTServer->SetObjectShadowLOD( m_hObject, eShadowLOD ); }
void LightBase::HandleColorMsg( HOBJECT /*hSender*/, const CParsedMsg &crParsedMsg ) { if(crParsedMsg.GetArgCount() == 4) { //read in our new dimensions and apply them m_vColor.Init( LTCLAMP((float)atof(crParsedMsg.GetArg(1)), 0.0f, 255.0f) / 255.0f, LTCLAMP((float)atof(crParsedMsg.GetArg(2)), 0.0f, 255.0f) / 255.0f, LTCLAMP((float)atof(crParsedMsg.GetArg(3)), 0.0f, 255.0f) / 255.0f); g_pLTServer->SetObjectColor(m_hObject, m_vColor.x, m_vColor.y, m_vColor.z, 1.0f); } }
void LightBase::HandleDimsMsg( HOBJECT /*hSender*/, const CParsedMsg &crParsedMsg ) { if(crParsedMsg.GetArgCount() == 4) { //read in our new dimensions and apply them m_vDirectionalDims.Init( LTMAX(0.0f, (float)atof(crParsedMsg.GetArg(1))), LTMAX(0.0f, (float)atof(crParsedMsg.GetArg(2))), LTMAX(0.0f, (float)atof(crParsedMsg.GetArg(3)))); g_pLTServer->SetLightDirectionalDims(m_hObject, m_vDirectionalDims * LTVector(0.5f, 0.5f, 1.0f)); } }
void GunMount::HandleVisibleMsg( HOBJECT hSender, const CParsedMsg &cMsg ) { static CParsedMsg::CToken s_cTok_1("1"); static CParsedMsg::CToken s_cTok_True("TRUE"); static CParsedMsg::CToken s_cTok_Hidden( "HIDDEN" ); m_bVisible = (( cMsg.GetArg(1) == s_cTok_1) || (cMsg.GetArg(1) == s_cTok_True)); if( cMsg.GetArg( 0 ) == s_cTok_Hidden ) m_bVisible = !m_bVisible; SetVisible( m_bVisible ); }
bool Prop::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_Anim("ANIM"); static CParsedMsg::CToken s_cTok_AnimLoop("ANIMLOOP"); static CParsedMsg::CToken s_cTok_Activate("ACTIVATE"); static CParsedMsg::CToken s_cTok_Remove("REMOVE"); static CParsedMsg::CToken s_cTok_Destroy("DESTROY"); uint32 dwFlags; g_pCommonLT->GetObjectFlags(m_hObject, OFT_User, dwFlags); if ( cMsg.GetArg(0) == s_cTok_Anim ) { g_pLTServer->SetModelLooping(m_hObject, LTFALSE); g_pLTServer->SetModelAnimation(m_hObject, g_pLTServer->GetAnimIndex(m_hObject, ( char* )( char const* )cMsg.GetArg( 1 ))); g_pLTServer->ResetModelAnimation(m_hObject); SetNextUpdate(UPDATE_NEXT_FRAME); // Needed to get string keys } else if ( cMsg.GetArg(0) == s_cTok_AnimLoop ) { g_pLTServer->SetModelLooping(m_hObject, LTTRUE); g_pLTServer->SetModelAnimation(m_hObject, g_pLTServer->GetAnimIndex(m_hObject, ( char* )( char const* )cMsg.GetArg( 1 ))); g_pLTServer->ResetModelAnimation(m_hObject); SetNextUpdate(UPDATE_NEXT_FRAME); // Needed to get string keys } else if ( cMsg.GetArg(0) == s_cTok_Activate ) { if(dwFlags & USRFLG_CAN_ACTIVATE) { SendActivateMessage( ); HandleTouch(hSender); } } else if( cMsg.GetArg(0) == s_cTok_Remove ) { // Remove us... g_pLTServer->RemoveObject( m_hObject ); } else if( cMsg.GetArg(0) == s_cTok_Destroy ) { m_damage.HandleDestruction( LTNULL ); HandleDestroy( LTNULL ); } else { return GameBase::OnTrigger(hSender, cMsg); } return true; }
bool PickupItem::OnTrigger(HOBJECT hSender, const CParsedMsg &cMsg) { static CParsedMsg::CToken s_cTok_Activate("ACTIVATE"); static CParsedMsg::CToken s_cTok_Team( "TEAM" ); if( cMsg.GetArg(0) == s_cTok_Activate ) { // Can't activate before we've respawned. if( m_bWasPickedUp ) return true; // If the object is dead, it can't pick up stuff... if (IsPlayer(hSender)) { CPlayerObj* pPlayer = (CPlayerObj*)g_pLTServer->HandleToObject(hSender); if (!pPlayer || pPlayer->IsDead()) return true; SetPlayerObj(hSender); ObjectTouch(hSender); } else { SetPlayerObj(LTNULL); return true; } } else if (cMsg.GetArg(0) == s_cTok_Team) { if( cMsg.GetArgCount( ) > 1 ) { uint32 nTeamId = atoi( cMsg.GetArg( 1 )); if( nTeamId < MAX_TEAMS ) { SetTeamId( nTeamId ); } else { SetTeamId( INVALID_TEAM ); } return true; } } else return GameBase::OnTrigger(hSender, cMsg); return true; }
void GameBase::HandleSetRotationMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { // Make sure we have all the arguments. if( crParsedMsg.GetArgCount( ) < 4 ) return; // Get the euler angles. Convert to radians. LTVector vEulerAngle; vEulerAngle.y = (( float )atof( crParsedMsg.GetArg( 1 )) * MATH_PI / 180.0f ); vEulerAngle.x = (( float )atof( crParsedMsg.GetArg( 2 )) * MATH_PI / 180.0f ); vEulerAngle.z = (( float )atof( crParsedMsg.GetArg( 3 )) * MATH_PI / 180.0f ); LTRotation rRot( vEulerAngle.x, vEulerAngle.y, vEulerAngle.z ); g_pLTServer->SetObjectRotation( m_hObject, rRot ); }
void AINavMeshLinkAbstract::HandleMaxActiveAwarenessMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { if( crParsedMsg.GetArgCount() > 1 ) { m_eMaxActiveAwareness = StringToAwareness( crParsedMsg.GetArg(1) ); } }
void LightBase::HandleScaleAlphaMsg( HOBJECT /*hSender*/, const CParsedMsg &crParsedMsg ) { float fAlpha = (float)LTStrToDouble(crParsedMsg.GetArg(1).c_str()); // Update the object's alpha LTVector4 vOldColor; g_pLTServer->GetObjectColor( m_hObject, &vOldColor.x, &vOldColor.y, &vOldColor.z, &vOldColor.w ); g_pLTServer->SetObjectColor( m_hObject, vOldColor.x, vOldColor.y, vOldColor.z, fAlpha ); }
void LightBase::HandleTextureMsg( HOBJECT /*hSender*/, const CParsedMsg &crParsedMsg ) { if(crParsedMsg.GetArgCount() == 2) { //read in our new dimensions and apply them m_sLightTexture = crParsedMsg.GetArg(1); g_pLTServer->SetLightTexture(m_hObject, m_sLightTexture.c_str()); } }
void LightBase::HandleRadiusMsg( HOBJECT /*hSender*/, const CParsedMsg &crParsedMsg ) { if(crParsedMsg.GetArgCount() == 2) { //read in our new dimensions and apply them m_fLightRadius = LTMAX((float)atof(crParsedMsg.GetArg(1)), 0.0f); g_pLTServer->SetLightRadius(m_hObject, m_fLightRadius); } }
void LightBase::HandleIntensityMsg( HOBJECT /*hSender*/, const CParsedMsg &crParsedMsg ) { if(crParsedMsg.GetArgCount() == 2) { //read in our new dimensions and apply them m_fIntensityScale = LTCLAMP((float)atof(crParsedMsg.GetArg(1)), 0.0f, 1.0f); g_pLTServer->SetLightIntensityScale(m_hObject, m_fIntensityScale); } }
void CAIWeaponAbstract::DefaultHandleModelString( CAI* pAI, const CParsedMsg& cParsedMsg ) { if (!pAI) { return; } static CParsedMsg::CToken s_cTok_CineFireWeapon("CINEFIRE"); static CParsedMsg::CToken s_cTok_FireWeapon(c_szKeyFireWeapon); static CParsedMsg::CToken s_cTok_Throw(c_szKeyThrow); // FIRE and THROW // When an AI is throwing a grenade, the thrown weapon ought to be // the current weapon. If this changes, and they firing needs to // operate differently at a low level, either this default // implementation can change, or the grenade can provide its own // implementation. if (cParsedMsg.GetArg(0) == s_cTok_FireWeapon || cParsedMsg.GetArg(0) == s_cTok_Throw ) { if (cParsedMsg.GetArgCount() > 1) { const char* const pszSocketName = cParsedMsg.GetArg(1).c_str(); m_szFireSocketName = pszSocketName ? pszSocketName : ""; } else { m_szFireSocketName = ""; } Fire(pAI); return; } // Cinematic firing. if( cParsedMsg.GetArg(0) == s_cTok_CineFireWeapon ) { Cinefire(pAI); return; } }
void AINavMeshLinkAbstract::HandleMaxEnabledAwarenessMsg( HOBJECT hSender, const CParsedMsg &crParsedMsg ) { if( crParsedMsg.GetArgCount() > 1 ) { m_eMaxEnabledAwareness = StringToAwareness( crParsedMsg.GetArg(1) ); // All AIs need to clear existing knowledge of paths, // because enabling and disabling NavMeshLinks changes the connectivity. g_pAIPathMgrNavMesh->InvalidatePathKnowledge( hSender ); } }
void SecurityCamera::HandleGadgetMsg(const CParsedMsg &cMsg) { if (cMsg.GetArgCount() < 2) return; AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(atol(cMsg.GetArg(1))); if (!pAmmo) return; if (pAmmo->eInstDamageType == DT_CAMERA_DISABLER) { SetState(eStateDisabled); } }