Serious-Engine/Sources/EntitiesMP/Projectile.cpp
2016-03-11 15:57:17 +02:00

5659 lines
257 KiB
C++

/*
* 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 <EntitiesMP/Projectile.h>
#include <EntitiesMP/Projectile_tables.h>
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 ("<none>\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;};