Serious-Engine/Sources/EntitiesMP/Elemental.cpp

2013 lines
94 KiB
C++
Raw Normal View History

2016-03-11 14:57:17 +01:00
/*
* This file is generated by Entity Class Compiler, (c) CroTeam 1997-98
*/
#line 4 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
#include "StdH.h"
//#include "Models/Enemies/Elementals/AirMan.h"
//#include "Models/Enemies/Elementals/IceMan.h"
#include "Models/Enemies/Elementals/StoneMan.h"
//#include "Models/Enemies/Elementals/Twister.h"
//#include "Models/Enemies/Elementals/WaterMan.h"
//#include "Models/Enemies/Elementals/Projectile/IcePyramid.h"
#include "Models/Enemies/Elementals/Projectile/LavaStone.h"
#include "Models/Enemies/ElementalLava/ElementalLava.h"
#include "EntitiesMP/WorldSettingsController.h"
#include "EntitiesMP/BackgroundViewer.h"
// lava elemental definitions
#define LAVAMAN_SMALL_STRETCH (2.0f*0.75f)
#define LAVAMAN_BIG_STRETCH (4.0f*1.25f)
#define LAVAMAN_LARGE_STRETCH (16.0f*2.5f)
#define LAVAMAN_BOSS_FIRE_RIGHT FLOAT3D(1.01069f, 0.989616f, -1.39743f)
#define LAVAMAN_BOSS_FIRE_LEFT FLOAT3D(-0.39656f, 1.08619f, -1.34373f)
#define LAVAMAN_FIRE_LEFT FLOAT3D(-0.432948f, 1.51133f, -0.476662f)
#define LAVAMAN_FIRE_SMALL (LAVAMAN_FIRE_LEFT*LAVAMAN_SMALL_STRETCH)
#define LAVAMAN_FIRE_BIG (LAVAMAN_FIRE_LEFT*LAVAMAN_BIG_STRETCH)
#define LAVAMAN_FIRE_LARGE_LEFT (LAVAMAN_BOSS_FIRE_LEFT*LAVAMAN_LARGE_STRETCH)
#define LAVAMAN_FIRE_LARGE_RIGHT (LAVAMAN_BOSS_FIRE_RIGHT*LAVAMAN_LARGE_STRETCH)
#define LAVAMAN_SPAWN_BIG (FLOAT3D(0.0171274f, 1.78397f, -0.291414f)*LAVAMAN_BIG_STRETCH)
#define LAVAMAN_SPAWN_LARGE (FLOAT3D(0.0171274f, 1.78397f, -0.291414f)*LAVAMAN_LARGE_STRETCH)
#define DEATH_BURN_TIME 1.0f
#include <EntitiesMP/Elemental.h>
#include <EntitiesMP/Elemental_tables.h>
#line 65 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
#define ECF_AIR ( \
((ECBI_BRUSH|ECBI_MODEL|ECBI_CORPSE|ECBI_ITEM|ECBI_PROJECTILE_MAGIC|ECBI_PROJECTILE_SOLID)<<ECB_TEST) |\
((ECBI_MODEL|ECBI_CORPSE|ECBI_ITEM|ECBI_PROJECTILE_MAGIC|ECBI_PROJECTILE_SOLID)<<ECB_PASS) |\
((ECBI_MODEL)<<ECB_IS))
// info structure
// air
static EntityInfo eiAirElementalSmall = {
EIBT_AIR, 50.0f,
0.0f, 1.7f, 0.0f,
0.0f, 1.0f, 0.0f,
};
static EntityInfo eiAirElementalBig = {
EIBT_AIR, 200.0f,
0.0f, 6.8f, 0.0f,
0.0f, 4.0f, 0.0f,
};
static EntityInfo eiAirElementalLarge = {
EIBT_AIR, 800.0f,
0.0f, 27.2f, 0.0f,
0.0f, 16.0f, 0.0f,
};
// ice
static EntityInfo eiIceElementalSmall = {
EIBT_ICE, 400.0f,
0.0f, 1.7f, 0.0f,
0.0f, 1.0f, 0.0f,
};
static EntityInfo eiIceElementalBig = {
EIBT_ICE, 1600.0f,
0.0f, 6.8f, 0.0f,
0.0f, 4.0f, 0.0f,
};
static EntityInfo eiIceElementalLarge = {
EIBT_ICE, 6400.0f,
0.0f, 27.2f, 0.0f,
0.0f, 16.0f, 0.0f,
};
// lava
static EntityInfo eiLavaElementalSmall = {
EIBT_FIRE, 2000.0f,
0.0f, 1.7f*LAVAMAN_SMALL_STRETCH, 0.0f,
0.0f, LAVAMAN_SMALL_STRETCH, 0.0f,
};
static EntityInfo eiLavaElementalBig = {
EIBT_FIRE, 2800.0f,
0.0f, 1.7f*LAVAMAN_BIG_STRETCH, 0.0f,
0.0f, LAVAMAN_BIG_STRETCH, 0.0f,
};
static EntityInfo eiLavaElementalLarge = {
EIBT_FIRE, 11200.0f,
0.0f, 1.7f*LAVAMAN_LARGE_STRETCH, 0.0f,
0.0f, LAVAMAN_LARGE_STRETCH, 0.0f,
};
// stone
static EntityInfo eiStoneElementalSmall = {
EIBT_ROCK, 1000.0f,
0.0f, 1.7f, 0.0f,
0.0f, 1.0f, 0.0f,
};
static EntityInfo eiStoneElementalBig = {
EIBT_ROCK, 4000.0f,
0.0f, 6.8f, 0.0f,
0.0f, 4.0f, 0.0f,
};
static EntityInfo eiStoneElementalLarge = {
EIBT_ROCK, 16000.0f,
0.0f, 27.2f, 0.0f,
0.0f, 16.0f, 0.0f,
};
// water
static EntityInfo eiWaterElementalSmall = {
EIBT_WATER, 500.0f,
0.0f, 1.7f, 0.0f,
0.0f, 1.0f, 0.0f,
};
static EntityInfo eiWaterElementalBig = {
EIBT_WATER, 2000.0f,
0.0f, 6.8f, 0.0f,
0.0f, 4.0f, 0.0f,
};
static EntityInfo eiWaterElementalLarge = {
EIBT_WATER, 8000.0f,
0.0f, 27.2f, 0.0f,
0.0f, 16.0f, 0.0f,
};
// obsolete
#define EPF_BOX_PLANE_ELEMENTAL (EPF_ORIENTEDBYGRAVITY|EPF_MOVABLE)
#define FIRE_ROCKS FLOAT3D(-0.9f, 1.6f, -1.0f)
#define FIRE_ROCKS_BIG FLOAT3D(-3.6f, 6.4f, -4.0f)
#define FIRE_ROCKS_LARGE FLOAT3D(-14.4f, 25.6f, -16.0f)
#define WATER_LEFT FLOAT3D(-0.75f, 1.3f, -1.2f)
#define WATER_RIGHT FLOAT3D( 0.75f, 1.3f, -1.2f)
#define WATER_BIG_LEFT FLOAT3D(-3.0f, 5.2f, -4.8f)
#define WATER_BIG_RIGHT FLOAT3D( 3.0f, 5.2f, -4.8f)
#define WATER_LARGE_LEFT FLOAT3D(-12.0f, 20.8f, -19.2f)
#define WATER_LARGE_RIGHT FLOAT3D( 12.0f, 20.8f, -19.2f)
void CElemental::SetDefaultProperties(void) {
m_EetType = ELT_STONE ;
m_EecChar = ELC_SMALL ;
m_EesStartState = ELS_NORMAL ;
m_bSpawnWhenHarmed = TRUE ;
m_bSpawnOnBlowUp = TRUE ;
m_EesCurrentState = ELS_NORMAL ;
m_bSpawned = FALSE ;
m_bMovable = TRUE ;
m_fLookRange = 30.0f;
m_iFireCount = 2;
m_fWaitTime = 0.0f;
m_iCounter = 0;
m_fDensity = 10000.0f;
m_penPosition1 = NULL;
m_penPosition2 = NULL;
m_penPosition3 = NULL;
m_penPosition4 = NULL;
m_penPosition5 = NULL;
m_penPosition6 = NULL;
m_soBackground.SetOwner(this);
m_soBackground.Stop_internal();
m_ctSpawned = 0;
m_fSpawnDamage = 1e6f;
m_bSpawnEnabled = FALSE ;
m_soFireL.SetOwner(this);
m_soFireL.Stop_internal();
m_soFireR.SetOwner(this);
m_soFireR.Stop_internal();
m_bCountAsKill = TRUE ;
CEnemyBase::SetDefaultProperties();
}
CTString CElemental::GetPlayerKillDescription(const CTString & strPlayerName,const EDeath & eDeath)
#line 274 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 275 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CTString str ;
#line 276 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
str . PrintF (TRANS ("%s was killed by a Lava Golem") , strPlayerName );
#line 277 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return str ;
#line 278 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
const CTFileName & CElemental::GetComputerMessageName(void)const {
#line 280 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
static DECLARE_CTFILENAME (fnm , "Data\\Messages\\Enemies\\ElementalLava.txt");
#line 281 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return fnm ;
#line 282 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 285 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::RenderParticles(void)
#line 286 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 287 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fTimeFactor = 1.0f;
#line 288 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fPower = 0.25f;
#line 289 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EesCurrentState == ELS_NORMAL )
#line 290 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 291 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fDeathFactor = 1.0f;
#line 292 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_fSpiritStartTime != 0.0f)
#line 293 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 294 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
fDeathFactor = 1.0f - Clamp ((_pTimer -> CurrentTick () - m_fSpiritStartTime ) / DEATH_BURN_TIME , 0.0f , 1.0f);
#line 295 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 296 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Particles_Burning (this , fPower , fTimeFactor * fDeathFactor );
#line 297 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 298 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 300 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::Precache(void)
#line 301 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 302 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEnemyBase :: Precache ();
#line 304 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType )
#line 305 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 306 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA :
#line 307 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 308 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE )
#line 309 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 310 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheClass (CLASS_PROJECTILE , PRT_LAVAMAN_BIG_BOMB );
#line 311 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 312 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if((m_EecChar == ELC_LARGE ) || (m_EecChar == ELC_BIG ))
#line 313 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 314 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheClass (CLASS_PROJECTILE , PRT_LAVAMAN_BOMB );
#line 315 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 317 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheClass (CLASS_PROJECTILE , PRT_LAVAMAN_STONE );
#line 319 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheModel (MODEL_LAVA );
#line 320 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheModel (MODEL_LAVA_BODY_FLARE );
#line 321 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheModel (MODEL_LAVA_HAND_FLARE );
#line 322 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheTexture (TEXTURE_LAVA );
#line 323 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheTexture (TEXTURE_LAVA_DETAIL );
#line 324 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheTexture (TEXTURE_LAVA_FLARE );
#line 326 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_IDLE );
#line 327 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_WOUND );
#line 328 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_FIRE );
#line 329 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_KICK );
#line 330 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_DEATH );
#line 331 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_ANGER );
#line 332 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_LAVABURN );
#line 333 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrecacheSound (SOUND_LAVA_GROW );
#line 334 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 335 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 336 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 337 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 340 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void * CElemental::GetEntityInfo(void) {
#line 341 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType ){
#line 342 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_AIR :
#line 343 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 344 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : return & eiAirElementalLarge ;
#line 345 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : return & eiAirElementalBig ;
#line 346 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default :{return & eiAirElementalSmall ;}
#line 347 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 348 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 349 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_ICE :
#line 350 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 351 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : return & eiIceElementalLarge ;
#line 352 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : return & eiIceElementalBig ;
#line 353 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default :{return & eiIceElementalSmall ;}
#line 354 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 355 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 356 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA :
#line 357 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 358 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : return & eiLavaElementalLarge ;
#line 359 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : return & eiLavaElementalBig ;
#line 360 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default :{return & eiLavaElementalSmall ;}
#line 361 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 362 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 363 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_STONE :
#line 364 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 365 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : return & eiStoneElementalLarge ;
#line 366 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : return & eiStoneElementalBig ;
#line 367 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default :{return & eiStoneElementalSmall ;}
#line 368 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 369 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 371 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default :{
#line 372 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 373 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : return & eiWaterElementalLarge ;
#line 374 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : return & eiWaterElementalBig ;
#line 375 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default :{return & eiWaterElementalSmall ;}
#line 376 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}}
#line 377 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 378 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 381 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
BOOL CElemental::FillEntityStatistics(EntityStats * pes)
#line 382 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 383 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEnemyBase :: FillEntityStatistics (pes );
#line 384 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType ){
#line 385 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_WATER : {pes -> es_strName += " Water";}break ;
#line 386 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_AIR : {pes -> es_strName += " Air";}break ;
#line 387 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_STONE : {pes -> es_strName += " Stone";}break ;
#line 388 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA : {pes -> es_strName += " Lava";}break ;
#line 389 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_ICE : {pes -> es_strName += " Ice";}break ;
#line 390 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 391 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 392 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : pes -> es_strName += " Large";break ;
#line 393 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : pes -> es_strName += " Big";break ;
#line 394 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_SMALL : pes -> es_strName += " Small";break ;
#line 395 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 396 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE ;
#line 397 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 400 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::ReceiveDamage(CEntity * penInflictor,enum DamageType dmtType,
#line 401 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fDamageAmmount,const FLOAT3D & vHitPoint,const FLOAT3D & vDirection)
#line 402 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 404 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(IsOfClass (penInflictor , "Elemental")){
#line 405 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return ;
#line 406 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 409 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE && dmtType == DMT_TELEPORT )
#line 410 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 411 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return ;
#line 412 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 415 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_BIG && dmtType == DMT_BULLET && fDamageAmmount > 100.0f)
#line 416 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 417 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
fDamageAmmount /= 2.5f;
#line 418 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 421 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX ctShouldSpawn = Clamp (INDEX ((m_fMaxHealth - GetHealth ()) / m_fSpawnDamage ) , INDEX (0) , INDEX (10));
#line 422 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CTString strChar = ElementalCharacter_enum . NameForValue (INDEX (m_EecChar ));
#line 426 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_bSpawnEnabled && m_bSpawnWhenHarmed && (m_EecChar == ELC_LARGE || m_EecChar == ELC_BIG ))
#line 427 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 428 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX ctShouldSpawn = Clamp (INDEX ((m_fMaxHealth - GetHealth ()) / m_fSpawnDamage ) , INDEX (0) , INDEX (10));
#line 429 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_ctSpawned < ctShouldSpawn )
#line 430 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 431 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SendEvent (EForceWound ());
#line 432 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 433 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 436 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EesCurrentState != ELS_NORMAL ){
#line 437 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return ;
#line 438 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 440 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEnemyBase :: ReceiveDamage (penInflictor , dmtType , fDamageAmmount , vHitPoint , vDirection );
#line 441 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 443 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::LeaveStain(BOOL bGrow)
#line 444 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 445 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return ;
#line 446 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 449 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX CElemental::AnimForDamage(FLOAT fDamage) {
#line 450 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX iAnim ;
#line 452 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_LAVA ){
#line 453 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(IRnd () % 3){
#line 454 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case 0: iAnim = ELEMENTALLAVA_ANIM_WOUND01 ;break ;
#line 455 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case 1: iAnim = ELEMENTALLAVA_ANIM_WOUND02 ;break ;
#line 456 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default : iAnim = ELEMENTALLAVA_ANIM_WOUND03 ;break ;
#line 457 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 458 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 464 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 465 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (iAnim , 0);
#line 466 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return iAnim ;
#line 467 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 469 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::StandingAnimFight(void) {
#line 470 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_STANDFIGHT , AOF_LOOPING | AOF_NORESTART );
#line 471 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 474 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::StandingAnim(void) {
#line 475 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_LAVA ){
#line 476 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EesCurrentState ){
#line 477 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELS_NORMAL : StartModelAnim (ELEMENTALLAVA_ANIM_WALKBIG , AOF_LOOPING | AOF_NORESTART );break ;
#line 478 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELS_BOX : StartModelAnim (ELEMENTALLAVA_ANIM_MELTFLY , AOF_LOOPING | AOF_NORESTART );break ;
#line 480 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default : StartModelAnim (ELEMENTALLAVA_ANIM_STANDPLANE , AOF_LOOPING | AOF_NORESTART );break ;
#line 481 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 482 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 489 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 490 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 492 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::WalkingAnim(void)
#line 493 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 494 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_LAVA ){
#line 495 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE ){
#line 496 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_WALKBIG , AOF_LOOPING | AOF_NORESTART );
#line 497 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else if(m_EecChar == ELC_BIG ){
#line 498 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_RUNMEDIUM , AOF_LOOPING | AOF_NORESTART );
#line 499 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 500 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_RUNSMALL , AOF_LOOPING | AOF_NORESTART );
#line 501 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 502 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 504 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 505 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 506 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::RunningAnim(void)
#line 507 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 508 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_LAVA ){
#line 509 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
WalkingAnim ();
#line 510 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 512 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 513 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 514 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::RotatingAnim(void) {
#line 515 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_LAVA ){
#line 516 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
WalkingAnim ();
#line 517 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 519 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 520 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 522 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX CElemental::AnimForDeath(void)
#line 523 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 524 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX iAnim ;
#line 525 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_LAVA ){
#line 526 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
iAnim = ELEMENTALLAVA_ANIM_DEATH03 ;
#line 527 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 529 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 530 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (iAnim , 0);
#line 531 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return iAnim ;
#line 532 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 535 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::IdleSound(void) {
#line 536 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soSound , SOUND_LAVA_IDLE , SOF_3D );
#line 537 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 538 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::SightSound(void) {
#line 539 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 540 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::WoundSound(void) {
#line 541 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soSound , SOUND_LAVA_WOUND , SOF_3D );
#line 542 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 543 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::DeathSound(void) {
#line 544 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soSound , SOUND_LAVA_DEATH , SOF_3D );
#line 545 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 547 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
BOOL CElemental::CountAsKill(void)
#line 548 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 549 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return m_bCountAsKill ;
#line 550 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 553 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::SpawnNewElemental(void)
#line 554 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 555 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX ctShouldSpawn = Clamp (INDEX ((m_fMaxHealth - GetHealth ()) / m_fSpawnDamage ) , INDEX (0) , INDEX (10));
#line 557 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_bSpawnOnBlowUp && (m_EecChar == ELC_LARGE || m_EecChar == ELC_BIG ) && (GetHealth () <= 0.0f))
#line 558 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 559 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ctShouldSpawn += 2;
#line 560 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 562 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ASSERT (m_ctSpawned <= ctShouldSpawn );
#line 563 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_ctSpawned >= ctShouldSpawn )
#line 564 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 565 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return ;
#line 566 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 568 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CPlacement3D pl ;
#line 570 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE ){
#line 571 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pl = CPlacement3D (LAVAMAN_SPAWN_LARGE , ANGLE3D (- 90.0f + FRnd () * 180.0f , 30 + FRnd () * 30 , 0));
#line 572 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 573 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pl = CPlacement3D (LAVAMAN_SPAWN_BIG , ANGLE3D (- 90.0f + FRnd () * 180.0f , 40 + FRnd () * 20 , 0));
#line 574 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 575 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pl . RelativeToAbsolute (GetPlacement ());
#line 578 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEntityPointer pen = GetWorld () -> CreateEntity (pl , GetClass ());
#line 579 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_EetType = m_EetType ;
#line 581 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE ){
#line 582 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_EecChar = ELC_BIG ;
#line 583 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 584 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_EecChar = ELC_SMALL ;
#line 585 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 587 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_EesStartState = ELS_BOX ;
#line 588 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_fDensity = m_fDensity ;
#line 589 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_colColor = m_colColor ;
#line 590 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_penEnemy = m_penEnemy ;
#line 591 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_ttTarget = m_ttTarget ;
#line 592 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . m_bSpawned = TRUE ;
#line 593 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pen -> Initialize (EVoid ());
#line 595 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE ){
#line 596 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . LaunchAsFreeProjectile (FLOAT3D (0 , 0 , - 40.0f) , this );
#line 597 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 598 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . LaunchAsFreeProjectile (FLOAT3D (0 , 0 , - 20.0f) , this );
#line 599 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 600 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
((CElemental &) * pen ) . SetDesiredRotation (ANGLE3D (0 , 0 , FRnd () * 360 - 180));
#line 603 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEntity * penSpray = CreateEntity (pl , CLASS_BLOOD_SPRAY );
#line 604 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
penSpray -> SetParent (pen );
#line 605 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ESpawnSpray eSpawnSpray ;
#line 606 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnSpray . fDamagePower = 4.0f;
#line 607 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnSpray . fSizeMultiplier = 0.5f;
#line 608 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnSpray . sptType = SPT_LAVA_STONES ;
#line 609 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnSpray . vDirection = FLOAT3D (0 , - 0.5f , 0);
#line 610 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnSpray . colBurnColor = C_WHITE | CT_OPAQUE ;
#line 611 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnSpray . penOwner = pen ;
#line 612 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
penSpray -> Initialize (eSpawnSpray );
#line 613 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_ctSpawned ++;
#line 614 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 617 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::ThrowRocks(ProjectileType EptProjectile) {
#line 619 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vPos ;
#line 620 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ANGLE3D aAngle ;
#line 622 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 623 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : {
#line 624 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vPos = FIRE_ROCKS_LARGE ;
#line 625 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , ANGLE3D (0 , 0 , 0));
#line 626 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
aAngle = ANGLE3D (FRnd () * 5.0f + 5.0f , FRnd () * 3.0f - 2.0f , 0);
#line 627 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , aAngle );
#line 628 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
aAngle = ANGLE3D (FRnd () * - 5.0f - 5.0f , FRnd () * 3.0f - 2.0f , 0);
#line 629 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , aAngle );
#line 630 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;}
#line 631 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : {
#line 632 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vPos = FIRE_ROCKS_BIG ;
#line 633 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , ANGLE3D (0 , 0 , 0));
#line 634 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
aAngle = ANGLE3D (FRnd () * 4.0f + 4.0f , FRnd () * 3.0f - 2.0f , 0);
#line 635 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , aAngle );
#line 636 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
aAngle = ANGLE3D (FRnd () * - 4.0f - 4.0f , FRnd () * 3.0f - 2.0f , 0);
#line 637 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , aAngle );
#line 638 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;}
#line 639 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
default :{
#line 640 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vPos = FIRE_ROCKS ;
#line 641 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , ANGLE3D (0 , 0 , 0));
#line 642 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
aAngle = ANGLE3D (FRnd () * 3.0f + 3.0f , FRnd () * 3.0f - 2.0f , 0);
#line 643 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , aAngle );
#line 644 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
aAngle = ANGLE3D (FRnd () * - 3.0f - 3.0f , FRnd () * 3.0f - 2.0f , 0);
#line 645 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (EptProjectile , vPos , aAngle );
#line 646 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 647 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 648 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 650 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::BossFirePredictedLavaRock(FLOAT3D vFireingRel)
#line 651 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 652 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vShooting = GetPlacement () . pl_PositionVector + vFireingRel * GetRotationMatrix ();
#line 653 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vTarget = m_penEnemy -> GetPlacement () . pl_PositionVector ;
#line 654 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vSpeedDest = ((CMovableEntity &) * m_penEnemy ) . en_vCurrentTranslationAbsolute ;
#line 655 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fLaunchSpeed ;
#line 656 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fRelativeHdg ;
#line 658 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fDistanceFactor = ClampUp ((vShooting - vTarget ) . Length () / 150.0f , 1.0f) - 0.75f;
#line 659 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fPitch = fDistanceFactor * 45.0f;
#line 662 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
EntityInfo * peiTarget = (EntityInfo *) (m_penEnemy -> GetEntityInfo ());
#line 663 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CalculateAngularLaunchParams (vShooting , peiTarget -> vTargetCenter [ 1 ] - 6.0f / 3.0f , vTarget ,
#line 664 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vSpeedDest , fPitch , fLaunchSpeed , fRelativeHdg );
#line 667 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vShootTarget ;
#line 668 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetEntityInfoPosition (m_penEnemy , peiTarget -> vTargetCenter , vShootTarget );
#line 670 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CPlacement3D pl ;
#line 671 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrepareFreeFlyingProjectile (pl , vShootTarget , vFireingRel , ANGLE3D (fRelativeHdg , fPitch , 0));
#line 672 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEntityPointer penProjectile = CreateEntity (pl , CLASS_PROJECTILE );
#line 673 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ELaunchProjectile eLaunch ;
#line 674 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eLaunch . penLauncher = this ;
#line 675 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eLaunch . prtType = PRT_LAVAMAN_BIG_BOMB ;
#line 676 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eLaunch . fSpeed = fLaunchSpeed ;
#line 677 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
penProjectile -> Initialize (eLaunch );
#line 678 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 681 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::ShakeItBaby(FLOAT tmShaketime,FLOAT fPower)
#line 682 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 683 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CWorldSettingsController * pwsc = GetWSC (this );
#line 684 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(pwsc != NULL ){
#line 685 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_tmShakeStarted = tmShaketime ;
#line 686 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_vShakePos = GetPlacement () . pl_PositionVector ;
#line 687 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_fShakeFalloff = 450.0f;
#line 688 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_fShakeFade = 3.0f;
#line 690 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_fShakeIntensityZ = 0;
#line 691 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_tmShakeFrequencyZ = 5.0f;
#line 692 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_fShakeIntensityY = 0.1f * fPower ;
#line 693 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_tmShakeFrequencyY = 5.0f;
#line 694 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_fShakeIntensityB = 2.5f * fPower ;
#line 695 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_tmShakeFrequencyB = 7.2f;
#line 697 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pwsc -> m_bShakeFadeIn = FALSE ;
#line 698 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 699 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 701 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::SpawnShockwave(FLOAT fSize)
#line 702 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 703 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CPlacement3D pl = GetPlacement ();
#line 704 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
pl . pl_PositionVector (2) += 0.1f;
#line 705 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEntityPointer penShockwave = CreateEntity (pl , CLASS_BASIC_EFFECT );
#line 707 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ESpawnEffect eSpawnEffect ;
#line 708 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnEffect . colMuliplier = C_WHITE | CT_OPAQUE ;
#line 709 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnEffect . betType = BET_CANNONSHOCKWAVE ;
#line 710 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eSpawnEffect . vStretch = FLOAT3D (fSize , fSize , fSize );
#line 711 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
penShockwave -> Initialize (eSpawnEffect );
#line 712 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 715 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::HitGround(void) {
#line 716 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vSource ;
#line 717 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_penEnemy != NULL )
#line 718 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 719 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vSource = GetPlacement () . pl_PositionVector +
#line 720 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D (m_penEnemy -> en_mRotation (1 , 2) , m_penEnemy -> en_mRotation (2 , 2) , m_penEnemy -> en_mRotation (3 , 2));
#line 721 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 722 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
else
#line 723 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 724 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vSource = GetPlacement () . pl_PositionVector ;
#line 725 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 728 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE ){
#line 729 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
InflictRangeDamage (this , DMT_IMPACT , 150.0f , vSource , 7.5f , m_fCloseDistance );
#line 730 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShakeItBaby (_pTimer -> CurrentTick () , 5.0f);
#line 731 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SpawnShockwave (10.0f);
#line 732 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else if(m_EecChar == ELC_BIG ){
#line 733 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
InflictRangeDamage (this , DMT_IMPACT , 75.0f , vSource , 5.0f , m_fCloseDistance );
#line 734 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShakeItBaby (_pTimer -> CurrentTick () , 2.0f);
#line 735 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SpawnShockwave (3.0f);
#line 736 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 737 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
InflictRangeDamage (this , DMT_IMPACT , 25.0f , vSource , 2.5f , m_fCloseDistance );
#line 738 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SpawnShockwave (1.0f);
#line 739 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 740 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 788 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::AddAttachments(void) {
#line 789 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType ){
#line 803 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA :
#line 804 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(GetModelObject () -> GetAttachmentModel (ELEMENTALLAVA_ATTACHMENT_BODY_FLARE ) == NULL ){
#line 805 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
AddAttachmentToModel (this , * GetModelObject () , ELEMENTALLAVA_ATTACHMENT_BODY_FLARE , MODEL_LAVA_BODY_FLARE , TEXTURE_LAVA_FLARE , 0 , 0 , 0);
#line 806 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
AddAttachmentToModel (this , * GetModelObject () , ELEMENTALLAVA_ATTACHMENT_RIGHT_HAND_FLARE , MODEL_LAVA_HAND_FLARE , TEXTURE_LAVA_FLARE , 0 , 0 , 0);
#line 807 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
AddAttachmentToModel (this , * GetModelObject () , ELEMENTALLAVA_ATTACHMENT_LEFT_HAND_FLARE , MODEL_LAVA_HAND_FLARE , TEXTURE_LAVA_FLARE , 0 , 0 , 0);
#line 808 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 809 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 822 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 823 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetModelObject () -> StretchModel (GetModelObject () -> mo_Stretch );
#line 824 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ModelChangeNotify ();
#line 825 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 828 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::RemoveAttachments(void) {
#line 829 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType ){
#line 837 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA :
#line 838 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
RemoveAttachmentFromModel (* GetModelObject () , ELEMENTALLAVA_ATTACHMENT_BODY_FLARE );
#line 839 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
RemoveAttachmentFromModel (* GetModelObject () , ELEMENTALLAVA_ATTACHMENT_RIGHT_HAND_FLARE );
#line 840 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
RemoveAttachmentFromModel (* GetModelObject () , ELEMENTALLAVA_ATTACHMENT_LEFT_HAND_FLARE );
#line 841 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 848 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 849 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 855 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::BlowUp(void) {
#line 857 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOATaabbox3D box ;
#line 858 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetBoundingBox (box );
#line 859 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fEntitySize = box . Size () . MaxNorm () / 2;
#line 861 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX iCount = 1;
#line 862 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EecChar ){
#line 863 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_SMALL : iCount = 3;break ;
#line 864 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_BIG : iCount = 5;break ;
#line 865 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELC_LARGE : iCount = 7;break ;
#line 866 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 868 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vNormalizedDamage = m_vDamage - m_vDamage * (m_fBlowUpAmount / m_vDamage . Length ());
#line 869 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vNormalizedDamage /= Sqrt (vNormalizedDamage . Length ());
#line 870 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vNormalizedDamage *= 1.75f;
#line 871 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vBodySpeed = en_vCurrentTranslationAbsolute - en_vGravityDir * (en_vGravityDir % en_vCurrentTranslationAbsolute );
#line 911 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SwitchToEditorModel ();
#line 912 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_IMMATERIAL );
#line 913 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetCollisionFlags (ECF_IMMATERIAL );
#line 914 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 918 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
void CElemental::EnemyPostInit(void)
#line 919 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 920 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE && m_EetType == ELT_LAVA )
#line 921 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 922 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soBackground . Set3DParameters (400.0f , 0.0f , 1.0f , 1.0f);
#line 923 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soSound . Set3DParameters (400.0f , 50.0f , 1.0f , 1.0f);
#line 924 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soFireL . Set3DParameters (400.0f , 50.0f , 1.0f , 1.0f);
#line 925 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soFireR . Set3DParameters (400.0f , 50.0f , 1.0f , 1.0f);
#line 926 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 927 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
else if(m_EecChar == ELC_BIG && m_EetType == ELT_LAVA )
#line 928 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 929 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soBackground . Set3DParameters (150.0f , 15.0f , 0.5f , 1.0f);
#line 930 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soSound . Set3DParameters (200.0f , 0.0f , 1.0f , 1.0f);
#line 931 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soFireL . Set3DParameters (200.0f , 0.0f , 1.0f , 1.0f);
#line 932 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_soFireR . Set3DParameters (200.0f , 0.0f , 1.0f , 1.0f);
#line 933 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 934 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
BOOL CElemental::
#line 940 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FallOnFloor(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_FallOnFloor
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::FallOnFloor expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 942 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_WALKING );
#line 944 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(10.0f);
Jump(STATE_CURRENT, 0x01420001, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420001_FallOnFloor_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420001
switch(__eeInput.ee_slEvent){case(EVENTCODE_ETimer):{const ETimer&e= (ETimer&)__eeInput;
UnsetTimer();Jump(STATE_CURRENT,0x01420002, FALSE, EInternal());return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput;
return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_ETouch):{const ETouch&et= (ETouch&)__eeInput;
#line 949 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(et . penOther -> GetRenderType () & RT_BRUSH ){
#line 951 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StopMoving ();
#line 952 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
UnsetTimer();Jump(STATE_CURRENT,0x01420002, FALSE, EInternal());return TRUE;
#line 953 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 954 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE;
#line 955 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}ASSERT(FALSE);break;default:{return TRUE;}ASSERT(FALSE);break;
#line 957 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}return TRUE;}BOOL CElemental::H0x01420002_FallOnFloor_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420002
#line 958 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_MELTUP , 0);
#line 959 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 959 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1006 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
LavamanFire(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_LavamanFire
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::LavamanFire expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1008 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bSpawnEnabled = TRUE ;
#line 1010 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(!(m_EecChar == ELC_LARGE )){ Jump(STATE_CURRENT,0x01420012, FALSE, EInternal());return TRUE;}
#line 1012 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CModelObject & mo = * GetModelObject ();
#line 1013 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT tmWait = mo . GetAnimLength (mo . ao_iCurrentAnim ) - mo . GetPassedTime ();
#line 1014 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_ATTACKBOSS , AOF_SMOOTHCHANGE );
#line 1015 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(tmWait + 0.95f);
Jump(STATE_CURRENT, 0x01420004, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420004_LavamanFire_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420004
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420005, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420005_LavamanFire_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420005
;
#line 1016 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
BossFirePredictedLavaRock (LAVAMAN_FIRE_LARGE_RIGHT );
#line 1017 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soFireR , SOUND_LAVA_FIRE , SOF_3D );
#line 1018 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(2.0150f - 0.95f);
Jump(STATE_CURRENT, 0x01420006, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420006_LavamanFire_03(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420006
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420007, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420007_LavamanFire_04(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420007
;
#line 1019 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
BossFirePredictedLavaRock (LAVAMAN_FIRE_LARGE_LEFT );
#line 1020 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soFireL , SOUND_LAVA_FIRE , SOF_3D );
#line 1021 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_WALKBIG , AOF_SMOOTHCHANGE );
#line 1022 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
STATE_CMovableModelEntity_WaitUntilScheduledAnimStarts, FALSE;
Jump(STATE_CURRENT, 0x01420008, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420008_LavamanFire_05(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420008
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CMovableModelEntity_WaitUntilScheduledAnimStarts, FALSE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x01420009, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420009_LavamanFire_06(const CEntityEvent &__eeInput){
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420009
const EReturn&__e= (EReturn&)__eeInput;
;
#line 1023 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
MaybeSwitchToAnotherPlayer ();
#line 1025 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fShootTime = _pTimer -> CurrentTick () + m_fAttackFireTime * (1.0f + FRnd () / 5.0f);
#line 1026 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1026 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE;Jump(STATE_CURRENT,0x01420011, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x01420012_LavamanFire_15(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420012
if(!(m_EecChar == ELC_BIG )){ Jump(STATE_CURRENT,0x01420010, FALSE, EInternal());return TRUE;}
#line 1030 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CModelObject & mo = * GetModelObject ();
#line 1031 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT tmWait = mo . GetAnimLength (mo . ao_iCurrentAnim ) - mo . GetPassedTime ();
#line 1032 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_ATTACKLEFTHAND , AOF_SMOOTHCHANGE );
#line 1033 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(tmWait + 0.90f);
Jump(STATE_CURRENT, 0x0142000a, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142000a_LavamanFire_07(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142000a
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x0142000b, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142000b_LavamanFire_08(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142000b
;
#line 1034 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vShooting = GetPlacement () . pl_PositionVector ;
#line 1035 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vTarget = m_penEnemy -> GetPlacement () . pl_PositionVector ;
#line 1036 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vSpeedDest = ((CMovableEntity &) * m_penEnemy ) . en_vCurrentTranslationAbsolute ;
#line 1037 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fLaunchSpeed ;
#line 1038 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fRelativeHdg ;
#line 1040 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT fPitch = 20.0f;
#line 1043 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
EntityInfo * peiTarget = (EntityInfo *) (m_penEnemy -> GetEntityInfo ());
#line 1044 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CalculateAngularLaunchParams (vShooting , LAVAMAN_FIRE_BIG (2) - peiTarget -> vTargetCenter [ 1 ] - 1.5f / 3.0f , vTarget ,
#line 1045 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
vSpeedDest , fPitch , fLaunchSpeed , fRelativeHdg );
#line 1048 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT3D vShootTarget ;
#line 1049 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetEntityInfoPosition (m_penEnemy , peiTarget -> vTargetCenter , vShootTarget );
#line 1051 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CPlacement3D pl ;
#line 1052 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PrepareFreeFlyingProjectile (pl , vShootTarget , LAVAMAN_FIRE_BIG , ANGLE3D (fRelativeHdg , fPitch , 0));
#line 1053 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CEntityPointer penProjectile = CreateEntity (pl , CLASS_PROJECTILE );
#line 1054 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ELaunchProjectile eLaunch ;
#line 1055 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eLaunch . penLauncher = this ;
#line 1056 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eLaunch . prtType = PRT_LAVAMAN_BOMB ;
#line 1057 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
eLaunch . fSpeed = fLaunchSpeed ;
#line 1058 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
penProjectile -> Initialize (eLaunch );
#line 1059 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soSound , SOUND_LAVA_FIRE , SOF_3D );Jump(STATE_CURRENT,0x0142000f, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x01420010_LavamanFire_13(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420010
if(!(TRUE )){ Jump(STATE_CURRENT,0x0142000e, FALSE, EInternal());return TRUE;}
#line 1063 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
CModelObject & mo = * GetModelObject ();
#line 1064 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
FLOAT tmWait = mo . GetAnimLength (mo . ao_iCurrentAnim ) - mo . GetPassedTime ();
#line 1065 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_ATTACKLEFTHAND , AOF_SMOOTHCHANGE );
#line 1066 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(tmWait + 0.8f);
Jump(STATE_CURRENT, 0x0142000c, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142000c_LavamanFire_09(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142000c
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x0142000d, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142000d_LavamanFire_10(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142000d
;
#line 1067 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ShootProjectile (PRT_LAVAMAN_STONE , LAVAMAN_FIRE_SMALL , ANGLE3D (0 , 0 , 0));
#line 1068 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soSound , SOUND_LAVA_FIRE , SOF_3D );Jump(STATE_CURRENT,0x0142000e, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x0142000e_LavamanFire_11(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142000e
Jump(STATE_CURRENT,0x0142000f, FALSE, EInternal());return TRUE;}
BOOL CElemental::H0x0142000f_LavamanFire_12(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142000f
Jump(STATE_CURRENT,0x01420011, FALSE, EInternal());return TRUE;}
BOOL CElemental::H0x01420011_LavamanFire_14(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420011
#line 1071 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(GetModelObject () -> GetAnimLength (ELEMENTALLAVA_ANIM_ATTACKLEFTHAND ) - 0.9f);
Jump(STATE_CURRENT, 0x01420013, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420013_LavamanFire_16(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420013
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420014, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420014_LavamanFire_17(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420014
;
#line 1073 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StandingAnim ();
#line 1074 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(_pTimer -> TickQuantum );
Jump(STATE_CURRENT, 0x01420015, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420015_LavamanFire_18(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420015
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420016, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420016_LavamanFire_19(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420016
;
#line 1076 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar != ELC_SMALL ){
#line 1077 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
MaybeSwitchToAnotherPlayer ();
#line 1078 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1081 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fShootTime = _pTimer -> CurrentTick () + m_fAttackFireTime * (1.0f + FRnd () / 5.0f);
#line 1083 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1083 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1086 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
LavamanStones(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_LavamanStones
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::LavamanStones expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1088 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_ATTACKLEFTHAND , 0);
#line 1089 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(0.7f);
Jump(STATE_CURRENT, 0x01420018, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420018_LavamanStones_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420018
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420019, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420019_LavamanStones_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420019
;
#line 1091 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE ){
#line 1092 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ThrowRocks (PRT_LAVAMAN_STONE );
#line 1093 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else if(m_EecChar == ELC_BIG ){
#line 1094 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ThrowRocks (PRT_LAVAMAN_STONE );
#line 1095 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 1096 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ThrowRocks (PRT_LAVAMAN_STONE );
#line 1097 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1098 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soSound , SOUND_LAVA_FIRE , SOF_3D );
#line 1099 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(0.9f);
Jump(STATE_CURRENT, 0x0142001a, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142001a_LavamanStones_03(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142001a
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x0142001b, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142001b_LavamanStones_04(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142001b
;
#line 1101 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StandingAnim ();
#line 1102 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(FRnd () / 3 + _pTimer -> TickQuantum );
Jump(STATE_CURRENT, 0x0142001c, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142001c_LavamanStones_05(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142001c
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x0142001d, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142001d_LavamanStones_06(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142001d
;
#line 1103 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1103 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1106 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
LavamanHit(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_LavamanHit
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::LavamanHit expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1108 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_ATTACKTWOHANDS , 0);
#line 1109 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(0.6f);
Jump(STATE_CURRENT, 0x0142001f, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142001f_LavamanHit_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142001f
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420020, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420020_LavamanHit_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420020
;
#line 1110 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
HitGround ();
#line 1111 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soFireL , SOUND_LAVA_KICK , SOF_3D );
#line 1112 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_WALKBIG , AOF_SMOOTHCHANGE );
#line 1113 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
STATE_CMovableModelEntity_WaitUntilScheduledAnimStarts, FALSE;
Jump(STATE_CURRENT, 0x01420021, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420021_LavamanHit_03(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420021
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CMovableModelEntity_WaitUntilScheduledAnimStarts, FALSE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x01420022, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420022_LavamanHit_04(const CEntityEvent &__eeInput){
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420022
const EReturn&__e= (EReturn&)__eeInput;
;
#line 1114 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1114 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1209 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
BeWounded(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_BeWounded
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EDamage, "CElemental::BeWounded expects 'EDamage' as input!"); const EDamage &eDamage = (const EDamage &)__eeInput;
#line 1211 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_bSpawnEnabled )
#line 1212 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 1213 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SpawnNewElemental ();
#line 1214 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1215 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Jump(STATE_CURRENT, STATE_CEnemyBase_BeWounded, FALSE, eDamage );return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1222 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
BoxToNormal(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_BoxToNormal
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::BoxToNormal expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1223 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_EesCurrentState = ELS_NORMAL ;
#line 1224 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_WALKING );
#line 1225 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ChangeCollisionBoxIndexWhenPossible (STONEMAN_COLLISION_BOX_NORMAL );
#line 1226 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soFireL , SOUND_LAVA_GROW , SOF_3D );
#line 1227 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (STONEMAN_ANIM_MORPHBOXUP , 0);
#line 1228 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
AddAttachments ();
#line 1229 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(GetModelObject () -> GetAnimLength (STONEMAN_ANIM_MORPHBOXUP ));
Jump(STATE_CURRENT, 0x01420025, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420025_BoxToNormal_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420025
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420026, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420026_BoxToNormal_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420026
;
#line 1230 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1230 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1245 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaneToNormal(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_PlaneToNormal
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::PlaneToNormal expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1246 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_EesCurrentState = ELS_NORMAL ;
#line 1247 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SwitchToModel ();
#line 1248 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_WALKING );
#line 1249 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ChangeCollisionBoxIndexWhenPossible (ELEMENTALLAVA_COLLISION_BOX_NORMAL );
#line 1250 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soFireL , SOUND_LAVA_GROW , SOF_3D );
#line 1251 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
INDEX iAnim ;
#line 1252 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_LAVA ){
#line 1253 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
iAnim = ELEMENTALLAVA_ANIM_MELTUP ;
#line 1254 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 1256 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1257 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (iAnim , 0);
#line 1258 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
AddAttachments ();
#line 1259 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(GetModelObject () -> GetAnimLength (iAnim ));
Jump(STATE_CURRENT, 0x01420028, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420028_PlaneToNormal_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420028
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420029, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420029_PlaneToNormal_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420029
;
#line 1260 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1260 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1266 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
InitializeAttack(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_InitializeAttack
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::InitializeAttack expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1268 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(!(m_EesCurrentState == ELS_BOX )){ Jump(STATE_CURRENT,0x01420031, FALSE, EInternal());return TRUE;}
#line 1270 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
STATE_CElemental_BoxToNormal, TRUE;
Jump(STATE_CURRENT, 0x0142002b, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142002b_InitializeAttack_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142002b
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CElemental_BoxToNormal, TRUE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x0142002c, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142002c_InitializeAttack_02(const CEntityEvent &__eeInput){
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142002c
const EReturn&__e= (EReturn&)__eeInput;
;Jump(STATE_CURRENT,0x01420030, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x01420031_InitializeAttack_07(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420031
if(!(m_EesCurrentState == ELS_PLANE )){ Jump(STATE_CURRENT,0x0142002f, FALSE, EInternal());return TRUE;}
#line 1275 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
STATE_CElemental_PlaneToNormal, TRUE;
Jump(STATE_CURRENT, 0x0142002d, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142002d_InitializeAttack_03(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142002d
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CElemental_PlaneToNormal, TRUE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x0142002e, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142002e_InitializeAttack_04(const CEntityEvent &__eeInput){
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142002e
const EReturn&__e= (EReturn&)__eeInput;
;Jump(STATE_CURRENT,0x0142002f, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x0142002f_InitializeAttack_05(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142002f
Jump(STATE_CURRENT,0x01420030, FALSE, EInternal());return TRUE;}
BOOL CElemental::H0x01420030_InitializeAttack_06(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420030
#line 1277 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Jump(STATE_CURRENT, STATE_CEnemyBase_InitializeAttack, FALSE, EVoid());return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1280 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Fire(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_Fire
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::Fire expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1282 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType ){
#line 1284 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA : Jump(STATE_CURRENT, STATE_CElemental_LavamanFire, TRUE, EVoid());return TRUE;break ;
#line 1288 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1289 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1289 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1292 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Hit(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_Hit
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::Hit expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1294 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType ){
#line 1296 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA : Jump(STATE_CURRENT, STATE_CElemental_LavamanHit, TRUE, EVoid());return TRUE;break ;
#line 1300 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1301 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1301 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1307 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Death(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_Death
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::Death expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1309 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_bSpawnOnBlowUp && (m_EecChar == ELC_LARGE || m_EecChar == ELC_BIG )){
#line 1310 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SpawnNewElemental ();
#line 1311 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SpawnNewElemental ();
#line 1312 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1314 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(!(m_EetType == ELT_AIR )){ Jump(STATE_CURRENT,0x01420037, FALSE, EInternal());return TRUE;}
#line 1315 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fFadeStartTime = _pTimer -> CurrentTick ();
#line 1316 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bFadeOut = TRUE ;
#line 1317 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fFadeTime = 2.0f;
#line 1318 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(m_fFadeTime );
Jump(STATE_CURRENT, 0x01420035, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420035_Death_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420035
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420036, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420036_Death_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420036
;Jump(STATE_CURRENT,0x01420037, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x01420037_Death_03(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420037
#line 1320 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
STATE_CEnemyBase_Death, FALSE;
Jump(STATE_CURRENT, 0x01420038, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420038_Death_04(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420038
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CEnemyBase_Death, FALSE, EVoid());return TRUE;case EVENTCODE_EEnd: Jump(STATE_CURRENT,0x01420039, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420039_Death_05(const CEntityEvent &__eeInput){
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420039
const EEnd&__e= (EEnd&)__eeInput;
;
#line 1321 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetModelObject () -> mo_toBump . SetData (NULL );
#line 1322 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EEnd ());
#line 1322 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1325 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
BossAppear(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_BossAppear
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::BossAppear expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1327 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(2.0f);
Jump(STATE_CURRENT, 0x0142003b, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142003b_BossAppear_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142003b
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x0142003c, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142003c_BossAppear_02(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142003c
;
#line 1328 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fFadeStartTime = _pTimer -> CurrentTick ();
#line 1329 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetModelObject () -> PlayAnim (ELEMENTALLAVA_ANIM_ANGER , 0);
#line 1330 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soSound , SOUND_LAVA_ANGER , SOF_3D );
#line 1331 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(GetModelObject () -> GetAnimLength (ELEMENTALLAVA_ANIM_ANGER ) - _pTimer -> TickQuantum );
Jump(STATE_CURRENT, 0x0142003d, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142003d_BossAppear_03(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142003d
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x0142003e, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142003e_BossAppear_04(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142003e
;
#line 1333 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_ATTACKTWOHANDS , AOF_SMOOTHCHANGE );
#line 1334 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(0.7f);
Jump(STATE_CURRENT, 0x0142003f, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142003f_BossAppear_05(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142003f
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420040, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420040_BossAppear_06(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420040
;
#line 1335 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
HitGround ();
#line 1336 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soFireL , SOUND_LAVA_KICK , SOF_3D );
#line 1337 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(GetModelObject () -> GetAnimLength (ELEMENTALLAVA_ANIM_ATTACKTWOHANDS ) - 0.7f - _pTimer -> TickQuantum );
Jump(STATE_CURRENT, 0x01420041, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420041_BossAppear_07(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420041
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420042, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420042_BossAppear_08(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420042
;
#line 1339 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StartModelAnim (ELEMENTALLAVA_ANIM_ATTACKTWOHANDS , 0);
#line 1340 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(0.6f);
Jump(STATE_CURRENT, 0x01420043, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420043_BossAppear_09(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420043
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420044, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420044_BossAppear_10(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420044
;
#line 1341 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
HitGround ();
#line 1342 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soFireR , SOUND_LAVA_KICK , SOF_3D );
#line 1343 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetTimerAfter(GetModelObject () -> GetAnimLength (ELEMENTALLAVA_ANIM_ATTACKTWOHANDS ) - 0.6f - _pTimer -> TickQuantum );
Jump(STATE_CURRENT, 0x01420045, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420045_BossAppear_11(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420045
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x01420046, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420046_BossAppear_12(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420046
;
#line 1346 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1346 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1350 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PreMainLoop(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_PreMainLoop
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::PreMainLoop expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1353 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(!(m_bSpawned )){ Jump(STATE_CURRENT,0x0142004a, FALSE, EInternal());return TRUE;}
#line 1354 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bSpawned = FALSE ;
#line 1355 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bCountAsKill = FALSE ;
#line 1357 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
STATE_CElemental_FallOnFloor, TRUE;
Jump(STATE_CURRENT, 0x01420048, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x01420048_PreMainLoop_01(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420048
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CElemental_FallOnFloor, TRUE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x01420049, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CElemental::H0x01420049_PreMainLoop_02(const CEntityEvent &__eeInput){
#undef STATE_CURRENT
#define STATE_CURRENT 0x01420049
const EReturn&__e= (EReturn&)__eeInput;
;Jump(STATE_CURRENT,0x0142004a, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x0142004a_PreMainLoop_03(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142004a
#line 1360 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE || m_EecChar == ELC_BIG && m_EetType == ELT_LAVA )
#line 1361 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 1362 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
PlaySound (m_soBackground , SOUND_LAVA_LAVABURN , SOF_3D | SOF_LOOP );
#line 1363 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1365 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(!(m_EecChar == ELC_LARGE )){ Jump(STATE_CURRENT,0x0142004d, FALSE, EInternal());return TRUE;}
#line 1367 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
STATE_CElemental_BossAppear, TRUE;
Jump(STATE_CURRENT, 0x0142004b, FALSE, EBegin());return TRUE;}BOOL CElemental::H0x0142004b_PreMainLoop_04(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142004b
switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CElemental_BossAppear, TRUE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x0142004c, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CElemental::H0x0142004c_PreMainLoop_05(const CEntityEvent &__eeInput){
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142004c
const EReturn&__e= (EReturn&)__eeInput;
;Jump(STATE_CURRENT,0x0142004d, FALSE, EInternal());return TRUE;}BOOL CElemental::H0x0142004d_PreMainLoop_06(const CEntityEvent &__eeInput){
ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal);
#undef STATE_CURRENT
#define STATE_CURRENT 0x0142004d
#line 1369 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Return(STATE_CURRENT,EReturn ());
#line 1369 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
return TRUE; ASSERT(FALSE); return TRUE;};BOOL CElemental::
#line 1375 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Main(const CEntityEvent &__eeInput) {
#undef STATE_CURRENT
#define STATE_CURRENT STATE_CElemental_Main
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CElemental::Main expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput;
#line 1376 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType != ELT_LAVA ){
#line 1377 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_EetType = ELT_LAVA ;
#line 1378 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1380 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
InitAsModel ();
#line 1382 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_bMovable ){
#line 1383 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_WALKING );
#line 1385 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 1386 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_IMMATERIAL | EPF_MOVABLE );
#line 1387 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1389 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EetType == ELT_AIR ){
#line 1390 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetCollisionFlags (ECF_AIR );
#line 1392 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else {
#line 1393 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetCollisionFlags (ECF_MODEL );
#line 1394 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1395 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetFlags (GetFlags () | ENF_ALIVE );
#line 1396 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
en_fDensity = m_fDensity ;
#line 1397 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fSpawnDamage = 1e6f;
#line 1398 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fDamageWounded = 1e6f;
#line 1399 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bSpawnEnabled = FALSE ;
#line 1400 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bBoss = FALSE ;
#line 1403 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EetType ){
#line 1410 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELT_LAVA :
#line 1411 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fBlowUpAmount = 1E30f;
#line 1412 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetComponents (this , * GetModelObject () , MODEL_LAVA , TEXTURE_LAVA , 0 , 0 , TEXTURE_LAVA_DETAIL );
#line 1413 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 1420 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1421 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ModelChangeNotify ();
#line 1424 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_LARGE )
#line 1425 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 1427 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_sptType = SPT_SMALL_LAVA_STONES ;
#line 1428 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bBoss = TRUE ;
#line 1429 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetHealth (10000.0f);
#line 1430 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fMaxHealth = 10000.0f;
#line 1432 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fSpawnDamage = 2000.0f;
#line 1434 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fWalkSpeed = FRnd () / 2 + 1.0f;
#line 1435 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aWalkRotateSpeed = AngleDeg (FRnd () * 10.0f + 25.0f);
#line 1436 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackRunSpeed = FRnd () + 2.0f;
#line 1437 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aAttackRotateSpeed = AngleDeg (FRnd () * 50 + 245.0f);
#line 1438 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseRunSpeed = FRnd () + 2.0f;
#line 1439 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aCloseRotateSpeed = AngleDeg (FRnd () * 50 + 245.0f);
#line 1441 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackDistance = 300.0f;
#line 1442 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseDistance = 60.0f;
#line 1443 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fStopDistance = 30.0f;
#line 1444 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackFireTime = 0.5f;
#line 1445 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseFireTime = 1.0f;
#line 1446 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fIgnoreRange = 600.0f;
#line 1447 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_iScore = 50000;
#line 1448 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1449 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
else if(m_EecChar == ELC_BIG )
#line 1450 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 1451 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_sptType = SPT_LAVA_STONES ;
#line 1452 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetHealth (800.0f);
#line 1453 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fMaxHealth = 800.0f;
#line 1455 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fSpawnDamage = 500.0f;
#line 1457 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fWalkSpeed = FRnd () + 1.5f;
#line 1458 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aWalkRotateSpeed = AngleDeg (FRnd () * 10.0f + 25.0f);
#line 1459 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackRunSpeed = FRnd () * 1.0f + 6.0f;
#line 1460 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aAttackRotateSpeed = AngleDeg (FRnd () * 50 + 300.0f);
#line 1461 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseRunSpeed = FRnd () * 2.0f + 2.0f;
#line 1462 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aCloseRotateSpeed = AngleDeg (FRnd () * 50 + 300.0f);
#line 1464 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackDistance = 150.0f;
#line 1465 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseDistance = 20.0f;
#line 1466 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fStopDistance = 5.0f;
#line 1467 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackFireTime = 0.5f;
#line 1468 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseFireTime = 1.0f;
#line 1469 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fIgnoreRange = 400.0f;
#line 1471 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_iScore = 2500;
#line 1472 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1473 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
else
#line 1474 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 1475 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_sptType = SPT_LAVA_STONES ;
#line 1476 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetHealth (100.0f);
#line 1477 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fMaxHealth = 100.0f;
#line 1479 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fWalkSpeed = FRnd () + 1.5f;
#line 1480 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aWalkRotateSpeed = AngleDeg (FRnd () * 10.0f + 25.0f);
#line 1481 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackRunSpeed = FRnd () * 2.0f + 6.0f;
#line 1482 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aAttackRotateSpeed = AngleDeg (FRnd () * 50 + 500.0f);
#line 1483 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseRunSpeed = FRnd () * 3.0f + 4.0f;
#line 1484 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_aCloseRotateSpeed = AngleDeg (FRnd () * 50 + 500.0f);
#line 1486 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackDistance = 100.0f;
#line 1487 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseDistance = 10.0f;
#line 1488 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fStopDistance = 5.0f;
#line 1489 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fAttackFireTime = 1.5f;
#line 1490 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fCloseFireTime = 1.0f;
#line 1491 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_fIgnoreRange = 200.0f;
#line 1493 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_iScore = 500;
#line 1494 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1497 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(! m_bMovable )
#line 1498 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 1499 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_EesStartState = ELS_NORMAL ;
#line 1500 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bSpawnWhenHarmed = FALSE ;
#line 1501 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_bSpawnOnBlowUp = FALSE ;
#line 1503 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_iFireCount <= 0)
#line 1504 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
{
#line 1505 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
WarningMessage ("Entity: %s - Fire count must be greater than zero" , GetName ());
#line 1506 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_iFireCount = 1;
#line 1507 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1508 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1511 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
m_EesCurrentState = m_EesStartState ;
#line 1512 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
RemoveAttachments ();
#line 1513 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
switch(m_EesCurrentState ){
#line 1514 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELS_NORMAL :
#line 1515 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_WALKING );
#line 1516 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
AddAttachments ();
#line 1517 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 1518 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELS_BOX :
#line 1519 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_BOX_PLANE_ELEMENTAL );
#line 1520 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 1521 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
case ELS_PLANE :
#line 1522 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SetPhysicsFlags (EPF_MODEL_IMMATERIAL | EPF_MOVABLE );
#line 1523 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
SwitchToEditorModel ();
#line 1524 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
break ;
#line 1525 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1526 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
StandingAnim ();
#line 1529 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
if(m_EecChar == ELC_SMALL ){
#line 1530 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetModelObject () -> StretchModel (FLOAT3D (LAVAMAN_SMALL_STRETCH , LAVAMAN_SMALL_STRETCH , LAVAMAN_SMALL_STRETCH ));
#line 1531 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1532 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
else if(m_EecChar == ELC_LARGE ){
#line 1533 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetModelObject () -> StretchModel (FLOAT3D (LAVAMAN_LARGE_STRETCH , LAVAMAN_LARGE_STRETCH , LAVAMAN_LARGE_STRETCH ));
#line 1534 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}else if(m_EecChar == ELC_BIG ){
#line 1535 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
GetModelObject () -> StretchModel (FLOAT3D (LAVAMAN_BIG_STRETCH , LAVAMAN_BIG_STRETCH , LAVAMAN_BIG_STRETCH ));
#line 1536 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
}
#line 1537 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
ModelChangeNotify ();
#line 1540 "D:/SE1_GPL/Sources/EntitiesMP/Elemental.es"
Jump(STATE_CURRENT, STATE_CEnemyBase_MainLoop, FALSE, EVoid());return TRUE; ASSERT(FALSE); return TRUE;};