- Converted the Heresiarch to DECORATE.

SVN r1145 (trunk)
This commit is contained in:
Christoph Oelckers 2008-08-10 12:06:18 +00:00
parent 5ea4b37373
commit 9b58c5ebbd
5 changed files with 622 additions and 708 deletions

View File

@ -343,6 +343,25 @@ ACTOR(WraithFX3)
ACTOR(WraithMelee)
ACTOR(WraithFX2)
ACTOR(SorcSpinBalls)
ACTOR(SpeedBalls)
ACTOR(SlowBalls)
ACTOR(StopBalls)
ACTOR(SorcBossAttack)
ACTOR(SpawnFizzle)
ACTOR(SorcBallOrbit)
ACTOR(AccelBalls)
ACTOR(DecelBalls)
ACTOR(SorcOffense2)
ACTOR(SorcBallPop)
ACTOR(BounceCheck)
ACTOR(SorcFX1Seek)
ACTOR(SorcFX2Split)
ACTOR(SorcFX2Orbit)
ACTOR(SpawnBishop)
ACTOR(SorcererBishopEntry)
ACTOR(SorcFX4Check)
ACTOR(TemplarAttack)
ACTOR(SentinelAttack)
ACTOR(ReaverRanged)

View File

@ -47,25 +47,12 @@
#define BALL2_ANGLEOFFSET (ANGLE_MAX/3)
#define BALL3_ANGLEOFFSET ((ANGLE_MAX/3)*2)
void A_SorcBallPop (AActor *actor);
void A_SorcBallOrbit (AActor *actor);
void A_SorcSpinBalls (AActor *actor);
void A_SpeedBalls (AActor *actor);
void A_SlowBalls (AActor *actor);
void A_StopBalls (AActor *actor);
void A_AccelBalls (AActor *actor);
void A_DecelBalls (AActor *actor);
void A_SorcBossAttack (AActor *actor);
void A_SpawnFizzle (AActor *actor);
void A_BounceCheck (AActor *actor);
void A_DoBounceCheck (AActor *actor, const char *sound);
void A_SorcFX1Seek (AActor *actor);
void A_SorcOffense2 (AActor *actor);
void A_SorcFX2Split (AActor *actor);
void A_SorcFX2Orbit (AActor *actor);
void A_SorcererBishopEntry (AActor *actor);
void A_SpawnBishop (AActor *actor);
void A_SorcFX4Check (AActor *actor);
void A_DoBounceCheck (AActor *actor, const char *sound);
static FRandom pr_heresiarch ("Heresiarch");
@ -73,7 +60,7 @@ static FRandom pr_heresiarch ("Heresiarch");
class AHeresiarch : public AActor
{
DECLARE_ACTOR (AHeresiarch, AActor)
DECLARE_CLASS (AHeresiarch, AActor)
public:
const PClass *StopBall;
@ -81,82 +68,7 @@ public:
void Die (AActor *source, AActor *inflictor);
};
FState AHeresiarch::States[] =
{
#define S_SORC_SPAWN1 0
S_NORMAL (SORC, 'A', 3, NULL , &States[S_SORC_SPAWN1+1]),
S_NORMAL (SORC, 'A', 2, A_SorcSpinBalls , &States[S_SORC_SPAWN1+2]),
S_NORMAL (SORC, 'A', 10, A_Look , &States[S_SORC_SPAWN1+2]),
#define S_SORC_WALK1 (S_SORC_SPAWN1+3)
S_NORMAL (SORC, 'A', 5, A_Chase , &States[S_SORC_WALK1+1]),
S_NORMAL (SORC, 'B', 5, A_Chase , &States[S_SORC_WALK1+2]),
S_NORMAL (SORC, 'C', 5, A_Chase , &States[S_SORC_WALK1+3]),
S_NORMAL (SORC, 'D', 5, A_Chase , &States[S_SORC_WALK1]),
#define S_SORC_PAIN1 (S_SORC_WALK1+4)
S_NORMAL (SORC, 'G', 8, NULL , &States[S_SORC_PAIN1+1]),
S_NORMAL (SORC, 'G', 8, A_Pain , &States[S_SORC_WALK1]),
#define S_SORC_ATK2_1 (S_SORC_PAIN1+2)
S_BRIGHT (SORC, 'F', 6, A_FaceTarget , &States[S_SORC_ATK2_1+1]),
S_BRIGHT (SORC, 'F', 6, A_SpeedBalls , &States[S_SORC_ATK2_1+2]),
S_BRIGHT (SORC, 'F', 6, A_FaceTarget , &States[S_SORC_ATK2_1+2]),
#define S_SORC_ATTACK1 (S_SORC_ATK2_1+3)
S_BRIGHT (SORC, 'E', 6, NULL , &States[S_SORC_ATTACK1+1]),
S_BRIGHT (SORC, 'E', 6, A_SpawnFizzle , &States[S_SORC_ATTACK1+2]),
S_BRIGHT (SORC, 'E', 5, A_FaceTarget , &States[S_SORC_ATTACK1+1]),
S_BRIGHT (SORC, 'E', 2, NULL , &States[S_SORC_ATTACK1+4]),
S_BRIGHT (SORC, 'E', 2, A_SorcBossAttack , &States[S_SORC_WALK1]),
#define S_SORC_DIE1 (S_SORC_ATTACK1+5)
S_BRIGHT (SORC, 'H', 5, NULL , &States[S_SORC_DIE1+1]),
S_BRIGHT (SORC, 'I', 5, A_FaceTarget , &States[S_SORC_DIE1+2]),
S_BRIGHT (SORC, 'J', 5, A_Scream , &States[S_SORC_DIE1+3]),
S_BRIGHT (SORC, 'K', 5, NULL , &States[S_SORC_DIE1+4]),
S_BRIGHT (SORC, 'L', 5, NULL , &States[S_SORC_DIE1+5]),
S_BRIGHT (SORC, 'M', 5, NULL , &States[S_SORC_DIE1+6]),
S_BRIGHT (SORC, 'N', 5, NULL , &States[S_SORC_DIE1+7]),
S_BRIGHT (SORC, 'O', 5, NULL , &States[S_SORC_DIE1+8]),
S_BRIGHT (SORC, 'P', 5, NULL , &States[S_SORC_DIE1+9]),
S_BRIGHT (SORC, 'Q', 5, NULL , &States[S_SORC_DIE1+10]),
S_BRIGHT (SORC, 'R', 5, NULL , &States[S_SORC_DIE1+11]),
S_BRIGHT (SORC, 'S', 5, NULL , &States[S_SORC_DIE1+12]),
S_BRIGHT (SORC, 'T', 5, NULL , &States[S_SORC_DIE1+13]),
S_BRIGHT (SORC, 'U', 5, A_NoBlocking , &States[S_SORC_DIE1+14]),
S_BRIGHT (SORC, 'V', 5, NULL , &States[S_SORC_DIE1+15]),
S_BRIGHT (SORC, 'W', 5, NULL , &States[S_SORC_DIE1+16]),
S_BRIGHT (SORC, 'X', 5, NULL , &States[S_SORC_DIE1+17]),
S_BRIGHT (SORC, 'Y', 5, NULL , &States[S_SORC_DIE1+18]),
S_BRIGHT (SORC, 'Z', -1, NULL , NULL),
};
IMPLEMENT_ACTOR (AHeresiarch, Hexen, 10080, 0)
PROP_SpawnHealth (5000)
PROP_PainChance (10)
PROP_SpeedFixed (16)
PROP_RadiusFixed (40)
PROP_HeightFixed (110)
PROP_Mass (500)
PROP_Damage (9)
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_COUNTKILL)
PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_BOSS|MF2_PUSHWALL|MF2_MCROSS)
PROP_Flags3 (MF3_DONTMORPH|MF3_NOTARGET)
PROP_Flags4 (MF4_NOICEDEATH|MF4_DEFLECT)
PROP_SpawnState (S_SORC_SPAWN1)
PROP_SeeState (S_SORC_WALK1)
PROP_PainState (S_SORC_PAIN1)
PROP_MissileState (S_SORC_ATK2_1)
PROP_DeathState (S_SORC_DIE1)
PROP_SeeSound ("SorcererSight")
PROP_PainSound ("SorcererPain")
PROP_DeathSound ("SorcererDeathScream")
PROP_ActiveSound ("SorcererActive")
PROP_Obituary ("$OB_HERESIARCH")
END_DEFAULTS
IMPLEMENT_CLASS (AHeresiarch)
void AHeresiarch::Serialize (FArchive &arc)
{
@ -182,7 +94,7 @@ void AHeresiarch::Die (AActor *source, AActor *inflictor)
class ASorcBall : public AActor
{
DECLARE_STATELESS_ACTOR (ASorcBall, AActor)
DECLARE_CLASS (ASorcBall, AActor)
public:
virtual void DoFireSpell ();
virtual void SorcUpdateBallAngle ();
@ -195,36 +107,19 @@ public:
arc << AngleOffset;
}
void GetExplodeParms (int &damage, int &distance, bool &hurtSource)
{
distance = 255;
damage = 255;
SeeSound = 0; // don't play bounce
}
bool SpecialBlastHandling (AActor *source, fixed_t strength)
{ // don't blast sorcerer balls
return false;
}
};
IMPLEMENT_STATELESS_ACTOR (ASorcBall, Hexen, -1, 0)
PROP_SpeedFixed (10)
PROP_RadiusFixed (5)
PROP_HeightFixed (5)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE)
PROP_Flags2 (MF2_HEXENBOUNCE|MF2_NOTELEPORT)
PROP_Flags3 (MF3_FULLVOLDEATH|MF3_CANBOUNCEWATER|MF3_NOWALLBOUNCESND)
PROP_SeeSound ("SorcererBallBounce")
PROP_DeathSound ("SorcererBigBallExplode")
END_DEFAULTS
IMPLEMENT_CLASS (ASorcBall)
// First ball (purple) - fires projectiles ----------------------------------
class ASorcBall1 : public ASorcBall
{
DECLARE_ACTOR (ASorcBall1, ASorcBall)
DECLARE_CLASS (ASorcBall1, ASorcBall)
public:
void BeginPlay ()
{
@ -236,49 +131,13 @@ public:
virtual void CastSorcererSpell ();
};
FState ASorcBall1::States[] =
{
#define S_SORCBALL1_1 0
S_NORMAL (SBMP, 'A', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+1]),
S_NORMAL (SBMP, 'B', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+2]),
S_NORMAL (SBMP, 'C', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+3]),
S_NORMAL (SBMP, 'D', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+4]),
S_NORMAL (SBMP, 'E', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+5]),
S_NORMAL (SBMP, 'F', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+6]),
S_NORMAL (SBMP, 'G', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+7]),
S_NORMAL (SBMP, 'H', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+8]),
S_NORMAL (SBMP, 'I', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+9]),
S_NORMAL (SBMP, 'J', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+10]),
S_NORMAL (SBMP, 'K', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+11]),
S_NORMAL (SBMP, 'L', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+12]),
S_NORMAL (SBMP, 'M', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+13]),
S_NORMAL (SBMP, 'N', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+14]),
S_NORMAL (SBMP, 'O', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1+15]),
S_NORMAL (SBMP, 'P', 2, A_SorcBallOrbit , &States[S_SORCBALL1_1]),
#define S_SORCBALL1_D1 (S_SORCBALL1_1+16)
S_NORMAL (SBMP, 'A', 5, A_SorcBallPop , &States[S_SORCBALL1_D1+1]),
S_NORMAL (SBMP, 'B', 2, A_BounceCheck , &States[S_SORCBALL1_D1+1]),
#define S_SORCBALL1_D5 (S_SORCBALL1_D1+2)
S_NORMAL (SBS4, 'D', 5, A_Explode , &States[S_SORCBALL1_D5+1]),
S_NORMAL (SBS4, 'E', 5, NULL , &States[S_SORCBALL1_D5+2]),
S_NORMAL (SBS4, 'F', 6, NULL , &States[S_SORCBALL1_D5+3]),
S_NORMAL (SBS4, 'G', 6, NULL , &States[S_SORCBALL1_D5+4]),
S_NORMAL (SBS4, 'H', 6, NULL , NULL),
};
IMPLEMENT_ACTOR (ASorcBall1, Hexen, -1, 0)
PROP_SpawnState (S_SORCBALL1_1)
PROP_PainState (S_SORCBALL1_D1)
PROP_DeathState (S_SORCBALL1_D5)
END_DEFAULTS
IMPLEMENT_CLASS (ASorcBall1)
// Second ball (blue) - generates the shield --------------------------------
class ASorcBall2 : public ASorcBall
{
DECLARE_ACTOR (ASorcBall2, ASorcBall)
DECLARE_CLASS (ASorcBall2, ASorcBall)
public:
void BeginPlay ()
{
@ -288,49 +147,13 @@ public:
virtual void CastSorcererSpell ();
};
FState ASorcBall2::States[] =
{
#define S_SORCBALL2_1 0
S_NORMAL (SBMB, 'A', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+1]),
S_NORMAL (SBMB, 'B', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+2]),
S_NORMAL (SBMB, 'C', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+3]),
S_NORMAL (SBMB, 'D', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+4]),
S_NORMAL (SBMB, 'E', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+5]),
S_NORMAL (SBMB, 'F', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+6]),
S_NORMAL (SBMB, 'G', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+7]),
S_NORMAL (SBMB, 'H', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+8]),
S_NORMAL (SBMB, 'I', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+9]),
S_NORMAL (SBMB, 'J', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+10]),
S_NORMAL (SBMB, 'K', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+11]),
S_NORMAL (SBMB, 'L', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+12]),
S_NORMAL (SBMB, 'M', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+13]),
S_NORMAL (SBMB, 'N', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+14]),
S_NORMAL (SBMB, 'O', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1+15]),
S_NORMAL (SBMB, 'P', 2, A_SorcBallOrbit , &States[S_SORCBALL2_1]),
#define S_SORCBALL2_D1 (S_SORCBALL2_1+16)
S_NORMAL (SBMB, 'A', 5, A_SorcBallPop , &States[S_SORCBALL2_D1+1]),
S_NORMAL (SBMB, 'B', 2, A_BounceCheck , &States[S_SORCBALL2_D1+1]),
#define S_SORCBALL2_D5 (S_SORCBALL2_D1+2)
S_NORMAL (SBS3, 'D', 5, A_Explode , &States[S_SORCBALL2_D5+1]),
S_NORMAL (SBS3, 'E', 5, NULL , &States[S_SORCBALL2_D5+2]),
S_NORMAL (SBS3, 'F', 6, NULL , &States[S_SORCBALL2_D5+3]),
S_NORMAL (SBS3, 'G', 6, NULL , &States[S_SORCBALL2_D5+4]),
S_NORMAL (SBS3, 'H', 6, NULL , NULL),
};
IMPLEMENT_ACTOR (ASorcBall2, Hexen, -1, 0)
PROP_SpawnState (S_SORCBALL2_1)
PROP_PainState (S_SORCBALL2_D1)
PROP_DeathState (S_SORCBALL2_D5)
END_DEFAULTS
IMPLEMENT_CLASS (ASorcBall2)
// Third ball (green) - summons Bishops -------------------------------------
class ASorcBall3 : public ASorcBall
{
DECLARE_ACTOR (ASorcBall3, ASorcBall)
DECLARE_CLASS (ASorcBall3, ASorcBall)
public:
void BeginPlay ()
{
@ -340,54 +163,15 @@ public:
virtual void CastSorcererSpell ();
};
FState ASorcBall3::States[] =
{
#define S_SORCBALL3_1 0
S_NORMAL (SBMG, 'A', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+1]),
S_NORMAL (SBMG, 'B', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+2]),
S_NORMAL (SBMG, 'C', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+3]),
S_NORMAL (SBMG, 'D', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+4]),
S_NORMAL (SBMG, 'E', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+5]),
S_NORMAL (SBMG, 'F', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+6]),
S_NORMAL (SBMG, 'G', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+7]),
S_NORMAL (SBMG, 'H', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+8]),
S_NORMAL (SBMG, 'I', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+9]),
S_NORMAL (SBMG, 'J', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+10]),
S_NORMAL (SBMG, 'K', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+11]),
S_NORMAL (SBMG, 'L', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+12]),
S_NORMAL (SBMG, 'M', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+13]),
S_NORMAL (SBMG, 'N', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+14]),
S_NORMAL (SBMG, 'O', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1+15]),
S_NORMAL (SBMG, 'P', 2, A_SorcBallOrbit , &States[S_SORCBALL3_1]),
#define S_SORCBALL3_D1 (S_SORCBALL3_1+16)
S_NORMAL (SBMG, 'A', 5, A_SorcBallPop , &States[S_SORCBALL3_D1+1]),
S_NORMAL (SBMG, 'B', 2, A_BounceCheck , &States[S_SORCBALL3_D1+1]),
#define S_SORCBALL3_D5 (S_SORCBALL3_D1+2)
S_NORMAL (SBS3, 'D', 5, A_Explode , &States[S_SORCBALL3_D5+1]),
S_NORMAL (SBS3, 'E', 5, NULL , &States[S_SORCBALL3_D5+2]),
S_NORMAL (SBS3, 'F', 6, NULL , &States[S_SORCBALL3_D5+3]),
S_NORMAL (SBS3, 'G', 6, NULL , &States[S_SORCBALL3_D5+4]),
S_NORMAL (SBS3, 'H', 6, NULL , NULL),
};
IMPLEMENT_ACTOR (ASorcBall3, Hexen, -1, 0)
PROP_SpawnState (S_SORCBALL3_1)
PROP_PainState (S_SORCBALL3_D1)
PROP_DeathState (S_SORCBALL3_D5)
END_DEFAULTS
IMPLEMENT_CLASS (ASorcBall3)
// Sorcerer spell 1 (The burning, bouncing head thing) ----------------------
/*
class ASorcFX1 : public AActor
{
DECLARE_ACTOR (ASorcFX1, AActor)
DECLARE_CLASS (ASorcFX1, AActor)
public:
void GetExplodeParms (int &damage, int &distance, bool &hurtSource)
{
damage = 30;
}
bool FloorBounceMissile (secplane_t &plane)
{
fixed_t orgmomz = momz;
@ -400,236 +184,8 @@ public:
return true;
}
};
FState ASorcFX1::States[] =
{
#define S_SORCFX1_1 0
S_BRIGHT (SBS1, 'A', 2, NULL , &States[S_SORCFX1_1+1]),
S_BRIGHT (SBS1, 'B', 3, A_SorcFX1Seek , &States[S_SORCFX1_1+2]),
S_BRIGHT (SBS1, 'C', 3, A_SorcFX1Seek , &States[S_SORCFX1_1+3]),
S_BRIGHT (SBS1, 'D', 3, A_SorcFX1Seek , &States[S_SORCFX1_1]),
#define S_SORCFX1_D1 (S_SORCFX1_1+4)
S_BRIGHT (FHFX, 'S', 2, A_Explode , &States[S_SORCFX1_D1+1]),
S_BRIGHT (FHFX, 'S', 6, NULL , &States[S_SORCFX1_D1+2]),
S_BRIGHT (FHFX, 'S', 6, NULL , NULL),
};
IMPLEMENT_ACTOR (ASorcFX1, Hexen, -1, 0)
PROP_SpeedFixed (7)
PROP_RadiusFixed (5)
PROP_HeightFixed (5)
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE)
PROP_Flags2 (MF2_HEXENBOUNCE|MF2_NOTELEPORT)
PROP_Flags3 (MF3_FULLVOLDEATH|MF3_CANBOUNCEWATER|MF3_NOWALLBOUNCESND)
PROP_SpawnState (S_SORCFX1_1)
PROP_DeathState (S_SORCFX1_D1)
PROP_XDeathState (S_SORCFX1_D1)
PROP_SeeSound ("SorcererBallBounce")
PROP_DeathSound ("SorcererHeadScream")
END_DEFAULTS
// Sorcerer spell 2 (The visible part of the shield) ------------------------
class ASorcFX2 : public AActor
{
DECLARE_ACTOR (ASorcFX2, AActor)
};
FState ASorcFX2::States[] =
{
#define S_SORCFX2_SPLIT1 0
S_BRIGHT (SBS2, 'A', 3, A_SorcFX2Split , &States[S_SORCFX2_SPLIT1]),
#define S_SORCFX2T1 (S_SORCFX2_SPLIT1+1)
S_NORMAL (SBS2, 'A', 10, NULL , NULL),
#define S_SORCFX2_ORBIT1 (S_SORCFX2T1+1)
S_BRIGHT (SBS2, 'A', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+1]),
S_BRIGHT (SBS2, 'B', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+2]),
S_BRIGHT (SBS2, 'C', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+3]),
S_BRIGHT (SBS2, 'D', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+4]),
S_BRIGHT (SBS2, 'E', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+5]),
S_BRIGHT (SBS2, 'F', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+6]),
S_BRIGHT (SBS2, 'G', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+7]),
S_BRIGHT (SBS2, 'H', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+8]),
S_BRIGHT (SBS2, 'I', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+9]),
S_BRIGHT (SBS2, 'J', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+10]),
S_BRIGHT (SBS2, 'K', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+11]),
S_BRIGHT (SBS2, 'L', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+12]),
S_BRIGHT (SBS2, 'M', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+13]),
S_BRIGHT (SBS2, 'N', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+14]),
S_BRIGHT (SBS2, 'O', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1+15]),
S_BRIGHT (SBS2, 'P', 2, A_SorcFX2Orbit , &States[S_SORCFX2_ORBIT1]),
};
IMPLEMENT_ACTOR (ASorcFX2, Hexen, -1, 0)
PROP_SpeedFixed (15)
PROP_RadiusFixed (5)
PROP_HeightFixed (5)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_SpawnState (S_SORCFX2_SPLIT1)
PROP_DeathState (S_SORCFX2T1)
END_DEFAULTS
// The translucent trail behind SorcFX2 -------------------------------------
class ASorcFX2T1 : public ASorcFX2
{
DECLARE_STATELESS_ACTOR (ASorcFX2T1, ASorcFX2)
};
IMPLEMENT_STATELESS_ACTOR (ASorcFX2T1, Hexen, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_RenderStyle (STYLE_Translucent)
PROP_Alpha (HX_ALTSHADOW)
PROP_SpawnState (S_SORCFX2T1)
END_DEFAULTS
// Sorcerer spell 3 (The Bishop spawner) ------------------------------------
class ASorcFX3 : public AActor
{
DECLARE_ACTOR (ASorcFX3, AActor)
};
FState ASorcFX3::States[] =
{
#define S_SORCFX3_1 0
S_BRIGHT (SBS3, 'A', 2, NULL , &States[S_SORCFX3_1+1]),
S_BRIGHT (SBS3, 'B', 2, NULL , &States[S_SORCFX3_1+2]),
S_BRIGHT (SBS3, 'C', 2, NULL , &States[S_SORCFX3_1]),
#define S_BISHMORPH1 (S_SORCFX3_1+3)
S_BRIGHT (SBS3, 'A', 4, NULL , &States[S_BISHMORPH1+1]),
S_NORMAL (BISH, 'P', 4, A_SorcererBishopEntry , &States[S_BISHMORPH1+2]),
S_NORMAL (BISH, 'O', 4, NULL , &States[S_BISHMORPH1+3]),
S_NORMAL (BISH, 'N', 4, NULL , &States[S_BISHMORPH1+4]),
S_NORMAL (BISH, 'M', 3, NULL , &States[S_BISHMORPH1+5]),
S_NORMAL (BISH, 'L', 3, NULL , &States[S_BISHMORPH1+6]),
S_NORMAL (BISH, 'K', 3, NULL , &States[S_BISHMORPH1+7]),
S_NORMAL (BISH, 'J', 3, NULL , &States[S_BISHMORPH1+8]),
S_NORMAL (BISH, 'I', 3, NULL , &States[S_BISHMORPH1+9]),
S_NORMAL (BISH, 'H', 3, NULL , &States[S_BISHMORPH1+10]),
S_NORMAL (BISH, 'G', 3, A_SpawnBishop , NULL),
};
IMPLEMENT_ACTOR (ASorcFX3, Hexen, -1, 0)
PROP_SpeedFixed (15)
PROP_RadiusFixed (22)
PROP_HeightFixed (65)
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_SpawnState (S_SORCFX3_1)
PROP_DeathState (S_BISHMORPH1)
PROP_SeeSound ("SorcererBishopSpawn")
END_DEFAULTS
// The Bishop spawner's explosion animation ---------------------------------
class ASorcFX3Explosion : public AActor
{
DECLARE_ACTOR (ASorcFX3Explosion, AActor)
};
FState ASorcFX3Explosion::States[] =
{
#define S_SORCFX3_EXP1 0
S_NORMAL (SBS3, 'D', 3, NULL , &States[S_SORCFX3_EXP1+1]),
S_NORMAL (SBS3, 'E', 3, NULL , &States[S_SORCFX3_EXP1+2]),
S_NORMAL (SBS3, 'F', 3, NULL , &States[S_SORCFX3_EXP1+3]),
S_NORMAL (SBS3, 'G', 3, NULL , &States[S_SORCFX3_EXP1+4]),
S_NORMAL (SBS3, 'H', 3, NULL , NULL),
};
IMPLEMENT_ACTOR (ASorcFX3Explosion, Hexen, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_RenderStyle (STYLE_Translucent)
PROP_Alpha (HX_ALTSHADOW)
PROP_SpawnState (S_SORCFX3_EXP1)
END_DEFAULTS
// Sorcerer spell 4 (The purple projectile) ---------------------------------
class ASorcFX4 : public AActor
{
DECLARE_ACTOR (ASorcFX4, AActor)
public:
void GetExplodeParms (int &damage, int &distance, bool &hurtSource)
{
damage = 20;
}
};
FState ASorcFX4::States[] =
{
#define S_SORCFX4_1 0
S_BRIGHT (SBS4, 'A', 2, A_SorcFX4Check , &States[S_SORCFX4_1+1]),
S_BRIGHT (SBS4, 'B', 2, A_SorcFX4Check , &States[S_SORCFX4_1+2]),
S_BRIGHT (SBS4, 'C', 2, A_SorcFX4Check , &States[S_SORCFX4_1]),
#define S_SORCFX4_D1 (S_SORCFX4_1+3)
S_BRIGHT (SBS4, 'D', 2, NULL , &States[S_SORCFX4_D1+1]),
S_BRIGHT (SBS4, 'E', 2, A_Explode , &States[S_SORCFX4_D1+2]),
S_BRIGHT (SBS4, 'F', 2, NULL , &States[S_SORCFX4_D1+3]),
S_BRIGHT (SBS4, 'G', 2, NULL , &States[S_SORCFX4_D1+4]),
S_BRIGHT (SBS4, 'H', 2, NULL , NULL),
};
IMPLEMENT_ACTOR (ASorcFX4, Hexen, -1, 0)
PROP_SpeedFixed (12)
PROP_RadiusFixed (10)
PROP_HeightFixed (10)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (S_SORCFX4_1)
PROP_DeathState (S_SORCFX4_D1)
PROP_DeathSound ("SorcererBallExplode")
END_DEFAULTS
// Spark that appears when shooting SorcFX4 ---------------------------------
class ASorcSpark1 : public AActor
{
DECLARE_ACTOR (ASorcSpark1, AActor)
};
FState ASorcSpark1::States[] =
{
#define S_SORCSPARK1 0
S_BRIGHT (SBFX, 'A', 4, NULL , &States[S_SORCSPARK1+1]),
S_BRIGHT (SBFX, 'B', 4, NULL , &States[S_SORCSPARK1+2]),
S_BRIGHT (SBFX, 'C', 4, NULL , &States[S_SORCSPARK1+3]),
S_BRIGHT (SBFX, 'D', 4, NULL , &States[S_SORCSPARK1+4]),
S_BRIGHT (SBFX, 'E', 4, NULL , &States[S_SORCSPARK1+5]),
S_BRIGHT (SBFX, 'F', 4, NULL , &States[S_SORCSPARK1+6]),
S_BRIGHT (SBFX, 'G', 4, NULL , NULL),
};
IMPLEMENT_ACTOR (ASorcSpark1, Hexen, -1, 0)
PROP_RadiusFixed (5)
PROP_HeightFixed (5)
PROP_Gravity (FRACUNIT/8)
PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_RenderStyle (STYLE_Add)
PROP_SpawnState (S_SORCSPARK1)
END_DEFAULTS
IMPLEMENT_CLASS (ASorcFX1)
*/
//============================================================================
//
@ -684,15 +240,15 @@ void A_SorcSpinBalls(AActor *actor)
actor->special1 = ANGLE_1;
z = actor->z - actor->floorclip + actor->height;
mo = Spawn<ASorcBall1> (actor->x, actor->y, z, NO_REPLACE);
mo = Spawn("SorcBall1", actor->x, actor->y, z, NO_REPLACE);
if (mo)
{
mo->target = actor;
mo->special2 = SORCFX4_RAPIDFIRE_TIME;
}
mo = Spawn<ASorcBall2> (actor->x, actor->y, z, NO_REPLACE);
mo = Spawn("SorcBall2", actor->x, actor->y, z, NO_REPLACE);
if (mo) mo->target = actor;
mo = Spawn<ASorcBall3> (actor->x, actor->y, z, NO_REPLACE);
mo = Spawn("SorcBall3", actor->x, actor->y, z, NO_REPLACE);
if (mo) mo->target = actor;
}
@ -775,7 +331,7 @@ void A_SorcBallOrbit(AActor *ball)
{
// Put sorcerer into special throw spell anim
if (parent->health > 0)
parent->SetStateNF (&AHeresiarch::States[S_SORC_ATTACK1]);
parent->SetState (parent->FindState("Attack1"));
actor->DoFireSpell ();
}
@ -790,7 +346,7 @@ void A_SorcBallOrbit(AActor *ball)
parent->args[3] = SORC_STOPPED;
// Back to orbit balls
if (parent->health > 0)
parent->SetStateNF (&AHeresiarch::States[S_SORC_ATTACK1+3]);
parent->SetState (parent->FindState("Attack2"));
}
else
{
@ -964,7 +520,7 @@ void ASorcBall::CastSorcererSpell ()
// Put sorcerer into throw spell animation
if (target->health > 0)
target->SetStateNF (&AHeresiarch::States[S_SORC_ATTACK1+3]);
target->SetState (target->FindState("Attack2"));
}
//============================================================================
@ -983,7 +539,7 @@ void ASorcBall2::CastSorcererSpell ()
AActor *mo;
fixed_t z = parent->z - parent->floorclip + SORC_DEFENSE_HEIGHT*FRACUNIT;
mo = Spawn<ASorcFX2> (x, y, z, ALLOW_REPLACE);
mo = Spawn("SorcFX2", x, y, z, ALLOW_REPLACE);
parent->flags2 |= MF2_REFLECTIVE|MF2_INVULNERABLE;
parent->args[0] = SORC_DEFENSE_TIME;
if (mo) mo->target = parent;
@ -1007,18 +563,19 @@ void ASorcBall3::CastSorcererSpell ()
ang1 = angle - ANGLE_45;
ang2 = angle + ANGLE_45;
const PClass *cls = PClass::FindClass("SorcFX3");
if (health < (GetDefault()->health/3))
{ // Spawn 2 at a time
mo = P_SpawnMissileAngle(parent, RUNTIME_CLASS(ASorcFX3), ang1, 4*FRACUNIT);
mo = P_SpawnMissileAngle(parent, cls, ang1, 4*FRACUNIT);
if (mo) mo->target = parent;
mo = P_SpawnMissileAngle(parent, RUNTIME_CLASS(ASorcFX3), ang2, 4*FRACUNIT);
mo = P_SpawnMissileAngle(parent, cls, ang2, 4*FRACUNIT);
if (mo) mo->target = parent;
}
else
{
if (pr_heresiarch() < 128)
ang1 = ang2;
mo = P_SpawnMissileAngle(parent, RUNTIME_CLASS(ASorcFX3), ang1, 4*FRACUNIT);
mo = P_SpawnMissileAngle(parent, cls, ang1, 4*FRACUNIT);
if (mo) mo->target = parent;
}
}
@ -1055,7 +612,8 @@ void ASorcBall1::CastSorcererSpell ()
ang1 = angle + ANGLE_1*70;
ang2 = angle - ANGLE_1*70;
mo = P_SpawnMissileAngle (parent, RUNTIME_CLASS(ASorcFX1), ang1, 0);
const PClass *cls = PClass::FindClass("SorcFX1");
mo = P_SpawnMissileAngle (parent, cls, ang1, 0);
if (mo)
{
mo->target = parent;
@ -1063,7 +621,7 @@ void ASorcBall1::CastSorcererSpell ()
mo->args[4] = BOUNCE_TIME_UNIT;
mo->args[3] = 15; // Bounce time in seconds
}
mo = P_SpawnMissileAngle (parent, RUNTIME_CLASS(ASorcFX1), ang2, 0);
mo = P_SpawnMissileAngle (parent, cls, ang2, 0);
if (mo)
{
mo->target = parent;
@ -1101,7 +659,7 @@ void A_SorcOffense2(AActor *actor)
delta = (finesine[index])*SORCFX4_SPREAD_ANGLE;
delta = (delta>>FRACBITS)*ANGLE_1;
ang1 = actor->angle + delta;
mo = P_SpawnMissileAngle(parent, RUNTIME_CLASS(ASorcFX4), ang1, 0);
mo = P_SpawnMissileAngle(parent, PClass::FindClass("SorcFX4"), ang1, 0);
if (mo)
{
mo->special2 = 35*5/2; // 5 seconds
@ -1149,7 +707,7 @@ void A_SpawnFizzle(AActor *actor)
z = actor->z - actor->floorclip + (actor->height>>1);
for (ix=0; ix<5; ix++)
{
mo = Spawn<ASorcSpark1> (x, y, z, ALLOW_REPLACE);
mo = Spawn("SorcSpark1", x, y, z, ALLOW_REPLACE);
if (mo)
{
rangle = angle + ((pr_heresiarch()%5) << 1);
@ -1196,21 +754,21 @@ void A_SorcFX2Split(AActor *actor)
{
AActor *mo;
mo = Spawn<ASorcFX2> (actor->x, actor->y, actor->z, NO_REPLACE);
mo = Spawn(actor->GetClass(), actor->x, actor->y, actor->z, NO_REPLACE);
if (mo)
{
mo->target = actor->target;
mo->args[0] = 0; // CW
mo->special1 = actor->angle; // Set angle
mo->SetStateNF (&ASorcFX2::States[S_SORCFX2_ORBIT1]);
mo->SetState (mo->FindState("Orbit"));
}
mo = Spawn<ASorcFX2> (actor->x, actor->y, actor->z, NO_REPLACE);
mo = Spawn(actor->GetClass(), actor->x, actor->y, actor->z, NO_REPLACE);
if (mo)
{
mo->target = actor->target;
mo->args[0] = 1; // CCW
mo->special1 = actor->angle; // Set angle
mo->SetStateNF (&ASorcFX2::States[S_SORCFX2_ORBIT1]);
mo->SetState (mo->FindState("Orbit"));
}
actor->Destroy ();
}
@ -1241,7 +799,7 @@ void A_SorcFX2Orbit (AActor *actor)
if ((parent->health <= 0) || // Sorcerer is dead
(!parent->args[0])) // Time expired
{
actor->SetStateNF (actor->FindState(NAME_Death));
actor->SetState (actor->FindState(NAME_Death));
parent->args[0] = 0;
parent->flags2 &= ~MF2_REFLECTIVE;
parent->flags2 &= ~MF2_INVULNERABLE;
@ -1249,7 +807,7 @@ void A_SorcFX2Orbit (AActor *actor)
if (actor->args[0] && (parent->args[0]-- <= 0)) // Time expired
{
actor->SetStateNF (actor->FindState(NAME_Death));
actor->SetState (actor->FindState(NAME_Death));
parent->args[0] = 0;
parent->flags2 &= ~MF2_REFLECTIVE;
}
@ -1264,7 +822,7 @@ void A_SorcFX2Orbit (AActor *actor)
z = parent->z - parent->floorclip + SORC_DEFENSE_HEIGHT*FRACUNIT;
z += FixedMul(15*FRACUNIT,finecosine[angle]);
// Spawn trailer
Spawn<ASorcFX2T1> (x, y, z, ALLOW_REPLACE);
Spawn("SorcFX2T1", x, y, z, ALLOW_REPLACE);
}
else // Clock wise
{
@ -1275,7 +833,7 @@ void A_SorcFX2Orbit (AActor *actor)
z = parent->z - parent->floorclip + SORC_DEFENSE_HEIGHT*FRACUNIT;
z += FixedMul(20*FRACUNIT,finesine[angle]);
// Spawn trailer
Spawn<ASorcFX2T1> (x, y, z, ALLOW_REPLACE);
Spawn("SorcFX2T1", x, y, z, ALLOW_REPLACE);
}
actor->SetOrigin (x, y, z);
@ -1319,7 +877,7 @@ void A_SpawnBishop(AActor *actor)
void A_SorcererBishopEntry(AActor *actor)
{
Spawn<ASorcFX3Explosion> (actor->x, actor->y, actor->z, ALLOW_REPLACE);
Spawn("SorcFX3Explosion", actor->x, actor->y, actor->z, ALLOW_REPLACE);
S_Sound (actor, CHAN_VOICE, actor->SeeSound, 1, ATTN_NORM);
}
@ -1335,7 +893,7 @@ void A_SorcFX4Check(AActor *actor)
{
if (actor->special2-- <= 0)
{
actor->SetStateNF (actor->FindState(NAME_Death));
actor->SetState (actor->FindState(NAME_Death));
}
}

View File

@ -0,0 +1,336 @@
// The Heresiarch him/itself ------------------------------------------------
ACTOR Heresiarch 10080 native
{
Health 5000
Painchance 10
Speed 16
Radius 40
Height 110
Mass 500
Damage 9
Monster
+FLOORCLIP
+BOSS
+DONTMORPH
+NOTARGET
+NOICEDEATH
+DEFLECT
SeeSound "SorcererSight"
PainSound "SorcererPain"
DeathSound "SorcererDeathScream"
ActiveSound "SorcererActive"
Obituary "$OB_HERESIARCH"
action native A_SorcSpinBalls();
action native A_SpeedBalls();
action native A_SlowBalls();
action native A_StopBalls();
action native A_SorcBossAttack();
action native A_SpawnFizzle();
States
{
Spawn:
SORC A 3
SORC A 2 A_SorcSpinBalls
Idle:
SORC A 10 A_Look
Wait
See:
SORC ABCD 5 A_Chase
Loop
Pain:
SORC G 8
SORC G 8 A_Pain
Goto See
Missile:
SORC F 6 Bright A_FaceTarget
SORC F 6 Bright A_SpeedBalls
SORC F 6 Bright A_FaceTarget
Wait
Attack1:
SORC E 6 Bright
SORC E 6 Bright A_SpawnFizzle
SORC E 5 Bright A_FaceTarget
Goto Attack1+1
Attack2:
SORC E 2 Bright
SORC E 2 Bright A_SorcBossAttack
Goto See
Death:
SORC H 5 Bright
SORC I 5 Bright A_FaceTarget
SORC J 5 Bright A_Scream
SORC KLMNOPQRST 5 Bright
SORC U 5 Bright A_NoBlocking
SORC VWXY 5 Bright
SORC Z -1 Bright
Stop
}
}
// Base class for the balls flying around the Heresiarch's head -------------
ACTOR SorcBall native
{
Speed 10
Radius 5
Height 5
Projectile
-ACTIVATEIMPACT
-ACTIVATEPCROSS
+FULLVOLDEATH
+CANBOUNCEWATER
+NOBOUNCESOUND
+HEXENBOUNCE
SeeSound "SorcererBallBounce"
DeathSound "SorcererBigBallExplode"
action native A_SorcBallOrbit();
action native A_AccelBalls();
action native A_DecelBalls();
action native A_SorcOffense2();
action native A_SorcBallPop();
action native A_BounceCheck ();
}
// First ball (purple) - fires projectiles ----------------------------------
ACTOR SorcBall1 : SorcBall native
{
States
{
Spawn:
SBMP ABCDEFGHIJKLMNOP 2 A_SorcBallOrbit
Loop
Pain:
SBMP A 5 A_SorcBallPop
SBMP B 2 A_BounceCheck
Wait
Death:
SBS4 D 5 A_Explode(255,255)
SBS4 E 5
SBS4 FGH 6
Stop
}
}
// Second ball (blue) - generates the shield --------------------------------
ACTOR SorcBall2 : SorcBall native
{
States
{
Spawn:
SBMB ABCDEFGHIJKLMNOP 2 A_SorcBallOrbit
Loop
Pain:
SBMB A 5 A_SorcBallPop
SBMB B 2 A_BounceCheck
Wait
Death:
SBS3 D 5 A_Explode(255,255)
SBS3 E 5
SBS3 FGH 6
Stop
}
}
// Third ball (green) - summons Bishops -------------------------------------
ACTOR SorcBall3 : SorcBall native
{
States
{
Spawn:
SBMG ABCDEFGHIJKLMNOP 2 A_SorcBallOrbit
Loop
Pain:
SBMG A 5 A_SorcBallPop
SBMG B 2 A_BounceCheck
Wait
Death:
SBS3 D 5 A_Explode(255,255)
SBS3 E 5
SBS3 FGH 6
Stop
}
}
// Sorcerer spell 1 (The burning, bouncing head thing) ----------------------
ACTOR SorcFX1
{
Speed 7
Radius 5
Height 5
Projectile
-ACTIVATEIMPACT
-ACTIVATEPCROSS
-NOGRAVITY
+FULLVOLDEATH
+CANBOUNCEWATER
+NOWALLBOUNCESND
BounceFactor 1.0
+HEXENBOUNCE
SeeSound "SorcererBallBounce"
DeathSound "SorcererHeadScream"
action native A_SorcFX1Seek();
States
{
Spawn:
SBS1 A 2 Bright
SBS1 BCD 3 Bright A_SorcFX1Seek
Loop
Death:
FHFX S 2 Bright A_Explode(30)
FHFX SS 6 Bright
Stop
}
}
// Sorcerer spell 2 (The visible part of the shield) ------------------------
ACTOR SorcFX2
{
Speed 15
Radius 5
Height 5
+NOBLOCKMAP
+NOGRAVITY
+NOTELEPORT
action native A_SorcFX2Split();
action native A_SorcFX2Orbit ();
states
{
Spawn:
SBS2 A 3 Bright A_SorcFX2Split
Loop
Orbit:
SBS2 A 2 Bright
SBS2 BCDEFGHIJKLMNOPA 2 Bright A_SorcFX2Orbit
Goto Orbit+1
Death:
SBS2 A 10
Stop
}
}
// The translucent trail behind SorcFX2 -------------------------------------
ACTOR SorcFX2T1 : SorcFX2
{
RenderStyle Translucent
Alpha 0.4
States
{
Spawn:
Goto Death
}
}
// Sorcerer spell 3 (The Bishop spawner) ------------------------------------
ACTOR SorcFX3
{
Speed 15
Radius 22
Height 65
+NOBLOCKMAP
+MISSILE
+NOTELEPORT
SeeSound "SorcererBishopSpawn"
action native A_SpawnBishop();
action native A_SorcererBishopEntry();
States
{
Spawn:
SBS3 ABC 2 Bright
Loop
Death:
SBS3 A 4 Bright
BISH P 4 A_SorcererBishopEntry
BISH ON 4
BISH MLKJIH 3
BISH G 3 A_SpawnBishop
Stop
}
}
// The Bishop spawner's explosion animation ---------------------------------
ACTOR SorcFX3Explosion
{
+NOBLOCKMAP
+MISSILE
+NOTELEPORT
RenderStyle Translucent
Alpha 0.4
States
{
Spawn:
SBS3 DEFGH 3
Stop
}
}
// Sorcerer spell 4 (The purple projectile) ---------------------------------
ACTOR SorcFX4
{
Speed 12
Radius 10
Height 10
Projectile
-ACTIVATEIMPACT
-ACTIVATEPCROSS
DeathSound "SorcererBallExplode"
action native A_SorcFX4Check();
States
{
Spawn:
SBS4 ABC 2 Bright A_SorcFX4Check
Loop
Death:
SBS4 D 2 Bright
SBS4 E 2 Bright A_Explode(20)
SBS4 FGH 2 Bright
Stop
}
}
// Spark that appears when shooting SorcFX4 ---------------------------------
ACTOR SorcSpark1
{
Radius 5
Height 5
Gravity 0.125
+NOBLOCKMAP
+DROPOFF
+NOTELEPORT
RenderStyle Add
States
{
Spawn:
SBFX ABCDEFG 4 Bright
Stop
}
}

View File

@ -131,6 +131,7 @@
#include "actors/hexen/serpent.txt"
#include "actors/hexen/spike.txt"
#include "actors/hexen/wraith.txt"
#include "actors/hexen/heresiarch.txt"
#include "actors/strife/strifehumanoid.txt"
#include "actors/strife/strifeplayer.txt"

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Version="8,00"
Name="zdoom"
ProjectGUID="{8049475B-5C87-46F9-9358-635218A4EF18}"
RootNamespace=" zdoom"
@ -138,6 +138,112 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
Description="Checking svnrevision.h..."
CommandLine="$(OutDir)\updaterevision.exe src src/svnrevision.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Debug/zdoom.tlb"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="src\win32;src\sound;src;zlib;src\g_shared;src\g_doom;src\g_raven;src\g_heretic;src\g_hexen;src\g_strife;jpeg-6b;snes_spc\snes_spc;gdtoa"
PreprocessorDefinitions="WIN32,_DEBUG,_WIN32,_WINDOWS,_CRTDBG_MAP_ALLOC,HAVE_STRUPR,HAVE_FILELENGTH"
MinimalRebuild="true"
RuntimeLibrary="1"
EnableFunctionLevelLinking="true"
ForceConformanceInForLoopScope="true"
PrecompiledHeaderFile=""
AssemblerOutput="0"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
CompileAs="0"
DisableSpecificWarnings="4996"
ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="gdi32.lib user32.lib comctl32.lib shell32.lib advapi32.lib comdlg32.lib ole32.lib dxguid.lib dsound.lib dinput8.lib strmiids.lib wsock32.lib winmm.lib fmodex_vc.lib setupapi.lib ws2_32.lib"
OutputFile="../zdoomd.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames="libcmt;msvcrtd;msvcrt"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/zdoomd.pdb"
SubSystem="2"
StackReserveSize="0"
TerminalServerAware="2"
SetChecksum="false"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@ -249,112 +355,6 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
Description="Checking svnrevision.h..."
CommandLine="$(OutDir)\updaterevision.exe src src/svnrevision.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Debug/zdoom.tlb"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="src\win32;src\sound;src;zlib;src\g_shared;src\g_doom;src\g_raven;src\g_heretic;src\g_hexen;src\g_strife;jpeg-6b;snes_spc\snes_spc;gdtoa"
PreprocessorDefinitions="WIN32,_DEBUG,_WIN32,_WINDOWS,_CRTDBG_MAP_ALLOC,HAVE_STRUPR,HAVE_FILELENGTH"
MinimalRebuild="true"
RuntimeLibrary="1"
EnableFunctionLevelLinking="true"
ForceConformanceInForLoopScope="true"
PrecompiledHeaderFile=""
AssemblerOutput="0"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
CompileAs="0"
DisableSpecificWarnings="4996"
ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="gdi32.lib user32.lib comctl32.lib shell32.lib advapi32.lib comdlg32.lib ole32.lib dxguid.lib dsound.lib dinput8.lib strmiids.lib wsock32.lib winmm.lib fmodex_vc.lib setupapi.lib ws2_32.lib"
OutputFile="../zdoomd.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames="libcmt;msvcrtd;msvcrt"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/zdoomd.pdb"
SubSystem="2"
StackReserveSize="0"
TerminalServerAware="2"
SetChecksum="false"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@ -933,16 +933,6 @@
Outputs="&quot;src/$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating $(InputName).h from src/$(InputFileName)"
CommandLine="tools\re2c\re2c -s -o &quot;src/$(InputName).h&quot; &quot;src/$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="&quot;src/$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
@ -953,6 +943,16 @@
Outputs="&quot;src/$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating $(InputName).h from src/$(InputFileName)"
CommandLine="tools\re2c\re2c -s -o &quot;src/$(InputName).h&quot; &quot;src/$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="&quot;src/$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
@ -1558,6 +1558,16 @@
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
@ -1569,16 +1579,6 @@
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
@ -1604,6 +1604,16 @@
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
@ -1615,16 +1625,6 @@
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
@ -1650,6 +1650,16 @@
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
@ -1661,16 +1671,6 @@
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
@ -1696,6 +1696,16 @@
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
@ -1707,16 +1717,6 @@
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
@ -1742,6 +1742,16 @@
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
@ -1753,16 +1763,6 @@
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -g -o &quot;$(IntDir)\$(InputName).obj&quot; -f win32 &quot;$(InputPath)&quot; -isrc/&#x0D;&#x0A;$(OutDir)\fixrtext &quot;$(IntDir)\$(InputName).obj&quot;&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
@ -1790,6 +1790,14 @@
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
@ -1800,14 +1808,6 @@
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
@ -1973,14 +1973,6 @@
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
@ -1991,6 +1983,14 @@
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
@ -2860,14 +2860,6 @@
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
@ -2877,6 +2869,14 @@
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
@ -3151,7 +3151,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3159,7 +3159,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3191,7 +3191,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3199,7 +3199,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3228,7 +3228,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3237,7 +3237,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3267,7 +3267,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3275,7 +3275,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3304,7 +3304,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3313,7 +3313,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3344,7 +3344,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3353,7 +3353,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3383,7 +3383,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3391,7 +3391,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3420,7 +3420,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3429,7 +3429,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3460,7 +3460,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3469,7 +3469,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3500,7 +3500,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3509,7 +3509,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3539,7 +3539,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3547,7 +3547,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3575,7 +3575,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3583,7 +3583,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3611,7 +3611,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3619,7 +3619,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3647,7 +3647,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3655,7 +3655,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3685,7 +3685,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3695,7 +3695,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3739,7 +3739,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
@ -3747,7 +3747,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
@ -3781,7 +3781,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
@ -3791,7 +3791,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"