- DECORATE related Hexen fixes.

SVN r1153 (trunk)
This commit is contained in:
Christoph Oelckers 2008-08-11 19:18:48 +00:00
parent d533f839dd
commit 81132c809f
23 changed files with 83 additions and 84 deletions

View file

@ -15,12 +15,6 @@
static FRandom pr_staffcheck ("CStaffCheck"); static FRandom pr_staffcheck ("CStaffCheck");
static FRandom pr_blink ("CStaffBlink"); static FRandom pr_blink ("CStaffBlink");
void A_CStaffInitBlink (AActor *actor);
void A_CStaffCheckBlink (AActor *actor);
void A_CStaffCheck (AActor *actor);
void A_CStaffAttack (AActor *actor);
void A_CStaffMissileSlither (AActor *);
// Serpent Staff Missile ---------------------------------------------------- // Serpent Staff Missile ----------------------------------------------------
class ACStaffMissile : public AActor class ACStaffMissile : public AActor

View file

@ -21,28 +21,6 @@ static FRandom pr_firedemonsplotch ("FiredSplotch");
// special2 whether strafing or not // special2 whether strafing or not
//============================================================================ //============================================================================
void A_FiredRocks (AActor *);
void A_FiredSpawnRock (AActor *);
void A_SmBounce (AActor *);
void A_FiredChase (AActor *);
void A_FiredAttack (AActor *);
void A_FiredSplotch (AActor *);
//============================================================================
//
// A_FiredRocks
//
//============================================================================
DEFINE_ACTION_FUNCTION(AActor, A_FiredRocks)
{
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
}
//============================================================================ //============================================================================
// //
// A_FiredSpawnRock // A_FiredSpawnRock
@ -93,6 +71,21 @@ void A_FiredSpawnRock (AActor *actor)
actor->flags &= ~MF_JUSTATTACKED; actor->flags &= ~MF_JUSTATTACKED;
} }
//============================================================================
//
// A_FiredRocks
//
//============================================================================
DEFINE_ACTION_FUNCTION(AActor, A_FiredRocks)
{
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
A_FiredSpawnRock (self);
}
//============================================================================ //============================================================================
// //
// A_SmBounce // A_SmBounce

View file

@ -25,11 +25,11 @@ static FRandom pr_fogspawn ("FogSpawn");
DEFINE_ACTION_FUNCTION(AActor, A_FogSpawn) DEFINE_ACTION_FUNCTION(AActor, A_FogSpawn)
{ {
static const PClass *fogs[3] = static const char *fogs[3] =
{ {
PClass::FindClass ("FogPatchSmall"), "FogPatchSmall",
PClass::FindClass ("FogPatchMedium"), "FogPatchMedium",
PClass::FindClass ("FogPatchLarge") "FogPatchLarge"
}; };
AActor *mo=NULL; AActor *mo=NULL;

View file

@ -48,11 +48,11 @@
#define BALL2_ANGLEOFFSET (ANGLE_MAX/3) #define BALL2_ANGLEOFFSET (ANGLE_MAX/3)
#define BALL3_ANGLEOFFSET ((ANGLE_MAX/3)*2) #define BALL3_ANGLEOFFSET ((ANGLE_MAX/3)*2)
DECLARE_ACTION(A_SlowBalls) void A_SlowBalls (AActor *actor);
DECLARE_ACTION(A_StopBalls) void A_StopBalls (AActor *actor);
DECLARE_ACTION(A_AccelBalls) void A_AccelBalls (AActor *actor);
DECLARE_ACTION(A_DecelBalls) void A_DecelBalls (AActor *actor);
DECLARE_ACTION(A_SorcOffense2) void A_SorcOffense2 (AActor *actor);
void A_DoBounceCheck (AActor *actor, const char *sound); void A_DoBounceCheck (AActor *actor, const char *sound);
static FRandom pr_heresiarch ("Heresiarch"); static FRandom pr_heresiarch ("Heresiarch");
@ -234,7 +234,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SorcSpinBalls)
fixed_t z; fixed_t z;
self->SpawnState += 2; // [RH] Don't spawn balls again self->SpawnState += 2; // [RH] Don't spawn balls again
CALL_ACTION(A_SlowBalls, self); A_SlowBalls(self);
self->args[0] = 0; // Currently no defense self->args[0] = 0; // Currently no defense
self->args[3] = SORC_NORMAL; self->args[3] = SORC_NORMAL;
self->args[4] = SORCBALL_INITIAL_SPEED; // Initial orbit speed self->args[4] = SORCBALL_INITIAL_SPEED; // Initial orbit speed
@ -301,12 +301,12 @@ DEFINE_ACTION_FUNCTION(AActor, A_SorcBallOrbit)
break; break;
case SORC_DECELERATE: // Balls decelerating case SORC_DECELERATE: // Balls decelerating
CALL_ACTION(A_DecelBalls, actor); A_DecelBalls(actor);
actor->SorcUpdateBallAngle (); actor->SorcUpdateBallAngle ();
break; break;
case SORC_ACCELERATE: // Balls accelerating case SORC_ACCELERATE: // Balls accelerating
CALL_ACTION(A_AccelBalls, actor); A_AccelBalls(actor);
actor->SorcUpdateBallAngle (); actor->SorcUpdateBallAngle ();
break; break;
@ -352,7 +352,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SorcBallOrbit)
else else
{ {
// Do rapid fire spell // Do rapid fire spell
CALL_ACTION(A_SorcOffense2, actor); A_SorcOffense2(actor);
} }
} }
break; break;
@ -395,14 +395,14 @@ DEFINE_ACTION_FUNCTION(AActor, A_SpeedBalls)
// //
// A_SlowBalls // A_SlowBalls
// //
// Set balls to slow mode - self is sorcerer // Set balls to slow mode - actor is sorcerer
// //
//============================================================================ //============================================================================
DEFINE_ACTION_FUNCTION(AActor, A_SlowBalls) void A_SlowBalls(AActor *actor)
{ {
self->args[3] = SORC_DECELERATE; // slow mode actor->args[3] = SORC_DECELERATE; // slow mode
self->args[2] = SORCBALL_INITIAL_SPEED; // target speed actor->args[2] = SORCBALL_INITIAL_SPEED; // target speed
} }
//============================================================================ //============================================================================
@ -414,9 +414,9 @@ DEFINE_ACTION_FUNCTION(AActor, A_SlowBalls)
// //
//============================================================================ //============================================================================
DEFINE_ACTION_FUNCTION(AActor, A_StopBalls) void A_StopBalls(AActor *scary)
{ {
AHeresiarch *actor = static_cast<AHeresiarch *> (self); AHeresiarch *actor = static_cast<AHeresiarch *> (scary);
int chance = pr_heresiarch(); int chance = pr_heresiarch();
actor->args[3] = SORC_STOPPING; // stopping mode actor->args[3] = SORC_STOPPING; // stopping mode
actor->args[1] = 0; // Reset rotation counter actor->args[1] = 0; // Reset rotation counter
@ -440,13 +440,13 @@ DEFINE_ACTION_FUNCTION(AActor, A_StopBalls)
// //
// A_AccelBalls // A_AccelBalls
// //
// Increase ball orbit speed - self is ball // Increase ball orbit speed - actor is ball
// //
//============================================================================ //============================================================================
DEFINE_ACTION_FUNCTION(AActor, A_AccelBalls) void A_AccelBalls(AActor *actor)
{ {
AActor *sorc = self->target; AActor *sorc = actor->target;
if (sorc->args[4] < sorc->args[2]) if (sorc->args[4] < sorc->args[2])
{ {
@ -458,7 +458,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_AccelBalls)
if (sorc->args[4] >= SORCBALL_TERMINAL_SPEED) if (sorc->args[4] >= SORCBALL_TERMINAL_SPEED)
{ {
// Reached terminal velocity - stop balls // Reached terminal velocity - stop balls
CALL_ACTION(A_StopBalls, sorc); A_StopBalls(sorc);
} }
} }
} }
@ -467,13 +467,13 @@ DEFINE_ACTION_FUNCTION(AActor, A_AccelBalls)
// //
// A_DecelBalls // A_DecelBalls
// //
// Decrease ball orbit speed - self is ball // Decrease ball orbit speed - actor is ball
// //
//============================================================================ //============================================================================
DEFINE_ACTION_FUNCTION(AActor, A_DecelBalls) void A_DecelBalls(AActor *actor)
{ {
AActor *sorc = self->target; AActor *sorc = actor->target;
if (sorc->args[4] > sorc->args[2]) if (sorc->args[4] > sorc->args[2])
{ {
@ -640,12 +640,12 @@ void ASorcBall1::CastSorcererSpell ()
// //
//============================================================================ //============================================================================
DEFINE_ACTION_FUNCTION(AActor, A_SorcOffense2) void A_SorcOffense2(AActor *actor)
{ {
angle_t ang1; angle_t ang1;
AActor *mo; AActor *mo;
int delta, index; int delta, index;
AActor *parent = self->target; AActor *parent = actor->target;
AActor *dest = parent->target; AActor *dest = parent->target;
int dist; int dist;
@ -655,11 +655,11 @@ DEFINE_ACTION_FUNCTION(AActor, A_SorcOffense2)
return; return;
} }
index = self->args[4] << 5; index = actor->args[4] << 5;
self->args[4] += 15; actor->args[4] += 15;
delta = (finesine[index])*SORCFX4_SPREAD_ANGLE; delta = (finesine[index])*SORCFX4_SPREAD_ANGLE;
delta = (delta>>FRACBITS)*ANGLE_1; delta = (delta>>FRACBITS)*ANGLE_1;
ang1 = self->angle + delta; ang1 = actor->angle + delta;
mo = P_SpawnMissileAngle(parent, PClass::FindClass("SorcFX4"), ang1, 0); mo = P_SpawnMissileAngle(parent, PClass::FindClass("SorcFX4"), ang1, 0);
if (mo) if (mo)
{ {

View file

@ -332,7 +332,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_LastZap)
mo = Spawn<ALightningZap> (self->x, self->y, self->z, ALLOW_REPLACE); mo = Spawn<ALightningZap> (self->x, self->y, self->z, ALLOW_REPLACE);
if (mo) if (mo)
{ {
mo->SetState (mo->FindState ("Death")); mo->SetState (mo->FindState (NAME_Death));
mo->momz = 40*FRACUNIT; mo->momz = 40*FRACUNIT;
mo->Damage = 0; mo->Damage = 0;
} }

View file

@ -39,7 +39,7 @@ void APigPlayer::MorphPlayerThink ()
{ // Snout sniff { // Snout sniff
if (player->ReadyWeapon != NULL) if (player->ReadyWeapon != NULL)
{ {
P_SetPspriteNF(player, ps_weapon, player->ReadyWeapon->FindState(NAME_Flash)); P_SetPsprite(player, ps_weapon, player->ReadyWeapon->FindState("Grunt"));
} }
S_Sound (this, CHAN_VOICE, "PigActive1", 1, ATTN_NORM); // snort S_Sound (this, CHAN_VOICE, "PigActive1", 1, ATTN_NORM); // snort
return; return;

View file

@ -18,6 +18,7 @@ static FRandom pr_thrustraise ("ThrustRaise");
class AThrustFloor : public AActor class AThrustFloor : public AActor
{ {
DECLARE_CLASS (AThrustFloor, AActor) DECLARE_CLASS (AThrustFloor, AActor)
HAS_OBJECT_POINTERS
public: public:
void Serialize (FArchive &arc); void Serialize (FArchive &arc);
@ -27,7 +28,9 @@ public:
TObjPtr<AActor> DirtClump; TObjPtr<AActor> DirtClump;
}; };
IMPLEMENT_CLASS (AThrustFloor) IMPLEMENT_POINTY_CLASS (AThrustFloor)
DECLARE_POINTER (DirtClump)
END_POINTERS
void AThrustFloor::Serialize (FArchive &arc) void AThrustFloor::Serialize (FArchive &arc)
{ {

View file

@ -12,7 +12,6 @@ ACTOR ClericBoss 10101
Monster Monster
+FLOORCLIP +TELESTOMP +FLOORCLIP +TELESTOMP
+DONTMORPH +DONTMORPH
-CANUSEWALLS
PainSound "PlayerClericPain" PainSound "PlayerClericPain"
DeathSound "PlayerClericCrazyDeath" DeathSound "PlayerClericCrazyDeath"
Obituary "$OBCBOSS" Obituary "$OBCBOSS"

View file

@ -121,8 +121,9 @@ ACTOR CircleFlame
Radius 6 Radius 6
Damage 2 Damage 2
DamageType "Fire" DamageType "Fire"
+NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE Projectile
+NOTELEPORT -ACTIVATEIMPACT
-ACTIVATEPCROSS
RenderStyle Add RenderStyle Add
DeathSound "ClericFlameCircle" DeathSound "ClericFlameCircle"
@ -165,7 +166,6 @@ ACTOR CFlameMissile native
DamageType "Fire" DamageType "Fire"
Projectile Projectile
+INVISIBLE +INVISIBLE
-BLOODSPLATTER
RenderStyle Add RenderStyle Add
action native A_CFlamePuff(); action native A_CFlamePuff();

View file

@ -13,7 +13,6 @@ ACTOR FighterBoss 10100
+FLOORCLIP +FLOORCLIP
+TELESTOMP +TELESTOMP
+DONTMORPH +DONTMORPH
-CANUSEWALLS
PainSound "PlayerFighterPain" PainSound "PlayerFighterPain"
DeathSound "PlayerFighterCrazyDeath" DeathSound "PlayerFighterCrazyDeath"
Obituary "$OB_FBOSS" Obituary "$OB_FBOSS"

View file

@ -16,7 +16,6 @@ ACTOR FireDemon 10060
Monster Monster
+DROPOFF +NOGRAVITY +FLOAT +DROPOFF +NOGRAVITY +FLOAT
+FLOORCLIP +INVULNERABLE +TELESTOMP +FLOORCLIP +INVULNERABLE +TELESTOMP
-CANUSEWALLS
SeeSound "FireDemonSpawn" SeeSound "FireDemonSpawn"
PainSound "FireDemonPain" PainSound "FireDemonPain"
DeathSound "FireDemonDeath" DeathSound "FireDemonDeath"

View file

@ -192,6 +192,7 @@ ACTOR ZPoisonShroom : PoisonBag 8104
{ {
Spawn: Spawn:
SHRM A 5 A_PoisonShroom SHRM A 5 A_PoisonShroom
Goto Pain+1
Pain: Pain:
SHRM A 6 SHRM A 6
SHRM B 8 A_Pain SHRM B 8 A_Pain

View file

@ -25,8 +25,6 @@ ACTOR Heresiarch 10080 native
action native A_SorcSpinBalls(); action native A_SorcSpinBalls();
action native A_SpeedBalls(); action native A_SpeedBalls();
action native A_SlowBalls();
action native A_StopBalls();
action native A_SorcBossAttack(); action native A_SorcBossAttack();
action native A_SpawnFizzle(); action native A_SpawnFizzle();
@ -83,15 +81,12 @@ ACTOR SorcBall native
-ACTIVATEPCROSS -ACTIVATEPCROSS
+FULLVOLDEATH +FULLVOLDEATH
+CANBOUNCEWATER +CANBOUNCEWATER
+NOBOUNCESOUND +NOWALLBOUNCESND
+HEXENBOUNCE +HEXENBOUNCE
SeeSound "SorcererBallBounce" SeeSound "SorcererBallBounce"
DeathSound "SorcererBigBallExplode" DeathSound "SorcererBigBallExplode"
action native A_SorcBallOrbit(); action native A_SorcBallOrbit();
action native A_AccelBalls();
action native A_DecelBalls();
action native A_SorcOffense2();
action native A_SorcBallPop(); action native A_SorcBallPop();
action native A_BounceCheck (); action native A_BounceCheck ();
} }
@ -110,6 +105,7 @@ ACTOR SorcBall1 : SorcBall native
SBMP B 2 A_BounceCheck SBMP B 2 A_BounceCheck
Wait Wait
Death: Death:
SBS4 D 0 A_ChangeFlag("NOBOUNCESOUND", 1)
SBS4 D 5 A_Explode(255,255) SBS4 D 5 A_Explode(255,255)
SBS4 E 5 SBS4 E 5
SBS4 FGH 6 SBS4 FGH 6
@ -132,6 +128,7 @@ ACTOR SorcBall2 : SorcBall native
SBMB B 2 A_BounceCheck SBMB B 2 A_BounceCheck
Wait Wait
Death: Death:
SBS4 D 0 A_ChangeFlag("NOBOUNCESOUND", 1)
SBS3 D 5 A_Explode(255,255) SBS3 D 5 A_Explode(255,255)
SBS3 E 5 SBS3 E 5
SBS3 FGH 6 SBS3 FGH 6
@ -153,6 +150,7 @@ ACTOR SorcBall3 : SorcBall native
SBMG B 2 A_BounceCheck SBMG B 2 A_BounceCheck
Wait Wait
Death: Death:
SBS4 D 0 A_ChangeFlag("NOBOUNCESOUND", 1)
SBS3 D 5 A_Explode(255,255) SBS3 D 5 A_Explode(255,255)
SBS3 E 5 SBS3 E 5
SBS3 FGH 6 SBS3 FGH 6
@ -189,7 +187,7 @@ ACTOR SorcFX1
SBS1 BCD 3 Bright A_SorcFX1Seek SBS1 BCD 3 Bright A_SorcFX1Seek
Loop Loop
Death: Death:
FHFX S 2 Bright A_Explode(30) FHFX S 2 Bright A_Explode(30, 128)
FHFX SS 6 Bright FHFX SS 6 Bright
Stop Stop
} }
@ -275,7 +273,7 @@ ACTOR SorcFX3
ACTOR SorcFX3Explosion ACTOR SorcFX3Explosion
{ {
+NOBLOCKMAP +NOBLOCKMAP
+MISSILE +NOGRAVITY
+NOTELEPORT +NOTELEPORT
RenderStyle Translucent RenderStyle Translucent
Alpha 0.4 Alpha 0.4
@ -309,7 +307,7 @@ ACTOR SorcFX4
Loop Loop
Death: Death:
SBS4 D 2 Bright SBS4 D 2 Bright
SBS4 E 2 Bright A_Explode(20) SBS4 E 2 Bright A_Explode(20, 128)
SBS4 FGH 2 Bright SBS4 FGH 2 Bright
Stop Stop
} }

View file

@ -15,7 +15,6 @@ ACTOR Korax 10200
+DONTMORPH +DONTMORPH
+NOTARGET +NOTARGET
+NOICEDEATH +NOICEDEATH
+BOSSDEATH
SeeSound "KoraxSight" SeeSound "KoraxSight"
AttackSound "KoraxAttack" AttackSound "KoraxAttack"
PainSound "KoraxPain" PainSound "KoraxPain"

View file

@ -12,7 +12,6 @@ ACTOR MageBoss 10102
Monster Monster
+FLOORCLIP +TELESTOMP +FLOORCLIP +TELESTOMP
+DONTMORPH +DONTMORPH
-CANUSEWALLS
PainSound "PlayerMagePain" PainSound "PlayerMagePain"
DeathSound "PlayerMageCrazyDeath" DeathSound "PlayerMageCrazyDeath"
Obituary "$OB_MBOSS" Obituary "$OB_MBOSS"

View file

@ -79,7 +79,8 @@ ACTOR IceShard : FrostMissile
Game Hexen Game Hexen
SpawnID 65 SpawnID 65
DamageType "Ice" DamageType "Ice"
+NOTELEPORT -ACTIVATEIMPACT
-ACTIVATEPCROSS
States States
{ {
Spawn: Spawn:

View file

@ -130,7 +130,9 @@ ACTOR LightningZap native
Radius 15 Radius 15
Height 35 Height 35
Damage 2 Damage 2
+NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE Projectile
-ACTIVATEIMPACT
-ACTIVATEPCROSS
RenderStyle Add RenderStyle Add
action native A_ZapMimic(); action native A_ZapMimic();

View file

@ -118,7 +118,7 @@ ACTOR MWeapBloodscourge : MageWeapon native
ACTOR MageStaffFX2 native ACTOR MageStaffFX2 native
{ {
Speed 18 Speed 17
Height 8 Height 8
Damage 4 Damage 4
DamageType "Fire" DamageType "Fire"

View file

@ -60,7 +60,9 @@ ACTOR PigPlayer : PlayerPawn native
Radius 16 Radius 16
Height 24 Height 24
Speed 1 Speed 1
+WINDTHRUST
+NOSKIN +NOSKIN
-PICKUP
PainSound "PigPain" PainSound "PigPain"
DeathSound "PigDeath" DeathSound "PigDeath"
Player.JumpZ 6 Player.JumpZ 6

View file

@ -85,6 +85,11 @@ ACTOR ThrustFloorUp : ThrustFloor 10091
SpawnID 104 SpawnID 104
+SOLID +SOLID
+NOTELEPORT +FLOORCLIP +NOTELEPORT +FLOORCLIP
States
{
Spawn:
Goto ThrustInit2
}
} }
// Spike down --------------------------------------------------------------- // Spike down ---------------------------------------------------------------
@ -95,4 +100,9 @@ ACTOR ThrustFloorDown : ThrustFloor 10090
+NOTELEPORT +FLOORCLIP +NOTELEPORT +FLOORCLIP
+INVISIBLE +INVISIBLE
SpawnID 105 SpawnID 105
States
{
Spawn:
Goto ThrustInit1
}
} }

View file

@ -14,7 +14,6 @@ ACTOR Wraith 34
Monster Monster
+NOGRAVITY +DROPOFF +FLOAT +NOGRAVITY +DROPOFF +FLOAT
+FLOORCLIP +TELESTOMP +FLOORCLIP +TELESTOMP
-ACTIVATEIMPACT
SeeSound "WraithSight" SeeSound "WraithSight"
AttackSound "WraithAttack" AttackSound "WraithAttack"
PainSound "WraithPain" PainSound "WraithPain"

View file

@ -63,7 +63,7 @@ ACTOR Minotaur 9 native
Goto See Goto See
HammerLoop: HammerLoop:
MNTR X 12 MNTR X 12
Loop Goto Hammer
Charge: Charge:
MNTR U 2 A_MinotaurCharge MNTR U 2 A_MinotaurCharge
Loop Loop

View file

@ -12,6 +12,7 @@ ACTOR Acolyte : StrifeHumanoid
Monster Monster
+SEESDAGGERS +SEESDAGGERS
+NOSPLASHALERT +NOSPLASHALERT
+FLOORCLIP
MinMissileChance 150 MinMissileChance 150
Tag "ACOLYTE" Tag "ACOLYTE"
SeeSound "acolyte/sight" SeeSound "acolyte/sight"