/* * This file is generated by Entity Class Compiler, (c) CroTeam 1997-98 */ #line 4 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" #include "StdH.h" #include "EntitiesMP/BackgroundViewer.h" #include "EntitiesMP/WorldSettingsController.h" #include "ModelsMP/Enemies/Summoner/Summoner.h" #include "ModelsMP/Enemies/Summoner/Staff.h" #include "EntitiesMP/Effector.h" #include #include CEntityEvent *ESummonerTeleport::MakeCopy(void) { CEntityEvent *peeCopy = new ESummonerTeleport(*this); return peeCopy;} ESummonerTeleport::ESummonerTeleport() : CEntityEvent(EVENTCODE_ESummonerTeleport) {; ClearToDefault(fWait); }; #line 23 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" #define RAND_05 (FLOAT(rand())/RAND_MAX-0.5f) #define SUMMONER_SIZE 7.0f #define TM_WAIT_BEFORE_FIRE 1.9f #define SUMMONER_HEALTH 15000.0f // info structure static EntityInfo eiSummoner = { EIBT_FLESH, 1500.0f, 0.0f, 1.7f*SUMMONER_SIZE, 0.0f, 0.0f, 1.0f*SUMMONER_SIZE, 0.0f, }; //#define FIREPOS_ARMS FLOAT3D(-0.22f, 1.63f, 0.96f) #define FIREPOS_ARMS FLOAT3D(0.131292f, 1.61069f, -0.314068f) #define SUMMONER_MAX_SS 6 // hlth grp1 grp2 grp3 INDEX aiSpawnScheme[SUMMONER_MAX_SS][7] = {100, 4,7, 0,0, 0,0, 90, 3,5, 2,4, 0,0, 70, 3,4, 3,4, 0,0, 50, 1,3, 3,5, 1,1, 30, 1,2, 2,3, 2,2, 15, 1,1, 2,4, 2,3 }; #define SUMMONER_TEMP_PER_GROUP 6 void CSummoner::SetDefaultProperties(void) { m_bInvulnerable = FALSE ; m_penBeginDeathTarget = NULL; m_penEndDeathTarget = NULL; m_penExplodeDeathTarget = NULL; m_bShouldTeleport = FALSE ; m_fFirePeriod = 3.0f; m_fImmaterialDuration = 5.0f; m_fCorporealDuration = 5.0f; m_tmMaterializationTime = 0.0f; m_fStretch = SUMMONER_SIZE ; m_iSize = 1; m_penControlArea = NULL; m_iGroup01Count = 0; m_penGroup01Template01 = NULL; m_penGroup01Template02 = NULL; m_penGroup01Template03 = NULL; m_penGroup01Template04 = NULL; m_penGroup01Template05 = NULL; m_penGroup01Template06 = NULL; m_iGroup02Count = 0; m_penGroup02Template01 = NULL; m_penGroup02Template02 = NULL; m_penGroup02Template03 = NULL; m_penGroup02Template04 = NULL; m_penGroup02Template05 = NULL; m_penGroup02Template06 = NULL; m_iGroup03Count = 0; m_penGroup03Template01 = NULL; m_penGroup03Template02 = NULL; m_penGroup03Template03 = NULL; m_penGroup03Template04 = NULL; m_penGroup03Template05 = NULL; m_penGroup03Template06 = NULL; m_penTeleportMarker = NULL; m_iTeleportMarkers = 0; m_penSpawnMarker = NULL; m_iSpawnMarkers = 0; m_fTeleportWaitTime = 0.0f; m_fFuss = 0.0f; m_iEnemyCount = 0; m_fMaxCurrentFuss = 0.0f; m_fMaxBeginFuss = 10000.0f; m_fMaxEndFuss = 60000.0f; m_iSpawnScheme = 0; m_bFireOK = TRUE ; m_bFiredThisTurn = FALSE ; m_fDamageSinceLastSpawn = 0.0f; m_bExploded = FALSE ; m_bDying = FALSE ; m_tmDeathBegin = 0.0f; m_fDeathDuration = 0.0f; m_penDeathInflictor = NULL; m_penKiller = NULL; m_vDeathPosition = FLOAT3D(0.0f , 0.0f , 0.0f); m_penDeathMarker = NULL; m_iIndex = 0; m_iTaunt = 0; m_tmParticlesDisappearStart = -1e6; m_tmLastAnimation = 0.0f; m_soExplosion.SetOwner(this); m_soExplosion.Stop_internal(); m_soSound.SetOwner(this); m_soSound.Stop_internal(); m_soChant.SetOwner(this); m_soChant.Stop_internal(); m_soTeleport.SetOwner(this); m_soTeleport.Stop_internal(); CEnemyBase::SetDefaultProperties(); } #line 183 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::Read_t(CTStream * istr) #line 184 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 185 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyBase :: Read_t (istr ); #line 186 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . Read_t (* istr ); #line 187 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 189 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::Write_t(CTStream * istr) #line 190 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 191 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyBase :: Write_t (istr ); #line 192 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . Write_t (* istr ); #line 193 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 195 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" BOOL CSummoner::IsTargetValid(SLONG slPropertyOffset,CEntity * penTarget) #line 196 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 197 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(slPropertyOffset >= offsetof (CSummoner , m_penGroup01Template01 ) && #line 198 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" slPropertyOffset <= offsetof (CSummoner , m_penGroup03Template06 )) #line 199 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 200 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsDerivedFromClass (penTarget , "Enemy Base")){ #line 201 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(((CEnemyBase &) * penTarget ) . m_bTemplate ){ #line 202 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE ; #line 203 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 204 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 205 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 206 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 207 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 208 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 209 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 210 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(slPropertyOffset == offsetof (CSummoner , m_penControlArea )) #line 211 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 212 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsDerivedFromClass (penTarget , "AreaMarker")){ #line 213 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE ; #line 214 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 215 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 216 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 217 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 218 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(slPropertyOffset == offsetof (CSummoner , m_penSpawnMarker )) #line 219 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 220 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsDerivedFromClass (penTarget , "Enemy Marker")){ #line 221 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE ; #line 222 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 223 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 224 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 225 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 226 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(slPropertyOffset == offsetof (CSummoner , m_penTeleportMarker ) || #line 227 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" slPropertyOffset == offsetof (CSummoner , m_penDeathMarker )) #line 228 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 229 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsDerivedFromClass (penTarget , "SummonerMarker")){ #line 230 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE ; #line 231 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 232 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 233 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 234 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 235 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return CEntity :: IsTargetValid (slPropertyOffset , penTarget ); #line 236 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 239 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" BOOL CSummoner::DoSafetyChecks(void) { #line 241 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penSpawnMarker == NULL ){ #line 242 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" WarningMessage ("No valid Spawn Marker for Summoner boss! Destroying boss..."); #line 243 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 244 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 245 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penTeleportMarker == NULL ){ #line 246 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" WarningMessage ("No valid Teleport Marker for Summoner boss! Destroying boss..."); #line 247 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 248 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 249 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penDeathMarker == NULL ){ #line 250 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" WarningMessage ("No valid Death Marker for Summoner boss! Destroying boss..."); #line 251 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 252 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 253 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penControlArea == NULL ){ #line 254 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" WarningMessage ("No valid Area Marker for Summoner boss! Destroying boss..."); #line 255 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 256 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 257 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_iGroup01Count < 1 || m_iGroup02Count < 1 || m_iGroup03Count < 1) #line 258 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 259 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" WarningMessage ("At least one template in each group required! Destroying boss..."); #line 260 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 261 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 262 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE ; #line 263 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } CTString CSummoner::GetPlayerKillDescription(const CTString & strPlayerName,const EDeath & eDeath) #line 267 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 268 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CTString str ; #line 269 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" str . PrintF (TRANS ("The Summoner unsummoned %s") , strPlayerName ); #line 270 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return str ; #line 271 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } const CTFileName & CSummoner::GetComputerMessageName(void)const { #line 274 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" static DECLARE_CTFILENAME (fnm , "DataMP\\Messages\\Enemies\\Summoner.txt"); #line 275 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return fnm ; #line 276 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 278 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::Precache(void) #line 279 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 280 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyBase :: Precache (); #line 282 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheClass (CLASS_BLOOD_SPRAY ); #line 283 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheClass (CLASS_SPAWNER_PROJECTILE ); #line 285 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheClass (CLASS_BASIC_EFFECT , BET_CANNON ); #line 287 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheModel (MODEL_SUMMONER ); #line 288 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheModel (MODEL_STAFF ); #line 289 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheTexture (TEXTURE_SUMMONER ); #line 290 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheTexture (TEXTURE_STAFF ); #line 292 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheModel (MODEL_DEBRIS01 ); #line 293 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheModel (MODEL_DEBRIS02 ); #line 294 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheModel (MODEL_DEBRIS03 ); #line 295 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheModel (MODEL_DEBRIS_FLESH ); #line 296 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheTexture (TEXTURE_DEBRIS_FLESH ); #line 298 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_LAUGH ); #line 299 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_EXPLODE ); #line 300 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_TREMORS ); #line 301 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_DEATH ); #line 302 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_LASTWORDS ); #line 303 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_FIRE ); #line 304 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_CHIMES ); #line 305 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_MATERIALIZE ); #line 306 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (SOUND_TELEPORT ); #line 308 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = SOUND_TAUNT01 ;i <= SOUND_TAUNTLAST ;i ++){ #line 309 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrecacheSound (i ); #line 310 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 312 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 316 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void * CSummoner::GetEntityInfo(void) { #line 317 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return & eiSummoner ; #line 318 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 320 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CMusicHolder * CSummoner::GetMusicHolder() #line 321 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 322 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntity * penMusicHolder ; #line 323 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penMusicHolder = _pNetwork -> GetEntityWithName ("MusicHolder" , 0); #line 324 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return (CMusicHolder *) & * penMusicHolder ; #line 325 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 327 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" BOOL CSummoner::DistanceToAllPlayersGreaterThen(FLOAT fDistance) #line 328 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 330 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX ctMaxPlayers = GetMaxPlayers (); #line 331 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntity * penPlayer ; #line 333 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < ctMaxPlayers ;i ++){ #line 334 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penPlayer = GetPlayerEntity (i ); #line 335 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(penPlayer ){ #line 336 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(DistanceTo (this , penPlayer ) < fDistance ){ #line 337 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE ; #line 338 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 339 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 340 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 341 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE ; #line 342 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 345 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::ShakeItBaby(FLOAT tmShaketime,FLOAT fPower,BOOL bFadeIn) #line 346 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 347 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CWorldSettingsController * pwsc = GetWSC (this ); #line 348 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(pwsc != NULL ){ #line 349 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_tmShakeStarted = tmShaketime ; #line 350 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_vShakePos = GetPlacement () . pl_PositionVector ; #line 351 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_fShakeFalloff = 450.0f; #line 352 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_fShakeFade = 3.0f; #line 354 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_fShakeIntensityZ = 0; #line 355 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_tmShakeFrequencyZ = 5.0f; #line 356 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_fShakeIntensityY = 0.1f * fPower ; #line 357 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_tmShakeFrequencyY = 5.0f; #line 358 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_fShakeIntensityB = 2.5f * fPower ; #line 359 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_tmShakeFrequencyB = 7.2f; #line 361 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pwsc -> m_bShakeFadeIn = bFadeIn ; #line 362 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 363 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 365 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::ChangeEnemyNumberForAllPlayers(INDEX iDelta) #line 366 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 368 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX ctMaxPlayers = GetMaxPlayers (); #line 369 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntity * penPlayer ; #line 371 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < ctMaxPlayers ;i ++){ #line 372 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penPlayer = GetPlayerEntity (i ); #line 373 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(penPlayer ){ #line 375 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ((CPlayer &) * penPlayer ) . m_psLevelTotal . ps_iKills += iDelta ; #line 376 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ((CPlayer &) * penPlayer ) . m_psGameTotal . ps_iKills += iDelta ; #line 377 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 378 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 379 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 382 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::ReceiveDamage(CEntity * penInflictor,enum DamageType dmtType, #line 383 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fDamageAmmount,const FLOAT3D & vHitPoint,const FLOAT3D & vDirection) #line 384 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 387 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_bInvulnerable ){ #line 388 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return ; #line 389 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 392 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(! IsOfClass (penInflictor , "Player")){ #line 393 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return ; #line 394 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 397 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(dmtType == DMT_TELEPORT ) #line 398 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 399 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return ; #line 400 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 403 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(dmtType == DMT_CANNONBALL ) #line 404 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 405 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" fDamageAmmount *= 0.5f; #line 406 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 408 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fOldHealth = GetHealth (); #line 409 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyBase :: ReceiveDamage (penInflictor , dmtType , fDamageAmmount , vHitPoint , vDirection ); #line 410 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fNewHealth = GetHealth (); #line 413 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fDamageSinceLastSpawn += fOldHealth - fNewHealth ; #line 416 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < SUMMONER_MAX_SS ;i ++){ #line 417 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fHealth = (FLOAT) aiSpawnScheme [ i ] [ 0 ] * m_fMaxHealth / 100.0f; #line 418 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(fHealth <= fOldHealth && fHealth > fNewHealth ) #line 419 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 420 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iSpawnScheme = i ; #line 421 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 422 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 425 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fMaxCurrentFuss = (1.0f - (GetHealth () / m_fMaxHealth )) * (m_fMaxEndFuss - m_fMaxBeginFuss ) + m_fMaxBeginFuss ; #line 428 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_colBurning = COLOR (C_WHITE | CT_OPAQUE ); #line 430 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 441 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::StandingAnimFight(void) { #line 442 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_IDLE , AOF_LOOPING | AOF_NORESTART ); #line 443 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 446 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::StandingAnim(void) { #line 447 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_IDLE , AOF_LOOPING | AOF_NORESTART ); #line 448 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 450 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::WalkingAnim(void) { #line 451 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_IDLE , AOF_LOOPING | AOF_NORESTART ); #line 452 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 454 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::RunningAnim(void) { #line 455 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" WalkingAnim (); #line 456 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 458 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::RotatingAnim(void) { #line 459 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" WalkingAnim (); #line 460 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 470 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::IdleSound(void) { #line 472 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 474 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D CSummoner::AcquireTarget() #line 475 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 476 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyMarker * marker ; #line 477 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" marker = & ((CEnemyMarker &) * m_penSpawnMarker ); #line 479 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iMarker = IRnd () % m_iSpawnMarkers ; #line 481 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" while(iMarker > 0) #line 482 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 483 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" marker = & ((CEnemyMarker &) * marker -> m_penTarget ); #line 484 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iMarker --; #line 485 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 486 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vTarget = marker -> GetPlacement () . pl_PositionVector ; #line 487 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fR = FRnd () * marker -> m_fMarkerRange ; #line 488 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fA = FRnd () * 360.0f; #line 489 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vTarget += FLOAT3D (CosFast (fA ) * fR , 0.05f , SinFast (fA ) * fR ); #line 490 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return vTarget ; #line 491 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 493 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::LaunchMonster(FLOAT3D vTarget,CEntity * penTemplate) #line 494 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 495 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ASSERT (penTemplate != NULL ); #line 497 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vFirePos = FIREPOS_ARMS * m_fStretch ; #line 498 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vShooting = GetPlacement () . pl_PositionVector + vFirePos * GetRotationMatrix (); #line 499 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fLaunchSpeed ; #line 500 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fRelativeHdg ; #line 502 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fPitch = FRnd () * 10.0f + 25.0f; #line 504 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D pl ; #line 505 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CalculateAngularLaunchParams (vShooting , 0.0f , vTarget , #line 506 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D (0.0f , 0.0f , 0.0f) , fPitch , fLaunchSpeed , fRelativeHdg ); #line 508 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PrepareFreeFlyingProjectile (pl , vTarget , vFirePos , ANGLE3D (fRelativeHdg , fPitch , 0.0f)); #line 510 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESpawnerProjectile esp ; #line 511 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penSProjectile = CreateEntity (pl , CLASS_SPAWNER_PROJECTILE ); #line 512 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" esp . penOwner = this ; #line 513 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" esp . penTemplate = penTemplate ; #line 514 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penSProjectile -> Initialize (esp ); #line 516 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ((CMovableEntity &) * penSProjectile ) . LaunchAsFreeProjectile (FLOAT3D (0.0f , 0.0f , - fLaunchSpeed ) , (CMovableEntity *) (CEntity *) this ); #line 517 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 519 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT CSummoner::FussModifier(INDEX iEnemyCount) { #line 520 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return (0.995 + 0.005 * pow (m_iEnemyCount , 2.8)); #line 521 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 523 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::RecalculateFuss(void) #line 524 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 526 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOATaabbox3D box ; #line 527 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ((CAreaMarker &) * m_penControlArea ) . GetAreaBox (box ); #line 529 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" static CStaticStackArray < CEntity * > apenNearEntities ; #line 530 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" GetWorld () -> FindEntitiesNearBox (box , apenNearEntities ); #line 532 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX m_iEnemyCount = 0; #line 533 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fFuss = 0.0f; #line 535 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < apenNearEntities . Count ();i ++) #line 536 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 537 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsDerivedFromClass (apenNearEntities [ i ] , "Enemy Base") && #line 538 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ! IsOfClass (apenNearEntities [ i ] , "Summoner")){ #line 539 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(! ((CEnemyBase &) * apenNearEntities [ i ]) . m_bTemplate && #line 540 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" apenNearEntities [ i ] -> GetFlags () & ENF_ALIVE ){ #line 541 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fFuss += ((CEnemyBase &) * apenNearEntities [ i ]) . m_iScore ; #line 542 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iEnemyCount ++; #line 543 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 544 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 545 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 547 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fFuss *= FussModifier (m_iEnemyCount ); #line 550 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_fFuss > m_fMaxCurrentFuss ){ #line 552 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bFireOK = FALSE ; #line 554 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else if(m_fFuss < 0.4 * m_fMaxCurrentFuss ){ #line 556 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bFireOK = TRUE ; #line 558 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else if(m_fDamageSinceLastSpawn > 0.07f * m_fMaxHealth ){ #line 560 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bFireOK = TRUE ; #line 561 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 565 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return ; #line 566 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 568 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::CountEnemiesAndScoreValue(INDEX & iEnemies,FLOAT & fScore) #line 569 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 571 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOATaabbox3D box ; #line 572 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ((CAreaMarker &) * m_penControlArea ) . GetAreaBox (box ); #line 574 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" static CStaticStackArray < CEntity * > apenNearEntities ; #line 575 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" GetWorld () -> FindEntitiesNearBox (box , apenNearEntities ); #line 577 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iEnemies = 0; #line 578 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" fScore = 0.0f; #line 580 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < apenNearEntities . Count ();i ++) #line 581 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 582 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsDerivedFromClass (apenNearEntities [ i ] , "Enemy Base") && #line 583 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ! IsOfClass (apenNearEntities [ i ] , "Summoner")){ #line 584 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(! ((CEnemyBase &) * apenNearEntities [ i ]) . m_bTemplate && #line 585 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" apenNearEntities [ i ] -> GetFlags () & ENF_ALIVE ){ #line 586 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" fScore += ((CEnemyBase &) * apenNearEntities [ i ]) . m_iScore ; #line 587 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iEnemies ++; #line 588 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 589 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 590 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 591 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return ; #line 592 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 594 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyBase * CSummoner::GetRandomTemplate(INDEX iGroup) #line 595 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 596 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer * pen ; #line 597 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iCount ; #line 598 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(iGroup == 0){ #line 599 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pen = & m_penGroup01Template01 ; #line 600 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iCount = IRnd () % m_iGroup01Count + 1; #line 601 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else if(iGroup == 1){ #line 602 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pen = & m_penGroup02Template01 ; #line 603 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iCount = IRnd () % m_iGroup02Count + 1; #line 604 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else if(iGroup == 2){ #line 605 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pen = & m_penGroup03Template01 ; #line 606 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iCount = IRnd () % m_iGroup03Count + 1; #line 607 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 608 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ASSERT ("Invalid group!"); #line 609 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 610 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ASSERT (iCount > 0); #line 612 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX i = - 1; #line 613 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" while(iCount > 0) #line 614 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 615 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" i ++; #line 616 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" while(& * pen [ i ] == NULL ){ #line 617 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" i ++; #line 618 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 619 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iCount --; #line 620 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 621 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ASSERT (& (CEnemyBase &) * pen [ i ] != NULL ); #line 622 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return & (CEnemyBase &) * pen [ i ]; #line 623 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 625 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::DisappearEffect(void) #line 626 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 627 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D plFX = GetPlacement (); #line 628 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESpawnEffect ese ; #line 629 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . colMuliplier = C_WHITE | CT_OPAQUE ; #line 630 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . vStretch = FLOAT3D (3 , 3 , 3); #line 631 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . vNormal = FLOAT3D (0 , 1 , 0); #line 632 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . betType = BET_DUST_FALL ; #line 633 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX iSmoke = 0;iSmoke < 3;iSmoke ++) #line 634 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 635 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D plSmoke = plFX ; #line 636 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plSmoke . pl_PositionVector += FLOAT3D (0 , iSmoke * 4 + 4.0f , 0); #line 637 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penFX = CreateEntity (plSmoke , CLASS_BASIC_EFFECT ); #line 638 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penFX -> Initialize (ese ); #line 639 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 647 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 649 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::SpawnTeleportEffect(void) #line 650 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 651 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESpawnEffect ese ; #line 652 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . colMuliplier = C_lMAGENTA | CT_OPAQUE ; #line 653 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . vStretch = FLOAT3D (5 , 5 , 5); #line 654 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . vNormal = FLOAT3D (0 , 1 , 0); #line 657 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . betType = BET_EXPLOSION_DEBRIS ; #line 658 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D plFX = GetPlacement (); #line 659 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penFX = CreateEntity (plFX , CLASS_BASIC_EFFECT ); #line 660 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penFX -> Initialize (ese ); #line 661 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . colMuliplier = C_MAGENTA | CT_OPAQUE ; #line 662 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penFX2 = CreateEntity (plFX , CLASS_BASIC_EFFECT ); #line 663 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penFX2 -> Initialize (ese ); #line 664 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . colMuliplier = C_lCYAN | CT_OPAQUE ; #line 665 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penFX3 = CreateEntity (plFX , CLASS_BASIC_EFFECT ); #line 666 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penFX3 -> Initialize (ese ); #line 667 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . betType = BET_CANNON ; #line 668 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ese . colMuliplier = C_CYAN | CT_OPAQUE ; #line 669 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penFX4 = CreateEntity (plFX , CLASS_BASIC_EFFECT ); #line 670 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penFX4 -> Initialize (ese ); #line 679 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESpawnEffector eLightning ; #line 680 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eLightning . eetType = ET_LIGHTNING ; #line 681 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eLightning . tmLifeTime = 0.5f; #line 682 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eLightning . fSize = 24; #line 683 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eLightning . ctCount = 32; #line 685 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntity * penLightning = CreateEntity (plFX , CLASS_EFFECTOR ); #line 686 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ANGLE3D angRnd = ANGLE3D ( #line 687 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" 0.0f , #line 688 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" 90.0f + (FRnd () - 0.5f) * 30.0f , #line 689 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" (FRnd () - 0.5f) * 30.0f); #line 691 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vRndDir ; #line 692 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" AnglesToDirectionVector (angRnd , vRndDir ); #line 693 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vDest = plFX . pl_PositionVector ; #line 694 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vDest += vRndDir * 512.0f; #line 695 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eLightning . vDestination = vDest ; #line 696 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penLightning -> Initialize (eLightning ); #line 697 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 699 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::KillAllEnemiesInArea(EDeath eDeath) #line 700 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 701 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" EDeath eDeath2 ; #line 702 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOATaabbox3D box ; #line 703 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ((CAreaMarker &) * m_penControlArea ) . GetAreaBox (box ); #line 705 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" static CStaticStackArray < CEntity * > apenNearEntities ; #line 706 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" GetWorld () -> FindEntitiesNearBox (box , apenNearEntities ); #line 708 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < apenNearEntities . Count ();i ++) #line 709 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 710 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsDerivedFromClass (apenNearEntities [ i ] , "Enemy Base") && #line 711 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ! IsOfClass (apenNearEntities [ i ] , "Summoner")){ #line 712 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(! ((CEnemyBase &) * apenNearEntities [ i ]) . m_bTemplate && #line 713 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" apenNearEntities [ i ] -> GetFlags () & ENF_ALIVE ){ #line 714 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eDeath2 . eLastDamage . penInflictor = eDeath . eLastDamage . penInflictor ; #line 715 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eDeath2 . eLastDamage . vDirection = apenNearEntities [ i ] -> GetPlacement () . pl_PositionVector ; #line 716 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eDeath2 . eLastDamage . vHitPoint = eDeath2 . eLastDamage . vDirection ; #line 717 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eDeath2 . eLastDamage . fAmount = 10000.0f; #line 718 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eDeath2 . eLastDamage . dmtType = DMT_CLOSERANGE ; #line 719 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" apenNearEntities [ i ] -> SendEvent (eDeath ); #line 720 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 721 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 723 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CMusicHolder * penMusicHolder = GetMusicHolder (); #line 724 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(IsOfClass (apenNearEntities [ i ] , "SpawnerProjectile")){ #line 725 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D pl ; #line 726 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pl . pl_OrientationAngle = ANGLE3D (0.0f , 0.0f , 0.0f); #line 727 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pl . pl_PositionVector = apenNearEntities [ i ] -> GetPlacement () . pl_PositionVector ; #line 728 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penExplosion = CreateEntity (pl , CLASS_BASIC_EFFECT ); #line 729 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESpawnEffect eSpawnEffect ; #line 730 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . colMuliplier = C_WHITE | CT_OPAQUE ; #line 731 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . betType = BET_CANNON ; #line 732 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . vStretch = FLOAT3D (2.0f , 2.0f , 2.0f); #line 733 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penExplosion -> Initialize (eSpawnEffect ); #line 734 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" apenNearEntities [ i ] -> Destroy (); #line 736 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(penMusicHolder != NULL ){ #line 737 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penMusicHolder -> m_ctEnemiesInWorld --; #line 738 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 739 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ChangeEnemyNumberForAllPlayers (- 1); #line 740 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 741 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 742 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 744 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" void CSummoner::RenderParticles(void) #line 745 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 746 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT tmNow = _pTimer -> CurrentTick (); #line 747 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(tmNow > m_tmParticlesDisappearStart && tmNow < m_tmParticlesDisappearStart + 4.0f) #line 748 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 749 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Particles_SummonerDisappear (this , m_tmParticlesDisappearStart ); #line 750 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 752 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(tmNow > m_tmLastAnimation ) #line 753 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 754 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX ctInterpolations = 2; #line 756 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(! m_bInvulnerable && ! m_bExploded && GetHealth () > 0) #line 757 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 758 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX iInter = 0;iInter < ctInterpolations ;iInter ++) #line 759 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 761 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOATmatrix3D mEn = GetRotationMatrix (); #line 762 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOATmatrix3D mRot ; #line 763 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vPos ; #line 764 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT tmBirth = tmNow + iInter * _pTimer -> TickQuantum / ctInterpolations ; #line 766 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fLife = 2.5f; #line 767 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fCone = 360.0f; #line 768 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fStretch = 1.0f; #line 769 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fRotSpeed = 360.0f; #line 770 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" COLOR col = C_lYELLOW | CT_OPAQUE ; #line 772 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" MakeRotationMatrixFast (mRot , ANGLE3D (0.0f , 0.0f , 0.0f)); #line 773 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vPos = FLOAT3D (0.0f , 0.0f , 0.0f); #line 774 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" GetModelObject () -> GetAttachmentTransformations (SUMMONER_ATTACHMENT_STAFF , mRot , vPos , FALSE ); #line 776 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CAttachmentModelObject * pamo = GetModelObject () -> GetAttachmentModel (SUMMONER_ATTACHMENT_STAFF ); #line 777 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pamo -> amo_moModelObject . GetAttachmentTransformations (STAFF_ATTACHMENT_PARTICLES , mRot , vPos , TRUE ); #line 778 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vPos = GetPlacement () . pl_PositionVector + vPos * GetRotationMatrix (); #line 780 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vSpeed = FLOAT3D (0.1f + RAND_05 , 0.1f + RAND_05 , - 1.0f - RAND_05 ); #line 781 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vSpeed = vSpeed . Normalize () * 8.0f; #line 782 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . AddParticle (vPos , vSpeed * mRot * mEn , RAND_05 * 360.0f , fRotSpeed , tmBirth , fLife , fStretch , col ); #line 783 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 784 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 786 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . em_vG = m_emEmiter . GetGravity (this ); #line 787 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . em_vG /= 2.0f; #line 788 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . AnimateParticles (); #line 789 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_tmLastAnimation = tmNow ; #line 790 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 791 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . RenderParticles (); #line 792 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } BOOL CSummoner:: #line 797 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" InitiateTeleport(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_InitiateTeleport ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::InitiateTeleport expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 799 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bInvulnerable = TRUE ; #line 800 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_VANISHING , 0); #line 803 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT tmNow = _pTimer -> CurrentTick (); #line 804 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_tmParticlesDisappearStart = tmNow ; #line 806 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soSound , SOUND_TELEPORT , SOF_3D ); #line 808 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(GetModelObject () -> GetAnimLength (SUMMONER_ANIM_VANISHING ) - 0.2f); Jump(STATE_CURRENT, 0x015b0002, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0002_InitiateTeleport_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0002 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0003, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0003_InitiateTeleport_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0003 ; #line 809 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Jump(STATE_CURRENT, STATE_CSummoner_Immaterial, TRUE, EVoid());return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 812 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Fire(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_Fire ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::Fire expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 815 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(!(! m_bFiredThisTurn )){ Jump(STATE_CURRENT,0x015b0012, FALSE, EInternal());return TRUE;} #line 817 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(!(m_bFireOK )){ Jump(STATE_CURRENT,0x015b0011, FALSE, EInternal());return TRUE;} #line 819 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iTaunt = SOUND_TAUNT01 + m_iTaunt % (SOUND_TAUNTLAST - SOUND_TAUNT01 + 1); #line 820 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soChant , iTaunt , SOF_3D ); #line 821 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iTaunt ++; #line 823 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_MAGICATTACK , SOF_SMOOTHCHANGE ); #line 826 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(TM_WAIT_BEFORE_FIRE ); Jump(STATE_CURRENT, 0x015b0005, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0005_Fire_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0005 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0006, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0006_Fire_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0006 ; #line 827 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soSound , SOUND_FIRE , SOF_3D ); #line 829 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX i , j ; #line 830 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vTarget ; #line 831 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fTotalSpawnedScore = 0.0f; #line 832 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iTotalSpawnedCount = 0; #line 833 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iEnemyCount ; #line 834 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fScore ; #line 835 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CountEnemiesAndScoreValue (iEnemyCount , fScore ); #line 837 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CMusicHolder * penMusicHolder = GetMusicHolder (); #line 839 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fTmpFuss = 0.0f; #line 842 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(i = 0;i < 3;i ++){ #line 843 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iMin = aiSpawnScheme [ m_iSpawnScheme ] [ i * 2 + 1 ]; #line 844 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iMax = aiSpawnScheme [ m_iSpawnScheme ] [ i * 2 + 2 ]; #line 845 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ASSERT (iMin <= iMax ); #line 846 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iToSpawn ; #line 847 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iToSpawn = iMin + IRnd () % (iMax - iMin + 1); #line 848 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(j = 0;j < iToSpawn ;j ++){ #line 849 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyBase * penTemplate = GetRandomTemplate (i ); #line 850 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vTarget = AcquireTarget (); #line 851 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" LaunchMonster (vTarget , penTemplate ); #line 852 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" fTotalSpawnedScore += penTemplate -> m_iScore ; #line 853 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iTotalSpawnedCount ++; #line 855 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(penMusicHolder != NULL ){ #line 856 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penMusicHolder -> m_ctEnemiesInWorld ++; #line 857 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 858 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ChangeEnemyNumberForAllPlayers (+ 1); #line 860 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" fTmpFuss = (fTotalSpawnedScore + fScore ) * FussModifier (iTotalSpawnedCount + iEnemyCount ); #line 861 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(fTmpFuss > m_fMaxCurrentFuss ){ #line 862 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" break ; #line 863 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 864 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 865 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 867 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fDamageSinceLastSpawn = 0.0f; #line 870 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(GetModelObject () -> GetAnimLength (SUMMONER_ANIM_MAGICATTACK ) - TM_WAIT_BEFORE_FIRE ); Jump(STATE_CURRENT, 0x015b0007, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0007_Fire_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0007 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0008, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0008_Fire_04(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0008 ; #line 873 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_IDLE , SOF_SMOOTHCHANGE ); #line 876 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESummonerTeleport est ; #line 877 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" est . fWait = FRnd () * 1.0f + 3.0f; #line 878 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SendEvent (est );Jump(STATE_CURRENT,0x015b0010, FALSE, EInternal());return TRUE;}BOOL CSummoner::H0x015b0011_Fire_13(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0011 if(!(TRUE )){ Jump(STATE_CURRENT,0x015b000f, FALSE, EInternal());return TRUE;} #line 882 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soExplosion , SOUND_LAUGH , SOF_3D ); #line 883 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(1.0f); Jump(STATE_CURRENT, 0x015b0009, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0009_Fire_05(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0009 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b000a, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b000a_Fire_06(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000a ; #line 884 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_MAGICATTACK , SOF_SMOOTHCHANGE ); #line 886 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iTaunt = SOUND_TAUNT01 + m_iTaunt % (SOUND_TAUNTLAST - SOUND_TAUNT01 + 1); #line 887 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soChant , iTaunt , SOF_3D ); #line 888 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iTaunt ++; #line 891 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(TM_WAIT_BEFORE_FIRE ); Jump(STATE_CURRENT, 0x015b000b, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b000b_Fire_07(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b000b switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b000c, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b000c_Fire_08(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000c ; #line 892 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soSound , SOUND_FIRE , SOF_3D ); #line 894 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iEnemyCount ; #line 895 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fScore ; #line 896 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CountEnemiesAndScoreValue (iEnemyCount , fScore ); #line 897 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fToSpawn ; #line 899 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iScheme ; #line 901 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < 3;i ++){ #line 902 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(aiSpawnScheme [ m_iSpawnScheme ] [ i * 2 + 2 ] > 0){ #line 903 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iScheme = i ; #line 904 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 905 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 907 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_iSpawnScheme > 3){ #line 908 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iEnemyCount += (m_iSpawnScheme - 3); #line 909 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 911 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(iEnemyCount < 6){ #line 912 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" fToSpawn = (6.0 - (FLOAT) iEnemyCount ) / 2.0f; #line 913 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 914 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" fToSpawn = 1.0f; #line 915 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 916 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iToSpawn = ceilf (fToSpawn ); #line 918 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CMusicHolder * penMusicHolder = GetMusicHolder (); #line 921 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX j = 0;j < iToSpawn ;j ++){ #line 922 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyBase * penTemplate = GetRandomTemplate (iScheme ); #line 923 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vTarget = AcquireTarget (); #line 924 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" LaunchMonster (vTarget , penTemplate ); #line 926 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(penMusicHolder != NULL ){ #line 927 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penMusicHolder -> m_ctEnemiesInWorld ++; #line 928 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 929 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ChangeEnemyNumberForAllPlayers (+ 1); #line 930 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 933 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESummonerTeleport est ; #line 934 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" est . fWait = FRnd () * 1.0f + 3.0f; #line 935 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SendEvent (est ); #line 937 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(1.0f); Jump(STATE_CURRENT, 0x015b000d, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b000d_Fire_09(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b000d switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b000e, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b000e_Fire_10(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000e ;Jump(STATE_CURRENT,0x015b000f, FALSE, EInternal());return TRUE;}BOOL CSummoner::H0x015b000f_Fire_11(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b000f Jump(STATE_CURRENT,0x015b0010, FALSE, EInternal());return TRUE;} BOOL CSummoner::H0x015b0010_Fire_12(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0010 #line 941 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bFiredThisTurn = TRUE ;Jump(STATE_CURRENT,0x015b0012, FALSE, EInternal());return TRUE;}BOOL CSummoner::H0x015b0012_Fire_14(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0012 #line 944 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Return(STATE_CURRENT,EReturn ()); #line 944 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 947 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Hit(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_Hit ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::Hit expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 948 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Jump(STATE_CURRENT, STATE_CSummoner_Fire, TRUE, EVoid());return TRUE; #line 949 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Return(STATE_CURRENT,EReturn ()); #line 949 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 956 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Die(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_Die ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EDeath, "CSummoner::Die expects 'EDeath' as input!"); const EDeath &eDeath = (const EDeath &)__eeInput; #line 959 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bDying = TRUE ; #line 961 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_penDeathInflictor = eDeath . eLastDamage . penInflictor ; #line 964 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_penKiller = m_penDeathInflictor ; #line 965 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penKiller == NULL || ! IsOfClass (m_penKiller , "Player")){ #line 966 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_penKiller = m_penEnemy ; #line 967 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 969 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penKiller == NULL || ! IsOfClass (m_penKiller , "Player")){ #line 970 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_penKiller = FixupCausedToPlayer (this , m_penKiller , FALSE ); #line 971 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 974 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetDesiredRotation (ANGLE3D (0.0f , 0.0f , 0.0f)); #line 976 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" KillAllEnemiesInArea (eDeath ); #line 978 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_CHANTING , SOF_SMOOTHCHANGE ); #line 979 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soExplosion , SOUND_LASTWORDS , SOF_3D ); #line 980 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(4.0f); Jump(STATE_CURRENT, 0x015b0015, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0015_Die_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0015 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0016, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0016_Die_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0016 ; #line 982 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" STATE_CSummoner_TeleportToDeathMarker, TRUE; Jump(STATE_CURRENT, 0x015b0017, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0017_Die_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0017 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CSummoner_TeleportToDeathMarker, TRUE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x015b0018, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0018_Die_04(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x015b0018 const EReturn&__e= (EReturn&)__eeInput; ; #line 985 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" EDeath eDeath ; #line 986 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eDeath . eLastDamage . penInflictor = m_penDeathInflictor ; #line 987 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" KillAllEnemiesInArea (eDeath ); #line 990 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ShakeItBaby (_pTimer -> CurrentTick () , 0.25f , TRUE ); #line 991 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soExplosion , SOUND_TREMORS , SOF_3D ); #line 993 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_vDeathPosition = GetPlacement () . pl_PositionVector ; #line 996 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penBeginDeathTarget != NULL ){ #line 997 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SendToTarget (m_penBeginDeathTarget , EET_TRIGGER , m_penKiller ); #line 998 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1000 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soSound , SOUND_DEATH , SOF_3D ); #line 1001 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_DEATHBLOW , SOF_SMOOTHCHANGE ); #line 1002 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(GetModelObject () -> GetAnimLength (SUMMONER_ANIM_DEATHBLOW ) - 0.25f); Jump(STATE_CURRENT, 0x015b0019, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0019_Die_05(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0019 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b001a, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b001a_Die_06(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b001a ; #line 1005 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SwitchToEditorModel (); #line 1008 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D plStars ; #line 1009 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plStars = GetPlacement (); #line 1010 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESpawnEffect eSpawnEffect ; #line 1011 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . betType = BET_SUMMONERSTAREXPLOSION ; #line 1012 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1013 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penStars = CreateEntity (plStars , CLASS_BASIC_EFFECT ); #line 1014 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penStars -> Initialize (eSpawnEffect ); #line 1016 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_tmDeathBegin = _pTimer -> CurrentTick (); #line 1017 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fDeathDuration = 12.0f; #line 1018 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bExploded = TRUE ; #line 1019 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ShakeItBaby (_pTimer -> CurrentTick () , 5.0f , FALSE ); #line 1021 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soExplosion , SOUND_EXPLODE , SOF_3D ); #line 1024 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Debris_Begin (EIBT_FLESH , DPT_BLOODTRAIL , BET_BLOODSTAIN , 1.0f , #line 1025 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D (0.0f , 10.0f , 0.0f) , FLOAT3D (0.0f , 0.0f , 0.0f) , 5.0f , 2.0f); #line 1026 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(INDEX i = 0;i < 15;i ++){ #line 1028 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vSpeed = FLOAT3D (0.3f + FRnd () * 0.1f , 1.0f + FRnd () * 0.5f , 0.3f + FRnd () * 0.1f) * 1.5f * m_fStretch ; #line 1029 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vPos = vSpeed + GetPlacement () . pl_PositionVector ; #line 1030 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ANGLE3D aAng = ANGLE3D (FRnd () * 360.0f , FRnd () * 360.0f , FRnd () * 360.0f); #line 1032 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vSpeed . Normalize (); #line 1033 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vSpeed (2) *= vSpeed (2); #line 1035 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D plPos = CPlacement3D (vPos , aAng ); #line 1037 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" switch(i % 3){ #line 1038 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" case 0: #line 1039 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Debris_Spawn_Independent (this , this , MODEL_DEBRIS01 , TEXTURE_SUMMONER , 0 , 0 , 0 , 0 , m_fStretch , #line 1040 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plPos , vSpeed * 70.0f , aAng ); #line 1041 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Debris_Spawn_Independent (this , this , MODEL_DEBRIS_FLESH , TEXTURE_DEBRIS_FLESH , 0 , 0 , 0 , 0 , m_fStretch * 0.33f , #line 1042 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plPos , vSpeed * 70.0f , aAng ); #line 1043 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" break ; #line 1044 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" case 1: #line 1045 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Debris_Spawn_Independent (this , this , MODEL_DEBRIS02 , TEXTURE_SUMMONER , 0 , 0 , 0 , 0 , m_fStretch , #line 1046 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plPos , vSpeed * 70.0f , aAng ); #line 1047 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Debris_Spawn_Independent (this , this , MODEL_DEBRIS_FLESH , TEXTURE_DEBRIS_FLESH , 0 , 0 , 0 , 0 , m_fStretch * 0.33f , #line 1048 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plPos , vSpeed * 70.0f , aAng ); #line 1049 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" break ; #line 1050 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" case 2: #line 1051 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Debris_Spawn_Independent (this , this , MODEL_DEBRIS03 , TEXTURE_SUMMONER , 0 , 0 , 0 , 0 , m_fStretch , #line 1052 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plPos , vSpeed * 70.0f , aAng ); #line 1053 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Debris_Spawn_Independent (this , this , MODEL_DEBRIS_FLESH , TEXTURE_DEBRIS_FLESH , 0 , 0 , 0 , 0 , m_fStretch * 0.33f , #line 1054 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plPos , vSpeed * 70.0f , aAng ); #line 1055 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" break ; #line 1056 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1057 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1060 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penExplodeDeathTarget != NULL ){ #line 1061 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SendToTarget (m_penExplodeDeathTarget , EET_TRIGGER , m_penKiller ); #line 1062 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1068 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soSound , SOUND_CHIMES , SOF_3D ); #line 1070 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iIndex = 20; #line 1071 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Jump(STATE_CURRENT,0x015b001d, FALSE, EInternal());return TRUE;}BOOL CSummoner::H0x015b001d_Die_09(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b001d if(!((m_iIndex --) > 1)){ Jump(STATE_CURRENT,0x015b001e, FALSE, EInternal());return TRUE;} #line 1072 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D plExplosion ; #line 1073 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plExplosion . pl_OrientationAngle = ANGLE3D (0.0f , 0.0f , 0.0f); #line 1074 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plExplosion . pl_PositionVector = FLOAT3D (0.3f + FRnd () * 0.1f , 1.0f + FRnd () * 0.5f , 0.3f + FRnd () * 0.1f) * m_fStretch ; #line 1075 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" plExplosion . pl_PositionVector += GetPlacement () . pl_PositionVector ; #line 1076 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ESpawnEffect eSpawnEffect ; #line 1077 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . colMuliplier = C_WHITE | CT_OPAQUE ; #line 1078 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . betType = BET_CANNON ; #line 1079 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fSize = (m_fStretch * m_iIndex ) * 0.333f; #line 1080 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eSpawnEffect . vStretch = FLOAT3D (fSize , fSize , fSize ); #line 1081 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penExplosion = CreateEntity (plExplosion , CLASS_BASIC_EFFECT ); #line 1082 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penExplosion -> Initialize (eSpawnEffect ); #line 1084 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ShakeItBaby (_pTimer -> CurrentTick () , m_iIndex / 4.0f , FALSE ); #line 1086 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(0.05f + FRnd () * 0.2f); Jump(STATE_CURRENT, 0x015b001b, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b001b_Die_07(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b001b switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b001c, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b001c_Die_08(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b001c ;Jump(STATE_CURRENT,0x015b001d, FALSE, EInternal());return TRUE; #line 1087 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }BOOL CSummoner::H0x015b001e_Die_10(const CEntityEvent &__eeInput) { ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b001e #line 1089 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(m_fDeathDuration ); Jump(STATE_CURRENT, 0x015b001f, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b001f_Die_11(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b001f switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0020, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0020_Die_12(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0020 ; #line 1092 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penEndDeathTarget != NULL ){ #line 1093 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SendToTarget (m_penEndDeathTarget , EET_TRIGGER , m_penKiller ); #line 1094 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1096 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" EDeath eDeath ; #line 1097 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" eDeath . eLastDamage . penInflictor = m_penDeathInflictor ; #line 1098 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Jump(STATE_CURRENT, STATE_CEnemyBase_Die, FALSE, eDeath );return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 1101 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" TeleportToDeathMarker(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_TeleportToDeathMarker ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::TeleportToDeathMarker expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 1104 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bInvulnerable = TRUE ; #line 1106 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_VANISHING , SOF_SMOOTHCHANGE ); #line 1107 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(GetModelObject () -> GetAnimLength (SUMMONER_ANIM_VANISHING )); Jump(STATE_CURRENT, 0x015b0022, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0022_TeleportToDeathMarker_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0022 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0023, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0023_TeleportToDeathMarker_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0023 ; #line 1110 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" DisappearEffect (); #line 1111 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SwitchToEditorModel (); #line 1112 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetCollisionFlags (ECF_IMMATERIAL ); #line 1115 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penFlame = GetChildOfClass ("Flame"); #line 1116 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(penFlame != NULL ){ #line 1117 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penFlame -> Destroy (); #line 1118 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1121 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(2.0f); Jump(STATE_CURRENT, 0x015b0024, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0024_TeleportToDeathMarker_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0024 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0025, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0025_TeleportToDeathMarker_04(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0025 ; #line 1123 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D pl ; #line 1124 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pl . pl_PositionVector = m_penDeathMarker -> GetPlacement () . pl_PositionVector ; #line 1125 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vToPlayer ; #line 1126 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penEnemy != NULL ){ #line 1127 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vToPlayer = m_penEnemy -> GetPlacement () . pl_PositionVector - pl . pl_PositionVector ; #line 1128 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 1129 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vToPlayer = m_vPlayerSpotted - pl . pl_PositionVector ; #line 1130 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1131 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vToPlayer . Normalize (); #line 1132 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" DirectionVectorToAngles (vToPlayer , pl . pl_OrientationAngle ); #line 1133 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Teleport (pl ); #line 1136 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SpawnTeleportEffect (); #line 1138 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(0.5f); Jump(STATE_CURRENT, 0x015b0026, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0026_TeleportToDeathMarker_05(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0026 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0027, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0027_TeleportToDeathMarker_06(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0027 ; #line 1139 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SwitchToModel (); #line 1140 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetCollisionFlags (ECF_MODEL ); #line 1142 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bInvulnerable = FALSE ; #line 1144 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_APPEARING , SOF_SMOOTHCHANGE ); #line 1145 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(GetModelObject () -> GetAnimLength (SUMMONER_ANIM_APPEARING )); Jump(STATE_CURRENT, 0x015b0028, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0028_TeleportToDeathMarker_07(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0028 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0029, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0029_TeleportToDeathMarker_08(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0029 ; #line 1147 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Return(STATE_CURRENT,EReturn ()); #line 1147 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 1150 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" BossAppear(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_BossAppear ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::BossAppear expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 1152 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Return(STATE_CURRENT,EReturn ()); #line 1152 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 1156 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PreMainLoop(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_PreMainLoop ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::PreMainLoop expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 1158 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" STATE_CSummoner_BossAppear, TRUE; Jump(STATE_CURRENT, 0x015b002c, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b002c_PreMainLoop_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b002c switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: Call(STATE_CURRENT, STATE_CSummoner_BossAppear, TRUE, EVoid());return TRUE;case EVENTCODE_EReturn: Jump(STATE_CURRENT,0x015b002d, FALSE, __eeInput); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b002d_PreMainLoop_02(const CEntityEvent &__eeInput){ #undef STATE_CURRENT #define STATE_CURRENT 0x015b002d const EReturn&__e= (EReturn&)__eeInput; ; #line 1159 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Return(STATE_CURRENT,EReturn ()); #line 1159 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 1162 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Immaterial(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_Immaterial ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::Immaterial expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 1165 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" DisappearEffect (); #line 1166 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SwitchToEditorModel (); #line 1167 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetCollisionFlags (ECF_IMMATERIAL ); #line 1170 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer penFlame = GetChildOfClass ("Flame"); #line 1171 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(penFlame != NULL ){ #line 1172 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" penFlame -> Destroy (); #line 1173 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1176 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(m_fImmaterialDuration + FRnd () * 2.0f - 1.0f); Jump(STATE_CURRENT, 0x015b002f, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b002f_Immaterial_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b002f switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0030, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0030_Immaterial_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0030 ; #line 1178 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iMaxTries = 10; #line 1179 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vTarget ; #line 1181 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" do{ #line 1182 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CSummonerMarker * marker = & ((CSummonerMarker &) * m_penTeleportMarker ); #line 1183 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX iMarker = IRnd () % m_iTeleportMarkers ; #line 1184 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" while(iMarker > 0){ #line 1185 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" marker = & ((CSummonerMarker &) * marker -> m_penTarget ); #line 1186 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" iMarker --; #line 1187 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1188 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vTarget = marker -> GetPlacement () . pl_PositionVector ; #line 1189 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fR = FRnd () * marker -> m_fMarkerRange ; #line 1190 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT fA = FRnd () * 360.0f; #line 1191 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vTarget += FLOAT3D (CosFast (fA ) * fR , 0.05f , SinFast (fA ) * fR ); #line 1192 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }while(! DistanceToAllPlayersGreaterThen (1.0f) || (iMaxTries --) < 1); #line 1194 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CPlacement3D pl ; #line 1195 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pl . pl_PositionVector = vTarget ; #line 1196 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" FLOAT3D vToPlayer ; #line 1197 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(m_penEnemy != NULL ){ #line 1198 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vToPlayer = m_penEnemy -> GetPlacement () . pl_PositionVector - vTarget ; #line 1199 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else { #line 1200 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vToPlayer = m_vPlayerSpotted - vTarget ; #line 1201 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1202 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" vToPlayer . Normalize (); #line 1203 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" DirectionVectorToAngles (vToPlayer , pl . pl_OrientationAngle ); #line 1204 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Teleport (pl ); #line 1207 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SpawnTeleportEffect (); #line 1208 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SwitchToModel (); #line 1209 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetCollisionFlags (ECF_MODEL ); #line 1211 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bShouldTeleport = FALSE ; #line 1212 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_tmMaterializationTime = _pTimer -> CurrentTick (); #line 1213 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bFiredThisTurn = FALSE ; #line 1215 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bInvulnerable = FALSE ; #line 1217 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soTeleport , SOUND_MATERIALIZE , SOF_3D ); #line 1219 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_APPEARING , SOF_SMOOTHCHANGE ); #line 1220 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(GetModelObject () -> GetAnimLength (SUMMONER_ANIM_APPEARING )); Jump(STATE_CURRENT, 0x015b0031, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0031_Immaterial_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0031 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0032, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0032_Immaterial_04(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0032 ; #line 1222 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SendEvent (EBegin ()); #line 1223 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Return(STATE_CURRENT,EReturn ()); #line 1223 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 1227 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SummonerLoop(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_SummonerLoop ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::SummonerLoop expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 1229 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SpawnReminder (this , 1.0f , 128); #line 1230 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAt(THINKTIME_NEVER); Jump(STATE_CURRENT, 0x015b0034, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0034_SummonerLoop_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0034 switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin): #line 1232 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" {const EBegin&e= (EBegin&)__eeInput; #line 1233 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Call(STATE_CURRENT, STATE_CEnemyBase_MainLoop, FALSE, EVoid());return TRUE; #line 1234 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }ASSERT(FALSE);break;case(EVENTCODE_EReminder): #line 1236 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" {const EReminder&er= (EReminder&)__eeInput; #line 1238 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(er . iValue == 128){ #line 1239 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" RecalculateFuss (); #line 1241 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(_pTimer -> CurrentTick () > m_tmMaterializationTime + m_fCorporealDuration ){ #line 1242 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bShouldTeleport = TRUE ; #line 1243 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1245 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SpawnReminder (this , 1.0f , 128); #line 1246 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else if(er . iValue == 129 && ! m_bDying ){ #line 1247 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Call(STATE_CURRENT, STATE_CSummoner_InitiateTeleport, TRUE, EVoid());return TRUE; #line 1248 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }else if(TRUE ){ #line 1249 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return FALSE; #line 1250 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1251 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; #line 1252 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }ASSERT(FALSE);break;case(EVENTCODE_ESummonerTeleport): #line 1255 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" {const ESummonerTeleport&est= (ESummonerTeleport&)__eeInput; #line 1257 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SpawnReminder (this , est . fWait , 129); #line 1258 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; #line 1259 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }ASSERT(FALSE);break;default:{ #line 1261 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; #line 1262 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }ASSERT(FALSE);break; #line 1263 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }return TRUE;}BOOL CSummoner::H0x015b0035_SummonerLoop_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0035 ASSERT(FALSE); return TRUE;};BOOL CSummoner:: #line 1269 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Main(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT STATE_CSummoner_Main ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CSummoner::Main expects 'EVoid' as input!"); const EVoid &e = (const EVoid &)__eeInput; #line 1272 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" InitAsEditorModel (); #line 1274 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetPhysicsFlags (EPF_MODEL_WALKING ); #line 1275 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetCollisionFlags (ECF_IMMATERIAL ); #line 1276 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetFlags (GetFlags () | ENF_ALIVE ); #line 1278 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" en_fDensity = 10000.0f; #line 1279 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fDamageWounded = 1e6f; #line 1281 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_sptType = SPT_BLOOD ; #line 1282 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bBoss = TRUE ; #line 1283 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetHealth (SUMMONER_HEALTH ); #line 1284 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fMaxHealth = SUMMONER_HEALTH ; #line 1285 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fBodyParts = 0; #line 1287 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fWalkSpeed = 0.0f; #line 1288 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_aWalkRotateSpeed = AngleDeg (270.0f); #line 1289 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fAttackRunSpeed = 0.0f; #line 1290 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_aAttackRotateSpeed = AngleDeg (270.0f); #line 1291 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fCloseRunSpeed = 0.0f; #line 1292 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_aCloseRotateSpeed = AngleDeg (270.0f); #line 1294 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fAttackDistance = 500.0f; #line 1295 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fCloseDistance = 50.0f; #line 1296 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fStopDistance = 500.0f; #line 1297 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fIgnoreRange = 600.0f; #line 1298 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iScore = 1000000; #line 1300 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fAttackFireTime = m_fFirePeriod ; #line 1301 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fCloseFireTime = m_fFirePeriod ; #line 1303 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetPhysicsFlags (EPF_MODEL_WALKING ); #line 1304 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StandingAnim (); #line 1308 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetComponents (this , * GetModelObject () , MODEL_SUMMONER , TEXTURE_SUMMONER , 0 , 0 , 0); #line 1309 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" AddAttachmentToModel (this , * GetModelObject () , SUMMONER_ATTACHMENT_STAFF , MODEL_STAFF , TEXTURE_STAFF , 0 , 0 , 0); #line 1310 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" GetModelObject () -> StretchModel (FLOAT3D (m_fStretch , m_fStretch , m_fStretch )); #line 1311 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" ModelChangeNotify (); #line 1313 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" AddToMovers (); #line 1315 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(_pTimer -> TickQuantum ); Jump(STATE_CURRENT, 0x015b0036, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0036_Main_01(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0036 switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b0037, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b0037_Main_02(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0037 ; #line 1317 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . Initialize (this ); #line 1318 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_emEmiter . em_etType = ET_SUMMONER_STAFF ; #line 1321 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" INDEX i ; #line 1322 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEntityPointer * pen ; #line 1323 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iGroup01Count = 0; #line 1324 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pen = & m_penGroup01Template01 ; #line 1325 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(i = 0;i < SUMMONER_TEMP_PER_GROUP ;i ++){ #line 1326 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(& * pen [ i ] != NULL ){m_iGroup01Count ++;} #line 1327 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1328 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iGroup02Count = 0; #line 1329 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pen = & m_penGroup02Template01 ; #line 1330 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(i = 0;i < SUMMONER_TEMP_PER_GROUP ;i ++){ #line 1331 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(& * pen [ i ] != NULL ){m_iGroup02Count ++;} #line 1332 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1333 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iGroup03Count = 0; #line 1334 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" pen = & m_penGroup03Template01 ; #line 1335 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" for(i = 0;i < SUMMONER_TEMP_PER_GROUP ;i ++){ #line 1336 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(& * pen [ i ] != NULL ){m_iGroup03Count ++;} #line 1337 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1339 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" if(! DoSafetyChecks ()){ #line 1340 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Destroy (); #line 1341 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Return(STATE_CURRENT,EVoid()); #line 1341 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" return TRUE; #line 1342 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1345 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" CEnemyMarker * it ; #line 1346 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iSpawnMarkers = 1; #line 1347 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" it = & ((CEnemyMarker &) * m_penSpawnMarker ); #line 1348 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" while(it -> m_penTarget != NULL ) #line 1349 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 1350 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" it = & ((CEnemyMarker &) * it -> m_penTarget ); #line 1351 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iSpawnMarkers ++; #line 1352 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1355 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iTeleportMarkers = 1; #line 1356 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" it = & ((CEnemyMarker &) * m_penTeleportMarker ); #line 1357 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" while(it -> m_penTarget != NULL ) #line 1358 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" { #line 1359 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" it = & ((CEnemyMarker &) * it -> m_penTarget ); #line 1360 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iTeleportMarkers ++; #line 1361 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" } #line 1363 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iSpawnScheme = 0; #line 1364 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fMaxCurrentFuss = m_fMaxBeginFuss ; #line 1365 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bDying = FALSE ; #line 1366 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_tmDeathBegin = 0.0f; #line 1367 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_fDeathDuration = 0.0f; #line 1368 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bInvulnerable = TRUE ; #line 1369 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bExploded = FALSE ; #line 1372 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAt(THINKTIME_NEVER); Jump(STATE_CURRENT, 0x015b0038, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b0038_Main_03(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b0038 switch(__eeInput.ee_slEvent){case(EVENTCODE_EBegin):{const EBegin&e= (EBegin&)__eeInput; return TRUE;}ASSERT(FALSE);break;case(EVENTCODE_ETrigger):{const ETrigger&e= (ETrigger&)__eeInput; UnsetTimer();Jump(STATE_CURRENT,0x015b0039, FALSE, EInternal());return TRUE;}ASSERT(FALSE);break;default:{return TRUE;}ASSERT(FALSE);break; #line 1376 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" }return TRUE;}BOOL CSummoner::H0x015b0039_Main_04(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b0039 #line 1378 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_soExplosion . Set3DParameters (1500.0f , 1000.0f , 2.0f , 1.0f); #line 1379 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_soSound . Set3DParameters (1500.0f , 1000.0f , 2.0f , 1.0f); #line 1380 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_soChant . Set3DParameters (1500.0f , 1000.0f , 2.0f , 1.0f); #line 1381 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_soTeleport . Set3DParameters (1500.0f , 1000.0f , 3.0f , 1.0f); #line 1382 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_iTaunt = 0; #line 1386 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SpawnTeleportEffect (); #line 1387 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SwitchToModel (); #line 1388 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_bInvulnerable = FALSE ; #line 1389 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetCollisionFlags (ECF_MODEL ); #line 1391 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" PlaySound (m_soTeleport , SOUND_MATERIALIZE , SOF_3D ); #line 1393 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" StartModelAnim (SUMMONER_ANIM_APPEARING , SOF_SMOOTHCHANGE ); #line 1394 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" SetTimerAfter(GetModelObject () -> GetAnimLength (SUMMONER_ANIM_APPEARING )); Jump(STATE_CURRENT, 0x015b003a, FALSE, EBegin());return TRUE;}BOOL CSummoner::H0x015b003a_Main_05(const CEntityEvent &__eeInput) { #undef STATE_CURRENT #define STATE_CURRENT 0x015b003a switch(__eeInput.ee_slEvent) {case EVENTCODE_EBegin: return TRUE;case EVENTCODE_ETimer: Jump(STATE_CURRENT,0x015b003b, FALSE, EInternal()); return TRUE;default: return FALSE; }}BOOL CSummoner::H0x015b003b_Main_06(const CEntityEvent &__eeInput){ ASSERT(__eeInput.ee_slEvent==EVENTCODE_EInternal); #undef STATE_CURRENT #define STATE_CURRENT 0x015b003b ; #line 1396 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" m_tmMaterializationTime = _pTimer -> CurrentTick (); #line 1399 "D:/SE1_GPL/Sources/EntitiesMP/Summoner.es" Jump(STATE_CURRENT, STATE_CSummoner_SummonerLoop, TRUE, EVoid());return TRUE; ASSERT(FALSE); return TRUE;};