void CASW_Weapon_Sniper_Rifle::UpdateDynamicLight() { // DLIGHT disabled, since it looks bad return; C_ASW_Marine *pMarine =GetMarine(); C_ASW_Player *pPlayer = pMarine ? pMarine->GetCommander() : NULL; if ( !pMarine || pMarine->GetActiveWeapon() != this || !pPlayer || !pMarine->IsInhabited() || !pPlayer->IsLocalPlayer() ) { if (m_pSniperDynamicLight) { m_pSniperDynamicLight->die = gpGlobals->curtime + 0.001; m_pSniperDynamicLight = NULL; } return; } if ( !m_pSniperDynamicLight || (m_pSniperDynamicLight->key != index) ) { m_pSniperDynamicLight = effects->CL_AllocDlight ( index ); } //m_fAmbientLight = asw_flashlight_marine_ambient.GetFloat(); //m_fLightingScale = asw_flashlight_marine_lightscale.GetFloat(); Vector vecForward, vecRight, vecUp; if (m_pSniperDynamicLight) { AngleVectors( GetLocalAngles(), &vecForward, &vecRight, &vecUp ); m_pSniperDynamicLight->origin = pPlayer->GetCrosshairTracePos() + Vector( 0, 0, 10 ); Msg( "crosshair trace pos is %f %f %f\n", VectorExpand( pPlayer->GetCrosshairTracePos() ) ); debugoverlay->AddTextOverlay( m_pSniperDynamicLight->origin, 0.01f, "Light" ); m_pSniperDynamicLight->color.r = asw_sniper_dlight_r.GetInt(); m_pSniperDynamicLight->color.g = asw_sniper_dlight_g.GetInt(); m_pSniperDynamicLight->color.b = asw_sniper_dlight_b.GetInt(); m_pSniperDynamicLight->radius = asw_sniper_dlight_radius.GetFloat(); m_pSniperDynamicLight->color.exponent = asw_sniper_dlight_exponent.GetFloat(); //m_pSniperDynamicLight->decay = 0; m_pSniperDynamicLight->die = gpGlobals->curtime + 30.0f; } }
void C_ASW_AOEGrenade_Projectile::UpdateTargetAOEEffects( void ) { // Find all the targets we've stopped giving a buff to AOEGrenTargetFXList_t::IndexLocalType_t i = m_hAOETargetEffects.Head(); while ( m_hAOETargetEffects.IsValidIndex(i) ) { AOETargetEffects_t &aoeTargetEffect = m_hAOETargetEffects[i]; Assert( m_hAOETargetEffects[i].me == &m_hAOETargetEffects[i] ); bool bStillAOEGren = false; // Are we still buffing this target? for ( int target = 0; target < m_hAOETargets.Count(); target++ ) { if ( m_hAOETargets[target] && m_hAOETargets[target] == aoeTargetEffect.hTarget.Get() ) { bStillAOEGren = true; break; } } // advance before deleting the pointer out from under us const AOEGrenTargetFXList_t::IndexLocalType_t oldi = i; i = m_hAOETargetEffects.Next( i ); if ( !bStillAOEGren ) { ParticleProp()->StopEmission( aoeTargetEffect.pEffect ); // stop the sound on this marine C_ASW_Marine *pMarine = dynamic_cast<C_ASW_Marine*>( m_hAOETargetEffects[oldi].hTarget.Get() ); if ( pMarine && pMarine->GetCommander() ) { C_ASW_Player *pLocalPlayer = C_ASW_Player::GetLocalASWPlayer(); if ( pMarine->GetCommander() == pLocalPlayer && pMarine->IsInhabited() && m_hAOETargetEffects[oldi].pBuffLoopSound ) { CSoundEnvelopeController::GetController().SoundDestroy( m_hAOETargetEffects[oldi].pBuffLoopSound ); m_hAOETargetEffects[oldi].pBuffLoopSound = NULL; } } m_hAOETargetEffects.Remove(oldi); } } // Now add any new targets for ( int i = 0; i < m_hAOETargets.Count(); i++ ) { C_BaseEntity *pTarget = m_hAOETargets[i].Get(); // Loops through the aoe targets, and make sure we have an effect for each of them if ( pTarget ) { bool bHaveEffect = false; for ( AOEGrenTargetFXList_t::IndexLocalType_t i = m_hAOETargetEffects.Head() ; m_hAOETargetEffects.IsValidIndex(i) ; i = m_hAOETargetEffects.Next(i) ) { if ( m_hAOETargetEffects[i].hTarget.Get() == pTarget ) { bHaveEffect = true; break; } } if ( !bHaveEffect ) { CNewParticleEffect *pEffect = ParticleProp()->Create( GetArcEffectName(), PATTACH_ABSORIGIN_FOLLOW ); AOEGrenTargetFXList_t::IndexLocalType_t iIndex = m_hAOETargetEffects.AddToTail(); m_hAOETargetEffects[iIndex].hTarget = pTarget; m_hAOETargetEffects[iIndex].pEffect = pEffect; Assert( m_hAOETargetEffects[iIndex].me == &m_hAOETargetEffects[iIndex] ); UpdateParticleAttachments( m_hAOETargetEffects[iIndex].pEffect, pTarget ); // Start the sound over again every time we start a new beam //StopSound( GetLoopSoundName() ); C_ASW_Marine *pMarine = C_ASW_Marine::AsMarine( pTarget ); if ( pMarine && pMarine->GetCommander() ) { C_ASW_Player *pLocalPlayer = C_ASW_Player::GetLocalASWPlayer(); if ( pMarine->GetCommander() == pLocalPlayer && pMarine->IsInhabited() ) { if ( m_hAOETargetEffects[iIndex].pBuffLoopSound ) { CSoundEnvelopeController::GetController().SoundDestroy( m_hAOETargetEffects[iIndex].pBuffLoopSound ); m_hAOETargetEffects[iIndex].pBuffLoopSound = NULL; } CSingleUserRecipientFilter filter( pLocalPlayer ); EmitSound( filter, pMarine->entindex(), GetStartSoundName() ); m_hAOETargetEffects[iIndex].pBuffLoopSound = CSoundEnvelopeController::GetController().SoundCreate( filter, pMarine->entindex(), GetLoopSoundName() ); CSoundEnvelopeController::GetController().Play( m_hAOETargetEffects[iIndex].pBuffLoopSound, 1.0, 100 ); } } } } } }
void CASW_Hud_Squad_Hotbar::UpdateList() { if ( !ASWGameResource() ) return; C_ASW_Player *pPlayer = C_ASW_Player::GetLocalASWPlayer(); int iEntry = 0; bool bHasItem = false; if ( asw_hotbar_self.GetBool() ) { if ( iEntry >= m_pEntries.Count() ) { CASW_Hotbar_Entry *pPanel = new CASW_Hotbar_Entry( this, "SquadInventoryPanelEntry" ); m_pEntries.AddToTail( pPanel ); InvalidateLayout(); } // add your offhand item to the hotbar first CASW_Marine *pPlayerMarine = pPlayer->GetMarine(); if ( pPlayerMarine ) { C_ASW_Weapon *pWeapon = pPlayerMarine->GetASWWeapon( ASW_INVENTORY_SLOT_EXTRA ); if ( pWeapon ) { m_pEntries[ iEntry ]->m_iHotKeyIndex = -1; m_pEntries[ iEntry ]->SetVisible( true ); m_pEntries[ iEntry ]->SetDetails( pPlayerMarine, ASW_INVENTORY_SLOT_EXTRA ); bHasItem = true; } } if ( !bHasItem ) // blank it out if there's no item in that slot { m_pEntries[ iEntry ]->m_iHotKeyIndex = iEntry; m_pEntries[ iEntry ]->SetDetails( NULL, -1 ); m_pEntries[ iEntry ]->SetVisible( false ); } iEntry++; } for ( int i = 0; i < ASWGameResource()->GetMaxMarineResources(); i++ ) { C_ASW_Marine_Resource* pMR = ASWGameResource()->GetMarineResource( i ); if ( !pMR ) continue; if ( pMR->GetCommander() != pPlayer ) continue; C_ASW_Marine *pMarine = pMR->GetMarineEntity(); if ( !pMarine ) continue; if ( pMarine->IsInhabited() ) continue; if ( iEntry >= m_pEntries.Count() ) { CASW_Hotbar_Entry *pPanel = new CASW_Hotbar_Entry( this, "SquadInventoryPanelEntry" ); m_pEntries.AddToTail( pPanel ); InvalidateLayout(); } bHasItem = false; for ( int k = 0; k < ASW_NUM_INVENTORY_SLOTS; k++ ) { C_ASW_Weapon *pWeapon = pMarine->GetASWWeapon( k ); if ( !pWeapon ) continue; const CASW_WeaponInfo* pInfo = pWeapon->GetWeaponInfo(); if ( !pInfo || !pInfo->m_bOffhandActivate ) // TODO: Fix for sentry guns continue; m_pEntries[ iEntry ]->m_iHotKeyIndex = iEntry; m_pEntries[ iEntry ]->SetVisible( true ); m_pEntries[ iEntry ]->SetDetails( pMarine, k ); bHasItem = true; if ( asw_hotbar_simple.GetBool() ) // only 1 item per marine break; } if ( !bHasItem ) // blank it out if there's no item in that slot { m_pEntries[ iEntry ]->m_iHotKeyIndex = iEntry; m_pEntries[ iEntry ]->SetDetails( NULL, -1 ); m_pEntries[ iEntry ]->SetVisible( false ); } iEntry++; } for ( int i = iEntry; i < m_pEntries.Count(); i++ ) { m_pEntries[ i ]->SetVisible( false ); } }
bool CScriptedIconLesson::Mod_ProcessElementAction( int iAction, bool bNot, const char *pchVarName, EHANDLE &hVar, const CGameInstructorSymbol *pchParamName, float fParam, C_BaseEntity *pParam, const char *pchParam, bool &bModHandled ) { // Assume we're going to handle the action bModHandled = true; C_BaseEntity *pVar = hVar.Get(); switch ( iAction ) { case LESSON_ACTION_IS_ALLOWED_ITEM: { C_ASW_Marine *pMarine = NULL; C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( pPlayer ) { pMarine = dynamic_cast< C_ASW_Marine* >( pPlayer->GetMarine() ); } if ( !pMarine ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->AllowedToPickup( [%s] )", pchParamName->String(), pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Marine returned NULL!\n" ); } return false; } bool bIsAllowed = false; C_ASW_Pickup *pPickup = dynamic_cast< C_ASW_Pickup * >( pParam ); if ( !pPickup ) { C_ASW_Weapon *pWeapon = dynamic_cast< C_ASW_Weapon * >( pParam ); if ( !pWeapon ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->AllowedToPickup( [%s] )", pchParamName->String(), pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tParam handle as ASW_Weapon and ASW_Pickup returned NULL!\n" ); } return false; } else { bIsAllowed = pWeapon->AllowedToPickup( pMarine ); } } else { bIsAllowed = pPickup->AllowedToPickup( pMarine ); } if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->AllowedToPickup( [%s] )", pchParamName->String(), pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bIsAllowed ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bIsAllowed ) : ( bIsAllowed ); } case LESSON_ACTION_ITEM_WILL_SWAP: { C_ASW_Marine *pMarine = NULL; C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( pPlayer ) { pMarine = dynamic_cast< C_ASW_Marine* >( pPlayer->GetMarine() ); } if ( !pMarine ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->WillSwap( [%s] )", pchParamName->String(), pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Marine returned NULL!\n" ); } return false; } bool bWillSwap = false; C_ASW_Pickup_Weapon *pPickup = dynamic_cast< C_ASW_Pickup_Weapon * >( pParam ); if ( !pPickup ) { C_ASW_Weapon *pWeapon = dynamic_cast< C_ASW_Weapon * >( pParam ); if ( !pWeapon ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->WillSwap( [%s] )", pchParamName->String(), pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tParam handle as ASW_Weapon and ASW_Pickup returned NULL!\n" ); } return false; } else { int nSlot = pMarine->GetWeaponPositionForPickup( pWeapon->GetClassname() ); bWillSwap = ( pMarine->GetASWWeapon( nSlot ) != NULL ); } } else { int nSlot = pMarine->GetWeaponPositionForPickup( pPickup->GetWeaponClass() ); bWillSwap = ( pMarine->GetASWWeapon( nSlot ) != NULL ); } if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->WillSwap( [%s] )", pchParamName->String(), pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bWillSwap ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bWillSwap ) : ( bWillSwap ); } case LESSON_ACTION_CAN_HACK: { C_ASW_Marine *pMarine = NULL; C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( pPlayer ) { pMarine = dynamic_cast< C_ASW_Marine* >( pPlayer->GetMarine() ); } if ( !pMarine ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->CanHack()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Marine returned NULL!\n" ); } return false; } bool bCanHack = pMarine->GetMarineProfile()->CanHack(); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->AllowedToPickup()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bCanHack ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bCanHack ) : ( bCanHack ); } case LESSON_ACTION_CAN_OFFHAND: { C_ASW_Weapon *pWeapon = dynamic_cast< C_ASW_Weapon* >( pVar ); if ( !pWeapon ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->CanOffhand()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Weapon returned NULL!\n" ); } return false; } bool bCanOffhand = pWeapon->GetWeaponInfo()->m_bOffhandActivate; if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->CanOffhand()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bCanOffhand ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bCanOffhand ) : ( bCanOffhand ); } case LESSON_ACTION_HAS_SECONDARY: { C_ASW_Weapon *pWeapon = dynamic_cast< C_ASW_Weapon* >( pVar ); if ( !pWeapon ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->HasSecondary()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Weapon returned NULL!\n" ); } return false; } bool bHasSecondary = pWeapon->UsesSecondaryAmmo(); if ( bHasSecondary ) { bHasSecondary = !( ( pWeapon->UsesClipsForAmmo2() && pWeapon->m_iClip2 <= 0 ) || ( !pWeapon->UsesClipsForAmmo2() && pWeapon->GetOwner() && pWeapon->GetOwner()->GetAmmoCount( pWeapon->m_iSecondaryAmmoType ) <= 0 ) ); } if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->HasSecondary()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bHasSecondary ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bHasSecondary ) : ( bHasSecondary ); } case LESSON_ACTION_HAS_SECONDARY_EXPLOSIVES: { C_ASW_Marine *pMarine = NULL; C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( pPlayer ) { pMarine = dynamic_cast< C_ASW_Marine* >( pPlayer->GetMarine() ); } if ( !pMarine ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->HasAnySecondary()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Marine returned NULL!\n" ); } return false; } bool bHasAnySecondary = false; for ( int i = 0; i < ASW_MAX_EQUIP_SLOTS; ++i ) { C_ASW_Weapon *pWeapon = static_cast< C_ASW_Weapon* >( pMarine->GetWeapon( i ) ); if ( pWeapon && pWeapon->HasSecondaryExplosive() ) { if ( !( ( pWeapon->UsesClipsForAmmo2() && pWeapon->m_iClip2 <= 0 ) || ( !pWeapon->UsesClipsForAmmo2() && pWeapon->GetOwner() && pWeapon->GetOwner()->GetAmmoCount( pWeapon->m_iSecondaryAmmoType ) <= 0 ) ) ) { bHasAnySecondary = true; break; } } } if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->HasAnySecondary()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bHasAnySecondary ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bHasAnySecondary ) : ( bHasAnySecondary ); } case LESSON_ACTION_GET_MARINE: { int iTemp = static_cast<int>( fParam ); if ( iTemp <= 0 || iTemp > 2 ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[entityINVALID] = [%s]->GetMarine()\n", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tParam selecting string is out of range!\n" ); } return false; } CHandle<C_BaseEntity> *pHandle; char const *pchParamNameTemp = NULL; if ( iTemp == 2 ) { pHandle = &m_hEntity2; pchParamNameTemp = "entity2"; } else { pHandle = &m_hEntity1; pchParamNameTemp = "entity1"; } C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( !pPlayer ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s] = [%s]->GetMarine()", pchParamNameTemp, pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "...\n" ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Player returned NULL!\n" ); } return false; } C_ASW_Marine *pMarine = dynamic_cast< C_ASW_Marine* >( pPlayer->GetMarine() ); pHandle->Set( pMarine ); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s] = [%s]->GetMarine()\n", pchParamNameTemp, pchVarName ); } return true; } case LESSON_ACTION_IS_BOT: { C_ASW_Marine *pMarine = dynamic_cast< C_ASW_Marine* >( pVar ); if ( !pMarine ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t![%s]->IsInhabited()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Marine returned NULL!\n" ); } return false; } bool bIsBot = !pMarine->IsInhabited(); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t![%s]->IsInhabited()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bIsBot ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bIsBot ) : ( bIsBot ); } case LESSON_ACTION_WEAPON_HAS_SPARE: { C_ASW_Marine *pMarine = NULL; C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( pPlayer ) { pMarine = dynamic_cast< C_ASW_Marine* >( pPlayer->GetMarine() ); } if ( !pMarine ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->HasSpareWeapon()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Marine returned NULL!\n" ); } return false; } int nOffensiveWeaponCount = 0; for ( int i = 0; i < ASW_MAX_EQUIP_SLOTS; ++i ) { C_ASW_Weapon *pWeapon = static_cast< C_ASW_Weapon* >( pMarine->GetWeapon( i ) ); if ( pWeapon && pWeapon->IsOffensiveWeapon() ) { if ( !( ( pWeapon->UsesClipsForAmmo1() && pWeapon->m_iClip1 <= 0 ) || ( !pWeapon->UsesClipsForAmmo1() && pWeapon->GetOwner() && pWeapon->GetOwner()->GetAmmoCount( pWeapon->m_iPrimaryAmmoType ) <= 0 ) ) ) { nOffensiveWeaponCount++; } } } bool bHasSpare = ( nOffensiveWeaponCount > 1 ); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->HasSpareWeapon()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bHasSpare ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bHasSpare ) : ( bHasSpare ); } case LESSON_ACTION_WEAPON_IS_OFFENSIVE: { C_ASW_Marine *pMarine = NULL; C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( pPlayer ) { pMarine = dynamic_cast< C_ASW_Marine* >( pPlayer->GetMarine() ); } if ( !pMarine ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->WeaponIsOffensive()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Marine returned NULL!\n" ); } return false; } bool bIsOffensive = false; C_ASW_Weapon *pWeapon = pMarine->GetActiveASWWeapon(); if ( pWeapon && pWeapon->IsOffensiveWeapon() ) { if ( !( ( pWeapon->UsesClipsForAmmo1() && pWeapon->m_iClip1 <= 0 ) || ( !pWeapon->UsesClipsForAmmo1() && pWeapon->GetOwner() && pWeapon->GetOwner()->GetAmmoCount( pWeapon->m_iPrimaryAmmoType ) <= 0 ) ) ) { bIsOffensive = true; } } if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->WeaponIsOffensive()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bIsOffensive ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bIsOffensive ) : ( bIsOffensive ); } case LESSON_ACTION_WEAPON_LOCAL_HOTBAR_SLOT: { CASW_Hud_Master *pHUDMaster = GET_HUDELEMENT( CASW_Hud_Master ); if ( pHUDMaster ) { m_fOutput = pHUDMaster->GetHotBarSlot( pchParam ); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\tm_fOutput = GET_HUDELEMENT( CASW_Hud_Squad_Hotbar )->GetHotBarSlot( [%s] ", pchParamName->String() ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "\"%s\"", pchParam ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ")\n" ); } } return true; } case LESSON_ACTION_OWNS_HOTBAR_SLOT: { int iTemp = static_cast<int>( fParam ); C_ASW_Player *pPlayer = dynamic_cast< C_ASW_Player* >( pVar ); if ( !pPlayer ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\tGET_HUDELEMENT( CASW_Hud_Squad_Hotbar )->OwnsHotBarSlot( [%s] ", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "..." ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ", [%s] ", pchParamName->String() ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "\"%i\" ", iTemp ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ") " ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Player returned NULL!\n" ); } return false; } bool bOwnsHotBarSlot = false; CASW_Hud_Master *pHUDMaster = GET_HUDELEMENT( CASW_Hud_Master ); if ( pHUDMaster ) { bOwnsHotBarSlot = pHUDMaster->OwnsHotBarSlot( pPlayer, iTemp ); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\tGET_HUDELEMENT( CASW_Hud_Squad_Hotbar )->OwnsHotBarSlot( [%s], [%s] ", pchVarName, pchParamName->String() ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "\"%i\" ", iTemp ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ") " ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bOwnsHotBarSlot ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } } return ( bNot ) ? ( !bOwnsHotBarSlot ) : ( bOwnsHotBarSlot ); } case LESSON_ACTION_SENTRY_WANTS_DISMANTLE: { C_ASW_Sentry_Base *pSentry = dynamic_cast< C_ASW_Sentry_Base* >( pVar ); if ( !pSentry ) { if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->WantsDismantle()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "... " ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); ConColorMsg( CBaseLesson::m_rgbaVerboseClose, "\tVar handle as ASW_Sentry_Base returned NULL!\n" ); } return false; } bool bWantsDismantle = pSentry->WantsDismantle(); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\t[%s]->WantsDismantle()", pchVarName ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bWantsDismantle ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bWantsDismantle ) : ( bWantsDismantle ); } case LESSON_ACTION_IS_TUTORIAL: { bool bIsTutorial = ASWGameRules()->IsTutorialMap(); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\tASWGameRules()->IsTutorialMap()" ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bIsTutorial ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bIsTutorial ) : ( bIsTutorial ); } case LESSON_ACTION_IS_SINGLEPLAYER: { bool bIsSingleplayer = ASWGameRules()->IsOfflineGame(); if ( gameinstructor_verbose.GetInt() > 0 && ShouldShowSpew() ) { ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, "\tASWGameRules()->IsOfflineGame()" ); ConColorMsg( CBaseLesson::m_rgbaVerboseName, "%s ", ( bIsSingleplayer ? "true" : "false" ) ); ConColorMsg( CBaseLesson::m_rgbaVerbosePlain, ( bNot ) ? ( "== false\n" ) : ( "== true\n" ) ); } return ( bNot ) ? ( !bIsSingleplayer ) : ( bIsSingleplayer ); } default: // Didn't handle this action bModHandled = false; break; } return false; }