/* ** Copyright (C) 1999 Microsoft Corporation. All Rights Reserved. ** ** File: DoDamageAction.cpp ** ** Author: ** ** Description: ** Implementation of the training library "DoDamageAction" interface. ** ** History: */ #include "pch.h" #include "DoDamageAction.h" namespace Training { //------------------------------------------------------------------------------ // class methods //------------------------------------------------------------------------------ /* void */ DoDamageAction::DoDamageAction (bool bHull) : m_bHull (bHull) { } //------------------------------------------------------------------------------ /* void */ DoDamageAction::~DoDamageAction (void) { } //------------------------------------------------------------------------------ void DoDamageAction::Execute (void) { IshipIGC* pShip = trekClient.GetShip (); if (not m_bHull) { IshieldIGC* pShield = static_cast (pShip->GetMountedPart (ET_Shield, 0)); if (pShield and (pShield->GetFraction () > 0.2f)) pShip->ReceiveDamage (c_dmgidCollision, pShield->GetMaxStrength () * 0.03f, Time::Now (), Vector (-1.0f, 0.0f, 0.0f), Vector (1.0f, 0.0f, 0.0f), 0); } else { IshieldIGC* pShield = static_cast (pShip->GetMountedPart (ET_Shield, 0)); if (pShield and (pShield->GetFraction () > 0.25f)) pShield->SetFraction (0.2f); else if (pShip->GetFraction () > 0.5f) pShip->ReceiveDamage (c_dmgidCollision, 7.5f, Time::Now (), Vector (-1.0f, 0.0f, 0.0f), Vector (1.0f, 0.0f, 0.0f), 0); } } //------------------------------------------------------------------------------ }