mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-25 19:55:54 +01:00
2123 lines
96 KiB
C++
2123 lines
96 KiB
C++
/*
|
|
* 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 <EntitiesMP/Summoner.h>
|
|
#include <EntitiesMP/Summoner_tables.h>
|
|
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;}; |