mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 14:51:40 +00:00
- Added more DECORATE conversions by Karate Chris.
SVN r1106 (trunk)
This commit is contained in:
parent
bf0ee1342c
commit
11fbfc5b1f
18 changed files with 450 additions and 602 deletions
|
@ -1,4 +1,5 @@
|
|||
August 3, 2008 (Changes by Graf Zahl)
|
||||
- Added more DECORATE conversions by Karate Chris.
|
||||
- Cleaned up the new bridge code and exported all related actors to
|
||||
DECORATE so that the exported code pointers can be used.
|
||||
- Separated Heretic's and Hexen's invulnerability items for stability
|
||||
|
|
|
@ -160,6 +160,14 @@ ACTOR(FiredSplotch)
|
|||
ACTOR(SmBounce)
|
||||
ACTOR(FogSpawn)
|
||||
ACTOR(FogMove)
|
||||
ACTOR(Summon)
|
||||
ACTOR(PoisonBagInit)
|
||||
ACTOR(CheckThrowBomb)
|
||||
ACTOR(CheckThrowBomb2)
|
||||
ACTOR(ClassBossHealth)
|
||||
ACTOR(ClericAttack)
|
||||
ACTOR(FighterAttack)
|
||||
ACTOR(MageAttack)
|
||||
|
||||
// Special code pointers for Strife's player - not to be used elsewhere!
|
||||
ACTOR(ItBurnsItBurns)
|
||||
|
|
|
@ -1,138 +0,0 @@
|
|||
#include "actor.h"
|
||||
#include "info.h"
|
||||
#include "p_local.h"
|
||||
#include "s_sound.h"
|
||||
#include "p_enemy.h"
|
||||
#include "a_action.h"
|
||||
#include "m_random.h"
|
||||
|
||||
void A_ClericAttack (AActor *);
|
||||
void A_ClericBurnScream (AActor *);
|
||||
|
||||
// Cleric Boss (Traductus) --------------------------------------------------
|
||||
|
||||
class AClericBoss : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AClericBoss, AActor)
|
||||
};
|
||||
|
||||
FState AClericBoss::States[] =
|
||||
{
|
||||
#define S_CLERIC 0
|
||||
S_NORMAL (CLER, 'A', 2, NULL , &States[S_CLERIC+1]),
|
||||
S_NORMAL (CLER, 'A', 3, A_ClassBossHealth , &States[S_CLERIC+2]),
|
||||
S_NORMAL (CLER, 'A', 5, A_Look , &States[S_CLERIC+2]),
|
||||
|
||||
#define S_CLERIC_RUN1 (S_CLERIC+3)
|
||||
S_NORMAL (CLER, 'A', 4, A_FastChase , &States[S_CLERIC_RUN1+1]),
|
||||
S_NORMAL (CLER, 'B', 4, A_FastChase , &States[S_CLERIC_RUN1+2]),
|
||||
S_NORMAL (CLER, 'C', 4, A_FastChase , &States[S_CLERIC_RUN1+3]),
|
||||
S_NORMAL (CLER, 'D', 4, A_FastChase , &States[S_CLERIC_RUN1]),
|
||||
|
||||
#define S_CLERIC_PAIN (S_CLERIC_RUN1+4)
|
||||
S_NORMAL (CLER, 'H', 4, NULL , &States[S_CLERIC_PAIN+1]),
|
||||
S_NORMAL (CLER, 'H', 4, A_Pain , &States[S_CLERIC_RUN1]),
|
||||
|
||||
#define S_CLERIC_ATK1 (S_CLERIC_PAIN+2)
|
||||
S_NORMAL (CLER, 'E', 8, A_FaceTarget , &States[S_CLERIC_ATK1+1]),
|
||||
S_NORMAL (CLER, 'F', 8, A_FaceTarget , &States[S_CLERIC_ATK1+2]),
|
||||
S_NORMAL (CLER, 'G', 10, A_ClericAttack , &States[S_CLERIC_RUN1]),
|
||||
|
||||
#define S_CLERIC_DIE1 (S_CLERIC_ATK1+3)
|
||||
S_NORMAL (CLER, 'I', 6, NULL , &States[S_CLERIC_DIE1+1]),
|
||||
S_NORMAL (CLER, 'K', 6, A_Scream , &States[S_CLERIC_DIE1+2]),
|
||||
S_NORMAL (CLER, 'L', 6, NULL , &States[S_CLERIC_DIE1+3]),
|
||||
S_NORMAL (CLER, 'L', 6, NULL , &States[S_CLERIC_DIE1+4]),
|
||||
S_NORMAL (CLER, 'M', 6, A_NoBlocking , &States[S_CLERIC_DIE1+5]),
|
||||
S_NORMAL (CLER, 'N', 6, NULL , &States[S_CLERIC_DIE1+6]),
|
||||
S_NORMAL (CLER, 'O', 6, NULL , &States[S_CLERIC_DIE1+7]),
|
||||
S_NORMAL (CLER, 'P', 6, NULL , &States[S_CLERIC_DIE1+8]),
|
||||
S_NORMAL (CLER, 'Q', -1, NULL , NULL),
|
||||
|
||||
#define S_CLERIC_XDIE1 (S_CLERIC_DIE1+9)
|
||||
S_NORMAL (CLER, 'R', 5, A_Scream , &States[S_CLERIC_XDIE1+1]),
|
||||
S_NORMAL (CLER, 'S', 5, NULL , &States[S_CLERIC_XDIE1+2]),
|
||||
S_NORMAL (CLER, 'T', 5, A_NoBlocking , &States[S_CLERIC_XDIE1+3]),
|
||||
S_NORMAL (CLER, 'U', 5, NULL , &States[S_CLERIC_XDIE1+4]),
|
||||
S_NORMAL (CLER, 'V', 5, NULL , &States[S_CLERIC_XDIE1+5]),
|
||||
S_NORMAL (CLER, 'W', 5, NULL , &States[S_CLERIC_XDIE1+6]),
|
||||
S_NORMAL (CLER, 'X', 5, NULL , &States[S_CLERIC_XDIE1+7]),
|
||||
S_NORMAL (CLER, 'Y', 5, NULL , &States[S_CLERIC_XDIE1+8]),
|
||||
S_NORMAL (CLER, 'Z', 5, NULL , &States[S_CLERIC_XDIE1+9]),
|
||||
S_NORMAL (CLER, '[', -1, NULL , NULL),
|
||||
|
||||
#define S_CLERIC_ICE (S_CLERIC_XDIE1+10)
|
||||
S_NORMAL (CLER, '\\', 5, A_FreezeDeath , &States[S_CLERIC_ICE+1]),
|
||||
S_NORMAL (CLER, '\\', 1, A_FreezeDeathChunks , &States[S_CLERIC_ICE+1]),
|
||||
|
||||
#define S_CLERIC_BURN (S_CLERIC_ICE+2)
|
||||
S_BRIGHT (FDTH, 'C', 5, A_ClericBurnScream , &States[S_CLERIC_BURN+1]),
|
||||
S_BRIGHT (FDTH, 'D', 4, NULL , &States[S_CLERIC_BURN+2]),
|
||||
S_BRIGHT (FDTH, 'G', 5, NULL , &States[S_CLERIC_BURN+3]),
|
||||
S_BRIGHT (FDTH, 'H', 4, A_Scream , &States[S_CLERIC_BURN+4]),
|
||||
S_BRIGHT (FDTH, 'I', 5, NULL , &States[S_CLERIC_BURN+5]),
|
||||
S_BRIGHT (FDTH, 'J', 4, NULL , &States[S_CLERIC_BURN+6]),
|
||||
S_BRIGHT (FDTH, 'K', 5, NULL , &States[S_CLERIC_BURN+7]),
|
||||
S_BRIGHT (FDTH, 'L', 4, NULL , &States[S_CLERIC_BURN+8]),
|
||||
S_BRIGHT (FDTH, 'M', 5, NULL , &States[S_CLERIC_BURN+9]),
|
||||
S_BRIGHT (FDTH, 'N', 4, NULL , &States[S_CLERIC_BURN+10]),
|
||||
S_BRIGHT (FDTH, 'O', 5, NULL , &States[S_CLERIC_BURN+11]),
|
||||
S_BRIGHT (FDTH, 'P', 4, NULL , &States[S_CLERIC_BURN+12]),
|
||||
S_BRIGHT (FDTH, 'Q', 5, NULL , &States[S_CLERIC_BURN+13]),
|
||||
S_BRIGHT (FDTH, 'R', 4, NULL , &States[S_CLERIC_BURN+14]),
|
||||
S_BRIGHT (FDTH, 'S', 5, A_NoBlocking , &States[S_CLERIC_BURN+15]),
|
||||
S_BRIGHT (FDTH, 'T', 4, NULL , &States[S_CLERIC_BURN+16]),
|
||||
S_BRIGHT (FDTH, 'U', 5, NULL , &States[S_CLERIC_BURN+17]),
|
||||
S_BRIGHT (FDTH, 'V', 4, NULL , NULL),
|
||||
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AClericBoss, Hexen, 10101, 0)
|
||||
PROP_SpawnHealth (800)
|
||||
PROP_PainChance (50)
|
||||
PROP_SpeedFixed (25)
|
||||
PROP_RadiusFixed (16)
|
||||
PROP_HeightFixed (64)
|
||||
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
|
||||
PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS)
|
||||
PROP_Flags3 (MF3_DONTMORPH)
|
||||
|
||||
PROP_SpawnState (S_CLERIC)
|
||||
PROP_SeeState (S_CLERIC_RUN1)
|
||||
PROP_PainState (S_CLERIC_PAIN)
|
||||
PROP_MeleeState (S_CLERIC_ATK1)
|
||||
PROP_MissileState (S_CLERIC_ATK1)
|
||||
PROP_DeathState (S_CLERIC_DIE1)
|
||||
PROP_XDeathState (S_CLERIC_XDIE1)
|
||||
PROP_BDeathState (S_CLERIC_BURN)
|
||||
PROP_IDeathState (S_CLERIC_ICE)
|
||||
|
||||
PROP_PainSound ("PlayerClericPain")
|
||||
PROP_DeathSound ("PlayerClericCrazyDeath")
|
||||
PROP_Obituary ("$OB_CBOSS")
|
||||
END_DEFAULTS
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_ClericAttack
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_ClericAttack (AActor *actor)
|
||||
{
|
||||
extern void A_CHolyAttack3 (AActor *actor);
|
||||
|
||||
if (!actor->target) return;
|
||||
A_CHolyAttack3 (actor);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_ClericBurnScream
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_ClericBurnScream (AActor *actor)
|
||||
{
|
||||
S_Sound (actor, CHAN_BODY, "PlayerClericBurnDeath", 1, ATTN_NORM);
|
||||
}
|
|
@ -913,3 +913,18 @@ void A_DropWraithvergePieces (AActor *actor)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_ClericAttack
|
||||
// (for the ClericBoss)
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_ClericAttack (AActor *actor)
|
||||
{
|
||||
extern void A_CHolyAttack3 (AActor *actor);
|
||||
|
||||
if (!actor->target) return;
|
||||
A_CHolyAttack3 (actor);
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
#include "actor.h"
|
||||
#include "info.h"
|
||||
#include "p_local.h"
|
||||
#include "s_sound.h"
|
||||
#include "p_enemy.h"
|
||||
#include "a_action.h"
|
||||
#include "m_random.h"
|
||||
|
||||
void A_FighterAttack (AActor *);
|
||||
void A_FighterBurnScream (AActor *);
|
||||
|
||||
// Fighter Boss (Zedek) -----------------------------------------------------
|
||||
|
||||
class AFighterBoss : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AFighterBoss, AActor)
|
||||
};
|
||||
|
||||
FState AFighterBoss::States[] =
|
||||
{
|
||||
#define S_FIGHTER 0
|
||||
S_NORMAL (PLAY, 'A', 2, NULL , &States[S_FIGHTER+1]),
|
||||
S_NORMAL (PLAY, 'A', 3, A_ClassBossHealth , &States[S_FIGHTER+2]),
|
||||
S_NORMAL (PLAY, 'A', 5, A_Look , &States[S_FIGHTER+2]),
|
||||
|
||||
#define S_FIGHTER_RUN1 (S_FIGHTER+3)
|
||||
S_NORMAL (PLAY, 'A', 4, A_FastChase , &States[S_FIGHTER_RUN1+1]),
|
||||
S_NORMAL (PLAY, 'B', 4, A_FastChase , &States[S_FIGHTER_RUN1+2]),
|
||||
S_NORMAL (PLAY, 'C', 4, A_FastChase , &States[S_FIGHTER_RUN1+3]),
|
||||
S_NORMAL (PLAY, 'D', 4, A_FastChase , &States[S_FIGHTER_RUN1]),
|
||||
|
||||
#define S_FIGHTER_PAIN (S_FIGHTER_RUN1+4)
|
||||
S_NORMAL (PLAY, 'G', 4, NULL , &States[S_FIGHTER_PAIN+1]),
|
||||
S_NORMAL (PLAY, 'G', 4, A_Pain , &States[S_FIGHTER_RUN1]),
|
||||
|
||||
#define S_FIGHTER_ATK1 (S_FIGHTER_PAIN+2)
|
||||
S_NORMAL (PLAY, 'E', 8, A_FaceTarget , &States[S_FIGHTER_ATK1+1]),
|
||||
S_NORMAL (PLAY, 'F', 8, A_FighterAttack , &States[S_FIGHTER_RUN1]),
|
||||
|
||||
#define S_FIGHTER_DIE1 (S_FIGHTER_ATK1+2)
|
||||
S_NORMAL (PLAY, 'H', 6, NULL , &States[S_FIGHTER_DIE1+1]),
|
||||
S_NORMAL (PLAY, 'I', 6, A_Scream , &States[S_FIGHTER_DIE1+2]),
|
||||
S_NORMAL (PLAY, 'J', 6, NULL , &States[S_FIGHTER_DIE1+3]),
|
||||
S_NORMAL (PLAY, 'K', 6, NULL , &States[S_FIGHTER_DIE1+4]),
|
||||
S_NORMAL (PLAY, 'L', 6, A_NoBlocking , &States[S_FIGHTER_DIE1+5]),
|
||||
S_NORMAL (PLAY, 'M', 6, NULL , &States[S_FIGHTER_DIE1+6]),
|
||||
S_NORMAL (PLAY, 'N', -1, NULL , NULL),
|
||||
|
||||
#define S_FIGHTER_XDIE1 (S_FIGHTER_DIE1+7)
|
||||
S_NORMAL (PLAY, 'O', 5, A_Scream , &States[S_FIGHTER_XDIE1+1]),
|
||||
S_NORMAL (PLAY, 'P', 5, A_SkullPop , &States[S_FIGHTER_XDIE1+2]),
|
||||
S_NORMAL (PLAY, 'R', 5, A_NoBlocking , &States[S_FIGHTER_XDIE1+3]),
|
||||
S_NORMAL (PLAY, 'S', 5, NULL , &States[S_FIGHTER_XDIE1+4]),
|
||||
S_NORMAL (PLAY, 'T', 5, NULL , &States[S_FIGHTER_XDIE1+5]),
|
||||
S_NORMAL (PLAY, 'U', 5, NULL , &States[S_FIGHTER_XDIE1+6]),
|
||||
S_NORMAL (PLAY, 'V', 5, NULL , &States[S_FIGHTER_XDIE1+7]),
|
||||
S_NORMAL (PLAY, 'W', -1, NULL , NULL),
|
||||
|
||||
#define S_FIGHTER_ICE (S_FIGHTER_XDIE1+8)
|
||||
S_NORMAL (PLAY, 'X', 5, A_FreezeDeath , &States[S_FIGHTER_ICE+1]),
|
||||
S_NORMAL (PLAY, 'X', 1, A_FreezeDeathChunks , &States[S_FIGHTER_ICE+1]),
|
||||
|
||||
#define S_FIGHTER_BURN (S_FIGHTER_ICE+2)
|
||||
S_BRIGHT (FDTH, 'A', 5, A_FighterBurnScream , &States[S_FIGHTER_BURN+1]),
|
||||
S_BRIGHT (FDTH, 'B', 4, NULL , &States[S_FIGHTER_BURN+2]),
|
||||
S_BRIGHT (FDTH, 'G', 5, NULL , &States[S_FIGHTER_BURN+3]),
|
||||
S_BRIGHT (FDTH, 'H', 4, A_Scream , &States[S_FIGHTER_BURN+4]),
|
||||
S_BRIGHT (FDTH, 'I', 5, NULL , &States[S_FIGHTER_BURN+5]),
|
||||
S_BRIGHT (FDTH, 'J', 4, NULL , &States[S_FIGHTER_BURN+6]),
|
||||
S_BRIGHT (FDTH, 'K', 5, NULL , &States[S_FIGHTER_BURN+7]),
|
||||
S_BRIGHT (FDTH, 'L', 4, NULL , &States[S_FIGHTER_BURN+8]),
|
||||
S_BRIGHT (FDTH, 'M', 5, NULL , &States[S_FIGHTER_BURN+9]),
|
||||
S_BRIGHT (FDTH, 'N', 4, NULL , &States[S_FIGHTER_BURN+10]),
|
||||
S_BRIGHT (FDTH, 'O', 5, NULL , &States[S_FIGHTER_BURN+11]),
|
||||
S_BRIGHT (FDTH, 'P', 4, NULL , &States[S_FIGHTER_BURN+12]),
|
||||
S_BRIGHT (FDTH, 'Q', 5, NULL , &States[S_FIGHTER_BURN+13]),
|
||||
S_BRIGHT (FDTH, 'R', 4, NULL , &States[S_FIGHTER_BURN+14]),
|
||||
S_BRIGHT (FDTH, 'S', 5, A_NoBlocking , &States[S_FIGHTER_BURN+15]),
|
||||
S_BRIGHT (FDTH, 'T', 4, NULL , &States[S_FIGHTER_BURN+16]),
|
||||
S_BRIGHT (FDTH, 'U', 5, NULL , &States[S_FIGHTER_BURN+17]),
|
||||
S_BRIGHT (FDTH, 'V', 4, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFighterBoss, Hexen, 10100, 0)
|
||||
PROP_SpawnHealth (800)
|
||||
PROP_PainChance (50)
|
||||
PROP_SpeedFixed (25)
|
||||
PROP_RadiusFixed (16)
|
||||
PROP_HeightFixed (64)
|
||||
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
|
||||
PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS)
|
||||
PROP_Flags3 (MF3_DONTMORPH)
|
||||
|
||||
PROP_SpawnState (S_FIGHTER)
|
||||
PROP_SeeState (S_FIGHTER_RUN1)
|
||||
PROP_PainState (S_FIGHTER_PAIN)
|
||||
PROP_MeleeState (S_FIGHTER_ATK1)
|
||||
PROP_MissileState (S_FIGHTER_ATK1)
|
||||
PROP_DeathState (S_FIGHTER_DIE1)
|
||||
PROP_XDeathState (S_FIGHTER_XDIE1)
|
||||
PROP_IDeathState (S_FIGHTER_ICE)
|
||||
PROP_BDeathState (S_FIGHTER_BURN)
|
||||
|
||||
PROP_PainSound ("PlayerFighterPain")
|
||||
PROP_DeathSound ("PlayerFighterCrazyDeath")
|
||||
PROP_Obituary ("$OB_FBOSS")
|
||||
END_DEFAULTS
|
||||
|
||||
void A_FighterAttack (AActor *actor)
|
||||
{
|
||||
extern void A_FSwordAttack2 (AActor *actor);
|
||||
|
||||
if (!actor->target) return;
|
||||
A_FSwordAttack2 (actor);
|
||||
}
|
||||
|
||||
void A_FighterBurnScream (AActor *actor)
|
||||
{
|
||||
S_Sound (actor, CHAN_BODY, "PlayerFighterBurnDeath", 1, ATTN_NORM);
|
||||
}
|
|
@ -325,24 +325,6 @@ void A_FSwordAttack (AActor *actor)
|
|||
S_Sound (actor, CHAN_WEAPON, "FighterSwordFire", 1, ATTN_NORM);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FSwordAttack2
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_FSwordAttack2 (AActor *actor)
|
||||
{
|
||||
angle_t angle = actor->angle;
|
||||
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle+ANG45/4, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle+ANG45/8, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle-ANG45/8, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle-ANG45/4, 0);
|
||||
S_Sound (actor, CHAN_WEAPON, "FighterSwordFire", 1, ATTN_NORM);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FSwordFlames
|
||||
|
@ -397,3 +379,24 @@ void AFighterWeaponPiece::BeginPlay ()
|
|||
Super::BeginPlay ();
|
||||
FourthWeaponClass = RUNTIME_CLASS(AFWeapQuietus);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FighterAttack
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_FighterAttack (AActor *actor)
|
||||
{
|
||||
if (!actor->target) return;
|
||||
|
||||
angle_t angle = actor->angle;
|
||||
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle+ANG45/4, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle+ANG45/8, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle-ANG45/8, 0);
|
||||
P_SpawnMissileAngle (actor, RUNTIME_CLASS(AFSwordMissile), angle-ANG45/4, 0);
|
||||
S_Sound (actor, CHAN_WEAPON, "FighterSwordFire", 1, ATTN_NORM);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,30 +21,6 @@ void A_PoisonBagCheck (AActor *);
|
|||
void A_CheckThrowBomb (AActor *);
|
||||
void A_CheckThrowBomb2 (AActor *);
|
||||
|
||||
// Poison Bag (Flechette used by Cleric) ------------------------------------
|
||||
|
||||
class APoisonBag : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (APoisonBag, AActor)
|
||||
};
|
||||
|
||||
FState APoisonBag::States[] =
|
||||
{
|
||||
#define S_POISONBAG1 0
|
||||
S_BRIGHT (PSBG, 'A', 18, NULL , &States[S_POISONBAG1+1]),
|
||||
S_BRIGHT (PSBG, 'B', 4, NULL , &States[S_POISONBAG1+2]),
|
||||
S_NORMAL (PSBG, 'C', 3, NULL , &States[S_POISONBAG1+3]),
|
||||
S_NORMAL (PSBG, 'C', 1, A_PoisonBagInit , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APoisonBag, Hexen, -1, 0)
|
||||
PROP_RadiusFixed (5)
|
||||
PROP_HeightFixed (5)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
|
||||
|
||||
PROP_SpawnState (S_POISONBAG1)
|
||||
END_DEFAULTS
|
||||
|
||||
// Fire Bomb (Flechette used by Mage) ---------------------------------------
|
||||
|
||||
class AFireBomb : public AActor
|
||||
|
@ -86,58 +62,6 @@ IMPLEMENT_ACTOR (AFireBomb, Hexen, -1, 0)
|
|||
PROP_DeathSound ("FlechetteExplode")
|
||||
END_DEFAULTS
|
||||
|
||||
// Throwing Bomb (Flechette used by Fighter) --------------------------------
|
||||
|
||||
class AThrowingBomb : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AThrowingBomb, AActor)
|
||||
};
|
||||
|
||||
FState AThrowingBomb::States[] =
|
||||
{
|
||||
#define S_THROWINGBOMB1 0
|
||||
S_NORMAL (THRW, 'A', 4, A_CheckThrowBomb , &States[S_THROWINGBOMB1+1]),
|
||||
S_NORMAL (THRW, 'B', 3, A_CheckThrowBomb , &States[S_THROWINGBOMB1+2]),
|
||||
S_NORMAL (THRW, 'C', 3, A_CheckThrowBomb , &States[S_THROWINGBOMB1+3]),
|
||||
S_NORMAL (THRW, 'D', 3, A_CheckThrowBomb , &States[S_THROWINGBOMB1+4]),
|
||||
S_NORMAL (THRW, 'E', 3, A_CheckThrowBomb , &States[S_THROWINGBOMB1+5]),
|
||||
S_NORMAL (THRW, 'F', 3, A_CheckThrowBomb2 , &States[S_THROWINGBOMB1]),
|
||||
|
||||
#define S_THROWINGBOMB7 (S_THROWINGBOMB1+6)
|
||||
S_NORMAL (THRW, 'G', 6, A_CheckThrowBomb , &States[S_THROWINGBOMB7+1]),
|
||||
S_NORMAL (THRW, 'F', 4, A_CheckThrowBomb , &States[S_THROWINGBOMB7+2]),
|
||||
S_NORMAL (THRW, 'H', 6, A_CheckThrowBomb , &States[S_THROWINGBOMB7+3]),
|
||||
S_NORMAL (THRW, 'F', 4, A_CheckThrowBomb , &States[S_THROWINGBOMB7+4]),
|
||||
S_NORMAL (THRW, 'G', 6, A_CheckThrowBomb , &States[S_THROWINGBOMB7+5]),
|
||||
S_NORMAL (THRW, 'F', 3, A_CheckThrowBomb , &States[S_THROWINGBOMB7+5]),
|
||||
|
||||
#define S_THROWINGBOMB_X1 (S_THROWINGBOMB7+6)
|
||||
S_BRIGHT (CFCF, 'Q', 4, A_NoGravity , &States[S_THROWINGBOMB_X1+1]),
|
||||
S_BRIGHT (CFCF, 'R', 3, A_Scream , &States[S_THROWINGBOMB_X1+2]),
|
||||
S_BRIGHT (CFCF, 'S', 4, A_Explode , &States[S_THROWINGBOMB_X1+3]),
|
||||
S_BRIGHT (CFCF, 'T', 3, NULL , &States[S_THROWINGBOMB_X1+4]),
|
||||
S_BRIGHT (CFCF, 'U', 4, NULL , &States[S_THROWINGBOMB_X1+5]),
|
||||
S_BRIGHT (CFCF, 'W', 3, NULL , &States[S_THROWINGBOMB_X1+6]),
|
||||
S_BRIGHT (CFCF, 'X', 4, NULL , &States[S_THROWINGBOMB_X1+7]),
|
||||
S_BRIGHT (CFCF, 'Z', 3, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AThrowingBomb, Hexen, -1, 0)
|
||||
PROP_SpawnHealth (48)
|
||||
PROP_SpeedFixed (12)
|
||||
PROP_RadiusFixed (8)
|
||||
PROP_HeightFixed (10)
|
||||
PROP_DamageType (NAME_Fire)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_HEXENBOUNCE)
|
||||
|
||||
PROP_SpawnState (S_THROWINGBOMB1)
|
||||
PROP_DeathState (S_THROWINGBOMB_X1)
|
||||
|
||||
PROP_SeeSound ("FlechetteBounce")
|
||||
PROP_DeathSound ("FlechetteExplode")
|
||||
END_DEFAULTS
|
||||
|
||||
// Poison Bag Artifact (Flechette) ------------------------------------------
|
||||
|
||||
class AArtiPoisonBag : public AInventory
|
||||
|
@ -184,7 +108,7 @@ bool AArtiPoisonBag1::Use (bool pickup)
|
|||
angle_t angle = Owner->angle >> ANGLETOFINESHIFT;
|
||||
AActor *mo;
|
||||
|
||||
mo = Spawn<APoisonBag> (
|
||||
mo = Spawn ("PoisonBag",
|
||||
Owner->x+16*finecosine[angle],
|
||||
Owner->y+24*finesine[angle], Owner->z-
|
||||
Owner->floorclip+8*FRACUNIT, ALLOW_REPLACE);
|
||||
|
@ -243,7 +167,7 @@ bool AArtiPoisonBag3::Use (bool pickup)
|
|||
{
|
||||
AActor *mo;
|
||||
|
||||
mo = Spawn<AThrowingBomb> (Owner->x, Owner->y,
|
||||
mo = Spawn ("ThrowingBomb", Owner->x, Owner->y,
|
||||
Owner->z-Owner->floorclip+35*FRACUNIT + (Owner->player? Owner->player->crouchoffset : 0), ALLOW_REPLACE);
|
||||
if (mo)
|
||||
{
|
||||
|
@ -547,7 +471,7 @@ void A_CheckThrowBomb2 (AActor *actor)
|
|||
TMulScale32 (actor->momx, actor->momx, actor->momy, actor->momy, actor->momz, actor->momz)
|
||||
< (3*3)/(2*2))
|
||||
{
|
||||
actor->SetState (&AThrowingBomb::States[S_THROWINGBOMB7]);
|
||||
actor->SetState (actor->SpawnState + 6);
|
||||
actor->z = actor->floorz;
|
||||
actor->momz = 0;
|
||||
actor->flags2 &= ~MF2_BOUNCETYPE;
|
||||
|
|
|
@ -1,134 +0,0 @@
|
|||
#include "actor.h"
|
||||
#include "info.h"
|
||||
#include "p_local.h"
|
||||
#include "s_sound.h"
|
||||
#include "p_enemy.h"
|
||||
#include "a_action.h"
|
||||
|
||||
void A_MageAttack (AActor *);
|
||||
void A_MageBurnScream (AActor *);
|
||||
|
||||
// Mage Boss (Menelkir) -----------------------------------------------------
|
||||
|
||||
class AMageBoss : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AMageBoss, AActor)
|
||||
};
|
||||
|
||||
FState AMageBoss::States[] =
|
||||
{
|
||||
#define S_MAGE 0
|
||||
S_NORMAL (MAGE, 'A', 2, NULL , &States[S_MAGE+1]),
|
||||
S_NORMAL (MAGE, 'A', 3, A_ClassBossHealth , &States[S_MAGE+2]),
|
||||
S_NORMAL (MAGE, 'A', 5, A_Look , &States[S_MAGE+2]),
|
||||
|
||||
#define S_MAGE_RUN1 (S_MAGE+3)
|
||||
S_NORMAL (MAGE, 'A', 4, A_FastChase , &States[S_MAGE_RUN1+1]),
|
||||
S_NORMAL (MAGE, 'B', 4, A_FastChase , &States[S_MAGE_RUN1+2]),
|
||||
S_NORMAL (MAGE, 'C', 4, A_FastChase , &States[S_MAGE_RUN1+3]),
|
||||
S_NORMAL (MAGE, 'D', 4, A_FastChase , &States[S_MAGE_RUN1]),
|
||||
|
||||
#define S_MAGE_PAIN (S_MAGE_RUN1+4)
|
||||
S_NORMAL (MAGE, 'G', 4, NULL , &States[S_MAGE_PAIN+1]),
|
||||
S_NORMAL (MAGE, 'G', 4, A_Pain , &States[S_MAGE_RUN1]),
|
||||
|
||||
#define S_MAGE_ATK1 (S_MAGE_PAIN+2)
|
||||
S_NORMAL (MAGE, 'E', 8, A_FaceTarget , &States[S_MAGE_ATK1+1]),
|
||||
S_BRIGHT (MAGE, 'F', 8, A_MageAttack , &States[S_MAGE_RUN1]),
|
||||
|
||||
#define S_MAGE_DIE1 (S_MAGE_ATK1+2)
|
||||
S_NORMAL (MAGE, 'H', 6, NULL , &States[S_MAGE_DIE1+1]),
|
||||
S_NORMAL (MAGE, 'I', 6, A_Scream , &States[S_MAGE_DIE1+2]),
|
||||
S_NORMAL (MAGE, 'J', 6, NULL , &States[S_MAGE_DIE1+3]),
|
||||
S_NORMAL (MAGE, 'K', 6, NULL , &States[S_MAGE_DIE1+4]),
|
||||
S_NORMAL (MAGE, 'L', 6, A_NoBlocking , &States[S_MAGE_DIE1+5]),
|
||||
S_NORMAL (MAGE, 'M', 6, NULL , &States[S_MAGE_DIE1+6]),
|
||||
S_NORMAL (MAGE, 'N', -1, NULL , NULL),
|
||||
|
||||
#define S_MAGE_XDIE1 (S_MAGE_DIE1+7)
|
||||
S_NORMAL (MAGE, 'O', 5, A_Scream , &States[S_MAGE_XDIE1+1]),
|
||||
S_NORMAL (MAGE, 'P', 5, NULL , &States[S_MAGE_XDIE1+2]),
|
||||
S_NORMAL (MAGE, 'R', 5, A_NoBlocking , &States[S_MAGE_XDIE1+3]),
|
||||
S_NORMAL (MAGE, 'S', 5, NULL , &States[S_MAGE_XDIE1+4]),
|
||||
S_NORMAL (MAGE, 'T', 5, NULL , &States[S_MAGE_XDIE1+5]),
|
||||
S_NORMAL (MAGE, 'U', 5, NULL , &States[S_MAGE_XDIE1+6]),
|
||||
S_NORMAL (MAGE, 'V', 5, NULL , &States[S_MAGE_XDIE1+7]),
|
||||
S_NORMAL (MAGE, 'W', 5, NULL , &States[S_MAGE_XDIE1+8]),
|
||||
S_NORMAL (MAGE, 'X', -1, NULL , NULL),
|
||||
|
||||
#define S_MAGE_ICE (S_MAGE_XDIE1+9)
|
||||
S_NORMAL (MAGE, 'Y', 5, A_FreezeDeath , &States[S_MAGE_ICE+1]),
|
||||
S_NORMAL (MAGE, 'Y', 1, A_FreezeDeathChunks , &States[S_MAGE_ICE+1]),
|
||||
|
||||
#define S_MAGE_BURN (S_MAGE_ICE+2)
|
||||
S_BRIGHT (FDTH, 'E', 5, A_MageBurnScream , &States[S_MAGE_BURN+1]),
|
||||
S_BRIGHT (FDTH, 'F', 4, NULL , &States[S_MAGE_BURN+2]),
|
||||
S_BRIGHT (FDTH, 'G', 5, NULL , &States[S_MAGE_BURN+3]),
|
||||
S_BRIGHT (FDTH, 'H', 4, A_Scream , &States[S_MAGE_BURN+4]),
|
||||
S_BRIGHT (FDTH, 'I', 5, NULL , &States[S_MAGE_BURN+5]),
|
||||
S_BRIGHT (FDTH, 'J', 4, NULL , &States[S_MAGE_BURN+6]),
|
||||
S_BRIGHT (FDTH, 'K', 5, NULL , &States[S_MAGE_BURN+7]),
|
||||
S_BRIGHT (FDTH, 'L', 4, NULL , &States[S_MAGE_BURN+8]),
|
||||
S_BRIGHT (FDTH, 'M', 5, NULL , &States[S_MAGE_BURN+9]),
|
||||
S_BRIGHT (FDTH, 'N', 4, NULL , &States[S_MAGE_BURN+10]),
|
||||
S_BRIGHT (FDTH, 'O', 5, NULL , &States[S_MAGE_BURN+11]),
|
||||
S_BRIGHT (FDTH, 'P', 4, NULL , &States[S_MAGE_BURN+12]),
|
||||
S_BRIGHT (FDTH, 'Q', 5, NULL , &States[S_MAGE_BURN+13]),
|
||||
S_BRIGHT (FDTH, 'R', 4, NULL , &States[S_MAGE_BURN+14]),
|
||||
S_BRIGHT (FDTH, 'S', 5, A_NoBlocking , &States[S_MAGE_BURN+15]),
|
||||
S_BRIGHT (FDTH, 'T', 4, NULL , &States[S_MAGE_BURN+16]),
|
||||
S_BRIGHT (FDTH, 'U', 5, NULL , &States[S_MAGE_BURN+17]),
|
||||
S_BRIGHT (FDTH, 'V', 4, NULL , NULL),
|
||||
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMageBoss, Hexen, 10102, 0)
|
||||
PROP_SpawnHealth (800)
|
||||
PROP_PainChance (50)
|
||||
PROP_SpeedFixed (25)
|
||||
PROP_RadiusFixed (16)
|
||||
PROP_HeightFixed (64)
|
||||
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
|
||||
PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS)
|
||||
PROP_Flags3 (MF3_DONTMORPH)
|
||||
|
||||
PROP_SpawnState (S_MAGE)
|
||||
PROP_SeeState (S_MAGE_RUN1)
|
||||
PROP_PainState (S_MAGE_PAIN)
|
||||
PROP_MeleeState (S_MAGE_ATK1)
|
||||
PROP_MissileState (S_MAGE_ATK1)
|
||||
PROP_DeathState (S_MAGE_DIE1)
|
||||
PROP_XDeathState (S_MAGE_XDIE1)
|
||||
PROP_IDeathState (S_MAGE_ICE)
|
||||
PROP_BDeathState (S_MAGE_BURN)
|
||||
|
||||
PROP_PainSound ("PlayerMagePain")
|
||||
PROP_DeathSound ("PlayerMageCrazyDeath")
|
||||
PROP_Obituary ("$OB_MBOSS")
|
||||
END_DEFAULTS
|
||||
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_MageAttack
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_MageAttack (AActor *actor)
|
||||
{
|
||||
extern void A_MStaffAttack2 (AActor *actor);
|
||||
|
||||
if (!actor->target) return;
|
||||
A_MStaffAttack2 (actor);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_MageBurnScream
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_MageBurnScream (AActor *actor)
|
||||
{
|
||||
S_Sound (actor, CHAN_BODY, "PlayerMageBurnDeath", 1, ATTN_NORM);
|
||||
}
|
|
@ -343,41 +343,6 @@ bool AMageStaffFX2::SpecialBlastHandling (AActor *source, fixed_t strength)
|
|||
|
||||
//============================================================================
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// MStaffSpawn2 - for use by mage class boss
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void MStaffSpawn2 (AActor *actor, angle_t angle)
|
||||
{
|
||||
AActor *mo;
|
||||
|
||||
mo = P_SpawnMissileAngleZ (actor, actor->z+40*FRACUNIT,
|
||||
RUNTIME_CLASS(AMageStaffFX2), angle, 0);
|
||||
if (mo)
|
||||
{
|
||||
mo->target = actor;
|
||||
mo->tracer = P_BlockmapSearch (mo, 10, FrontBlockCheck);
|
||||
}
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_MStaffAttack2 - for use by mage class boss
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_MStaffAttack2 (AActor *actor)
|
||||
{
|
||||
angle_t angle;
|
||||
angle = actor->angle;
|
||||
MStaffSpawn2 (actor, angle);
|
||||
MStaffSpawn2 (actor, angle-ANGLE_1*5);
|
||||
MStaffSpawn2 (actor, angle+ANGLE_1*5);
|
||||
S_Sound (actor, CHAN_WEAPON, "MageStaffFire", 1, ATTN_NORM);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// MStaffSpawn
|
||||
|
@ -534,3 +499,41 @@ static AActor *FrontBlockCheck (AActor *mo, int index)
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// MStaffSpawn2 - for use by mage class boss
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void MStaffSpawn2 (AActor *actor, angle_t angle)
|
||||
{
|
||||
AActor *mo;
|
||||
|
||||
mo = P_SpawnMissileAngleZ (actor, actor->z+40*FRACUNIT,
|
||||
RUNTIME_CLASS(AMageStaffFX2), angle, 0);
|
||||
if (mo)
|
||||
{
|
||||
mo->target = actor;
|
||||
mo->tracer = P_BlockmapSearch (mo, 10, FrontBlockCheck);
|
||||
}
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_MStaffAttack2 - for use by mage class boss
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_MageAttack (AActor *actor)
|
||||
{
|
||||
if (!actor->target) return;
|
||||
|
||||
angle_t angle;
|
||||
angle = actor->angle;
|
||||
MStaffSpawn2 (actor, angle);
|
||||
MStaffSpawn2 (actor, angle-ANGLE_1*5);
|
||||
MStaffSpawn2 (actor, angle+ANGLE_1*5);
|
||||
S_Sound (actor, CHAN_WEAPON, "MageStaffFire", 1, ATTN_NORM);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,70 +37,6 @@ IMPLEMENT_ACTOR (AArtiDarkServant, Hexen, 86, 16)
|
|||
PROP_Inventory_PickupMessage("$TXT_ARTISUMMON")
|
||||
END_DEFAULTS
|
||||
|
||||
// Summoning Doll -----------------------------------------------------------
|
||||
|
||||
class ASummoningDoll : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (ASummoningDoll, AActor)
|
||||
};
|
||||
|
||||
FState ASummoningDoll::States[] =
|
||||
{
|
||||
#define S_SUMMON_FX1_1 0
|
||||
S_NORMAL (SUMN, 'A', 4, NULL , &States[S_SUMMON_FX1_1]),
|
||||
|
||||
#define S_SUMMON_FX2_1 (S_SUMMON_FX1_1+1)
|
||||
S_NORMAL (SUMN, 'A', 4, NULL , &States[S_SUMMON_FX2_1+1]),
|
||||
S_NORMAL (SUMN, 'A', 4, NULL , &States[S_SUMMON_FX2_1+2]),
|
||||
S_NORMAL (SUMN, 'A', 4, A_Summon , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (ASummoningDoll, Hexen, -1, 0)
|
||||
PROP_SpeedFixed (20)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT)
|
||||
|
||||
PROP_SpawnState (S_SUMMON_FX1_1)
|
||||
PROP_DeathState (S_SUMMON_FX2_1)
|
||||
END_DEFAULTS
|
||||
|
||||
// Minotaur Smoke -----------------------------------------------------------
|
||||
|
||||
class AMinotaurSmoke : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AMinotaurSmoke, AActor)
|
||||
};
|
||||
|
||||
FState AMinotaurSmoke::States[] =
|
||||
{
|
||||
S_NORMAL (MNSM, 'A', 3, NULL , &States[1]),
|
||||
S_NORMAL (MNSM, 'B', 3, NULL , &States[2]),
|
||||
S_NORMAL (MNSM, 'C', 3, NULL , &States[3]),
|
||||
S_NORMAL (MNSM, 'D', 3, NULL , &States[4]),
|
||||
S_NORMAL (MNSM, 'E', 3, NULL , &States[5]),
|
||||
S_NORMAL (MNSM, 'F', 3, NULL , &States[6]),
|
||||
S_NORMAL (MNSM, 'G', 3, NULL , &States[7]),
|
||||
S_NORMAL (MNSM, 'H', 3, NULL , &States[8]),
|
||||
S_NORMAL (MNSM, 'I', 3, NULL , &States[9]),
|
||||
S_NORMAL (MNSM, 'J', 3, NULL , &States[10]),
|
||||
S_NORMAL (MNSM, 'K', 3, NULL , &States[11]),
|
||||
S_NORMAL (MNSM, 'L', 3, NULL , &States[12]),
|
||||
S_NORMAL (MNSM, 'M', 3, NULL , &States[13]),
|
||||
S_NORMAL (MNSM, 'N', 3, NULL , &States[14]),
|
||||
S_NORMAL (MNSM, 'O', 3, NULL , &States[15]),
|
||||
S_NORMAL (MNSM, 'P', 3, NULL , &States[16]),
|
||||
S_NORMAL (MNSM, 'Q', 3, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AMinotaurSmoke, Hexen, -1, 0)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
|
||||
PROP_Flags2 (MF2_NOTELEPORT)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (HX_SHADOW)
|
||||
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
|
@ -110,7 +46,7 @@ END_DEFAULTS
|
|||
|
||||
bool AArtiDarkServant::Use (bool pickup)
|
||||
{
|
||||
AActor *mo = P_SpawnPlayerMissile (Owner, RUNTIME_CLASS(ASummoningDoll));
|
||||
AActor *mo = P_SpawnPlayerMissile (Owner, PClass::FindClass ("SummoningDoll"));
|
||||
if (mo)
|
||||
{
|
||||
mo->target = Owner;
|
||||
|
@ -158,7 +94,7 @@ void A_Summon (AActor *actor)
|
|||
}
|
||||
|
||||
// Make smoke puff
|
||||
Spawn<AMinotaurSmoke> (actor->x, actor->y, actor->z, ALLOW_REPLACE);
|
||||
Spawn ("MinotaurSmoke", actor->x, actor->y, actor->z, ALLOW_REPLACE);
|
||||
S_Sound (actor, CHAN_VOICE, mo->ActiveSound, 1, ATTN_NORM);
|
||||
}
|
||||
}
|
||||
|
|
81
wadsrc/static/actors/hexen/clericboss.txt
Normal file
81
wadsrc/static/actors/hexen/clericboss.txt
Normal file
|
@ -0,0 +1,81 @@
|
|||
|
||||
// Cleric Boss (Traductus) --------------------------------------------------
|
||||
|
||||
ACTOR ClericBoss 10101
|
||||
{
|
||||
Game Hexen
|
||||
Health 800
|
||||
PainChance 50
|
||||
Speed 25
|
||||
Radius 16
|
||||
Height 64
|
||||
Monster
|
||||
+FLOORCLIP +TELESTOMP
|
||||
+DONTMORPH
|
||||
-CANUSEWALLS
|
||||
PainSound "PlayerClericPain"
|
||||
DeathSound "PlayerClericCrazyDeath"
|
||||
Obituary "$OBCBOSS"
|
||||
|
||||
action native A_ClericAttack();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
CLER A 2
|
||||
CLER A 3 A_ClassBossHealth
|
||||
CLER A 5 A_Look
|
||||
Wait
|
||||
See:
|
||||
CLER ABCD 4 A_FastChase
|
||||
Loop
|
||||
Pain:
|
||||
CLER H 4
|
||||
CLER H 4 A_Pain
|
||||
Goto See
|
||||
Melee:
|
||||
Missile:
|
||||
CLER EF 8 A_FaceTarget
|
||||
CLER G 10 A_ClericAttack
|
||||
Goto See
|
||||
Death:
|
||||
CLER I 6
|
||||
CLER K 6 A_Scream
|
||||
CLER LL 6
|
||||
CLER M 6 A_NoBlocking
|
||||
CLER NOP 6
|
||||
CLER Q -1
|
||||
Stop
|
||||
XDeath:
|
||||
CLER R 5 A_Scream
|
||||
CLER S 5
|
||||
CLER T 5 A_NoBlocking
|
||||
CLER UVWXYZ 5
|
||||
CLER "[" -1
|
||||
Stop
|
||||
Ice:
|
||||
CLER "\" 5 A_FreezeDeath
|
||||
CLER "\" 1 A_FreezeDeathChunks
|
||||
Wait
|
||||
Burn:
|
||||
CLER C 5 Bright A_PlaySound("PlayerClericBurnDeath")
|
||||
FDTH D 4 Bright
|
||||
FDTH G 5 Bright
|
||||
FDTH H 4 Bright A_Scream
|
||||
FDTH I 5 Bright
|
||||
FDTH J 4 Bright
|
||||
FDTH K 5 Bright
|
||||
FDTH L 4 Bright
|
||||
FDTH M 5 Bright
|
||||
FDTH N 4 Bright
|
||||
FDTH O 5 Bright
|
||||
FDTH P 4 Bright
|
||||
FDTH Q 5 Bright
|
||||
FDTH R 4 Bright
|
||||
FDTH S 5 Bright A_NoBlocking
|
||||
FDTH T 4 Bright
|
||||
FDTH U 5 Bright
|
||||
FDTH V 4 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
82
wadsrc/static/actors/hexen/fighterboss.txt
Normal file
82
wadsrc/static/actors/hexen/fighterboss.txt
Normal file
|
@ -0,0 +1,82 @@
|
|||
|
||||
// Fighter Boss (Zedek) -----------------------------------------------------
|
||||
|
||||
ACTOR FighterBoss 10100
|
||||
{
|
||||
Game Hexen
|
||||
health 800
|
||||
PainChance 50
|
||||
Speed 25
|
||||
Radius 16
|
||||
Height 64
|
||||
Monster
|
||||
+FLOORCLIP
|
||||
+TELESTOMP
|
||||
+DONTMORPH
|
||||
-CANUSEWALLS
|
||||
PainSound "PlayerFighterPain"
|
||||
DeathSound "PlayerFighterCrazyDeath"
|
||||
Obituary "$OB_FBOSS"
|
||||
|
||||
action native A_FighterAttack();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
PLAY A 2
|
||||
PLAY A 3 A_ClassBossHealth
|
||||
PLAY A 5 A_Look
|
||||
Wait
|
||||
See:
|
||||
PLAY ABCD 4 A_FastChase
|
||||
Loop
|
||||
Pain:
|
||||
PLAY G 4
|
||||
PLAY G 4 A_Pain
|
||||
Goto See
|
||||
Melee:
|
||||
Missile:
|
||||
PLAY E 8 A_FaceTarget
|
||||
PLAY F 8 A_FighterAttack
|
||||
Goto See
|
||||
Death:
|
||||
PLAY H 6
|
||||
PLAY I 6 A_Scream
|
||||
PLAY JK 6
|
||||
PLAY L 6 A_NoBlocking
|
||||
PLAY M 6
|
||||
PLAY N -1
|
||||
Stop
|
||||
XDeath:
|
||||
PLAY O 5 A_Scream
|
||||
PLAY P 5 A_SkullPop
|
||||
PLAY R 5 A_NoBlocking
|
||||
PLAY STUV 5
|
||||
PLAY W -1
|
||||
Stop
|
||||
Ice:
|
||||
PLAY X 5 A_FreezeDeath
|
||||
PLAY X 1 A_FreezeDeathChunks
|
||||
Wait
|
||||
Burn:
|
||||
FDTH A 5 Bright A_PlaySound("PlayerFighterBurnDeath")
|
||||
FDTH B 4 Bright
|
||||
FDTH G 5 Bright
|
||||
FDTH H 4 Bright A_Scream
|
||||
FDTH I 5 Bright
|
||||
FDTH J 4 Bright
|
||||
FDTH K 5 Bright
|
||||
FDTH L 4 Bright
|
||||
FDTH M 5 Bright
|
||||
FDTH N 4 Bright
|
||||
FDTH O 5 Bright
|
||||
FDTH P 4 Bright
|
||||
FDTH Q 5 Bright
|
||||
FDTH R 4 Bright
|
||||
FDTH S 5 Bright A_NoBlocking
|
||||
FDTH T 4 Bright
|
||||
FDTH U 5 Bright
|
||||
FDTH V 4 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
67
wadsrc/static/actors/hexen/flechette.txt
Normal file
67
wadsrc/static/actors/hexen/flechette.txt
Normal file
|
@ -0,0 +1,67 @@
|
|||
|
||||
// Poison Bag (Flechette used by Cleric) ------------------------------------
|
||||
|
||||
ACTOR PoisonBag
|
||||
{
|
||||
Game Hexen
|
||||
Radius 5
|
||||
Height 5
|
||||
+NOBLOCKMAP +NOGRAVITY
|
||||
|
||||
action native A_PoisonBagInit();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
PSBG A 18 Bright
|
||||
PSBG B 4 Bright
|
||||
PSBG C 3
|
||||
PSBG C 1 A_PoisonBagInit
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Throwing Bomb (Flechette used by Fighter) --------------------------------
|
||||
|
||||
ACTOR ThrowingBomb
|
||||
{
|
||||
Game Hexen
|
||||
Health 48
|
||||
Speed 12
|
||||
Radius 8
|
||||
Height 10
|
||||
DamageType "Fire"
|
||||
+NOBLOCKMAP +DROPOFF +MISSILE
|
||||
+HEXENBOUNCE
|
||||
SeeSound "FlechetteBounce"
|
||||
DeathSound "FlechetteExplode"
|
||||
|
||||
action native A_CheckThrowBomb();
|
||||
action native A_CheckThrowBomb2();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
THRW A 4 A_CheckThrowBomb
|
||||
THRW BCDE 3 A_CheckThrowBomb
|
||||
THRW F 3 A_CheckThrowBomb2
|
||||
Loop
|
||||
THRW G 6 A_CheckThrowBomb
|
||||
THRW F 4 A_CheckThrowBomb
|
||||
THRW H 6 A_CheckThrowBomb
|
||||
THRW F 4 A_CheckThrowBomb
|
||||
THRW G 6 A_CheckThrowBomb
|
||||
THRW F 3 A_CheckThrowBomb
|
||||
Wait
|
||||
Death:
|
||||
CFCF Q 4 Bright A_NoGravity
|
||||
CFCF R 3 Bright A_Scream
|
||||
CFCF S 4 Bright A_Explode
|
||||
CFCF T 3 Bright
|
||||
CFCF U 4 Bright
|
||||
CFCF W 3 Bright
|
||||
CFCF X 4 Bright
|
||||
CFCF Z 3 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
85
wadsrc/static/actors/hexen/mageboss.txt
Normal file
85
wadsrc/static/actors/hexen/mageboss.txt
Normal file
|
@ -0,0 +1,85 @@
|
|||
|
||||
// Mage Boss (Menelkir) -----------------------------------------------------
|
||||
|
||||
ACTOR MageBoss 10102
|
||||
{
|
||||
Game Hexen
|
||||
Health 800
|
||||
PainChance 50
|
||||
Speed 25
|
||||
Radius 16
|
||||
Height 64
|
||||
Monster
|
||||
+FLOORCLIP +TELESTOMP
|
||||
+DONTMORPH
|
||||
-CANUSEWALLS
|
||||
PainSound "PlayerMagePain"
|
||||
DeathSound "PlayerMageCrazyDeath"
|
||||
Obituary "$OB_MBOSS"
|
||||
|
||||
action native A_MageAttack();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MAGE A 2
|
||||
MAGE A 3 A_ClassBossHealth
|
||||
MAGE A 5 A_Look
|
||||
Wait
|
||||
See:
|
||||
MAGE ABCD 4 A_FastChase
|
||||
Loop
|
||||
Pain:
|
||||
MAGE G 4
|
||||
MAGE G 4 A_Pain
|
||||
Goto See
|
||||
Melee:
|
||||
Missile:
|
||||
MAGE E 8 A_FaceTarget
|
||||
MAGE F 8 Bright A_MageAttack
|
||||
Goto See
|
||||
Death:
|
||||
MAGE H 6
|
||||
MAGE I 6 A_Scream
|
||||
MAGE JK 6
|
||||
MAGE L 6 A_NoBlocking
|
||||
MAGE M 6
|
||||
MAGE N -1
|
||||
Stop
|
||||
XDeath:
|
||||
MAGE O 5 A_Scream
|
||||
MAGE P 5
|
||||
MAGE R 5 A_NoBlocking
|
||||
MAGE S 5
|
||||
MAGE T 5
|
||||
MAGE U 5
|
||||
MAGE V 5
|
||||
MAGE W 5
|
||||
MAGE X -1
|
||||
Stop
|
||||
Ice:
|
||||
MAGE Y 5 A_FreezeDeath
|
||||
MAGE Y 1 A_FreezeDeathChunks
|
||||
Wait
|
||||
Burn:
|
||||
FDTH E 5 Bright A_PlaySound("PlayerMageBurnDeath")
|
||||
FDTH F 4 Bright
|
||||
FDTH G 5 Bright
|
||||
FDTH H 4 Bright A_Scream
|
||||
FDTH I 5 Bright
|
||||
FDTH J 4 Bright
|
||||
FDTH K 5 Bright
|
||||
FDTH L 4 Bright
|
||||
FDTH M 5 Bright
|
||||
FDTH N 4 Bright
|
||||
FDTH O 5 Bright
|
||||
FDTH P 4 Bright
|
||||
FDTH Q 5 Bright
|
||||
FDTH R 4 Bright
|
||||
FDTH S 5 Bright A_NoBlocking
|
||||
FDTH T 4 Bright
|
||||
FDTH U 5 Bright
|
||||
FDTH V 4 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
41
wadsrc/static/actors/hexen/summon.txt
Normal file
41
wadsrc/static/actors/hexen/summon.txt
Normal file
|
@ -0,0 +1,41 @@
|
|||
|
||||
// Summoning Doll -----------------------------------------------------------
|
||||
|
||||
ACTOR SummoningDoll
|
||||
{
|
||||
Game Hexen
|
||||
Speed 20
|
||||
+NOBLOCKMAP +DROPOFF +MISSILE
|
||||
+NOTELEPORT
|
||||
|
||||
action native A_Summon();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
SUMN A 4
|
||||
Loop
|
||||
Death:
|
||||
SUMN AA 4
|
||||
SUMN A 4 A_Summon
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Minotaur Smoke -----------------------------------------------------------
|
||||
|
||||
ACTOR MinotaurSmoke
|
||||
{
|
||||
Game Hexen
|
||||
+NOBLOCKMAP +NOGRAVITY
|
||||
+NOTELEPORT
|
||||
RenderStyle Translucent
|
||||
Alpha 0.6
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MNSM ABCDEFGHIJKLMNOPQ 3
|
||||
Stop
|
||||
}
|
||||
}
|
|
@ -179,6 +179,7 @@ class Actor extends Thinker
|
|||
action native A_SelectWeapon(class<Weapon> whichweapon);
|
||||
action native A_Punch();
|
||||
action native A_Feathers();
|
||||
action native A_ClassBossHealth();
|
||||
}
|
||||
|
||||
class Inventory extends Actor
|
||||
|
|
|
@ -81,6 +81,11 @@
|
|||
#include "actors/hexen/clericmace.txt"
|
||||
#include "actors/hexen/firedemon.txt"
|
||||
#include "actors/hexen/fog.txt"
|
||||
#include "actors/hexen/summon.txt"
|
||||
#include "actors/hexen/flechette.txt"
|
||||
#include "actors/hexen/clericboss.txt"
|
||||
#include "actors/hexen/fighterboss.txt"
|
||||
#include "actors/hexen/mageboss.txt"
|
||||
|
||||
#include "actors/strife/strifeplayer.txt"
|
||||
#include "actors/strife/beggars.txt"
|
||||
|
|
12
zdoom.vcproj
12
zdoom.vcproj
|
@ -2304,10 +2304,6 @@
|
|||
RelativePath=".\src\g_hexen\a_centaur.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\g_hexen\a_clericboss.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\g_hexen\a_clericflame.cpp"
|
||||
>
|
||||
|
@ -2332,10 +2328,6 @@
|
|||
RelativePath=".\src\g_hexen\a_fighteraxe.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\g_hexen\a_fighterboss.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\g_hexen\a_fighterhammer.cpp"
|
||||
>
|
||||
|
@ -2384,10 +2376,6 @@
|
|||
RelativePath=".\src\g_hexen\a_korax.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\g_hexen\a_mageboss.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\g_hexen\a_magecone.cpp"
|
||||
>
|
||||
|
|
Loading…
Reference in a new issue