/* * This file is generated by Entity Class Compiler, (c) CroTeam 1997-98 */ #line 4 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" #include "StdH.h" #include "ModelsMP/Enemies/AirElemental/AirElemental.h" #include "ModelsMP/Enemies/AirElemental/Elemental.h" #include "Models/Enemies/Elementals/Twister.h" #include #include CEntityEvent *EElementalGrow::MakeCopy(void) { CEntityEvent *peeCopy = new EElementalGrow(*this); return peeCopy;} EElementalGrow::EElementalGrow() : CEntityEvent(EVENTCODE_EElementalGrow) {; }; #line 18 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" #define ECF_AIR ( \ ((ECBI_BRUSH|ECBI_MODEL|ECBI_CORPSE|ECBI_ITEM|ECBI_PROJECTILE_MAGIC|ECBI_PROJECTILE_SOLID)< GetAttachmentModel (AIRELEMENTAL_ATTACHMENT_BODY ); #line 197 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return & (amo0 . amo_moModelObject ); #line 198 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 201 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::ReceiveDamage(CEntity * penInflictor,enum DamageType dmtType, #line 202 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fDamageAmmount,const FLOAT3D & vHitPoint,const FLOAT3D & vDirection) #line 203 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 205 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_bInitialAnim ){return ;} #line 208 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fHealth = GetHealth (); #line 209 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fFullDamage = fDamageAmmount * DamageStrength (((EntityInfo *) GetEntityInfo ()) -> Eeibt , dmtType ) * GetGameDamageMultiplier (); #line 210 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_bAttGrow && m_iSize < 2){ #line 211 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(fHealth - fFullDamage < afGrowArray [ m_iSize + 1 ] [ 0 ] * m_fMaxHealth ){ #line 212 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CEnemyBase :: ReceiveDamage (penInflictor , dmtType , fDamageAmmount , vHitPoint , vDirection ); #line 213 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetHealth (fHealth ); #line 214 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return ; #line 215 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 216 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }else if(m_bAttGrow && m_iSize == 2){ #line 217 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(fHealth - fFullDamage < 1.0f){ #line 218 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CEnemyBase :: ReceiveDamage (penInflictor , dmtType , fDamageAmmount , vHitPoint , vDirection ); #line 219 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetHealth (fHealth ); #line 220 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return ; #line 221 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 222 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 226 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(IsOfClass (penInflictor , "AirElemental")){ #line 227 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return ; #line 228 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 231 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(dmtType == DMT_TELEPORT ) #line 232 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 233 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return ; #line 234 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 237 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(dmtType == DMT_CLOSERANGE || #line 238 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" dmtType == DMT_BULLET || #line 239 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" dmtType == DMT_IMPACT || #line 240 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" dmtType == DMT_CHAINSAW ) #line 241 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 242 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return ; #line 243 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 246 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(dmtType == DMT_CANNONBALL ) #line 247 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 248 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" fDamageAmmount *= 0.6f; #line 249 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 251 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fOldHealth = GetHealth (); #line 252 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CEnemyBase :: ReceiveDamage (penInflictor , dmtType , fDamageAmmount , vHitPoint , vDirection ); #line 253 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fNewHealth = GetHealth (); #line 255 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CEntityPointer * penTrigger = & m_penTrigger01 ; #line 257 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" INDEX i = 0; #line 258 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" for(i = 0;i < AIRBOSS_MAX_TA ;i ++){ #line 259 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fHealth = afTriggerArray [ i ] * m_fMaxHealth ; #line 261 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(fHealth <= fOldHealth && fHealth > fNewHealth ) #line 262 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 263 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(& * penTrigger [ i ]){ #line 264 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SendToTarget (& * penTrigger [ i ] , EET_TRIGGER , FixupCausedToPlayer (this , m_penEnemy )); #line 265 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 266 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 267 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 269 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" for(i = 0;i < AIRBOSS_MAX_GA ;i ++){ #line 270 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fHealth = afGrowArray [ i ] [ 0 ] * m_fMaxHealth ; #line 272 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(fHealth <= fOldHealth && fHealth > fNewHealth ) #line 273 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 274 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fAttSizeRequested = afGrowArray [ i ] [ 1 ]; #line 275 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_iSize = i ; #line 276 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" EElementalGrow eeg ; #line 277 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SendEvent (eeg ); #line 278 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 279 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 282 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_colBurning = COLOR (C_WHITE | CT_OPAQUE ); #line 284 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 287 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" INDEX CAirElemental::AnimForDamage(FLOAT fDamage) { #line 288 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" INDEX iAnim = ELEMENTAL_ANIM_IDLE ; #line 289 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (iAnim , 0); #line 290 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return iAnim ; #line 291 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 293 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::StandingAnimFight(void) { #line 294 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_IDLE , AOF_LOOPING | AOF_NORESTART ); #line 295 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 298 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::StandingAnim(void) { #line 299 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_IDLE , AOF_LOOPING | AOF_NORESTART ); #line 300 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 302 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::WalkingAnim(void) #line 303 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 304 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_IDLE , AOF_LOOPING | AOF_NORESTART ); #line 305 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 307 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::RunningAnim(void) #line 308 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 309 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" WalkingAnim (); #line 310 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 312 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::RotatingAnim(void) { #line 313 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" WalkingAnim (); #line 314 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 316 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" INDEX CAirElemental::AnimForDeath(void) #line 317 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 318 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" INDEX iAnim ; #line 319 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" iAnim = ELEMENTAL_ANIM_IDLE ; #line 320 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (iAnim , 0); #line 321 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return iAnim ; #line 322 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 325 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::IdleSound(void) { #line 327 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 328 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::WoundSound(void) { #line 330 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 332 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::SizeModel(void) #line 333 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 334 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return ; #line 335 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 338 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" BOOL CAirElemental::AdjustShadingParameters(FLOAT3D & vLightDirection,COLOR & colLight,COLOR & colAmbient) { #line 339 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return CMovableModelEntity :: AdjustShadingParameters (vLightDirection , colLight , colAmbient ); #line 340 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 347 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::BlowUp(void) { #line 363 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 367 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::EnemyPostInit(void) #line 368 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 369 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_soFire . Set3DParameters (600.0f , 150.0f , 2.0f , 1.0f); #line 370 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_soVoice . Set3DParameters (600.0f , 150.0f , 2.0f , 1.0f); #line 371 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_soSound . Set3DParameters (600.0f , 150.0f , 2.0f , 1.0f); #line 372 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 374 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::LaunchTwister(FLOAT3D vEnemyOffset) #line 375 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 377 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vFirePos = FIREPOS_TWISTER * m_fAttSizeCurrent * GetRotationMatrix (); #line 378 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vShooting = GetPlacement () . pl_PositionVector + vFirePos ; #line 379 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vTarget = m_penEnemy -> GetPlacement () . pl_PositionVector ; #line 380 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fLaunchSpeed ; #line 381 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fRelativeHdg ; #line 384 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" EntityInfo * peiTarget = (EntityInfo *) (m_penEnemy -> GetEntityInfo ()); #line 387 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vTarget += vEnemyOffset ; #line 389 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CPlacement3D pl ; #line 390 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CalculateAngularLaunchParams (vShooting , peiTarget -> vTargetCenter [ 1 ] - 6.0f / 3.0f , #line 391 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vTarget , FLOAT3D (0.0f , 0.0f , 0.0f) , 0.0f , fLaunchSpeed , fRelativeHdg ); #line 393 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" PrepareFreeFlyingProjectile (pl , vTarget , vFirePos , ANGLE3D (fRelativeHdg , 0.0f , 0.0f)); #line 395 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ETwister et ; #line 396 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CEntityPointer penTwister = CreateEntity (pl , CLASS_TWISTER ); #line 397 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" et . penOwner = this ; #line 399 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" et . fSize = FRnd () * 10.0f + m_fAttSizeCurrent / 5.0f + 3.0f; #line 400 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" et . fDuration = 15.0f + FRnd () + 5.0f; #line 401 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" et . sgnSpinDir = (INDEX) (Sgn (FRnd () - 0.5f)); #line 402 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" et . bGrow = TRUE ; #line 403 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" et . bMovingAllowed = TRUE ; #line 404 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" penTwister -> Initialize (et ); #line 406 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ((CMovableEntity &) * penTwister ) . LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - fLaunchSpeed ) , (CMovableEntity *) (CEntity *) this ); #line 407 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 409 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::PreMoving() { #line 432 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CEnemyBase :: PreMoving (); #line 433 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 435 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::GetAirElementalAttachmentData(INDEX iAttachment,FLOATmatrix3D & mRot,FLOAT3D & vPos) #line 436 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 437 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" MakeRotationMatrixFast (mRot , ANGLE3D (0.0f , 0.0f , 0.0f)); #line 438 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vPos = FLOAT3D (0.0f , 0.0f , 0.0f); #line 439 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" GetModelObject () -> GetAttachmentTransformations (AIRELEMENTAL_ATTACHMENT_BODY , mRot , vPos , FALSE ); #line 441 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CAttachmentModelObject * pamo = GetModelObject () -> GetAttachmentModel (AIRELEMENTAL_ATTACHMENT_BODY ); #line 442 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" pamo -> amo_moModelObject . GetAttachmentTransformations (iAttachment , mRot , vPos , TRUE ); #line 443 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vPos = GetPlacement () . pl_PositionVector + vPos * GetRotationMatrix (); #line 444 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 446 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT CAirElemental::GetCurrentStretchRatio(void) #line 447 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 448 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CAttachmentModelObject & amo = * GetModelObject () -> GetAttachmentModel (AIRELEMENTAL_ATTACHMENT_BODY ); #line 449 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fCurrentStretch = amo . amo_moModelObject . mo_Stretch (1); #line 450 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fStretch = (fCurrentStretch - m_fAttSizeBegin ) / (m_fAttSizeEnd - m_fAttSizeBegin ); #line 451 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return fStretch ; #line 452 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 454 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" void CAirElemental::RenderParticles(void) #line 455 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 456 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" static TIME tmLastGrowTime = 0.0f; #line 458 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_bFloat ){ #line 459 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fTime = _pTimer -> GetLerpedCurrentTick (); #line 460 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CAttachmentModelObject & amo0 = * GetModelObject () -> GetAttachmentModel (AIRELEMENTAL_ATTACHMENT_BODY ); #line 461 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" amo0 . amo_plRelative . pl_PositionVector (2) = m_fAttPosY + pow (sin (fTime * 2.0f) , 2.0f) * m_fAttSizeCurrent * 2.0f / m_fAttSizeBegin ; #line 462 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 463 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_bAttGrow ){ #line 464 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fSize = Lerp (m_fLastSize , m_fTargetSize , _pTimer -> GetLerpFactor ()); #line 465 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> StretchModel (FLOAT3D (fSize , fSize , fSize )); #line 466 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 468 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_bRenderParticles ) #line 469 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { #line 470 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fStretchRatio = GetCurrentStretchRatio (); #line 471 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fStretch = 1.0f + (fStretchRatio ) * 6.0f; #line 472 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Particles_AirElemental (this , fStretch , 1.0f , m_tmDeath , m_colParticles ); #line 473 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 474 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } BOOL CAirElemental:: #line 479 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Die(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CAirElemental_Die ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EDeath, "CAirElemental::Die expects 'EDeath' as input!"); const EDeath &eDeath = (const EDeath &)__eeInput; #line 481 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetDesiredRotation (ANGLE3D (0.0f , 0.0f , 0.0f)); #line 482 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" PlaySound (m_soFire , SOUND_DEATH , SOF_3D ); #line 483 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_DEATH , AOF_NORESTART ); #line 484 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_tmDeath = _pTimer -> CurrentTick () + ElementalModel () -> GetAnimLength (ELEMENTAL_ANIM_DEATH ); #line 485 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bFloat = FALSE ; #line 486 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(ElementalModel () -> GetAnimLength (ELEMENTAL_ANIM_DEATH ) - 0.1f); Jump(STATE_CURRENT, 0x015b0002, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0002_Die_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0002 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0003, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0003_Die_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0003 ; #line 488 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" PlaySound (m_soVoice , SOUND_EXPLOSION , SOF_3D ); #line 489 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bDying = TRUE ; #line 490 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fDeathDuration = 4.0f; #line 492 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(m_fDeathDuration ); Jump(STATE_CURRENT, 0x015b0004, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0004_Die_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0004 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0005, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0005_Die_04(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0005 ; #line 494 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" EDeath eDeath ; #line 495 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" eDeath . eLastDamage . penInflictor = m_penDeathInflictor ; #line 496 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Jump(STATE_CURRENT, STATE_CEnemyBase_Die, FALSE, eDeath );return TRUE; ASSERT(FALSE); return TRUE;};BOOL CAirElemental:: #line 503 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Fire(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CAirElemental_Fire ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CAirElemental::Fire expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 505 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(!(m_tmWindNextFire < _pTimer -> CurrentTick ())){ Jump(STATE_CURRENT,0x015b0011, FALSE, EInternal());return TRUE;} #line 506 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_FIREPROJECTILES , AOF_NORESTART ); #line 507 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_iWind = 0; #line 508 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" PlaySound (m_soFire , SOUND_FIREWINDBLAST , SOF_3D ); #line 510 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(1.8f); Jump(STATE_CURRENT, 0x015b0007, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0007_Fire_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0007 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0008, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0008_Fire_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0008 ; #line 511 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Jump(STATE_CURRENT,0x015b000b, FALSE, EInternal());return TRUE;}BOOL CAirElemental::H0x015b000b_Fire_05(const CEntityEvent &__eeInput) #line 512 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000b if(!(m_iWind < 5)){ Jump(STATE_CURRENT,0x015b000c, FALSE, EInternal());return TRUE;} #line 513 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vFirePos ; #line 514 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vFirePos = Lerp (m_fWindBlastFirePosBegin * m_fAttSizeCurrent , #line 515 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fWindBlastFirePosEnd * m_fAttSizeCurrent , #line 516 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" (FLOAT) m_iWind * 0.25f); #line 517 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ShootProjectile (PRT_AIRELEMENTAL_WIND , vFirePos , #line 518 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ANGLE3D (30.0f - m_iWind * 10.0 , 0.0f , 0.0f)); #line 519 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_iWind ++; #line 520 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(0.1f); Jump(STATE_CURRENT, 0x015b0009, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0009_Fire_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0009 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b000a, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b000a_Fire_04(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000a ;Jump(STATE_CURRENT,0x015b000b, FALSE, EInternal());return TRUE; #line 521 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }BOOL CAirElemental::H0x015b000c_Fire_06(const CEntityEvent &__eeInput) { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000c #line 522 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_tmWindNextFire = _pTimer -> CurrentTick () + Lerp (m_fWindFireTimeMin , m_fWindFireTimeMax , FRnd ()); #line 524 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(ElementalModel () -> GetAnimLength (ELEMENTAL_ANIM_FIREPROJECTILES ) - 1.75f); Jump(STATE_CURRENT, 0x015b000d, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b000d_Fire_07(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b000d switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b000e, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b000e_Fire_08(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000e ; #line 526 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_IDLE , AOF_LOOPING | AOF_SMOOTHCHANGE ); #line 528 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(0.05f); Jump(STATE_CURRENT, 0x015b000f, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b000f_Fire_09(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b000f switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0010, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0010_Fire_10(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0010 ; #line 530 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Return(STATE_CURRENT,EReturn ()); #line 530 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return TRUE;Jump(STATE_CURRENT,0x015b0011, FALSE, EInternal());return TRUE;}BOOL CAirElemental::H0x015b0011_Fire_11(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0011 #line 533 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_FIRETWISTER , AOF_NORESTART ); #line 535 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" PlaySound (m_soFire , SOUND_FIRETWISTER , SOF_3D ); #line 536 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(4.0f); Jump(STATE_CURRENT, 0x015b0012, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0012_Fire_12(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0012 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0013, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0013_Fire_13(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0013 ; #line 538 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vOffset ; #line 540 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(((CMovableEntity &) * m_penEnemy ) . en_vCurrentTranslationAbsolute . Length () == 0.0f){ #line 542 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vPlayerToThis = GetPlacement () . pl_PositionVector - m_penEnemy -> GetPlacement () . pl_PositionVector ; #line 543 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vPlayerToThis . Normalize (); #line 544 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vOffset = FLOAT3D (vPlayerToThis * (FRnd () * 10.0f + 5.0f)); #line 545 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" LaunchTwister (vOffset ); #line 547 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vOffset = FLOAT3D (- (FRnd () * 5.0f + 15.0f) , 0.0f , (FRnd () - 0.5f) * 20.0f) * ((CMovableEntity &) * m_penEnemy ) . GetRotationMatrix (); #line 548 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" LaunchTwister (vOffset ); #line 550 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vOffset = FLOAT3D (+ (FRnd () * 5.0f + 15.0f) , 0.0f , 20.0f) * ((CMovableEntity &) * m_penEnemy ) . GetRotationMatrix (); #line 551 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" LaunchTwister (vOffset ); #line 553 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }else { #line 554 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vPlayerSpeed = ((CMovableEntity &) * m_penEnemy ) . en_vCurrentTranslationAbsolute ; #line 555 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(vPlayerSpeed . Length () > 15.0f){ #line 556 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vPlayerSpeed . Normalize (); #line 557 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vPlayerSpeed = vPlayerSpeed * 15.0f; #line 558 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 559 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vOffset = vPlayerSpeed * (2.0f + FRnd ()); #line 560 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vToPlayer = ((CMovableEntity &) * m_penEnemy ) . GetPlacement () . pl_PositionVector - GetPlacement () . pl_PositionVector ; #line 561 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vToPlayer . Normalize (); #line 562 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vToPlayer *= 15.0f + FRnd () * 5.0f; #line 563 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vOffset -= vToPlayer ; #line 564 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" LaunchTwister (vOffset ); #line 566 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" LaunchTwister (FLOAT3D (0.0f , 0.0f , 0.0f)); #line 567 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" LaunchTwister (vOffset + FLOAT3D (+ 5.0f + FRnd () * 5.0f , 0.0f , - 15.0f - FRnd () * 5.0f)); #line 568 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 572 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(ElementalModel () -> GetAnimLength (ELEMENTAL_ANIM_FIRETWISTER ) - 4.0f); Jump(STATE_CURRENT, 0x015b0014, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0014_Fire_14(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0014 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0015, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0015_Fire_15(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0015 ; #line 574 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_IDLE , AOF_LOOPING | AOF_SMOOTHCHANGE ); #line 575 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(0.05f); Jump(STATE_CURRENT, 0x015b0016, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0016_Fire_16(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0016 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0017, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0017_Fire_17(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0017 ; #line 577 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Return(STATE_CURRENT,EReturn ()); #line 577 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CAirElemental:: #line 580 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Hit(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CAirElemental_Hit ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CAirElemental::Hit expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 581 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Jump(STATE_CURRENT, STATE_CAirElemental_Fire, TRUE, EVoid());return TRUE; #line 582 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Return(STATE_CURRENT,EReturn ()); #line 582 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CAirElemental:: #line 588 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Death(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CAirElemental_Death ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CAirElemental::Death expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 590 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fFadeStartTime = _pTimer -> CurrentTick (); #line 591 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bFadeOut = TRUE ; #line 592 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fFadeTime = 2.0f; #line 593 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(m_fFadeTime ); Jump(STATE_CURRENT, 0x015b001a, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b001a_Death_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b001a switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b001b, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b001b_Death_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b001b ; #line 594 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" STATE_CEnemyBase_Death, FALSE; Jump(STATE_CURRENT, 0x015b001c, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b001c_Death_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b001c switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CEnemyBase_Death, FALSE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x015b001d, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b001d_Death_04(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x015b001d const EEnd&__e= (EEnd&)__eeInput; ; #line 596 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Return(STATE_CURRENT,EEnd ()); #line 596 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CAirElemental:: #line 603 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Grow(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CAirElemental_Grow ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CAirElemental::Grow expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 605 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ASSERT (m_fAttSizeRequested > m_fAttSizeCurrent ); #line 606 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fLastSize = m_fTargetSize = m_fAttSizeCurrent ; #line 608 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" PlaySound (m_soSound , SOUND_ROAR , SOF_3D ); #line 609 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_IDLE , AOF_NORESTART ); #line 612 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetDesiredRotation (ANGLE3D (0.0f , 0.0f , 0.0f)); #line 613 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bAttGrow = TRUE ; #line 614 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Jump(STATE_CURRENT,0x015b0021, FALSE, EInternal());return TRUE;}BOOL CAirElemental::H0x015b0021_Grow_03(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0021 if(!(m_fLastSize < m_fAttSizeRequested )){ Jump(STATE_CURRENT,0x015b0022, FALSE, EInternal());return TRUE;} #line 616 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_penEnemy ){ #line 617 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT3D vToTarget ; #line 618 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ANGLE3D aToTarget ; #line 619 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vToTarget = m_penEnemy -> GetPlacement () . pl_PositionVector - GetPlacement () . pl_PositionVector ; #line 620 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" vToTarget . Normalize (); #line 621 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" DirectionVectorToAngles (vToTarget , aToTarget ); #line 622 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" aToTarget (1) = aToTarget (1) - GetPlacement () . pl_OrientationAngle (1); #line 623 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" aToTarget (1) = NormalizeAngle (aToTarget (1)); #line 624 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetDesiredRotation (FLOAT3D (aToTarget (1) / 2.0f , 0.0f , 0.0f)); #line 625 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 628 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fLastSize = m_fTargetSize ; #line 629 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fTargetSize += m_fGrowSpeed * _pTimer -> TickQuantum ; #line 636 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" FLOAT fMiddleSize = Lerp (m_fAttSizeCurrent , m_fAttSizeRequested , 0.33f); #line 637 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_fLastSize <= fMiddleSize && fMiddleSize < m_fTargetSize ){ #line 638 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_iSize < 2){ #line 639 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ChangeCollisionBoxIndexWhenPossible (m_iSize + 1); #line 640 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }else if(TRUE ){ #line 641 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ForceCollisionBoxIndexChange (m_iSize + 1); #line 642 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 643 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 645 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(_pTimer -> TickQuantum ); Jump(STATE_CURRENT, 0x015b001f, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b001f_Grow_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b001f switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0020, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0020_Grow_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0020 ;Jump(STATE_CURRENT,0x015b0021, FALSE, EInternal());return TRUE; #line 646 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }BOOL CAirElemental::H0x015b0022_Grow_04(const CEntityEvent &__eeInput) { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0022 #line 647 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bAttGrow = FALSE ; #line 649 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fAttSizeCurrent = afGrowArray [ m_iSize ] [ 1 ]; #line 651 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fGrowSpeed *= 2.0f; #line 652 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" if(m_iSize == 1){ #line 653 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" GetModelObject () -> PlayAnim (AIRELEMENTAL_ANIM_SIZE50 , AOF_LOOPING ); #line 654 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" } #line 656 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Jump(STATE_CURRENT, STATE_CEnemyBase_MainLoop, FALSE, EVoid());return TRUE; ASSERT(FALSE); return TRUE;};BOOL CAirElemental:: #line 659 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalLoop(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CAirElemental_ElementalLoop ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CAirElemental::ElementalLoop expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 660 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAt(THINKTIME_NEVER); Jump(STATE_CURRENT, 0x015b0024, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0024_ElementalLoop_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0024 switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin): #line 662 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" {const EBegin&e= (EBegin&)__eeInput; #line 663 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Call(STATE_CURRENT, STATE_CEnemyBase_MainLoop, FALSE, EVoid());return TRUE; #line 664 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }ASSERT(FALSE);break;case(EVENTCODE_EElementalGrow): #line 666 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" {const EElementalGrow&e= (EElementalGrow&)__eeInput; #line 667 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Call(STATE_CURRENT, STATE_CAirElemental_Grow, TRUE, EVoid());return TRUE; #line 668 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }ASSERT(FALSE);break;default:{ #line 670 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" return TRUE; #line 671 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }ASSERT(FALSE);break; #line 672 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }return TRUE;}BOOL CAirElemental::H0x015b0025_ElementalLoop_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0025 ASSERT(FALSE); return TRUE;};BOOL CAirElemental:: #line 675 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Main(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CAirElemental_Main ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CAirElemental::Main expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 678 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" InitAsEditorModel (); #line 680 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetCollisionFlags (ECF_IMMATERIAL ); #line 681 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetPhysicsFlags (EPF_MODEL_IMMATERIAL ); #line 682 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetFlags (GetFlags () | ENF_ALIVE ); #line 684 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" en_fDensity = 10000.0f; #line 685 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fDamageWounded = 1e6f; #line 687 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_sptType = SPT_AIRSPOUTS ; #line 688 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bBoss = TRUE ; #line 689 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetHealth (15000.0f); #line 690 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fMaxHealth = 15000.0f; #line 692 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fWalkSpeed = 0.0f; #line 693 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_aWalkRotateSpeed = AngleDeg (FRnd () * 10.0f + 245.0f); #line 694 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fAttackRunSpeed = m_fWalkSpeed ; #line 695 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_aAttackRotateSpeed = m_aWalkRotateSpeed ; #line 696 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fCloseRunSpeed = m_fWalkSpeed ; #line 697 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_aCloseRotateSpeed = m_aWalkRotateSpeed ; #line 699 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fAttackDistance = 500.0f; #line 700 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fCloseDistance = 60.0f; #line 701 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fStopDistance = 30.0f; #line 702 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fAttackFireTime = 4.0f; #line 703 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fCloseFireTime = 4.0f; #line 704 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fIgnoreRange = 1000.0f; #line 705 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_iScore = 500000; #line 707 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" eiAirElemental . vSourceCenter [ 1 ] = AIRBOSS_EYES_HEIGHT * m_fAttSizeBegin ; #line 708 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" eiAirElemental . vTargetCenter [ 1 ] = AIRBOSS_BODY_HEIGHT * m_fAttSizeBegin ; #line 711 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetModel (MODEL_INVISIBLE ); #line 712 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" AddAttachmentToModel (this , * GetModelObject () , AIRELEMENTAL_ATTACHMENT_BODY , MODEL_ELEMENTAL , TEXTURE_ELEMENTAL , 0 , 0 , TEXTURE_DETAIL_ELEM ); #line 713 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" CAttachmentModelObject & amo0 = * GetModelObject () -> GetAttachmentModel (AIRELEMENTAL_ATTACHMENT_BODY ); #line 714 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fAttPosY = amo0 . amo_plRelative . pl_PositionVector (2); #line 715 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" StandingAnim (); #line 717 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_fAttSizeCurrent = m_fAttSizeBegin ; #line 719 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" GetModelObject () -> StretchModel (FLOAT3D (1.0f , 1.0f , 1.0f)); #line 720 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ModelChangeNotify (); #line 721 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> StretchModel (FLOAT3D (m_fAttSizeBegin , m_fAttSizeBegin , m_fAttSizeBegin )); #line 723 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bRenderParticles = FALSE ; #line 724 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(_pTimer -> TickQuantum ); Jump(STATE_CURRENT, 0x015b0026, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0026_Main_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0026 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0027, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b0027_Main_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0027 ; #line 726 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_emEmiter . Initialize (this ); #line 727 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_emEmiter . em_etType = ET_AIR_ELEMENTAL ; #line 729 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_tmDeath = 1e6f; #line 746 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAt(THINKTIME_NEVER); Jump(STATE_CURRENT, 0x015b0028, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b0028_Main_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0028 switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_ETrigger):{const ETrigger&e= (ETrigger&)__eeInput; UnsetTimer();Jump(STATE_CURRENT,0x015b0029, FALSE, EInternal());return TRUE;}ASSERT(FALSE);break;default:{return TRUE;}ASSERT(FALSE);break; #line 750 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" }return TRUE;}BOOL CAirElemental::H0x015b0029_Main_04(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0029 #line 752 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetCollisionFlags (ECF_AIR ); #line 753 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetPhysicsFlags (EPF_MODEL_WALKING ); #line 755 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_RAISE , AOF_NORESTART ); #line 756 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bRenderParticles = TRUE ; #line 758 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bInitialAnim = TRUE ; #line 760 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" SetTimerAfter(ElementalModel () -> GetAnimLength (ELEMENTAL_ANIM_RAISE )); Jump(STATE_CURRENT, 0x015b002a, FALSE, EBegin());return TRUE;}BOOL CAirElemental::H0x015b002a_Main_05(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b002a switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b002b, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CAirElemental::H0x015b002b_Main_06(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b002b ; #line 762 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ChangeCollisionBoxIndexWhenPossible (AIRELEMENTAL_COLLISION_BOX_COLLISION01 ); #line 765 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" GetModelObject () -> PlayAnim (AIRELEMENTAL_ANIM_DEFAULT , AOF_LOOPING ); #line 767 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" ElementalModel () -> PlayAnim (ELEMENTAL_ANIM_IDLE , AOF_LOOPING ); #line 768 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bInitialAnim = FALSE ; #line 769 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_bFloat = TRUE ; #line 771 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" m_tmWindNextFire = _pTimer -> CurrentTick () + 10.0f; #line 774 "D:/SE1_GPL/Sources/EntitiesMP/AirElemental.es" Jump(STATE_CURRENT, STATE_CAirElemental_ElementalLoop, TRUE, EVoid());return TRUE; ASSERT(FALSE); return TRUE;};