/* * This file is generated by Entity Class Compiler, (c) CroTeam 1997-98 */ #line 4 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" #include "StdH.h" #include "Models/Weapons/Laser/Projectile/LaserProjectile.h" #include "EntitiesMP/EnemyBase.h" //#include "EntitiesMP/Dragonman.h" #include "Models/Enemies/Elementals/Projectile/IcePyramid.h" #include "Models/Enemies/ElementalLava/Projectile/LavaStone.h" #include "Models/Enemies/ElementalLava/Projectile/LavaBomb.h" #include "Models/Enemies/Headman/Projectile/Blade.h" #include "Models/Enemies/Huanman/Projectile/Projectile.h" #include "Models/Enemies/Cyborg/Projectile/LaserProjectile.h" #include "ModelsMP/Enemies/Grunt/Projectile/GruntProjectile.h" #include "ModelsMP/Enemies/Guffy/Projectile/GuffyProjectile.h" #include "ModelsMP/Enemies/ExotechLarva/Weapons/PlasmaGun.h" #include "EntitiesMP/PlayerWeapons.h" #include "EntitiesMP/Shooter.h" #define DEVIL_LASER_SPEED 100.0f #define DEVIL_ROCKET_SPEED 60.0f #include #include CEntityEvent *ELaunchProjectile::MakeCopy(void) { CEntityEvent *peeCopy = new ELaunchProjectile(*this); return peeCopy;} ELaunchProjectile::ELaunchProjectile() : CEntityEvent(EVENTCODE_ELaunchProjectile) {; ClearToDefault(penLauncher); ClearToDefault(prtType); ClearToDefault(fSpeed); ClearToDefault(fStretch); }; #line 113 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" #define DRAGONMAN_NORMAL 0 #define DRAGONMAN_STRONG 1 #define ELEMENTAL_LARGE 2 #define ELEMENTAL_BIG 1 #define ELEMENTAL_NORMAL 0 #define ELEMENTAL_STONEMAN 0 #define ELEMENTAL_LAVAMAN 1 #define ELEMENTAL_ICEMAN 2 void CProjectile_OnInitClass(void) { } void CProjectile_OnPrecache(CDLLEntityClass *pdec, INDEX iUser) { pdec->PrecacheTexture(TEX_REFL_BWRIPLES01); pdec->PrecacheTexture(TEX_REFL_BWRIPLES02); pdec->PrecacheTexture(TEX_REFL_LIGHTMETAL01); pdec->PrecacheTexture(TEX_REFL_LIGHTBLUEMETAL01); pdec->PrecacheTexture(TEX_REFL_DARKMETAL); pdec->PrecacheTexture(TEX_REFL_PURPLE01); pdec->PrecacheTexture(TEX_SPEC_WEAK); pdec->PrecacheTexture(TEX_SPEC_MEDIUM); pdec->PrecacheTexture(TEX_SPEC_STRONG); switch ((ProjectileType)iUser) { case PRT_ROCKET : case PRT_WALKER_ROCKET : case PRT_DEVIL_ROCKET : pdec->PrecacheModel(MODEL_ROCKET ); pdec->PrecacheTexture(TEXTURE_ROCKET); pdec->PrecacheSound(SOUND_FLYING ); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_ROCKET); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_EXPLOSIONSTAIN); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_SHOCKWAVE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_ROCKET_PLANE); break; case PRT_GRENADE: pdec->PrecacheModel(MODEL_GRENADE); pdec->PrecacheTexture(TEXTURE_GRENADE); pdec->PrecacheSound(SOUND_GRENADE_BOUNCE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_GRENADE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_EXPLOSIONSTAIN); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_SHOCKWAVE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_GRENADE_PLANE); break; case PRT_FLAME: pdec->PrecacheModel(MODEL_FLAME); pdec->PrecacheClass(CLASS_FLAME); break; case PRT_LASER_RAY: pdec->PrecacheModel(MODEL_LASER ); pdec->PrecacheTexture(TEXTURE_GREEN_LASER ); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_LASERWAVE); break; case PRT_GRUNT_PROJECTILE_SOL: pdec->PrecacheModel(MODEL_GRUNT_PROJECTILE ); pdec->PrecacheTexture(TEXTURE_GRUNT_PROJECTILE_01 ); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_LASERWAVE); break; case PRT_GRUNT_PROJECTILE_COM: pdec->PrecacheModel(MODEL_GRUNT_PROJECTILE ); pdec->PrecacheTexture(TEXTURE_GRUNT_PROJECTILE_02 ); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_LASERWAVE); break; case PRT_CATMAN_FIRE: pdec->PrecacheModel(MODEL_CATMAN_FIRE ); pdec->PrecacheTexture(TEXTURE_CATMAN_FIRE ); break; case PRT_HEADMAN_FIRECRACKER: pdec->PrecacheModel(MODEL_HEADMAN_FIRECRACKER ); pdec->PrecacheTexture(TEXTURE_HEADMAN_FIRECRACKER ); break; case PRT_HEADMAN_ROCKETMAN: pdec->PrecacheModel(MODEL_HEADMAN_BLADE ); pdec->PrecacheTexture(TEXTURE_HEADMAN_BLADE ); pdec->PrecacheModel(MODEL_HEADMAN_BLADE_FLAME ); pdec->PrecacheTexture(TEXTURE_HEADMAN_BLADE_FLAME ); break; case PRT_HEADMAN_BOMBERMAN: pdec->PrecacheModel(MODEL_HEADMAN_BOMB ); pdec->PrecacheTexture(TEXTURE_HEADMAN_BOMB ); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_BOMB); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_EXPLOSIONSTAIN); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_GRENADE_PLANE); break; case PRT_BONEMAN_FIRE: pdec->PrecacheModel(MODEL_BONEMAN_FIRE ); pdec->PrecacheTexture(TEXTURE_BONEMAN_FIRE ); break; case PRT_WOMAN_FIRE: pdec->PrecacheModel(MODEL_WOMAN_FIRE ); pdec->PrecacheTexture(TEXTURE_WOMAN_FIRE ); break; case PRT_DRAGONMAN_FIRE: case PRT_DRAGONMAN_STRONG_FIRE: pdec->PrecacheModel(MODEL_DRAGONMAN_FIRE ); pdec->PrecacheTexture(TEXTURE_DRAGONMAN_FIRE1 ); pdec->PrecacheTexture(TEXTURE_DRAGONMAN_FIRE2 ); break; case PRT_STONEMAN_FIRE: case PRT_STONEMAN_BIG_FIRE: case PRT_STONEMAN_LARGE_FIRE: pdec->PrecacheModel(MODEL_ELEM_STONE ); pdec->PrecacheTexture(TEXTURE_ELEM_STONE ); break; case PRT_LAVAMAN_BIG_BOMB: case PRT_LAVAMAN_BOMB: case PRT_LAVAMAN_STONE: pdec->PrecacheModel(MODEL_ELEM_LAVA_STONE); pdec->PrecacheModel(MODEL_ELEM_LAVA_STONE_FLARE); pdec->PrecacheModel(MODEL_ELEM_LAVA_BOMB); pdec->PrecacheModel(MODEL_ELEM_LAVA_BOMB_FLARE); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_STONE); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_STONE_FLARE ); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_BOMB); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_BOMB_FLARE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_SHOCKWAVE); pdec->PrecacheClass(CLASS_BLOOD_SPRAY); break; case PRT_METEOR: pdec->PrecacheSound(SOUND_FLYING ); pdec->PrecacheSound(SOUND_METEOR_BLAST ); pdec->PrecacheModel(MODEL_ELEM_LAVA_BOMB); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_BOMB); pdec->PrecacheClass(CLASS_BLOOD_SPRAY); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_CANNON); break; case PRT_ICEMAN_FIRE: case PRT_ICEMAN_BIG_FIRE: case PRT_ICEMAN_LARGE_FIRE: pdec->PrecacheModel(MODEL_ELEM_ICE ); pdec->PrecacheModel(MODEL_ELEM_ICE_FLARE ); pdec->PrecacheTexture(TEXTURE_ELEM_ICE ); //pdec->PrecacheTexture(TEXTURE_ELEM_ICE_FLARE); break; case PRT_HUANMAN_FIRE: pdec->PrecacheModel(MODEL_HUANMAN_FIRE ); pdec->PrecacheTexture(TEXTURE_HUANMAN_FIRE ); pdec->PrecacheModel(MODEL_HUANMAN_FLARE ); pdec->PrecacheTexture(TEXTURE_HUANMAN_FLARE ); break; case PRT_FISHMAN_FIRE: pdec->PrecacheModel(MODEL_FISHMAN_FIRE ); pdec->PrecacheTexture(TEXTURE_FISHMAN_FIRE ); break; case PRT_MANTAMAN_FIRE: pdec->PrecacheModel(MODEL_MANTAMAN_FIRE ); pdec->PrecacheTexture(TEXTURE_MANTAMAN_FIRE ); break; case PRT_DEVIL_LASER: /* pdec->PrecacheModel(MODEL_DEVIL_LASER ); pdec->PrecacheTexture(TEXTURE_DEVIL_LASER ); break; */ case PRT_CYBORG_LASER: case PRT_CYBORG_BOMB: pdec->PrecacheModel(MODEL_CYBORG_LASER ); pdec->PrecacheTexture(TEXTURE_CYBORG_LASER ); pdec->PrecacheModel(MODEL_CYBORG_BOMB ); pdec->PrecacheTexture(TEXTURE_CYBORG_BOMB ); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_BOMB); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_EXPLOSIONSTAIN); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_GRENADE_PLANE); break; case PRT_LAVA_COMET: pdec->PrecacheModel(MODEL_ELEM_LAVA_STONE); pdec->PrecacheModel(MODEL_ELEM_LAVA_STONE_FLARE); pdec->PrecacheModel(MODEL_ELEM_LAVA_BOMB); pdec->PrecacheModel(MODEL_ELEM_LAVA_BOMB_FLARE); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_STONE); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_STONE_FLARE ); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_BOMB); pdec->PrecacheTexture(TEXTURE_ELEM_LAVA_BOMB_FLARE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_SHOCKWAVE); pdec->PrecacheClass(CLASS_BLOOD_SPRAY); pdec->PrecacheModel(MODEL_LAVA ); pdec->PrecacheTexture(TEXTURE_LAVA ); pdec->PrecacheModel(MODEL_LAVA_FLARE ); pdec->PrecacheTexture(TEXTURE_LAVA_FLARE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_SHOCKWAVE); pdec->PrecacheClass(CLASS_BLOOD_SPRAY); break; case PRT_BEAST_PROJECTILE: case PRT_BEAST_DEBRIS: pdec->PrecacheSound(SOUND_BEAST_FLYING ); pdec->PrecacheModel(MODEL_BEAST_FIRE); pdec->PrecacheTexture(TEXTURE_BEAST_FIRE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_CANNON); break; case PRT_GUFFY_PROJECTILE: pdec->PrecacheSound(SOUND_FLYING ); pdec->PrecacheModel(MODEL_GUFFY_PROJECTILE ); pdec->PrecacheTexture(TEXTURE_GUFFY_PROJECTILE ); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_ROCKET ); break; case PRT_BEAST_BIG_PROJECTILE: case PRT_DEVIL_GUIDED_PROJECTILE: case PRT_BEAST_BIG_DEBRIS: case PRT_SHOOTER_FIREBALL: pdec->PrecacheSound(SOUND_BEAST_FLYING ); pdec->PrecacheModel(MODEL_BEAST_FIRE); pdec->PrecacheTexture(TEXTURE_BEAST_BIG_FIRE); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_LIGHT_CANNON); break; case PRT_DEMON_FIREBALL: case PRT_DEMON_FIREBALL_DEBRIS: pdec->PrecacheSound(SOUND_DEMON_FLYING ); pdec->PrecacheModel(MODEL_DEMON_FIREBALL); pdec->PrecacheTexture(TEXTURE_DEMON_FIREBALL); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_LIGHT_CANNON); break; case PRT_LARVA_PLASMA: pdec->PrecacheSound(SOUND_DEMON_FLYING ); pdec->PrecacheModel(MODEL_LARVA_PLASMA); pdec->PrecacheTexture(TEXTURE_LARVA_PLASMA); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_LIGHT_CANNON); break; case PRT_LARVA_TAIL_PROJECTILE: pdec->PrecacheSound(SOUND_LARVETTE ); pdec->PrecacheModel(MODEL_LARVA_TAIL); pdec->PrecacheTexture(TEXTURE_LARVA_TAIL); pdec->PrecacheClass(CLASS_BASIC_EFFECT, BET_CANNON); break; case PRT_SHOOTER_WOODEN_DART: pdec->PrecacheModel(MODEL_SHTR_WOODEN_DART); pdec->PrecacheTexture(TEX_SHTR_WOODEN_DART); break; case PRT_SHOOTER_FLAME: pdec->PrecacheModel(MODEL_FLAME); pdec->PrecacheClass(CLASS_FLAME); break; case PRT_AIRELEMENTAL_WIND: pdec->PrecacheModel(MODEL_WINDBLAST); pdec->PrecacheTexture(TEXTURE_WINDBLAST); break; case PRT_AFTERBURNER_DEBRIS: pdec->PrecacheModel(MODEL_MARKER); pdec->PrecacheTexture(TEXTURE_MARKER); break; default: ASSERT(FALSE); } } void CProjectile::SetDefaultProperties(void) { m_penLauncher = NULL; m_prtType = PRT_ROCKET ; m_pmtMove = PMT_FLYING ; m_penParticles = NULL; m_penTarget = NULL; m_penLastDamaged = NULL; m_fSpeed = 0.0f; m_fIgnoreTime = 0.0f; m_fFlyTime = 0.0f; m_fStartTime = 0.0f; m_fDamageAmount = 0.0f; m_fRangeDamageAmount = 0.0f; m_fDamageHotSpotRange = 0.0f; m_fDamageFallOffRange = 0.0f; m_fSoundRange = 0.0f; m_bExplode = FALSE ; m_bLightSource = FALSE ; m_bCanHitHimself = FALSE ; m_bCanBeDestroyed = FALSE ; m_fWaitAfterDeath = 0.0f; m_aRotateSpeed = 0.0f; m_tmExpandBox = 0.0f; m_tmInvisibility = 0.0f; m_iRebounds = 0; m_fStretch = 1.0f; m_soEffect.SetOwner(this); m_soEffect.Stop_internal(); m_soExplosion.SetOwner(this); m_soExplosion.Stop_internal(); m_fGuidedMaxSpeedFactor = 30.0f; bLockedOn = TRUE ; m_bLeftFlame = FALSE ; m_penPrediction = NULL; CMovableModelEntity::SetDefaultProperties(); } #line 587 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PreMoving(void) { #line 588 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_tmExpandBox > 0){ #line 589 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(_pTimer -> CurrentTick () > m_fStartTime + m_tmExpandBox ){ #line 590 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ChangeCollisionBoxIndexWhenPossible (1); #line 591 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0; #line 592 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 593 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 594 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CMovableModelEntity :: PreMoving (); #line 595 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 598 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PostMoving(void) { #line 599 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CMovableModelEntity :: PostMoving (); #line 601 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_FLAME || m_prtType == PRT_SHOOTER_FLAME ){ #line 603 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CContentType & ctDn = GetWorld () -> wo_actContentTypes [ en_iDnContent ]; #line 605 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(! (ctDn . ct_ulFlags & CTF_BREATHABLE_LUNGS )){ #line 606 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 607 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SendEvent (EEnd ()); #line 608 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 609 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 610 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 613 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::Read_t(CTStream * istr) #line 614 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 615 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CMovableModelEntity :: Read_t (istr ); #line 617 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bLightSource ){ #line 618 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetupLightSource (TRUE ); #line 619 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 620 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } void CProjectile::DumpSync_t(CTStream & strm,INDEX iExtensiveSyncCheck) #line 624 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 625 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CMovableModelEntity :: DumpSync_t (strm , iExtensiveSyncCheck ); #line 626 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" strm . FPrintF_t ("projectile type: %d\n" , m_prtType ); #line 627 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" strm . FPrintF_t ("launcher:"); #line 628 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_penLauncher != NULL ){ #line 629 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" strm . FPrintF_t ("id:%05d '%s'(%s) (%g, %g, %g)\n" , #line 630 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLauncher -> en_ulID , #line 631 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLauncher -> GetName () , m_penLauncher -> GetClass () -> ec_pdecDLLClass -> dec_strName , #line 632 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLauncher -> GetPlacement () . pl_PositionVector (1) , #line 633 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLauncher -> GetPlacement () . pl_PositionVector (2) , #line 634 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLauncher -> GetPlacement () . pl_PositionVector (3)); #line 635 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 636 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" strm . FPrintF_t ("\n"); #line 637 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 638 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 641 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CLightSource * CProjectile::GetLightSource(void) #line 642 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 643 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bLightSource && ! IsPredictor ()){ #line 644 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return & m_lsLightSource ; #line 645 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 646 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return NULL ; #line 647 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 648 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } void CProjectile::Copy(CEntity & enOther,ULONG ulFlags) #line 651 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 652 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CMovableModelEntity :: Copy (enOther , ulFlags ); #line 653 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CProjectile * penOther = (CProjectile *) (& enOther ); #line 654 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(ulFlags & COPY_PREDICTOR ){ #line 657 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 658 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 659 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 661 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL CProjectile::AdjustShadingParameters(FLOAT3D & vLightDirection,COLOR & colLight,COLOR & colAmbient) #line 662 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 664 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CModelObject * pmo = GetModelObject (); #line 665 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((pmo != NULL ) && (_pTimer -> GetLerpedCurrentTick () < (m_fStartTime + m_tmInvisibility ))) #line 666 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 668 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pmo -> mo_colBlendColor = 0; #line 669 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 670 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 671 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 673 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pmo -> mo_colBlendColor = C_WHITE | CT_OPAQUE ; #line 674 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 675 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return CEntity :: AdjustShadingParameters (vLightDirection , colLight , colAmbient ); #line 676 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 679 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::SetupLightSource(BOOL bLive) #line 680 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 682 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CLightSource lsNew ; #line 683 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_ulFlags = LSF_NONPERSISTENT | LSF_DYNAMIC ; #line 684 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rHotSpot = 0.0f; #line 685 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" switch(m_prtType ){ #line 686 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ROCKET : #line 687 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_WALKER_ROCKET : #line 688 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_ROCKET : #line 689 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bLive ) #line 690 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 691 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = 0xA0A080FF; #line 692 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 693 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 694 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 695 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_BLACK | CT_OPAQUE ; #line 696 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 697 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 5.0f; #line 698 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftYellowStarRedRingFar ; #line 699 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 700 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GUFFY_PROJECTILE : #line 701 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_BLUE ; #line 702 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.5f; #line 703 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 704 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRENADE : #line 705 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = 0x2F1F0F00; #line 706 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 2.0f; #line 707 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rHotSpot = 0.2f; #line 708 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftYellowStarRedRingFar ; #line 709 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 710 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_FLAME : #line 711 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_dORANGE ; #line 712 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.0f; #line 713 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 714 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 715 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LASER_RAY : #line 716 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_vdGREEN ; #line 717 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.5f; #line 718 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 719 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 720 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRUNT_PROJECTILE_SOL : #line 721 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_vdRED ; #line 722 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.5f; #line 723 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 724 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 725 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRUNT_PROJECTILE_COM : #line 726 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_vdRED ; #line 727 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.5f; #line 728 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 729 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 730 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CATMAN_FIRE : #line 731 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_BLUE ; #line 732 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 3.5f; #line 733 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftCatmanFireGlow ; #line 734 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 735 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_FIRECRACKER : #line 736 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_ORANGE ; #line 737 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.5f; #line 738 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 739 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 740 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_ROCKETMAN : #line 741 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_YELLOW ; #line 742 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.5f; #line 743 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 744 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 745 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_WOMAN_FIRE : #line 746 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_WHITE ; #line 747 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 3.5f; #line 748 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftCatmanFireGlow ; #line 749 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 750 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DRAGONMAN_FIRE : #line 751 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_YELLOW ; #line 752 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 3.5f; #line 753 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftProjectileYellowBubbleGlow ; #line 754 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 755 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DRAGONMAN_STRONG_FIRE : #line 756 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_RED ; #line 757 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 3.5f; #line 758 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftProjectileStarGlow ; #line 759 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 760 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HUANMAN_FIRE : #line 761 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_lBLUE ; #line 762 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 2.0f; #line 763 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 764 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 765 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_FISHMAN_FIRE : #line 766 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_lBLUE ; #line 767 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 2.0f; #line 768 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 769 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 770 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_MANTAMAN_FIRE : #line 771 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_lBLUE ; #line 772 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 2.0f; #line 773 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 774 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 775 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CYBORG_LASER : #line 776 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_dBLUE ; #line 777 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.5f; #line 778 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 779 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 780 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_LASER : #line 781 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_dBLUE ; #line 782 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 5.0f; #line 783 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftYellowStarRedRingFar ; #line 784 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 785 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LARVA_PLASMA : #line 786 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_dBLUE ; #line 787 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 5.0f; #line 788 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftCatmanFireGlow ; #line 789 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 790 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FIREBALL : #line 791 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_dORANGE ; #line 792 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 5.0f; #line 793 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = & _lftYellowStarRedRingFar ; #line 794 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 795 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FLAME : #line 796 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_colColor = C_dORANGE ; #line 797 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_rFallOff = 1.0f; #line 798 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_plftLensFlare = NULL ; #line 799 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 800 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" default : #line 801 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ASSERTALWAYS ("Unknown light source"); #line 802 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 803 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_ubPolygonalMask = 0; #line 804 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" lsNew . ls_paoLightAnimation = NULL ; #line 806 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_lsLightSource . ls_penEntity = this ; #line 807 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_lsLightSource . SetLightSource (lsNew ); #line 808 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 811 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::RenderParticles(void) { #line 812 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" switch(m_prtType ){ #line 813 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ROCKET : #line 814 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_WALKER_ROCKET : Particles_RocketTrail (this , 1.0f);break ; #line 815 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_ROCKET : Particles_RocketTrail (this , 8.0f);break ; #line 816 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GUFFY_PROJECTILE : break ; #line 817 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRENADE : { #line 819 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedRatio = en_vCurrentTranslationAbsolute . Length () / 140.0f; #line 820 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_CannonBall (this , fSpeedRatio ); #line 821 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 822 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 823 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_FLAME : { #line 825 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fLeaderLiving , fFollowerLiving , fInFrontLiving ; #line 826 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fInFrontLiving = 0.05f; #line 827 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fLeaderLiving = _pTimer -> GetLerpedCurrentTick () - m_fStartTime ; #line 829 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_penParticles != NULL && ! (m_penParticles -> GetFlags () & ENF_DELETED )){ #line 830 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDirLeader = en_vCurrentTranslationAbsolute ; #line 831 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirLeader . Normalize (); #line 833 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsOfClass (m_penParticles , "Projectile")) #line 834 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 835 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CProjectile & prLast = (CProjectile &) * m_penParticles ; #line 837 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsOfClass (prLast . m_penParticles , "Player Weapons")) #line 838 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 839 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlayerWeapons & plw = (CPlayerWeapons &) * prLast . m_penParticles ; #line 840 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(! (plw . GetPlayer () -> GetFlags () & ENF_ALIVE )) #line 841 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 842 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return ; #line 843 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 844 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plPipe , plInFrontOfPipe ; #line 845 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CPlayerWeapons &) * prLast . m_penParticles ) . GetFlamerSourcePlacement (plPipe , plInFrontOfPipe ); #line 846 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fFollowerLiving = _pTimer -> GetLerpedCurrentTick () - ((CProjectile &) * m_penParticles ) . m_fStartTime ; #line 847 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDirPipeFront ; #line 848 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AnglesToDirectionVector (plInFrontOfPipe . pl_OrientationAngle , vDirPipeFront ); #line 849 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirPipeFront . Normalize (); #line 850 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_FlameThrower (GetLerpedPlacement () , plInFrontOfPipe , #line 851 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirLeader , vDirPipeFront , #line 852 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fLeaderLiving , fInFrontLiving , en_ulID , FALSE ); #line 853 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 855 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 856 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 857 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fFollowerLiving = _pTimer -> GetLerpedCurrentTick () - ((CProjectile &) * m_penParticles ) . m_fStartTime ; #line 858 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDirFollower = ((CMovableModelEntity *) (CEntity *) m_penParticles ) -> en_vCurrentTranslationAbsolute ; #line 859 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirFollower . Normalize (); #line 860 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_FlameThrower (GetLerpedPlacement () , m_penParticles -> GetLerpedPlacement () , #line 861 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirLeader , vDirFollower , fLeaderLiving , fFollowerLiving , en_ulID , FALSE ); #line 862 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 864 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else if(IsOfClass (m_penParticles , "Player Weapons")){ #line 865 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlayerWeapons & plw = (CPlayerWeapons &) * m_penParticles ; #line 866 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(! (plw . GetPlayer () -> GetFlags () & ENF_ALIVE )) #line 867 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 868 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return ; #line 869 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 870 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plPipe , plInFrontOfPipe ; #line 871 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" plw . GetFlamerSourcePlacement (plPipe , plInFrontOfPipe ); #line 872 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDirPipeFront ; #line 873 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AnglesToDirectionVector (plInFrontOfPipe . pl_OrientationAngle , vDirPipeFront ); #line 874 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vViewDir ; #line 875 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AnglesToDirectionVector (plPipe . pl_OrientationAngle , vViewDir ); #line 876 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDirFollower = vViewDir . Normalize (); #line 884 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_FlameThrower (plInFrontOfPipe , plPipe , #line 885 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirPipeFront , vDirFollower , #line 886 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fInFrontLiving , 0.0f , en_ulID , TRUE ); #line 888 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_FlameThrowerStart (plPipe , plw . m_tmFlamerStart , plw . m_tmFlamerStop ); #line 889 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 890 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 891 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 892 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 893 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CATMAN_FIRE : Particles_RocketTrail (this , 1.0f);break ; #line 894 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_FIRECRACKER : Particles_FirecrackerTrail (this );break ; #line 895 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_ROCKETMAN : Particles_Fireball01Trail (this );break ; #line 896 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_BOMBERMAN : Particles_BombTrail (this );break ; #line 897 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVA_COMET : Particles_LavaTrail (this );break ; #line 898 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BIG_BOMB : Particles_LavaBombTrail (this , 4.0f);break ; #line 899 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BOMB : Particles_LavaBombTrail (this , 1.0f);break ; #line 900 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_PROJECTILE : Particles_BeastProjectileTrail (this , 2.0f , 0.25f , 48);break ; #line 901 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_BIG_PROJECTILE : #line 902 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEMON_FIREBALL : #line 903 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_BeastBigProjectileTrail (this , 4.0f , 0.25f , 0.0f , 64); #line 904 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_AfterBurner (this , m_fStartTime , 1.0f); #line 905 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 906 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_GUIDED_PROJECTILE : #line 907 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_BeastBigProjectileTrail (this , 6.0f , 0.375f , 0.0f , 64); #line 908 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 909 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_DEBRIS : Particles_BeastProjectileDebrisTrail (this , 0.20f);break ; #line 910 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_BIG_DEBRIS : Particles_BeastProjectileDebrisTrail (this , 0.25f);break ; #line 911 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_WOODEN_DART : Particles_RocketTrail (this , 0.25f);break ; #line 912 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FIREBALL : Particles_Fireball01Trail (this );break ; #line 913 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FLAME : { #line 915 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fTimeElapsed , fParticlesTimeElapsed ; #line 916 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fTimeElapsed = _pTimer -> GetLerpedCurrentTick () - m_fStartTime ; #line 918 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_penParticles != NULL && ! (m_penParticles -> GetFlags () & ENF_DELETED )){ #line 920 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsOfClass (m_penParticles , "Projectile")){ #line 921 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fParticlesTimeElapsed = _pTimer -> GetLerpedCurrentTick () - ((CProjectile &) * m_penParticles ) . m_fStartTime ; #line 922 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_ShooterFlame (GetLerpedPlacement () , m_penParticles -> GetLerpedPlacement () , #line 923 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fTimeElapsed , fParticlesTimeElapsed ); #line 924 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else if(IsOfClass (m_penParticles , "Shooter")){ #line 925 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_ShooterFlame (GetLerpedPlacement () , #line 926 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CShooter &) * m_penParticles ) . GetPlacement () , #line 927 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fTimeElapsed , 0.0f); #line 928 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 929 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 930 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 931 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 932 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_METEOR : #line 933 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_MeteorTrail (this , m_fStretch , 1.0f , en_vCurrentTranslationAbsolute ); #line 934 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_AfterBurner (this , m_fStartTime , m_fStretch * 4.0f , 2); #line 935 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 936 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_AFTERBURNER_DEBRIS : #line 937 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_AfterBurner (this , m_fStartTime , m_fStretch ); #line 938 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 939 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_AIRELEMENTAL_WIND : #line 940 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_Windblast (this , m_fStretch / 4.0f , m_fStartTime + 3.0f); #line 941 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 942 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 943 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 951 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PlayerRocket(void) { #line 953 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 954 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 955 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 956 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ROCKET ); #line 957 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ROCKET ); #line 959 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 960 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 962 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (20.0f , 2.0f , 1.0f , 1.0f); #line 963 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_FLYING , SOF_3D | SOF_LOOP ); #line 964 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 30.0f; #line 965 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetSP () -> sp_bCooperative ) #line 966 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 967 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 100.0f; #line 968 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 50.0f; #line 969 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 970 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 971 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 972 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 75.0f; #line 973 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 75.0f; #line 974 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 975 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 4.0f; #line 976 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 8.0f; #line 977 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 50.0f; #line 978 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 979 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 980 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = TRUE ; #line 981 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 982 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 1.125f; #line 983 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 984 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 985 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (5.0f); #line 986 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 987 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 989 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::WalkerRocket(void) { #line 991 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 992 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 993 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 994 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ROCKET ); #line 995 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ROCKET ); #line 997 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 998 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1000 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (20.0f , 2.0f , 1.0f , 1.0f); #line 1001 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_FLYING , SOF_3D | SOF_LOOP ); #line 1002 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 30.0f; #line 1003 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetSP () -> sp_gdGameDifficulty <= CSessionProperties :: GD_EASY ){ #line 1004 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 40.0f; #line 1005 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 20.0f; #line 1006 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 1007 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 100.0f; #line 1008 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 50.0f; #line 1009 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1010 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 4.0f; #line 1011 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 8.0f; #line 1012 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 50.0f; #line 1013 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 1014 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1015 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = TRUE ; #line 1016 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1017 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 1.125f; #line 1018 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 1019 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 1020 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (5.0f); #line 1021 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1022 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1024 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::WalkerRocketExplosion(void) { #line 1025 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlayerRocketExplosion (); #line 1026 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1028 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PlayerRocketExplosion(void) { #line 1029 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1030 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 1031 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 1032 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 1035 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1036 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_ROCKET ; #line 1037 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (1 , 1 , 1); #line 1038 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1040 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Player")){ #line 1041 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnRangeSound (m_penLauncher , this , SNDT_PLAYER , m_fSoundRange ); #line 1042 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1045 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSION_DEBRIS ; #line 1046 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1049 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSION_SMOKE ; #line 1050 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1053 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 1054 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 1056 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSIONSTAIN ; #line 1057 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1058 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1060 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_SHOCKWAVE ; #line 1061 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1062 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1064 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_ROCKET_PLANE ; #line 1065 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1066 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint + ese . vNormal / 50.0f , ANGLE3D (0 , 0 , 0)) , ese ); #line 1067 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1068 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1069 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1072 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PlayerGrenade(void) { #line 1074 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1075 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_BOUNCING ); #line 1076 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1077 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_GRENADE ); #line 1078 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_GRENADE ); #line 1080 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 5.0f , - m_fSpeed ) , (CMovableEntity *) & * m_penLauncher ); #line 1081 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , FRnd () * 120.0f + 120.0f , FRnd () * 250.0f - 125.0f)); #line 1082 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fBounceDampNormal = 0.75f; #line 1083 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fBounceDampParallel = 0.6f; #line 1084 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fJumpControlMultiplier = 0.0f; #line 1085 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fCollisionSpeedLimit = 45.0f; #line 1086 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fCollisionDamageFactor = 10.0f; #line 1087 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 3.0f; #line 1088 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 75.0f; #line 1089 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 100.0f; #line 1090 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 4.0f; #line 1091 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 8.0f; #line 1092 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 50.0f; #line 1093 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 1094 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fDeceleration = 25.0f; #line 1095 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1096 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = TRUE ; #line 1097 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1098 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1099 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (20.0f); #line 1100 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_SLIDING ; #line 1101 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 1102 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 1103 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1105 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PlayerGrenadeExplosion(void) { #line 1106 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1107 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 1108 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 1109 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 1112 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1113 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_GRENADE ; #line 1114 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (1 , 1 , 1); #line 1115 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1117 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Player")){ #line 1118 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnRangeSound (m_penLauncher , this , SNDT_PLAYER , m_fSoundRange ); #line 1119 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1122 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 1123 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 1125 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSIONSTAIN ; #line 1126 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1127 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1129 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_SHOCKWAVE ; #line 1130 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1131 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1133 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_GRENADE_PLANE ; #line 1134 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1135 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint + ese . vNormal / 50.0f , ANGLE3D (0 , 0 , 0)) , ese ); #line 1136 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1137 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1138 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1145 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PlayerFlame(void) { #line 1147 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsEditorModel (); #line 1148 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_SLIDING & ~ EPF_TRANSLATEDBYGRAVITY & ~ EPF_ORIENTEDBYGRAVITY ); #line 1150 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1151 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1152 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_FLAME ); #line 1157 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CMovableEntity * penPlayer = (CMovableEntity *) (CEntity *) m_penLauncher ; #line 1158 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDirection = penPlayer -> en_vCurrentTranslationAbsolute ; #line 1159 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vFront = - GetRotationMatrix () . GetColumn (3); #line 1160 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedFwd = ClampDn (vDirection % vFront , 0.0f); #line 1162 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - (25.0f + fSpeedFwd )) , penPlayer ); #line 1163 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1164 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 1.0f; #line 1165 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = (GetSP () -> sp_bCooperative ) ? 10.0f : 4.0f; #line 1166 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1167 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1168 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1169 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1170 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1171 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.3f; #line 1172 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 1173 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_SLIDING ; #line 1174 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1181 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PlayerLaserRay(void) { #line 1183 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1184 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 1185 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1186 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1187 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_LASER ); #line 1188 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CModelObject * pmo = GetModelObject (); #line 1189 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(pmo != NULL ) #line 1190 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1191 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pmo -> PlayAnim (LASERPROJECTILE_ANIM_GROW , 0); #line 1192 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1193 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_GREEN_LASER ); #line 1195 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 120.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1196 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1197 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 3.0f; #line 1198 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 20.0f; #line 1199 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1200 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1201 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1202 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1203 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1204 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1205 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 1207 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.025f; #line 1208 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1209 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1211 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::PlayerLaserWave(void) { #line 1212 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1213 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 1214 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 1215 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 1218 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 1219 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 1221 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_dRED | CT_OPAQUE ; #line 1222 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LASERWAVE ; #line 1223 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1224 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1225 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1226 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1227 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1234 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::CatmanProjectile(void) { #line 1236 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1237 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 1238 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1239 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1240 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_CATMAN_FIRE ); #line 1241 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_CATMAN_FIRE ); #line 1243 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 15.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1244 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1245 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1246 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 5.0f; #line 1247 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1248 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1249 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1250 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1251 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1252 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1253 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1254 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1261 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::HeadmanFirecracker(void) { #line 1263 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1264 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_SLIDING ); #line 1265 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1266 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1267 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_HEADMAN_FIRECRACKER ); #line 1268 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_HEADMAN_FIRECRACKER ); #line 1269 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (0.75f , 0.75f , 0.75f)); #line 1270 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1272 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 25.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1273 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , FRnd () * 20.0f - 10.0f)); #line 1274 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1275 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 4.0f; #line 1276 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1277 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1278 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1279 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1280 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1281 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1282 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_SLIDING ; #line 1283 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1285 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::HeadmanRocketman(void) { #line 1287 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1288 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 1289 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1290 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1291 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetComponents (this , * GetModelObject () , MODEL_HEADMAN_BLADE , TEXTURE_HEADMAN_BLADE , #line 1292 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" TEX_REFL_LIGHTBLUEMETAL01 , TEX_SPEC_MEDIUM , 0); #line 1293 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachmentToModel (this , * GetModelObject () , BLADE_ATTACHMENT_FLAME01 , #line 1294 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" MODEL_HEADMAN_BLADE_FLAME , TEXTURE_HEADMAN_BLADE_FLAME , 0 , 0 , 0); #line 1295 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachmentToModel (this , * GetModelObject () , BLADE_ATTACHMENT_FLAME02 , #line 1296 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" MODEL_HEADMAN_BLADE_FLAME , TEXTURE_HEADMAN_BLADE_FLAME , 0 , 0 , 0); #line 1297 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachmentToModel (this , * GetModelObject () , BLADE_ATTACHMENT_FLAME03 , #line 1298 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" MODEL_HEADMAN_BLADE_FLAME , TEXTURE_HEADMAN_BLADE_FLAME , 0 , 0 , 0); #line 1299 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (0.5f , 0.5f , 0.5f)); #line 1300 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1302 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1303 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1304 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1305 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 5.0f; #line 1306 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1307 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1308 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1309 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1310 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1311 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1312 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1313 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1315 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::HeadmanBomberman(void) { #line 1317 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1318 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_BOUNCING ); #line 1319 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1320 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_HEADMAN_BOMB ); #line 1321 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_HEADMAN_BOMB ); #line 1324 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - m_fSpeed ) , (CMovableEntity *) & * m_penLauncher ); #line 1325 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , FRnd () * 360.0f - 180.0f , FRnd () * 360.0f - 180.0f)); #line 1326 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 2.5f; #line 1327 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 1328 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 15.0f; #line 1329 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 1.0f; #line 1330 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 6.0f; #line 1331 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 25.0f; #line 1332 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 1333 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1334 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = TRUE ; #line 1335 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1336 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1337 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (5.0f); #line 1338 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1339 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1341 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::HeadmanBombermanExplosion(void) { #line 1342 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1343 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 1344 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 1345 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 1348 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1349 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_BOMB ; #line 1350 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (1.0f , 1.0f , 1.0f); #line 1351 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1353 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 1354 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 1356 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSIONSTAIN ; #line 1357 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1358 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1359 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_GRENADE_PLANE ; #line 1360 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1361 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint + ese . vNormal / 50.0f , ANGLE3D (0 , 0 , 0)) , ese ); #line 1362 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1363 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1364 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1366 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::CyborgBombExplosion(void) #line 1367 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1368 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1369 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 1370 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 1371 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 1374 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1375 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_BOMB ; #line 1376 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (1.0f , 1.0f , 1.0f); #line 1377 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1379 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 1380 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 1382 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSIONSTAIN ; #line 1383 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1384 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1385 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_GRENADE_PLANE ; #line 1386 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1387 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint + ese . vNormal / 50.0f , ANGLE3D (0 , 0 , 0)) , ese ); #line 1388 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1389 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1390 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1395 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BonemanProjectile(void) { #line 1397 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1398 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 1399 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1400 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1401 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_BONEMAN_FIRE ); #line 1402 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_BONEMAN_FIRE ); #line 1404 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1405 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1406 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1407 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 1408 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1409 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1410 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1411 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1412 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1413 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1414 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_SLIDING ; #line 1415 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1422 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::WomanProjectile(void) { #line 1424 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1425 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 1426 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1427 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1428 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_WOMAN_FIRE ); #line 1429 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_WOMAN_FIRE ); #line 1431 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1432 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1433 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1434 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 8.0f; #line 1435 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1436 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1437 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1438 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1439 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1440 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1441 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1442 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1449 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DragonmanProjectile(INDEX iType) { #line 1451 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1452 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_ONBLOCK_SLIDE | EPF_PUSHABLE | EPF_MOVABLE ); #line 1453 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1454 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1455 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_DRAGONMAN_FIRE ); #line 1456 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(iType == DRAGONMAN_STRONG ){ #line 1457 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_DRAGONMAN_FIRE2 ); #line 1458 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 1459 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_DRAGONMAN_FIRE1 ); #line 1460 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1462 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(iType == DRAGONMAN_STRONG ){ #line 1463 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 40.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1464 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 14.0f; #line 1465 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 1466 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1467 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 7.0f; #line 1468 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1469 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1470 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1471 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1472 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1473 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1474 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1475 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1476 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1477 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1478 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1485 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ElementalRock(INDEX iSize,INDEX iType) { #line 1487 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1488 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_ONBLOCK_SLIDE | EPF_PUSHABLE | EPF_MOVABLE ); #line 1489 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1490 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" switch(iType ){ #line 1491 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case ELEMENTAL_STONEMAN : #line 1492 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ELEM_STONE ); #line 1493 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ELEM_STONE ); #line 1494 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 1495 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case ELEMENTAL_LAVAMAN : #line 1496 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ELEM_LAVA_STONE ); #line 1497 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ELEM_LAVA_STONE ); #line 1498 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachmentToModel (this , * GetModelObject () , LAVASTONE_ATTACHMENT_FLARE , #line 1499 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" MODEL_ELEM_LAVA_STONE_FLARE , TEXTURE_ELEM_LAVA_STONE_FLARE , 0 , 0 , 0); #line 1500 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 1501 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case ELEMENTAL_ICEMAN : #line 1502 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ELEM_ICE ); #line 1503 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ELEM_ICE ); #line 1506 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 1507 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1508 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(iSize == ELEMENTAL_LARGE ){ #line 1509 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (2.25f , 2.25f , 2.25f)); #line 1510 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else if(iSize == ELEMENTAL_BIG ){ #line 1511 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (0.75f , 0.75f , 0.75f)); #line 1512 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 1513 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (0.4f , 0.4f , 0.4f)); #line 1514 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1515 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1517 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(iSize == ELEMENTAL_LARGE ){ #line 1518 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 80.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1519 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 20.0f; #line 1520 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (40.0f); #line 1521 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else if(iSize == ELEMENTAL_BIG ){ #line 1522 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 50.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1523 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 12.5f; #line 1524 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (20.0f); #line 1525 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 1526 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1527 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 7.0f; #line 1528 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (10.0f); #line 1529 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1530 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , FRnd () * 1800.0f - 900.0f)); #line 1531 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fCollisionSpeedLimit = 1000.0f; #line 1532 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" en_fCollisionDamageFactor = 0.0f; #line 1533 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1534 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1535 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1536 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1537 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1538 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1539 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1540 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_SLIDING ; #line 1541 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1543 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LavaManBomb(void) #line 1544 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1546 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1547 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_BOUNCING ); #line 1548 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1550 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ELEM_LAVA_BOMB ); #line 1551 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ELEM_LAVA_BOMB ); #line 1552 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachmentToModel (this , * GetModelObject () , LAVABOMB_ATTACHMENT_FLARE , #line 1553 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" MODEL_ELEM_LAVA_BOMB_FLARE , TEXTURE_ELEM_LAVA_BOMB_FLARE , 0 , 0 , 0); #line 1555 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_LAVAMAN_BIG_BOMB ) #line 1556 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1557 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (6.0f , 6.0f , 6.0f)); #line 1558 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 20.0f; #line 1559 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 10.0f; #line 1560 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 7.5f; #line 1561 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 15.0f; #line 1562 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (30.0f); #line 1563 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1564 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else if(m_prtType == PRT_LAVAMAN_BOMB ) #line 1565 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1566 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (1.5f , 1.5f , 1.5f)); #line 1567 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 1568 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 5.0f; #line 1569 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 5.0f; #line 1570 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 10.0f; #line 1571 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (10.0f); #line 1572 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1573 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1576 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - m_fSpeed ) , (CMovableEntity *) & * m_penLauncher ); #line 1577 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , FRnd () * 360.0f - 180.0f , 0.0f)); #line 1578 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 20.0f; #line 1579 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 50.0f; #line 1580 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 1581 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1582 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1583 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1584 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1585 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 4.0f; #line 1588 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_LAVAMAN_BIG_BOMB ) #line 1589 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1591 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 1592 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1593 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 1594 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1595 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1596 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 4.0f; #line 1597 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 1598 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 1599 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = FLOAT3D (0 , - 0.5f , 0); #line 1600 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 1601 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1602 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1603 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1605 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LavamanBombExplosion(void) #line 1606 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1607 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1608 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 1609 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 1610 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 1612 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )) #line 1613 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1614 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f) #line 1615 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1617 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1618 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_SHOCKWAVE ; #line 1619 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1620 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1621 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1622 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1625 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1626 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 1627 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (4 , 4 , 4); #line 1628 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1631 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 1632 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1633 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 1634 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1635 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1636 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 4.0f; #line 1637 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 1638 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 1639 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 32.0f; #line 1640 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 1641 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1644 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" for(INDEX iDebris = 0;iDebris < 3 + IRnd () % 3;iDebris ++) #line 1645 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1646 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fHeading = (FRnd () - 0.5f) * 180.0f; #line 1647 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fPitch = 10.0f + FRnd () * 40.0f; #line 1648 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeed = 10.0 + FRnd () * 50.0f; #line 1651 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D pl = GetPlacement (); #line 1652 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_PositionVector (2) += 2.0f; #line 1653 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle = m_penLauncher -> GetPlacement () . pl_OrientationAngle ; #line 1654 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (1) += AngleDeg (fHeading ); #line 1655 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (2) = AngleDeg (fPitch ); #line 1657 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penProjectile = CreateEntity (pl , CLASS_PROJECTILE ); #line 1658 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ELaunchProjectile eLaunch ; #line 1659 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . penLauncher = this ; #line 1660 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . prtType = PRT_LAVAMAN_BOMB ; #line 1661 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . fSpeed = fSpeed ; #line 1662 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penProjectile -> Initialize (eLaunch ); #line 1665 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = pl ; #line 1666 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1667 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (penProjectile ); #line 1668 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1669 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1670 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 1.0f; #line 1671 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 1672 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 1673 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = FLOAT3D (0 , - 0.5f , 0); #line 1674 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = penProjectile ; #line 1675 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1676 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1677 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1679 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LavamanBombDebrisExplosion(void) #line 1680 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1681 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1682 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 1683 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 1684 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 1687 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )) #line 1688 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1689 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f) #line 1690 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1691 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1692 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_SHOCKWAVE ; #line 1693 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 1694 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 1695 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1696 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1699 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1700 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 1701 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 1702 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1705 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 1706 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1707 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 1708 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1709 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1710 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 4.0f; #line 1711 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 2.0f; #line 1712 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 1713 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 16.0f; #line 1714 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 1715 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1716 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1721 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::HuanmanProjectile(void) { #line 1723 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1724 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 1725 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 1726 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 1727 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetComponents (this , * GetModelObject () , MODEL_HUANMAN_FIRE , TEXTURE_HUANMAN_FIRE , #line 1728 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" TEX_REFL_LIGHTMETAL01 , TEX_SPEC_STRONG , 0); #line 1729 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachmentToModel (this , * GetModelObject () , PROJECTILE_ATTACHMENT_FLARE , #line 1730 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" MODEL_HUANMAN_FLARE , TEXTURE_HUANMAN_FLARE , 0 , 0 , 0); #line 1731 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (0.5f , 0.5f , 0.5f)); #line 1732 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1734 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1735 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1736 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 1737 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 1738 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1739 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1740 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 1741 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1742 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1743 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1744 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1745 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1750 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastProjectile(void) { #line 1752 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Enemy Base")){ #line 1753 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penTarget = ((CEnemyBase *) & * m_penLauncher ) -> m_penEnemy ; #line 1754 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1756 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1757 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_FREE_FLYING ); #line 1758 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1760 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_BEAST_FIRE ); #line 1761 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_BEAST_FIRE ); #line 1762 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (1.5f , 1.5f , 1.5f)); #line 1764 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1766 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (20.0f , 2.0f , 1.0f , 1.0f); #line 1767 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_BEAST_FLYING , SOF_3D | SOF_LOOP ); #line 1769 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 60.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1770 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1771 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 10.0f; #line 1772 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 1773 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1774 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1775 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1776 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1777 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1778 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1779 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_GUIDED ; #line 1780 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fGuidedMaxSpeedFactor = 30.0f; #line 1781 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 175.0f; #line 1782 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (10.0f); #line 1783 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1785 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastBigProjectile(void) { #line 1787 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Enemy Base")){ #line 1788 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penTarget = ((CEnemyBase *) & * m_penLauncher ) -> m_penEnemy ; #line 1789 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1791 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1792 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_FREE_FLYING ); #line 1793 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1795 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_BEAST_FIRE ); #line 1796 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_BEAST_BIG_FIRE ); #line 1797 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (2.5f , 2.5f , 2.5f)); #line 1799 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1801 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (50.0f , 2.0f , 1.0f , 0.75f); #line 1802 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_BEAST_FLYING , SOF_3D | SOF_LOOP ); #line 1804 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 60.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 1805 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1806 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 10.0f; #line 1807 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 20.0f; #line 1808 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1809 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1810 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1811 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1812 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 1813 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1814 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_GUIDED_FAST ; #line 1815 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fGuidedMaxSpeedFactor = 90.0f; #line 1816 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (10000.0f); #line 1817 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 100.0f; #line 1818 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1820 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastDebris(void) #line 1821 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1823 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1824 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_BOUNCING ); #line 1825 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1827 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_BEAST_FIRE ); #line 1828 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (0.75f , 0.75f , 0.75f)); #line 1829 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_BEAST_FIRE ); #line 1830 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StartAnim (1 + (ULONG ) FRnd () * 5.0f); #line 1832 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1834 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - 20.0f) , (CMovableEntity *) & * m_penLauncher ); #line 1835 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1836 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 10.0f; #line 1837 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 0.0f; #line 1838 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1839 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1840 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1841 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1842 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1843 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1844 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1845 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (1.0f); #line 1846 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 100.0f; #line 1847 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1849 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastBigDebris(void) #line 1850 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1852 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 1853 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_BOUNCING ); #line 1854 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 1856 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_BEAST_FIRE ); #line 1857 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_BEAST_BIG_FIRE ); #line 1858 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (1.0f , 1.0f , 1.0f)); #line 1859 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StartAnim (1 + (ULONG ) FRnd () * 5.0f); #line 1861 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 1863 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - 20.0f) , (CMovableEntity *) & * m_penLauncher ); #line 1864 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 1865 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 10.0f; #line 1866 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 0.0f; #line 1867 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 1868 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 1869 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 1870 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 1871 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 1872 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 1873 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 1874 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (1.0f); #line 1875 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 100.0f; #line 1876 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1878 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastDebrisExplosion(void) #line 1879 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1881 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1882 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_GREEN | CT_OPAQUE ; #line 1883 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 1884 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (0.75 , 0.75 , 0.75); #line 1885 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1888 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 1889 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1890 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 1891 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1892 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1893 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 2.0f; #line 1894 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.75f; #line 1895 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_BEAST_PROJECTILE_SPRAY ; #line 1896 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 64.0f; #line 1897 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 1898 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1899 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1901 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastBigDebrisExplosion(void) #line 1902 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1904 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1905 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1906 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 1907 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (1 , 1 , 1); #line 1908 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1911 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 1912 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1913 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 1914 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1915 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1916 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 2.0f; #line 1917 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 1.0f; #line 1918 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 1919 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 64.0f; #line 1920 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 1921 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1922 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1924 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastProjectileExplosion(void) #line 1925 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1927 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1928 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_GREEN | CT_OPAQUE ; #line 1929 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 1930 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (1.25 , 1.25 , 1.25); #line 1931 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1934 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 1935 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1936 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 1937 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1938 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1939 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 2.0f; #line 1940 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 1.0f; #line 1941 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_BEAST_PROJECTILE_SPRAY ; #line 1942 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 64.0f; #line 1943 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 1944 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1946 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fHeading = 20.0f + (FRnd () - 0.5f) * 60.0f; #line 1948 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" for(INDEX iDebris = 0;iDebris < 2;iDebris ++) #line 1949 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1950 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fPitch = 10.0f + FRnd () * 10.0f; #line 1951 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeed = 5.0 + FRnd () * 20.0f; #line 1954 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D pl = GetPlacement (); #line 1955 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (1) += AngleDeg (fHeading ); #line 1957 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fHeading = - fHeading ; #line 1958 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (2) = AngleDeg (fPitch ); #line 1960 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penProjectile = CreateEntity (pl , CLASS_PROJECTILE ); #line 1961 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ELaunchProjectile eLaunch ; #line 1962 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . penLauncher = this ; #line 1963 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . prtType = PRT_BEAST_DEBRIS ; #line 1964 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . fSpeed = fSpeed ; #line 1965 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penProjectile -> Initialize (eLaunch ); #line 1968 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = pl ; #line 1969 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1970 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (penProjectile ); #line 1971 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1972 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1973 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 0.5f; #line 1974 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.25f; #line 1975 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_BEAST_PROJECTILE_SPRAY ; #line 1976 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = FLOAT3D (0 , - 0.5f , 0); #line 1977 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = penProjectile ; #line 1978 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 1979 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1980 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 1982 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BeastBigProjectileExplosion(void) #line 1983 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 1985 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 1986 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1987 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 1988 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 1989 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 1992 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 1993 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 1994 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 1995 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 1996 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 1997 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 4.0f; #line 1998 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 1999 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 2000 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 32.0f; #line 2001 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 2002 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2005 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" for(INDEX iDebris = 0;iDebris < 3 + IRnd () % 2;iDebris ++) #line 2006 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2007 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fHeading = (FRnd () - 0.5f) * 180.0f; #line 2008 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fPitch = 10.0f + FRnd () * 40.0f; #line 2009 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeed = 10.0 + FRnd () * 50.0f; #line 2012 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D pl = GetPlacement (); #line 2013 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (1) += AngleDeg (fHeading ); #line 2014 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (2) += AngleDeg (fPitch ); #line 2016 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penProjectile = CreateEntity (pl , CLASS_PROJECTILE ); #line 2017 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ELaunchProjectile eLaunch ; #line 2018 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . penLauncher = this ; #line 2019 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . prtType = PRT_BEAST_BIG_DEBRIS ; #line 2020 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . fSpeed = fSpeed ; #line 2021 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penProjectile -> Initialize (eLaunch ); #line 2024 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = pl ; #line 2025 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2026 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (penProjectile ); #line 2027 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2028 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2029 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 1.0f; #line 2030 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 2031 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 2032 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = FLOAT3D (0 , - 0.5f , 0); #line 2033 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = penProjectile ; #line 2034 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2035 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2036 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2041 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::FishmanProjectile(void) { #line 2043 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2044 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2045 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2046 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2047 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetComponents (this , * GetModelObject () , MODEL_FISHMAN_FIRE , TEXTURE_FISHMAN_FIRE , 0 , 0 , 0); #line 2048 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2050 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2051 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2052 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 2053 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 5.0f; #line 2054 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2055 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2056 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2057 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2058 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2059 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2060 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2061 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2068 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::MantamanProjectile(void) { #line 2070 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2071 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2072 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2073 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2074 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetComponents (this , * GetModelObject () , MODEL_MANTAMAN_FIRE , TEXTURE_MANTAMAN_FIRE , 0 , 0 , 0); #line 2075 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2077 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 35.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2078 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2079 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 2080 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 7.0f; #line 2081 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2082 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2083 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2084 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2085 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2086 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2087 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2088 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2094 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DevilLaser(void) { #line 2096 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2097 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2098 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2099 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2100 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetComponents (this , * GetModelObject () , MODEL_CYBORG_LASER , TEXTURE_CYBORG_LASER , 0 , 0 , 0); #line 2101 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (4.0f , 4.0f , 2.0f)); #line 2102 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2104 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - DEVIL_LASER_SPEED ) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2105 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2106 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 2107 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 2108 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2109 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2110 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2111 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2112 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2113 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2114 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2115 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2117 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DevilRocket(void) { #line 2119 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2120 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2121 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2122 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ROCKET ); #line 2123 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ROCKET ); #line 2124 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (12.0f , 12.0f , 8.0f)); #line 2125 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2127 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - DEVIL_ROCKET_SPEED ) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2128 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2130 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (100.0f , 2.0f , 1.0f , 1.0f); #line 2131 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_FLYING , SOF_3D | SOF_LOOP ); #line 2132 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 50.0f; #line 2133 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 50.0f; #line 2134 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 50.0f; #line 2135 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 2.0f; #line 2136 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 10.0f; #line 2137 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 100.0f; #line 2138 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 2139 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2140 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = TRUE ; #line 2141 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 2142 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 1.125f; #line 2143 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 10000.0f; #line 2144 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 2145 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (25.0f); #line 2146 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2147 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2149 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DevilRocketExplosion(void) { #line 2150 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 2151 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 2152 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 2153 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 2156 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 2157 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_GRENADE ; #line 2158 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 2159 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 2161 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Player")){ #line 2162 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnRangeSound (m_penLauncher , this , SNDT_PLAYER , m_fSoundRange ); #line 2163 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2166 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 2167 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 2169 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSIONSTAIN ; #line 2170 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 2171 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 2172 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 2174 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_SHOCKWAVE ; #line 2175 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 2176 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 2177 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 2179 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_GRENADE_PLANE ; #line 2180 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 2181 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 2182 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint + ese . vNormal / 50.0f , ANGLE3D (0 , 0 , 0)) , ese ); #line 2183 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2184 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2185 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2187 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DevilGuidedProjectile(void) { #line 2189 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Enemy Base")){ #line 2190 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penTarget = ((CEnemyBase *) & * m_penLauncher ) -> m_penEnemy ; #line 2191 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2193 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2194 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_FREE_FLYING ); #line 2195 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2197 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_BEAST_FIRE ); #line 2198 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_BEAST_BIG_FIRE ); #line 2199 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (2.5f , 2.5f , 2.5f)); #line 2200 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2202 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (250.0f , 2.0f , 1.0f , 0.75f); #line 2203 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_FLYING , SOF_3D | SOF_LOOP ); #line 2205 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 80.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2206 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2207 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 20.0f; #line 2208 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 20.0f; #line 2209 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2210 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2211 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2212 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2213 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 2214 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2215 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_GUIDED ; #line 2216 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fGuidedMaxSpeedFactor = 30.0f; #line 2217 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (30.0f); #line 2218 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 100.0f; #line 2219 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2221 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DevilGuidedProjectileExplosion(void) #line 2222 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2224 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 2225 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 2226 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 2227 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (4 , 4 , 4); #line 2228 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 2231 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 2232 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2233 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 2234 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2235 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2236 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 8.0f; #line 2237 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 1.0f; #line 2238 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 2239 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 32.0f; #line 2240 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 2241 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2244 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" for(INDEX iDebris = 0;iDebris < 3 + IRnd () % 2;iDebris ++) #line 2245 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2246 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fHeading = (FRnd () - 0.5f) * 180.0f; #line 2247 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fPitch = 10.0f + FRnd () * 40.0f; #line 2248 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeed = 10.0 + FRnd () * 50.0f; #line 2251 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D pl = GetPlacement (); #line 2252 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (1) += AngleDeg (fHeading ); #line 2253 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pl . pl_OrientationAngle (2) += AngleDeg (fPitch ); #line 2255 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penProjectile = CreateEntity (pl , CLASS_PROJECTILE ); #line 2256 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ELaunchProjectile eLaunch ; #line 2257 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . penLauncher = this ; #line 2258 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . prtType = PRT_BEAST_BIG_DEBRIS ; #line 2259 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eLaunch . fSpeed = fSpeed ; #line 2260 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penProjectile -> Initialize (eLaunch ); #line 2263 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = pl ; #line 2264 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2265 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (penProjectile ); #line 2266 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2267 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2268 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 2.0f; #line 2269 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 1.0f; #line 2270 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 2271 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = FLOAT3D (0 , - 0.5f , 0); #line 2272 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = penProjectile ; #line 2273 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2274 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2275 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2280 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::CyborgLaser(void) { #line 2282 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2283 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2284 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2285 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2286 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetComponents (this , * GetModelObject () , MODEL_CYBORG_LASER , TEXTURE_CYBORG_LASER , 0 , 0 , 0); #line 2287 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2289 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 60.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2290 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2291 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 4.0f; #line 2292 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 5.0f; #line 2293 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2294 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2295 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2296 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2297 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2298 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2299 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2300 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2302 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::CyborgBomb(void) #line 2303 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2305 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2306 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_BOUNCING ); #line 2307 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2308 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_CYBORG_BOMB ); #line 2309 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_CYBORG_BOMB ); #line 2310 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2312 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - m_fSpeed ) , (CMovableEntity *) & * m_penLauncher ); #line 2313 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2314 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 2.5f; #line 2315 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 2316 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 15.0f; #line 2317 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 1.0f; #line 2318 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 6.0f; #line 2319 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 25.0f; #line 2320 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 2321 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2322 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = TRUE ; #line 2323 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 2324 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2325 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (5.0f); #line 2326 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2327 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2334 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LavaBall(void) { #line 2336 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2337 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_FALL ); #line 2338 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2339 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_LAVA ); #line 2340 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_LAVA ); #line 2341 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachment (0 , MODEL_LAVA_FLARE , TEXTURE_LAVA_FLARE ); #line 2344 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - m_fSpeed ) , (CMovableEntity *) & * m_penLauncher ); #line 2345 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , FRnd () * 360.0f - 180.0f , FRnd () * 360.0f - 180.0f)); #line 2346 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 2347 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 5.0f; #line 2348 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 5.0f; #line 2349 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 1.0f; #line 2350 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 4.0f; #line 2351 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2352 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 2353 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2354 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2355 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2356 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2357 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2358 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2360 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LavaBallExplosion(void) { #line 2361 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 2362 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 2363 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 2364 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 2365 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 2366 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 2368 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 2369 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_SHOCKWAVE ; #line 2370 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 2371 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 2372 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2373 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2374 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2380 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::GruntSoldierLaser(void) { #line 2382 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2383 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2384 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2385 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2386 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_GRUNT_PROJECTILE ); #line 2387 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CModelObject * pmo = GetModelObject (); #line 2388 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(pmo != NULL ) #line 2389 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2390 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pmo -> PlayAnim (GRUNTPROJECTILE_ANIM_DEFAULT , 0); #line 2391 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2392 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_GRUNT_PROJECTILE_01 ); #line 2394 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 45.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2395 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2396 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 3.0f; #line 2397 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 2398 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2399 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2400 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2401 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2402 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2403 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2404 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 2406 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.025f; #line 2407 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2408 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2410 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::GruntCommanderLaser(void) { #line 2412 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2413 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2414 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2415 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2416 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_GRUNT_PROJECTILE ); #line 2417 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CModelObject * pmo = GetModelObject (); #line 2418 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(pmo != NULL ) #line 2419 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2420 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pmo -> PlayAnim (GRUNTPROJECTILE_ANIM_DEFAULT , 0); #line 2421 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2422 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_GRUNT_PROJECTILE_02 ); #line 2424 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 55.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2425 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2426 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 3.0f; #line 2427 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 2428 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2429 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2430 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2431 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2432 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2433 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2434 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 2436 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.025f; #line 2437 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2438 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2445 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::GuffyProjectile(void) { #line 2447 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2448 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2449 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2450 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_GUFFY_PROJECTILE ); #line 2451 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_GUFFY_PROJECTILE ); #line 2452 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (1.0f , 1.0f , 1.0f)); #line 2454 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CModelObject * pmo = GetModelObject (); #line 2455 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(pmo != NULL ) #line 2456 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2457 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" pmo -> PlayAnim (GUFFYPROJECTILE_ANIM_ROTATE01 , AOF_LOOPING ); #line 2458 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2461 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 50.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2462 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2464 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (20.0f , 2.0f , 1.0f , 1.0f); #line 2465 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_FLYING , SOF_3D | SOF_LOOP ); #line 2466 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 30.0f; #line 2467 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 2468 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 10.0f; #line 2469 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 4.0f; #line 2470 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 8.0f; #line 2471 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 50.0f; #line 2472 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 2473 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2474 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2475 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2476 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 1.125f; #line 2477 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 2478 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 2479 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (10000.0f); #line 2480 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2481 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2483 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::GuffyProjectileExplosion(void) { #line 2484 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlayerRocketExplosion (); #line 2485 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2492 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DemonFireball(void) { #line 2494 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Enemy Base")){ #line 2495 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penTarget = ((CEnemyBase *) & * m_penLauncher ) -> m_penEnemy ; #line 2496 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2498 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2499 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_FREE_FLYING ); #line 2500 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2502 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_DEMON_FIREBALL ); #line 2503 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_DEMON_FIREBALL ); #line 2504 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (2.5f , 2.5f , 2.5f)); #line 2506 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2508 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (50.0f , 2.0f , 1.0f , 0.75f); #line 2509 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_BEAST_FLYING , SOF_3D | SOF_LOOP ); #line 2511 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 100.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2512 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2513 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 12.0f; #line 2514 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 20.0f; #line 2515 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2516 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2517 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2518 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2519 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 2520 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2521 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_GUIDED_FAST ; #line 2522 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fGuidedMaxSpeedFactor = 90.0f; #line 2523 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (10000.0f); #line 2524 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 200.0f; #line 2525 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2527 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::DemonFireballExplosion(void) #line 2528 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2530 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 2531 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 2532 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 2533 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 2534 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 2537 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 2538 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2539 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 2540 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2541 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2542 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 4.0f; #line 2543 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 2544 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 2545 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 32.0f; #line 2546 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 2547 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2548 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2554 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LarvaPlasma(void) { #line 2556 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2557 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2558 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2559 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_LARVA_PLASMA_BALL ); #line 2560 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_LARVA_PLASMA_BALL ); #line 2561 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" AddAttachmentToModel (this , * GetModelObject () , PLASMAGUN_ATTACHMENT_PROJECTILE , #line 2562 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" MODEL_LARVA_PLASMA , TEXTURE_LARVA_PLASMA , 0 , 0 , 0); #line 2564 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (2.5f , 2.5f , 2.5f)); #line 2565 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2568 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 60.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2569 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2571 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (20.0f , 2.0f , 1.0f , 1.0f); #line 2572 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_FLYING , SOF_3D | SOF_LOOP ); #line 2573 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 30.0f; #line 2574 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetSP () -> sp_bCooperative ) #line 2575 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2576 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 30.0f; #line 2577 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 30.0f; #line 2578 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2579 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 2580 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2581 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 25.0f; #line 2582 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 25.0f; #line 2583 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2584 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 4.0f; #line 2585 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 8.0f; #line 2586 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 50.0f; #line 2587 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 2588 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2589 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2590 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2591 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.05f; #line 2592 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 2593 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 2594 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (100.0f); #line 2595 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_iRebounds = 4; #line 2596 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING_REBOUNDING ; #line 2597 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2599 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LarvaPlasmaExplosion(void) { #line 2601 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 2602 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 2603 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_LIGHT_CANNON ; #line 2604 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (2 , 2 , 2); #line 2605 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 2608 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 2609 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2610 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 2611 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2612 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2613 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 1.0f; #line 2614 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.25f; #line 2615 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_PLASMA ; #line 2616 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = FLOAT3D (0.0f , 2.5f , 0.0f); #line 2617 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 2618 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2619 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2621 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LarvaTail(void) { #line 2624 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Enemy Base")){ #line 2625 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penTarget = ((CEnemyBase *) & * m_penLauncher ) -> m_penEnemy ; #line 2626 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2628 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2629 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_SLIDING ); #line 2630 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2632 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_LARVA_TAIL ); #line 2633 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_LARVA_TAIL ); #line 2634 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (4.0f , 4.0f , 4.0f)); #line 2636 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2638 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (50.0f , 10.0f , 1.0f , 1.0f); #line 2639 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_LARVETTE , SOF_3D | SOF_LOOP ); #line 2641 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2642 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2643 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 12.0f; #line 2644 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 2645 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2646 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2647 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2648 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2649 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 2650 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2651 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_GUIDED_SLIDING ; #line 2652 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 275.0f; #line 2653 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (10.0f); #line 2654 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2656 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::LarvaTailExplosion(void) { #line 2657 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlayerRocketExplosion (); #line 2658 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2665 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::WindBlast(void) { #line 2667 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsEditorModel (); #line 2668 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_SLIDING ); #line 2669 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2670 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2671 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_WINDBLAST ); #line 2672 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_WINDBLAST ); #line 2673 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (3.0f , 3.0f , 3.0f)); #line 2674 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2676 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 50.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2677 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2678 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 5.0f; #line 2679 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 20.0f; #line 2680 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2681 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2682 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2683 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2684 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2685 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.0f; #line 2686 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_SLIDING ; #line 2687 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2693 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::Meteor() { #line 2695 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2696 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2697 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2699 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_ELEM_LAVA_BOMB ); #line 2700 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_ELEM_LAVA_BOMB ); #line 2704 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (m_fStretch , m_fStretch , m_fStretch )); #line 2705 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2707 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_AfterBurner_Prepare (this ); #line 2710 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - m_fSpeed ) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2711 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2713 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (250.0f , 10.0f , 2.0f , 1.0f); #line 2714 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_FLYING , SOF_3D | SOF_LOOP ); #line 2715 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 30.0f; #line 2716 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 100.0f; #line 2717 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 100.0f; #line 2718 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 15.0f; #line 2719 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 30.0f; #line 2720 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 100.0f; #line 2721 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 2722 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2723 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = TRUE ; #line 2724 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2725 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = GetSoundLength (SOUND_METEOR_BLAST ) + 0.25f; #line 2726 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 2727 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 2728 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (100.0f); #line 2729 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2730 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2732 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::MeteorExplosion() { #line 2736 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 2737 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2738 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 2739 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2740 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2741 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 4.0f; #line 2742 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 2743 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 2744 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = en_vCurrentTranslationAbsolute / 32.0f; #line 2745 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 2746 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2748 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnEffect ese ; #line 2749 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vPoint ; #line 2750 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOATplane3D vPlaneNormal ; #line 2751 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceToEdge ; #line 2754 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 2755 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_CANNON ; #line 2756 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vStretch = FLOAT3D (5 , 5 , 5); #line 2757 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 2759 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsDerivedFromClass (m_penLauncher , "Player")){ #line 2760 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnRangeSound (m_penLauncher , this , SNDT_PLAYER , m_fSoundRange ); #line 2761 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2764 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSION_DEBRIS ; #line 2765 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 2768 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSION_SMOKE ; #line 2769 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (GetPlacement () , ese ); #line 2772 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetNearestPolygon (vPoint , vPlaneNormal , fDistanceToEdge )){ #line 2773 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((vPoint - GetPlacement () . pl_PositionVector ) . Length () < 3.5f){ #line 2775 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_EXPLOSIONSTAIN ; #line 2776 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 2777 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 2779 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_SHOCKWAVE ; #line 2780 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 2781 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint , ANGLE3D (0 , 0 , 0)) , ese ); #line 2783 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . betType = BET_ROCKET_PLANE ; #line 2784 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ese . vNormal = FLOAT3D (vPlaneNormal ); #line 2785 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnEffect (CPlacement3D (vPoint + ese . vNormal / 50.0f , ANGLE3D (0 , 0 , 0)) , ese ); #line 2786 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2787 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2788 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soExplosion . Set3DParameters (150.0f , 10.0f , 1.5f , 1.0f); #line 2789 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soExplosion , SOUND_METEOR_BLAST , SOF_3D ); #line 2790 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2797 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ShooterWoodenDart(void) { #line 2799 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2800 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2801 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2802 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_SHTR_WOODEN_DART ); #line 2803 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEX_SHTR_WOODEN_DART ); #line 2806 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2807 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2811 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 10.0f; #line 2812 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetSP () -> sp_gdGameDifficulty <= CSessionProperties :: GD_EASY ){ #line 2813 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 5.0f; #line 2814 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 2815 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 10.0f; #line 2816 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2817 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2818 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2819 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2820 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 2821 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 1.125f; #line 2822 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 2823 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 2824 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (5.0f); #line 2825 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2826 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2828 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ShooterWoodenDartExplosion() { #line 2830 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 2831 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2832 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 2833 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2834 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2835 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 0.5f; #line 2836 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.1f; #line 2837 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_WOOD ; #line 2838 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = - en_vCurrentTranslationAbsolute / 32.0f; #line 2839 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 2840 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2841 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2843 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ShooterFireball(void) { #line 2845 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2846 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2847 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2848 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_BEAST_FIRE ); #line 2849 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_BEAST_BIG_FIRE ); #line 2850 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetModelObject () -> StretchModel (FLOAT3D (0.25f , 0.25f , 0.25f)); #line 2851 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ModelChangeNotify (); #line 2854 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 30.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2855 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2859 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 10.0f; #line 2860 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(GetSP () -> sp_gdGameDifficulty <= CSessionProperties :: GD_EASY ){ #line 2861 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 7.5f; #line 2862 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 2863 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 15.0f; #line 2864 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2865 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2866 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2867 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2868 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = TRUE ; #line 2869 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.125f; #line 2870 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmExpandBox = 0.1f; #line 2871 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_tmInvisibility = 0.05f; #line 2872 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetHealth (5.0f); #line 2873 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2874 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2876 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ShooterFireballExplosion() { #line 2878 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CPlacement3D plSpray = GetPlacement (); #line 2879 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penSpray = CreateEntity (plSpray , CLASS_BLOOD_SPRAY ); #line 2880 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> SetParent (this ); #line 2881 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESpawnSpray eSpawnSpray ; #line 2882 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ; #line 2883 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fDamagePower = 1.0f; #line 2884 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . fSizeMultiplier = 0.5f; #line 2885 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . sptType = SPT_LAVA_STONES ; #line 2886 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . vDirection = - en_vCurrentTranslationAbsolute / 32.0f; #line 2887 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSpawnSpray . penOwner = this ; #line 2888 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penSpray -> Initialize (eSpawnSpray ); #line 2889 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2891 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ShooterFlame(void) { #line 2893 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsModel (); #line 2894 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_PROJECTILE_FLYING ); #line 2895 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_SOLID ); #line 2896 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetFlags (GetFlags () | ENF_SEETHROUGH ); #line 2897 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_FLAME ); #line 2899 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsPropelledProjectile (FLOAT3D (0.0f , 0.0f , - 10.0f) , (CMovableEntity *) (CEntity *) m_penLauncher ); #line 2900 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , 0 , 0)); #line 2901 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 1.0f; #line 2902 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 3.0f; #line 2903 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2904 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = FALSE ; #line 2905 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = TRUE ; #line 2906 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2907 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2908 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 0.3f; #line 2909 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2910 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2912 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::AfterburnerDebris(void) #line 2913 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2914 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_AfterBurner_Prepare (this ); #line 2916 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InitAsEditorModel (); #line 2917 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPhysicsFlags (EPF_MODEL_FALL ); #line 2918 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_PROJECTILE_MAGIC ); #line 2919 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModel (MODEL_MARKER ); #line 2920 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetModelMainTexture (TEXTURE_MARKER ); #line 2922 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - m_fSpeed ) , (CMovableEntity *) & * m_penLauncher ); #line 2923 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (0 , FRnd () * 360.0f - 180.0f , FRnd () * 360.0f - 180.0f)); #line 2924 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = 10.0f; #line 2925 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageAmount = 0.0f; #line 2926 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fRangeDamageAmount = 0.0f; #line 2927 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageHotSpotRange = 0.0f; #line 2928 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fDamageFallOffRange = 0.0f; #line 2929 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSoundRange = 0.0f; #line 2930 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bExplode = TRUE ; #line 2931 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLightSource = FALSE ; #line 2932 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanHitHimself = FALSE ; #line 2933 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bCanBeDestroyed = FALSE ; #line 2934 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fWaitAfterDeath = 2.0f; #line 2935 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_pmtMove = PMT_FLYING ; #line 2936 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2944 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ProjectileTouch(CEntityPointer penHit) #line 2945 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2947 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 2950 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDirection ; #line 2951 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fTransLen = en_vIntendedTranslation . Length (); #line 2952 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(fTransLen > 0.5f) #line 2953 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2954 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirection = en_vIntendedTranslation / fTransLen ; #line 2955 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2956 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 2957 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2958 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" vDirection = - en_vGravityDir ; #line 2959 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2962 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" const FLOAT fDamageMul = GetSeriousDamageMultiplier (m_penLauncher ); #line 2963 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if((m_prtType == PRT_FLAME || m_prtType == PRT_SHOOTER_FLAME ) && m_fWaitAfterDeath > 0.0f){ #line 2965 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_penLastDamaged == penHit ){ #line 2966 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return ; #line 2967 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 2968 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLastDamaged = penHit ; #line 2969 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2972 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bSpawnFlame = TRUE ; #line 2973 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bInflictDamage = TRUE ; #line 2974 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(IsOfClass (penHit , "AirElemental")) #line 2975 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2976 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bSpawnFlame = FALSE ; #line 2977 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2979 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" EntityInfo * pei = (EntityInfo *) penHit -> GetEntityInfo (); #line 2980 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(pei != NULL && pei -> Eeibt == EIBT_ICE ) #line 2981 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2982 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bSpawnFlame = FALSE ; #line 2983 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bInflictDamage = FALSE ; #line 2984 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2986 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bSpawnFlame ) #line 2987 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2988 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnFlame (m_penLauncher , penHit , GetPlacement () . pl_PositionVector ); #line 2989 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2990 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bInflictDamage ) #line 2991 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 2992 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InflictDirectDamage (penHit , m_penLauncher , DMT_BURNING , m_fDamageAmount * fDamageMul , #line 2993 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetPlacement () . pl_PositionVector , vDirection ); #line 2994 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 2997 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else if(m_prtType == PRT_AIRELEMENTAL_WIND ){ #line 2998 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(penHit == m_penLastDamaged ){ #line 2999 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return ; #line 3000 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 3001 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLastDamaged = penHit ; #line 3002 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3003 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InflictDirectDamage (penHit , m_penLauncher , DMT_PROJECTILE , m_fDamageAmount * fDamageMul , #line 3004 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetPlacement () . pl_PositionVector , vDirection ); #line 3007 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 3008 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InflictDirectDamage (penHit , m_penLauncher , DMT_PROJECTILE , m_fDamageAmount * fDamageMul , #line 3009 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetPlacement () . pl_PositionVector , vDirection ); #line 3010 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3011 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3015 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ProjectileHit(void) #line 3016 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3018 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bExplode ){ #line 3019 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" const FLOAT fDamageMul = GetSeriousDamageMultiplier (m_penLauncher ); #line 3020 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" InflictRangeDamage (m_penLauncher , DMT_EXPLOSION , m_fRangeDamageAmount * fDamageMul , #line 3021 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetPlacement () . pl_PositionVector , m_fDamageHotSpotRange , m_fDamageFallOffRange ); #line 3022 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3024 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_fSoundRange > 0.0f && IsDerivedFromClass (m_penLauncher , "Player")) #line 3025 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3026 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ESound eSound ; #line 3027 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSound . EsndtSound = SNDT_EXPLOSION ; #line 3028 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" eSound . penTarget = m_penLauncher ; #line 3029 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SendEventInRange (eSound , FLOATaabbox3D (GetPlacement () . pl_PositionVector , m_fSoundRange )); #line 3030 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3031 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3035 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::SpawnEffect(const CPlacement3D & plEffect,const ESpawnEffect & eSpawnEffect) { #line 3036 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntityPointer penEffect = CreateEntity (plEffect , CLASS_BASIC_EFFECT ); #line 3037 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" penEffect -> Initialize (eSpawnEffect ); #line 3038 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3045 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::BounceSound(void) { #line 3046 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" switch(m_prtType ){ #line 3047 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRENADE : #line 3048 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(en_vCurrentTranslationAbsolute . Length () > 3.0f){ #line 3049 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_soEffect . Set3DParameters (20.0f , 2.0f , 1.0f , 1.0f); #line 3050 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" PlaySound (m_soEffect , SOUND_GRENADE_BOUNCE , SOF_3D ); #line 3051 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3052 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 3053 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3054 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3059 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE CProjectile::GetRotationSpeed(ANGLE aWantedAngle,ANGLE aRotateSpeed,FLOAT fWaitFrequency) #line 3060 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3061 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aResult ; #line 3063 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(aWantedAngle < - aRotateSpeed * fWaitFrequency ) #line 3064 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3066 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" aResult = - aRotateSpeed ; #line 3067 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3069 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else if(aWantedAngle > aRotateSpeed * fWaitFrequency ) #line 3070 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3072 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" aResult = + aRotateSpeed ; #line 3073 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3075 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 3076 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3077 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" aResult = aWantedAngle / fWaitFrequency ; #line 3078 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3079 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return aResult ; #line 3080 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3084 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" void CProjectile::ReceiveDamage(CEntity * penInflictor,enum DamageType dmtType, #line 3085 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDamageAmmount,const FLOAT3D & vHitPoint,const FLOAT3D & vDirection) #line 3086 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3089 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_DEMON_FIREBALL && dmtType == DMT_CANNONBALL ) #line 3090 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3091 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fDamageAmmount *= 10001.0f; #line 3092 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3093 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_FLAME && IsOfClass (penInflictor , "Moving Brush")) #line 3094 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3095 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Destroy (); #line 3096 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3098 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CMovableModelEntity :: ReceiveDamage (penInflictor , #line 3099 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" dmtType , fDamageAmmount , vHitPoint , vDirection ); #line 3100 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } BOOL CProjectile:: #line 3107 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileFly(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CProjectile_ProjectileFly ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CProjectile::ProjectileFly expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 3109 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntity * penObstacle ; #line 3110 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(CheckForCollisionNow (0 , & penObstacle )){ #line 3112 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (penObstacle ); #line 3117 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3117 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3118 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3120 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetTimerAfter(m_fFlyTime ); Jump(STATE_CURRENT, 0x01f50002, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50002_ProjectileFly_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50002 switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_EPass):{const EPass&epass= (EPass&)__eeInput; #line 3123 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3125 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = epass . penOther != m_penLauncher || _pTimer -> CurrentTick () > m_fIgnoreTime ; #line 3127 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! ((! m_bCanHitHimself && IsOfClass (epass . penOther , "Projectile") && #line 3128 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * epass . penOther ) -> m_prtType == m_prtType )); #line 3130 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! IsOfClass (epass . penOther , "Twister"); #line 3131 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3132 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (epass . penOther ); #line 3135 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50003, FALSE, EInternal());return TRUE; #line 3136 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3137 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3138 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETouch):{const ETouch&etouch= (ETouch&)__eeInput; #line 3141 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fIgnoreTime = 0.0f; #line 3143 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3144 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = ! ((! m_bCanHitHimself && IsOfClass (etouch . penOther , "Projectile") && #line 3145 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * etouch . penOther ) -> m_prtType == m_prtType )); #line 3147 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3148 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (etouch . penOther ); #line 3149 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50003, FALSE, EInternal());return TRUE; #line 3150 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3151 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3152 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_EDeath):{const EDeath&e= (EDeath&)__eeInput; #line 3154 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bCanBeDestroyed ){ #line 3155 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3156 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50003, FALSE, EInternal());return TRUE; #line 3157 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3158 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3159 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETimer):{const ETimer&e= (ETimer&)__eeInput; #line 3161 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3162 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50003, FALSE, EInternal());return TRUE; #line 3163 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;default: return FALSE; break; #line 3164 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }return TRUE;}BOOL CProjectile::H0x01f50003_ProjectileFly_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50003 #line 3165 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3165 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CProjectile:: #line 3169 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileGuidedFly(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CProjectile_ProjectileGuidedFly ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CProjectile::ProjectileGuidedFly expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 3171 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntity * penObstacle ; #line 3172 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(CheckForCollisionNow (0 , & penObstacle )){ #line 3174 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (penObstacle ); #line 3175 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3175 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3176 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3178 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Jump(STATE_CURRENT,0x01f50007, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f50007_ProjectileGuidedFly_03(const CEntityEvent &__eeInput) #line 3179 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50007 if(!(_pTimer -> CurrentTick () < (m_fStartTime + m_fFlyTime ))){ Jump(STATE_CURRENT,0x01f50008, FALSE, EInternal());return TRUE;} #line 3180 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fWaitFrequency = 0.1f; #line 3188 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_penTarget != NULL ){ #line 3190 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" EntityInfo * pei = (EntityInfo *) (m_penTarget -> GetEntityInfo ()); #line 3191 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDesiredPosition ; #line 3192 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetEntityInfoPosition (m_penTarget , pei -> vSourceCenter , vDesiredPosition ); #line 3193 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDesiredDirection = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Normalize (); #line 3195 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aWantedHeading = GetRelativeHeading (vDesiredDirection ); #line 3200 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aHeading = GetRotationSpeed (aWantedHeading , m_aRotateSpeed , fWaitFrequency ); #line 3203 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedDecreasingFactor = ((180 - Abs (aWantedHeading )) / 180.0f); #line 3205 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedIncreasingFactor = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Length () / 100; #line 3206 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fSpeedIncreasingFactor = ClampDn (fSpeedIncreasingFactor , 1.0f); #line 3208 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fMaxSpeed = m_fGuidedMaxSpeedFactor * fSpeedIncreasingFactor ; #line 3209 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fMinSpeedRatio = 0.5f; #line 3210 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fWantedSpeed = fMaxSpeed * (fMinSpeedRatio + (1 - fMinSpeedRatio ) * fSpeedDecreasingFactor ); #line 3212 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredTranslation (FLOAT3D (0 , 0 , - fWantedSpeed )); #line 3215 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 75.0f * (1 + 0.5f * fSpeedDecreasingFactor ); #line 3218 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceFactor = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Length () / 50.0; #line 3219 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fDistanceFactor = ClampUp (fDistanceFactor , 4.0f); #line 3220 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fRNDHeading = (FRnd () - 0.5f) * 180 * fDistanceFactor ; #line 3221 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fRNDPitch = (FRnd () - 0.5f) * 90 * fDistanceFactor ; #line 3224 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(Abs (aWantedHeading ) < 30.0f) #line 3225 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3227 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aWantedPitch = GetRelativePitch (vDesiredDirection ); #line 3228 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aPitch = GetRotationSpeed (aWantedPitch , m_aRotateSpeed * 1.5f , fWaitFrequency ); #line 3230 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (aHeading + fRNDHeading , aPitch + fRNDPitch , 0)); #line 3231 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3233 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 3234 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3235 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (aHeading , fDistanceFactor * 40 , 0)); #line 3236 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3237 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3239 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetTimerAfter(fWaitFrequency ); Jump(STATE_CURRENT, 0x01f50005, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50005_ProjectileGuidedFly_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50005 switch(__eeInput.ee_slEvent) #line 3240 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_EPass):{const EPass&epass= (EPass&)__eeInput; #line 3243 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3245 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = epass . penOther != m_penLauncher || _pTimer -> CurrentTick () > m_fIgnoreTime ; #line 3247 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! ((! m_bCanHitHimself && IsOfClass (epass . penOther , "Projectile") && #line 3248 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * epass . penOther ) -> m_prtType == m_prtType )); #line 3250 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! IsOfClass (epass . penOther , "Twister"); #line 3251 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3252 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (epass . penOther ); #line 3253 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3253 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3254 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3255 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3256 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_EDeath): #line 3258 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {const EDeath&e= (EDeath&)__eeInput; #line 3259 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bCanBeDestroyed ) #line 3260 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3261 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3262 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3262 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3263 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3264 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3265 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETimer): #line 3267 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {const ETimer&e= (ETimer&)__eeInput; #line 3268 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50006, FALSE, EInternal());return TRUE; #line 3269 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;default: return FALSE; break; #line 3270 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }return TRUE;}BOOL CProjectile::H0x01f50006_ProjectileGuidedFly_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50006 Jump(STATE_CURRENT,0x01f50007, FALSE, EInternal());return TRUE; #line 3271 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }BOOL CProjectile::H0x01f50008_ProjectileGuidedFly_04(const CEntityEvent &__eeInput) { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50008 #line 3272 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3272 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CProjectile:: #line 3275 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileGuidedFastFly(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CProjectile_ProjectileGuidedFastFly ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CProjectile::ProjectileGuidedFastFly expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 3277 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntity * penObstacle ; #line 3278 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(CheckForCollisionNow (0 , & penObstacle )){ #line 3280 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (penObstacle ); #line 3281 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3281 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3282 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3284 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Jump(STATE_CURRENT,0x01f5000c, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f5000c_ProjectileGuidedFastFly_03(const CEntityEvent &__eeInput) #line 3285 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5000c if(!(_pTimer -> CurrentTick () < (m_fStartTime + m_fFlyTime ))){ Jump(STATE_CURRENT,0x01f5000d, FALSE, EInternal());return TRUE;} #line 3286 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fWaitFrequency = 0.1f; #line 3288 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_BEAST_BIG_PROJECTILE && #line 3289 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" DistanceTo (this , m_penTarget ) < 20.0f && #line 3290 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" (m_fStartTime + m_fFlyTime - _pTimer -> CurrentTick ()) > 1.5f) #line 3291 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3292 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fFlyTime = _pTimer -> CurrentTick () - m_fStartTime + 1.5f; #line 3293 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3294 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_penTarget != NULL ){ #line 3296 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" EntityInfo * pei = (EntityInfo *) (m_penTarget -> GetEntityInfo ()); #line 3297 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDesiredPosition ; #line 3298 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetEntityInfoPosition (m_penTarget , pei -> vSourceCenter , vDesiredPosition ); #line 3299 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDesiredDirection = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Normalize (); #line 3301 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aWantedHeading = GetRelativeHeading (vDesiredDirection ); #line 3302 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aHeading = GetRotationSpeed (aWantedHeading , 5.0f , fWaitFrequency ); #line 3305 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedDecreasingFactor = ((180 - Abs (aWantedHeading )) / 180.0f); #line 3307 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedIncreasingFactor = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Length () / 100; #line 3308 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fSpeedIncreasingFactor = ClampDn (fSpeedIncreasingFactor , 1.0f); #line 3310 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fMaxSpeed = m_fGuidedMaxSpeedFactor * fSpeedIncreasingFactor ; #line 3311 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fMinSpeedRatio = 10.0f; #line 3312 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fWantedSpeed = fMaxSpeed * (fMinSpeedRatio + (1 - fMinSpeedRatio ) * fSpeedDecreasingFactor ); #line 3314 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredTranslation (FLOAT3D (0 , 0 , - fWantedSpeed )); #line 3317 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 110.0f * (1 + 0.5f * fSpeedDecreasingFactor ); #line 3320 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceFactor = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Length () / 50.0; #line 3321 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fDistanceFactor = ClampUp (fDistanceFactor , 4.0f); #line 3324 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(Abs (aWantedHeading ) < 30.0f) #line 3325 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3326 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bLockedOn = TRUE ; #line 3328 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aWantedPitch = GetRelativePitch (vDesiredDirection ); #line 3329 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aPitch = GetRotationSpeed (aWantedPitch , m_aRotateSpeed * 1.5f , fWaitFrequency ); #line 3331 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (aHeading , aPitch , 0)); #line 3332 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3334 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 3335 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3336 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bLockedOn ) #line 3337 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3338 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE3D aBankingUp ; #line 3339 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" aBankingUp = GetPlacement () . pl_OrientationAngle ; #line 3340 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" aBankingUp (3) = 0.0f; #line 3341 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPlacement (CPlacement3D (GetPlacement () . pl_PositionVector , aBankingUp )); #line 3342 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3343 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bLockedOn = FALSE ; #line 3345 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (aHeading , 400 , 0)); #line 3346 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3347 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3349 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetTimerAfter(fWaitFrequency ); Jump(STATE_CURRENT, 0x01f5000a, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f5000a_ProjectileGuidedFastFly_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f5000a switch(__eeInput.ee_slEvent) #line 3350 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_ETouch):{const ETouch&etouch= (ETouch&)__eeInput; #line 3354 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fIgnoreTime = 0.0f; #line 3356 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3357 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = ! ((! m_bCanHitHimself && IsOfClass (etouch . penOther , "Projectile") && #line 3358 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * etouch . penOther ) -> m_prtType == m_prtType )); #line 3359 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! IsOfClass (etouch . penOther , "Demon"); #line 3360 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vTrans = en_vCurrentTranslationAbsolute ; #line 3361 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= Abs (vTrans . Normalize () % FLOAT3D (etouch . plCollision )) > 0.35; #line 3363 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3364 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (etouch . penOther ); #line 3365 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3365 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3366 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3368 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3369 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_EPass):{const EPass&epass= (EPass&)__eeInput; #line 3371 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3373 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = epass . penOther != m_penLauncher || _pTimer -> CurrentTick () > m_fIgnoreTime ; #line 3375 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! ((! m_bCanHitHimself && IsOfClass (epass . penOther , "Projectile") && #line 3376 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * epass . penOther ) -> m_prtType == m_prtType )); #line 3378 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! IsOfClass (epass . penOther , "Twister"); #line 3380 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! (m_prtType == PRT_DEMON_FIREBALL && IsOfClass (epass . penOther , "Projectile")); #line 3381 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! (m_prtType == PRT_BEAST_BIG_PROJECTILE && IsOfClass (epass . penOther , "Projectile")); #line 3383 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3384 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (epass . penOther ); #line 3385 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3385 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3386 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3387 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3388 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_EDeath): #line 3390 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {const EDeath&e= (EDeath&)__eeInput; #line 3391 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bCanBeDestroyed ) #line 3392 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3393 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3394 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3394 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3395 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3396 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3397 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETimer): #line 3399 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {const ETimer&e= (ETimer&)__eeInput; #line 3400 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f5000b, FALSE, EInternal());return TRUE; #line 3401 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;default: return FALSE; break; #line 3402 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }return TRUE;}BOOL CProjectile::H0x01f5000b_ProjectileGuidedFastFly_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5000b Jump(STATE_CURRENT,0x01f5000c, FALSE, EInternal());return TRUE; #line 3403 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }BOOL CProjectile::H0x01f5000d_ProjectileGuidedFastFly_04(const CEntityEvent &__eeInput) { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5000d #line 3404 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3404 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CProjectile:: #line 3408 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileGuidedSlide(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CProjectile_ProjectileGuidedSlide ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CProjectile::ProjectileGuidedSlide expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 3410 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntity * penObstacle ; #line 3411 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(CheckForCollisionNow (0 , & penObstacle )){ #line 3413 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (penObstacle ); #line 3414 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3414 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3415 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3417 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Jump(STATE_CURRENT,0x01f50011, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f50011_ProjectileGuidedSlide_03(const CEntityEvent &__eeInput) #line 3418 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50011 if(!(_pTimer -> CurrentTick () < (m_fStartTime + m_fFlyTime ))){ Jump(STATE_CURRENT,0x01f50012, FALSE, EInternal());return TRUE;} #line 3419 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fWaitFrequency = 0.1f; #line 3420 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_penTarget != NULL ){ #line 3422 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" EntityInfo * pei = (EntityInfo *) (m_penTarget -> GetEntityInfo ()); #line 3423 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDesiredPosition ; #line 3424 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" GetEntityInfoPosition (m_penTarget , pei -> vSourceCenter , vDesiredPosition ); #line 3425 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT3D vDesiredDirection = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Normalize (); #line 3427 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aWantedHeading = GetRelativeHeading (vDesiredDirection ); #line 3428 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ANGLE aHeading = GetRotationSpeed (aWantedHeading , m_aRotateSpeed , fWaitFrequency ); #line 3431 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedDecreasingFactor = ((180 - Abs (aWantedHeading )) / 180.0f); #line 3433 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fSpeedIncreasingFactor = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Length () / 100; #line 3434 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fSpeedIncreasingFactor = ClampDn (fSpeedIncreasingFactor , 1.0f); #line 3436 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fMaxSpeed = 30.0f * fSpeedIncreasingFactor ; #line 3437 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fMinSpeedRatio = 0.5f; #line 3438 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fWantedSpeed = fMaxSpeed * (fMinSpeedRatio + (1 - fMinSpeedRatio ) * fSpeedDecreasingFactor ); #line 3440 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredTranslation (FLOAT3D (0 , 0 , - fWantedSpeed )); #line 3443 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_aRotateSpeed = 75.0f * (1 + 0.5f * fSpeedDecreasingFactor ); #line 3446 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fDistanceFactor = (vDesiredPosition - GetPlacement () . pl_PositionVector ) . Length () / 50.0; #line 3447 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" fDistanceFactor = ClampUp (fDistanceFactor , 4.0f); #line 3448 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" FLOAT fRNDHeading = (FRnd () - 0.5f) * 180 * fDistanceFactor ; #line 3451 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(Abs (aWantedHeading ) < 30.0f) #line 3452 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3454 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (aHeading + fRNDHeading , 0 , 0)); #line 3455 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3457 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" else #line 3458 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3459 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetDesiredRotation (ANGLE3D (aHeading , 0 , 0)); #line 3460 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3461 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3463 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetTimerAfter(fWaitFrequency ); Jump(STATE_CURRENT, 0x01f5000f, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f5000f_ProjectileGuidedSlide_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f5000f switch(__eeInput.ee_slEvent) #line 3464 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_EPass):{const EPass&epass= (EPass&)__eeInput; #line 3467 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3469 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = epass . penOther != m_penLauncher || _pTimer -> CurrentTick () > m_fIgnoreTime ; #line 3471 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! ((! m_bCanHitHimself && IsOfClass (epass . penOther , "Projectile") && #line 3472 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * epass . penOther ) -> m_prtType == m_prtType )); #line 3474 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! IsOfClass (epass . penOther , "Twister"); #line 3475 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3476 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (epass . penOther ); #line 3477 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3477 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3478 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3479 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3480 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_EDeath): #line 3482 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {const EDeath&e= (EDeath&)__eeInput; #line 3483 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bCanBeDestroyed ) #line 3484 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3485 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3486 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3486 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3487 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3488 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3489 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETimer): #line 3491 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" {const ETimer&e= (ETimer&)__eeInput; #line 3492 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50010, FALSE, EInternal());return TRUE; #line 3493 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;default: return FALSE; break; #line 3494 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }return TRUE;}BOOL CProjectile::H0x01f50010_ProjectileGuidedSlide_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50010 Jump(STATE_CURRENT,0x01f50011, FALSE, EInternal());return TRUE; #line 3495 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }BOOL CProjectile::H0x01f50012_ProjectileGuidedSlide_04(const CEntityEvent &__eeInput) { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50012 #line 3496 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3496 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CProjectile:: #line 3500 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileSlide(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CProjectile_ProjectileSlide ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CProjectile::ProjectileSlide expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 3502 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntity * penObstacle ; #line 3503 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(CheckForCollisionNow (0 , & penObstacle )){ #line 3505 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (penObstacle ); #line 3506 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3506 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3507 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3509 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetTimerAfter(m_fFlyTime ); Jump(STATE_CURRENT, 0x01f50014, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50014_ProjectileSlide_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50014 switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_EPass):{const EPass&epass= (EPass&)__eeInput; #line 3512 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3514 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = epass . penOther != m_penLauncher || _pTimer -> CurrentTick () > m_fIgnoreTime ; #line 3516 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! ((! m_bCanHitHimself && IsOfClass (epass . penOther , "Projectile") && #line 3517 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * epass . penOther ) -> m_prtType == m_prtType )); #line 3519 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! IsOfClass (epass . penOther , "Twister"); #line 3520 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(epass . penOther != m_penLauncher ){ #line 3521 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = bHit ; #line 3522 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3523 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3524 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (epass . penOther ); #line 3526 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_FLAME && IsDerivedFromClass ((CEntity *) & * (epass . penOther ) , "Enemy Base")){ #line 3527 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3528 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3530 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_AIRELEMENTAL_WIND && IsDerivedFromClass ((CEntity *) & * (epass . penOther ) , "MovableEntity")){ #line 3531 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3532 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3534 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50015, FALSE, EInternal());return TRUE; #line 3535 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3536 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3537 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETouch):{const ETouch&etouch= (ETouch&)__eeInput; #line 3540 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fIgnoreTime = 0.0f; #line 3542 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3543 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = ! (etouch . penOther -> GetRenderType () & RT_BRUSH ); #line 3544 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_prtType == PRT_FLAME && ! bHit && ! m_bLeftFlame ) #line 3545 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3546 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SpawnFlame (m_penLauncher , etouch . penOther , GetPlacement () . pl_PositionVector ); #line 3547 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_bLeftFlame = TRUE ; #line 3548 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3549 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(! bHit ){BounceSound ();} #line 3551 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! ((! m_bCanHitHimself && IsOfClass (etouch . penOther , "Projectile") && #line 3552 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * etouch . penOther ) -> m_prtType == m_prtType )); #line 3553 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3554 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (etouch . penOther ); #line 3555 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50015, FALSE, EInternal());return TRUE; #line 3556 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3558 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(en_vCurrentTranslationAbsolute . Length () < 0.25f * en_vDesiredTranslationRelative . Length ()){ #line 3559 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3560 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50015, FALSE, EInternal());return TRUE; #line 3561 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3562 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3563 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_EDeath):{const EDeath&e= (EDeath&)__eeInput; #line 3565 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bCanBeDestroyed ){ #line 3566 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3567 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50015, FALSE, EInternal());return TRUE; #line 3568 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3569 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3570 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETimer):{const ETimer&e= (ETimer&)__eeInput; #line 3572 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3573 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50015, FALSE, EInternal());return TRUE; #line 3574 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;default: return FALSE; break; #line 3575 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }return TRUE;}BOOL CProjectile::H0x01f50015_ProjectileSlide_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50015 #line 3576 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3576 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CProjectile:: #line 3580 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileFlyRebounding(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CProjectile_ProjectileFlyRebounding ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CProjectile::ProjectileFlyRebounding expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 3582 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" CEntity * penObstacle ; #line 3583 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(CheckForCollisionNow (0 , & penObstacle )){ #line 3585 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (penObstacle ); #line 3586 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3586 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3587 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3589 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetTimerAfter(m_fFlyTime ); Jump(STATE_CURRENT, 0x01f50017, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50017_ProjectileFlyRebounding_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50017 switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_EPass):{const EPass&epass= (EPass&)__eeInput; #line 3592 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3594 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = epass . penOther != m_penLauncher || _pTimer -> CurrentTick () > m_fIgnoreTime ; #line 3596 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! ((! m_bCanHitHimself && IsOfClass (epass . penOther , "Projectile") && #line 3597 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * epass . penOther ) -> m_prtType == m_prtType )); #line 3599 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit &= ! IsOfClass (epass . penOther , "Twister"); #line 3600 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3601 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (epass . penOther ); #line 3602 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50018, FALSE, EInternal());return TRUE; #line 3603 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3604 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3605 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETouch):{const ETouch&etouch= (ETouch&)__eeInput; #line 3608 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fIgnoreTime = 0.0f; #line 3610 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" BOOL bHit ; #line 3613 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = (etouch . penOther -> GetRenderType () == RT_BRUSH ); #line 3615 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit && m_iRebounds > 0){ #line 3617 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ReflectDirectionVectorByPlane (etouch . plCollision , en_vCurrentTranslationAbsolute ); #line 3618 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ReflectRotationMatrixByPlane_cols (etouch . plCollision , en_mRotation ); #line 3619 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_iRebounds --; #line 3620 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }else { #line 3622 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" bHit = ! ((! m_bCanHitHimself && IsOfClass (etouch . penOther , "Projectile") && #line 3623 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ((CProjectile *) & * etouch . penOther ) -> m_prtType == m_prtType )); #line 3625 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(bHit ){ #line 3626 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileTouch (etouch . penOther ); #line 3627 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50018, FALSE, EInternal());return TRUE; #line 3628 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3629 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3630 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3631 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_EDeath):{const EDeath&e= (EDeath&)__eeInput; #line 3633 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bCanBeDestroyed ){ #line 3634 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3635 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50018, FALSE, EInternal());return TRUE; #line 3636 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3637 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; #line 3638 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;case(EVENTCODE_ETimer):{const ETimer&e= (ETimer&)__eeInput; #line 3640 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ProjectileHit (); #line 3641 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" UnsetTimer();Jump(STATE_CURRENT,0x01f50018, FALSE, EInternal());return TRUE; #line 3642 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }ASSERT(FALSE);break;default: return FALSE; break; #line 3643 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" }return TRUE;}BOOL CProjectile::H0x01f50018_ProjectileFlyRebounding_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50018 #line 3644 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EEnd ()); #line 3644 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CProjectile:: #line 3648 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Main(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CProjectile_Main ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_ELaunchProjectile, "CProjectile::Main expects 'ELaunchProjectile' as input!"); const ELaunchProjectile &eLaunch = (const ELaunchProjectile &)__eeInput; #line 3650 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ASSERT (eLaunch . penLauncher != NULL ); #line 3651 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLauncher = eLaunch . penLauncher ; #line 3652 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_prtType = eLaunch . prtType ; #line 3653 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fSpeed = eLaunch . fSpeed ; #line 3654 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fStretch = eLaunch . fStretch ; #line 3655 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetPredictable (TRUE ); #line 3657 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fIgnoreTime = _pTimer -> CurrentTick () + 1.0f; #line 3658 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_penLastDamaged = NULL ; #line 3660 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" switch(m_prtType ){ #line 3661 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_ROCKET : #line 3662 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_WALKER_ROCKET : #line 3663 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ROCKET : #line 3664 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_WOODEN_DART : #line 3665 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3666 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_RocketTrail_Prepare (this ); #line 3667 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 3668 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3669 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GUFFY_PROJECTILE : break ; #line 3670 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRENADE : Particles_GrenadeTrail_Prepare (this );break ; #line 3671 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CATMAN_FIRE : Particles_RocketTrail_Prepare (this );break ; #line 3672 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_FIRECRACKER : Particles_FirecrackerTrail_Prepare (this );break ; #line 3673 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_ROCKETMAN : Particles_Fireball01Trail_Prepare (this );break ; #line 3674 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_BOMBERMAN : Particles_BombTrail_Prepare (this );break ; #line 3675 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVA_COMET : Particles_LavaTrail_Prepare (this );break ; #line 3676 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BIG_BOMB : Particles_LavaBombTrail_Prepare (this );break ; #line 3677 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BOMB : Particles_LavaBombTrail_Prepare (this );break ; #line 3678 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_PROJECTILE : Particles_Fireball01Trail_Prepare (this );break ; #line 3679 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_BIG_PROJECTILE : #line 3680 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_GUIDED_PROJECTILE : #line 3681 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEMON_FIREBALL : #line 3683 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Particles_FirecrackerTrail_Prepare (this ); #line 3684 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" break ; #line 3685 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FIREBALL : Particles_Fireball01Trail_Prepare (this );break ; #line 3686 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3688 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" switch(m_prtType ) #line 3689 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" { #line 3690 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_WALKER_ROCKET : WalkerRocket ();break ; #line 3691 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ROCKET : PlayerRocket ();break ; #line 3692 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRENADE : PlayerGrenade ();break ; #line 3693 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_FLAME : PlayerFlame ();break ; #line 3694 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LASER_RAY : PlayerLaserRay ();break ; #line 3695 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CATMAN_FIRE : CatmanProjectile ();break ; #line 3696 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_FIRECRACKER : HeadmanFirecracker ();break ; #line 3697 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_ROCKETMAN : HeadmanRocketman ();break ; #line 3698 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_BOMBERMAN : HeadmanBomberman ();break ; #line 3699 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BONEMAN_FIRE : BonemanProjectile ();break ; #line 3700 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_WOMAN_FIRE : WomanProjectile ();break ; #line 3701 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DRAGONMAN_FIRE : DragonmanProjectile (DRAGONMAN_NORMAL );break ; #line 3702 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DRAGONMAN_STRONG_FIRE : DragonmanProjectile (DRAGONMAN_STRONG );break ; #line 3703 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_STONEMAN_FIRE : ElementalRock (ELEMENTAL_NORMAL , ELEMENTAL_STONEMAN );break ; #line 3704 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_STONEMAN_BIG_FIRE : ElementalRock (ELEMENTAL_BIG , ELEMENTAL_STONEMAN );break ; #line 3705 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_STONEMAN_LARGE_FIRE : ElementalRock (ELEMENTAL_LARGE , ELEMENTAL_STONEMAN );break ; #line 3706 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BIG_BOMB : LavaManBomb ();break ; #line 3707 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BOMB : LavaManBomb ();break ; #line 3708 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_STONE : ElementalRock (ELEMENTAL_NORMAL , ELEMENTAL_LAVAMAN );break ; #line 3709 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ICEMAN_FIRE : ElementalRock (ELEMENTAL_NORMAL , ELEMENTAL_ICEMAN );break ; #line 3710 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ICEMAN_BIG_FIRE : ElementalRock (ELEMENTAL_BIG , ELEMENTAL_ICEMAN );break ; #line 3711 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ICEMAN_LARGE_FIRE : ElementalRock (ELEMENTAL_LARGE , ELEMENTAL_ICEMAN );break ; #line 3712 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HUANMAN_FIRE : HuanmanProjectile ();break ; #line 3713 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_FISHMAN_FIRE : FishmanProjectile ();break ; #line 3714 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_MANTAMAN_FIRE : MantamanProjectile ();break ; #line 3715 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CYBORG_LASER : CyborgLaser ();break ; #line 3716 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CYBORG_BOMB : CyborgBomb ();break ; #line 3717 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVA_COMET : LavaBall ();break ; #line 3718 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_PROJECTILE : BeastProjectile ();break ; #line 3719 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_BIG_PROJECTILE : BeastBigProjectile ();break ; #line 3720 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_DEBRIS : BeastDebris ();break ; #line 3721 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_BIG_DEBRIS : BeastBigDebris ();break ; #line 3722 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_LASER : DevilLaser ();break ; #line 3723 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_ROCKET : DevilRocket ();break ; #line 3724 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_GUIDED_PROJECTILE : DevilGuidedProjectile ();break ; #line 3725 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRUNT_PROJECTILE_SOL : GruntSoldierLaser ();break ; #line 3726 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRUNT_PROJECTILE_COM : GruntCommanderLaser ();break ; #line 3727 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GUFFY_PROJECTILE : GuffyProjectile ();break ; #line 3728 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEMON_FIREBALL : DemonFireball ();break ; #line 3729 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LARVA_PLASMA : LarvaPlasma ();break ; #line 3730 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LARVA_TAIL_PROJECTILE : LarvaTail ();break ; #line 3731 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_WOODEN_DART : ShooterWoodenDart ();break ; #line 3732 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FIREBALL : ShooterFireball ();break ; #line 3733 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FLAME : ShooterFlame ();break ; #line 3734 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_AFTERBURNER_DEBRIS : AfterburnerDebris ();break ; #line 3735 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_AIRELEMENTAL_WIND : WindBlast ();break ; #line 3736 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_METEOR : Meteor ();break ; #line 3737 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" default : ASSERTALWAYS ("Unknown projectile type"); #line 3738 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3741 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bLightSource ){SetupLightSource (TRUE );} #line 3744 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" m_fStartTime = _pTimer -> CurrentTick (); #line 3746 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(!(m_pmtMove == PMT_GUIDED )){ Jump(STATE_CURRENT,0x01f5002f, FALSE, EInternal());return TRUE;} #line 3747 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" STATE_CProjectile_ProjectileGuidedFly, TRUE; Jump(STATE_CURRENT, 0x01f50019, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50019_Main_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50019 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CProjectile_ProjectileGuidedFly, TRUE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x01f5001a, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CProjectile::H0x01f5001a_Main_02(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x01f5001a const EEnd&__e= (EEnd&)__eeInput; ;Jump(STATE_CURRENT,0x01f5002e, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f5002f_Main_23(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5002f if(!(m_pmtMove == PMT_GUIDED_FAST )){ Jump(STATE_CURRENT,0x01f5002d, FALSE, EInternal());return TRUE;} #line 3749 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" STATE_CProjectile_ProjectileGuidedFastFly, TRUE; Jump(STATE_CURRENT, 0x01f5001b, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f5001b_Main_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f5001b switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CProjectile_ProjectileGuidedFastFly, TRUE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x01f5001c, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CProjectile::H0x01f5001c_Main_04(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x01f5001c const EEnd&__e= (EEnd&)__eeInput; ;Jump(STATE_CURRENT,0x01f5002c, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f5002d_Main_21(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5002d if(!(m_pmtMove == PMT_FLYING )){ Jump(STATE_CURRENT,0x01f5002b, FALSE, EInternal());return TRUE;} #line 3751 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" STATE_CProjectile_ProjectileFly, TRUE; Jump(STATE_CURRENT, 0x01f5001d, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f5001d_Main_05(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f5001d switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CProjectile_ProjectileFly, TRUE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x01f5001e, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CProjectile::H0x01f5001e_Main_06(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x01f5001e const EEnd&__e= (EEnd&)__eeInput; ;Jump(STATE_CURRENT,0x01f5002a, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f5002b_Main_19(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5002b if(!(m_pmtMove == PMT_SLIDING )){ Jump(STATE_CURRENT,0x01f50029, FALSE, EInternal());return TRUE;} #line 3753 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" STATE_CProjectile_ProjectileSlide, TRUE; Jump(STATE_CURRENT, 0x01f5001f, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f5001f_Main_07(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f5001f switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CProjectile_ProjectileSlide, TRUE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x01f50020, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CProjectile::H0x01f50020_Main_08(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x01f50020 const EEnd&__e= (EEnd&)__eeInput; ;Jump(STATE_CURRENT,0x01f50028, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f50029_Main_17(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50029 if(!(m_pmtMove == PMT_FLYING_REBOUNDING )){ Jump(STATE_CURRENT,0x01f50027, FALSE, EInternal());return TRUE;} #line 3755 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" STATE_CProjectile_ProjectileFlyRebounding, TRUE; Jump(STATE_CURRENT, 0x01f50021, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50021_Main_09(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50021 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CProjectile_ProjectileFlyRebounding, TRUE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x01f50022, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CProjectile::H0x01f50022_Main_10(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x01f50022 const EEnd&__e= (EEnd&)__eeInput; ;Jump(STATE_CURRENT,0x01f50026, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f50027_Main_15(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50027 if(!(m_pmtMove == PMT_GUIDED_SLIDING )){ Jump(STATE_CURRENT,0x01f50025, FALSE, EInternal());return TRUE;} #line 3757 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" STATE_CProjectile_ProjectileGuidedSlide, TRUE; Jump(STATE_CURRENT, 0x01f50023, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50023_Main_11(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50023 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CProjectile_ProjectileGuidedSlide, TRUE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x01f50024, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CProjectile::H0x01f50024_Main_12(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x01f50024 const EEnd&__e= (EEnd&)__eeInput; ;Jump(STATE_CURRENT,0x01f50025, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f50025_Main_13(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50025 Jump(STATE_CURRENT,0x01f50026, FALSE, EInternal());return TRUE;} BOOL CProjectile::H0x01f50026_Main_14(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50026 Jump(STATE_CURRENT,0x01f50028, FALSE, EInternal());return TRUE;} BOOL CProjectile::H0x01f50028_Main_16(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50028 Jump(STATE_CURRENT,0x01f5002a, FALSE, EInternal());return TRUE;} BOOL CProjectile::H0x01f5002a_Main_18(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5002a Jump(STATE_CURRENT,0x01f5002c, FALSE, EInternal());return TRUE;} BOOL CProjectile::H0x01f5002c_Main_20(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5002c Jump(STATE_CURRENT,0x01f5002e, FALSE, EInternal());return TRUE;} BOOL CProjectile::H0x01f5002e_Main_22(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f5002e #line 3761 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" switch(m_prtType ){ #line 3762 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_WALKER_ROCKET : WalkerRocketExplosion ();break ; #line 3763 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_ROCKET : PlayerRocketExplosion ();break ; #line 3764 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GRENADE : PlayerGrenadeExplosion ();break ; #line 3765 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LASER_RAY : PlayerLaserWave ();break ; #line 3766 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_HEADMAN_BOMBERMAN : HeadmanBombermanExplosion ();break ; #line 3767 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_CYBORG_BOMB : CyborgBombExplosion ();break ; #line 3768 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVA_COMET : LavamanBombDebrisExplosion ();break ; #line 3769 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BIG_BOMB : LavamanBombExplosion ();break ; #line 3770 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LAVAMAN_BOMB : LavamanBombDebrisExplosion ();break ; #line 3771 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_BIG_PROJECTILE : BeastBigProjectileExplosion ();break ; #line 3772 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_PROJECTILE : BeastProjectileExplosion ();break ; #line 3773 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_DEBRIS : BeastDebrisExplosion ();break ; #line 3774 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_BEAST_BIG_DEBRIS : BeastBigDebrisExplosion ();break ; #line 3775 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_ROCKET : DevilRocketExplosion ();break ; #line 3776 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEVIL_GUIDED_PROJECTILE : DevilGuidedProjectileExplosion ();break ; #line 3777 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_GUFFY_PROJECTILE : GuffyProjectileExplosion ();break ; #line 3778 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_DEMON_FIREBALL : DemonFireballExplosion ();break ; #line 3779 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LARVA_PLASMA : LarvaPlasmaExplosion ();break ; #line 3780 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_LARVA_TAIL_PROJECTILE : LarvaTailExplosion ();break ; #line 3781 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_WOODEN_DART : ShooterWoodenDartExplosion ();break ; #line 3782 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_SHOOTER_FIREBALL : ShooterFireballExplosion ();break ; #line 3783 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" case PRT_METEOR : MeteorExplosion ();break ; #line 3784 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" } #line 3787 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(!(m_fWaitAfterDeath > 0.0f)){ Jump(STATE_CURRENT,0x01f50032, FALSE, EInternal());return TRUE;} #line 3788 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SwitchToEditorModel (); #line 3789 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" ForceFullStop (); #line 3790 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetCollisionFlags (ECF_IMMATERIAL ); #line 3792 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" if(m_bLightSource ){SetupLightSource (FALSE );} #line 3793 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" SetTimerAfter(m_fWaitAfterDeath ); Jump(STATE_CURRENT, 0x01f50030, FALSE, EBegin());return TRUE;}BOOL CProjectile::H0x01f50030_Main_24(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x01f50030 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01f50031, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CProjectile::H0x01f50031_Main_25(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50031 ;Jump(STATE_CURRENT,0x01f50032, FALSE, EInternal());return TRUE;}BOOL CProjectile::H0x01f50032_Main_26(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x01f50032 #line 3796 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Destroy (); #line 3798 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" Return(STATE_CURRENT,EVoid()); #line 3798 "D:/SE1_GPL/Sources/EntitiesMP/Projectile.es" return TRUE; ASSERT(FALSE); return TRUE;};