mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
- Added more DECORATE conversions by Karate Chris.
SVN r1128 (trunk)
This commit is contained in:
parent
f442e75dfa
commit
6ab69165c7
16 changed files with 530 additions and 1805 deletions
|
@ -205,7 +205,7 @@ ACTOR(MinotaurRoam)
|
|||
ACTOR(MinotaurChase)
|
||||
ACTOR(MinotaurDeath)
|
||||
|
||||
|
||||
// Hexen stuff
|
||||
ACTOR(BatSpawnInit)
|
||||
ACTOR(BatSpawn)
|
||||
ACTOR(BatMove)
|
||||
|
@ -255,6 +255,18 @@ ACTOR(FiredSplotch)
|
|||
ACTOR(SmBounce)
|
||||
ACTOR(FogSpawn)
|
||||
ACTOR(FogMove)
|
||||
WEAPON(FPunchAttack)
|
||||
WEAPON(FAxeCheckUp)
|
||||
WEAPON(FAxeCheckReady)
|
||||
WEAPON(FAxeCheckAtk)
|
||||
WEAPON(FAxeAttack)
|
||||
WEAPON(FAxeCheckUpG)
|
||||
WEAPON(FAxeCheckReadyG)
|
||||
WEAPON(FHammerAttack)
|
||||
WEAPON(FHammerThrow)
|
||||
ACTOR(DropQuietusPieces)
|
||||
WEAPON(FSwordAttack)
|
||||
WEAPON(FSwordFlames)
|
||||
ACTOR(Summon)
|
||||
ACTOR(PoisonBagInit)
|
||||
ACTOR(CheckThrowBomb)
|
||||
|
|
|
@ -33,7 +33,7 @@ void A_CMaceAttack (AActor *actor)
|
|||
slope = P_AimLineAttack (player->mo, angle, 2*MELEERANGE, &linetarget);
|
||||
if (linetarget)
|
||||
{
|
||||
P_LineAttack (player->mo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, RUNTIME_CLASS(AHammerPuff), true);
|
||||
P_LineAttack (player->mo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, PClass::FindClass ("HammerPuff"), true);
|
||||
AdjustPlayerAngle (player->mo, linetarget);
|
||||
// player->mo->angle = R_PointToAngle2(player->mo->x,
|
||||
// player->mo->y, linetarget->x, linetarget->y);
|
||||
|
@ -43,7 +43,7 @@ void A_CMaceAttack (AActor *actor)
|
|||
slope = P_AimLineAttack (player->mo, angle, 2*MELEERANGE, &linetarget);
|
||||
if (linetarget)
|
||||
{
|
||||
P_LineAttack (player->mo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, RUNTIME_CLASS(AHammerPuff), true);
|
||||
P_LineAttack (player->mo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, PClass::FindClass ("HammerPuff"), true);
|
||||
AdjustPlayerAngle (player->mo, linetarget);
|
||||
// player->mo->angle = R_PointToAngle2(player->mo->x,
|
||||
// player->mo->y, linetarget->x, linetarget->y);
|
||||
|
@ -55,7 +55,7 @@ void A_CMaceAttack (AActor *actor)
|
|||
|
||||
angle = player->mo->angle;
|
||||
slope = P_AimLineAttack (player->mo, angle, MELEERANGE, &linetarget);
|
||||
P_LineAttack (player->mo, angle, MELEERANGE, slope, damage, NAME_Melee, RUNTIME_CLASS(AHammerPuff));
|
||||
P_LineAttack (player->mo, angle, MELEERANGE, slope, damage, NAME_Melee, PClass::FindClass ("HammerPuff"));
|
||||
macedone:
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ EXTERN_CVAR (Int, cl_bloodtype)
|
|||
|
||||
class AFWeapAxe : public AFighterWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AFWeapAxe, AFighterWeapon)
|
||||
DECLARE_CLASS (AFWeapAxe, AFighterWeapon)
|
||||
public:
|
||||
FState *GetUpState ();
|
||||
FState *GetDownState ();
|
||||
|
@ -39,157 +39,28 @@ public:
|
|||
FState *GetAtkState (bool hold);
|
||||
};
|
||||
|
||||
FState AFWeapAxe::States[] =
|
||||
{
|
||||
#define S_AXE 0
|
||||
S_NORMAL (WFAX, 'A', -1, NULL , NULL),
|
||||
|
||||
#define S_FAXEREADY (S_AXE+1)
|
||||
S_NORMAL (FAXE, 'A', 1, A_FAxeCheckReady , &States[S_FAXEREADY]),
|
||||
|
||||
#define S_FAXEDOWN (S_FAXEREADY+1)
|
||||
S_NORMAL (FAXE, 'A', 1, A_Lower , &States[S_FAXEDOWN]),
|
||||
|
||||
#define S_FAXEUP (S_FAXEDOWN+1)
|
||||
S_NORMAL (FAXE, 'A', 1, A_FAxeCheckUp , &States[S_FAXEUP]),
|
||||
|
||||
#define S_FAXEATK (S_FAXEUP+1)
|
||||
S_NORMAL2 (FAXE, 'B', 4, A_FAxeCheckAtk , &States[S_FAXEATK+1], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'C', 3, NULL , &States[S_FAXEATK+2], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'D', 2, NULL , &States[S_FAXEATK+3], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'D', 1, A_FAxeAttack , &States[S_FAXEATK+4], -5, 70),
|
||||
S_NORMAL2 (FAXE, 'D', 2, NULL , &States[S_FAXEATK+5], -25, 90),
|
||||
S_NORMAL2 (FAXE, 'E', 1, NULL , &States[S_FAXEATK+6], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'E', 2, NULL , &States[S_FAXEATK+7], 10, 54),
|
||||
S_NORMAL2 (FAXE, 'E', 7, NULL , &States[S_FAXEATK+8], 10, 150),
|
||||
S_NORMAL2 (FAXE, 'A', 1, A_ReFire , &States[S_FAXEATK+9], 0, 60),
|
||||
S_NORMAL2 (FAXE, 'A', 1, NULL , &States[S_FAXEATK+10], 0, 52),
|
||||
S_NORMAL2 (FAXE, 'A', 1, NULL , &States[S_FAXEATK+11], 0, 44),
|
||||
S_NORMAL2 (FAXE, 'A', 1, NULL , &States[S_FAXEATK+12], 0, 36),
|
||||
S_NORMAL (FAXE, 'A', 1, NULL , &States[S_FAXEREADY]),
|
||||
|
||||
#define S_FAXEREADY_G (S_FAXEATK+13)
|
||||
S_NORMAL (FAXE, 'L', 1, A_FAxeCheckReadyG , &States[S_FAXEREADY_G+1]),
|
||||
S_NORMAL (FAXE, 'L', 1, A_FAxeCheckReadyG , &States[S_FAXEREADY_G+2]),
|
||||
S_NORMAL (FAXE, 'L', 1, A_FAxeCheckReadyG , &States[S_FAXEREADY_G+3]),
|
||||
S_NORMAL (FAXE, 'M', 1, A_FAxeCheckReadyG , &States[S_FAXEREADY_G+4]),
|
||||
S_NORMAL (FAXE, 'M', 1, A_FAxeCheckReadyG , &States[S_FAXEREADY_G+5]),
|
||||
S_NORMAL (FAXE, 'M', 1, A_FAxeCheckReadyG , &States[S_FAXEREADY_G]),
|
||||
|
||||
#define S_FAXEDOWN_G (S_FAXEREADY_G+6)
|
||||
S_NORMAL (FAXE, 'L', 1, A_Lower , &States[S_FAXEDOWN_G]),
|
||||
|
||||
#define S_FAXEUP_G (S_FAXEDOWN_G+1)
|
||||
S_NORMAL (FAXE, 'L', 1, A_FAxeCheckUpG , &States[S_FAXEUP_G]),
|
||||
|
||||
#define S_FAXEATK_G (S_FAXEUP_G+1)
|
||||
S_NORMAL2 (FAXE, 'N', 4, NULL , &States[S_FAXEATK_G+1], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'O', 3, NULL , &States[S_FAXEATK_G+2], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'P', 2, NULL , &States[S_FAXEATK_G+3], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'P', 1, A_FAxeAttack , &States[S_FAXEATK_G+4], -5, 70),
|
||||
S_NORMAL2 (FAXE, 'P', 2, NULL , &States[S_FAXEATK_G+5], -25, 90),
|
||||
S_NORMAL2 (FAXE, 'Q', 1, NULL , &States[S_FAXEATK_G+6], 15, 32),
|
||||
S_NORMAL2 (FAXE, 'Q', 2, NULL , &States[S_FAXEATK_G+7], 10, 54),
|
||||
S_NORMAL2 (FAXE, 'Q', 7, NULL , &States[S_FAXEATK_G+8], 10, 150),
|
||||
S_NORMAL2 (FAXE, 'A', 1, A_ReFire , &States[S_FAXEATK_G+9], 0, 60),
|
||||
S_NORMAL2 (FAXE, 'A', 1, NULL , &States[S_FAXEATK_G+10], 0, 52),
|
||||
S_NORMAL2 (FAXE, 'A', 1, NULL , &States[S_FAXEATK_G+11], 0, 44),
|
||||
S_NORMAL2 (FAXE, 'A', 1, NULL , &States[S_FAXEATK_G+12], 0, 36),
|
||||
S_NORMAL (FAXE, 'A', 1, NULL , &States[S_FAXEREADY_G]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFWeapAxe, Hexen, 8010, 27)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_SpawnState (S_AXE)
|
||||
|
||||
PROP_Weapon_SelectionOrder (1500)
|
||||
PROP_Weapon_Flags (WIF_AXEBLOOD|WIF_AMMO_OPTIONAL|WIF_BOT_MELEE)
|
||||
PROP_Weapon_AmmoUse1 (2)
|
||||
PROP_Weapon_AmmoGive1 (25)
|
||||
PROP_Weapon_UpState (S_FAXEUP)
|
||||
PROP_Weapon_DownState (S_FAXEDOWN)
|
||||
PROP_Weapon_ReadyState (S_FAXEREADY)
|
||||
PROP_Weapon_AtkState (S_FAXEATK)
|
||||
PROP_Weapon_Kickback (150)
|
||||
PROP_Weapon_YAdjust (0-12)
|
||||
PROP_Weapon_AmmoType1 ("Mana1")
|
||||
PROP_Inventory_PickupMessage("$TXT_WEAPON_F2")
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AFWeapAxe)
|
||||
|
||||
FState *AFWeapAxe::GetUpState ()
|
||||
{
|
||||
return Ammo1->Amount ? &States[S_FAXEUP_G] : Super::GetUpState();
|
||||
return Ammo1->Amount ? FindState ("SelectGlow") : Super::GetUpState();
|
||||
}
|
||||
|
||||
FState *AFWeapAxe::GetDownState ()
|
||||
{
|
||||
return Ammo1->Amount ? &States[S_FAXEDOWN_G] : Super::GetDownState();
|
||||
return Ammo1->Amount ? FindState ("DeselectGlow") : Super::GetDownState();
|
||||
}
|
||||
|
||||
FState *AFWeapAxe::GetReadyState ()
|
||||
{
|
||||
return Ammo1->Amount ? &States[S_FAXEREADY_G] : Super::GetReadyState();
|
||||
return Ammo1->Amount ? FindState ("ReadyGlow") : Super::GetReadyState();
|
||||
}
|
||||
|
||||
FState *AFWeapAxe::GetAtkState (bool hold)
|
||||
{
|
||||
return Ammo1->Amount ? &States[S_FAXEATK_G] : Super::GetAtkState(hold);
|
||||
return Ammo1->Amount ? FindState ("FireGlow") : Super::GetAtkState(hold);
|
||||
}
|
||||
|
||||
// Axe Puff -----------------------------------------------------------------
|
||||
|
||||
class AAxePuff : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AAxePuff, AActor)
|
||||
};
|
||||
|
||||
FState AAxePuff::States[] =
|
||||
{
|
||||
S_NORMAL (FHFX, 'S', 4, NULL , &States[1]),
|
||||
S_NORMAL (FHFX, 'T', 4, NULL , &States[2]),
|
||||
S_NORMAL (FHFX, 'U', 4, NULL , &States[3]),
|
||||
S_NORMAL (FHFX, 'V', 4, NULL , &States[4]),
|
||||
S_NORMAL (FHFX, 'W', 4, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AAxePuff, Hexen, -1, 0)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
|
||||
PROP_Flags3 (MF3_PUFFONACTORS)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (HX_SHADOW)
|
||||
|
||||
PROP_SpawnState (0)
|
||||
|
||||
PROP_SeeSound ("FighterAxeHitThing")
|
||||
PROP_AttackSound ("FighterHammerHitWall")
|
||||
PROP_ActiveSound ("FighterHammerMiss")
|
||||
END_DEFAULTS
|
||||
|
||||
// Glowing Axe Puff ---------------------------------------------------------
|
||||
|
||||
class AAxePuffGlow : public AAxePuff
|
||||
{
|
||||
DECLARE_ACTOR (AAxePuffGlow, AAxePuff)
|
||||
};
|
||||
|
||||
FState AAxePuffGlow::States[] =
|
||||
{
|
||||
S_BRIGHT (FAXE, 'R', 4, NULL , &States[1]),
|
||||
S_BRIGHT (FAXE, 'S', 4, NULL , &States[2]),
|
||||
S_BRIGHT (FAXE, 'T', 4, NULL , &States[3]),
|
||||
S_BRIGHT (FAXE, 'U', 4, NULL , &States[4]),
|
||||
S_BRIGHT (FAXE, 'V', 4, NULL , &States[5]),
|
||||
S_BRIGHT (FAXE, 'W', 4, NULL , &States[6]),
|
||||
S_BRIGHT (FAXE, 'X', 4, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AAxePuffGlow, Hexen, -1, 0)
|
||||
PROP_Flags3 (MF3_PUFFONACTORS)
|
||||
PROP_RenderStyle (STYLE_Add)
|
||||
PROP_Alpha (OPAQUE)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FAxeCheckReady
|
||||
|
@ -206,7 +77,7 @@ void A_FAxeCheckReady (AActor *actor)
|
|||
}
|
||||
if (player->ReadyWeapon->Ammo1->Amount)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, &AFWeapAxe::States[S_FAXEREADY_G]);
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->FindState ("ReadyGlow"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -230,7 +101,7 @@ void A_FAxeCheckReadyG (AActor *actor)
|
|||
}
|
||||
if (player->ReadyWeapon->Ammo1->Amount <= 0)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, &AFWeapAxe::States[S_FAXEREADY]);
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->FindState ("Ready"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -254,7 +125,7 @@ void A_FAxeCheckUp (AActor *actor)
|
|||
}
|
||||
if (player->ReadyWeapon->Ammo1->Amount)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, &AFWeapAxe::States[S_FAXEUP_G]);
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->FindState ("ReadyGlow"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -278,7 +149,7 @@ void A_FAxeCheckUpG (AActor *actor)
|
|||
}
|
||||
if (player->ReadyWeapon->Ammo1->Amount <= 0)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, &AFWeapAxe::States[S_FAXEUP]);
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->FindState ("Select"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -302,7 +173,7 @@ void A_FAxeCheckAtk (AActor *actor)
|
|||
}
|
||||
if (player->ReadyWeapon->Ammo1->Amount)
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, &AFWeapAxe::States[S_FAXEATK_G]);
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->FindState ("FireGlow"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -339,12 +210,12 @@ void A_FAxeAttack (AActor *actor)
|
|||
{
|
||||
damage <<= 1;
|
||||
power = 6*FRACUNIT;
|
||||
pufftype = RUNTIME_CLASS(AAxePuffGlow);
|
||||
pufftype = PClass::FindClass ("AxePuffGlow");
|
||||
useMana = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
pufftype = RUNTIME_CLASS(AAxePuff);
|
||||
pufftype = PClass::FindClass ("AxePuff");
|
||||
useMana = 0;
|
||||
}
|
||||
for (i = 0; i < 16; i++)
|
||||
|
@ -395,7 +266,7 @@ axedone:
|
|||
(!(weapon->WeaponFlags & WIF_PRIMARY_USES_BOTH) ||
|
||||
weapon->Ammo2 == NULL || weapon->Ammo2->Amount == 0))
|
||||
{
|
||||
P_SetPsprite (player, ps_weapon, &AFWeapAxe::States[S_FAXEATK+5]);
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->FindState ("Fire") + 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,154 +17,6 @@ static FRandom pr_atk ("FHammerAtk");
|
|||
|
||||
extern void AdjustPlayerAngle (AActor *pmo, AActor *linetarget);
|
||||
|
||||
void A_FHammerAttack (AActor *actor);
|
||||
void A_FHammerThrow (AActor *actor);
|
||||
void A_HammerSound (AActor *);
|
||||
void A_BeAdditive (AActor *);
|
||||
|
||||
// The Fighter's Hammer -----------------------------------------------------
|
||||
|
||||
class AFWeapHammer : public AFighterWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AFWeapHammer, AFighterWeapon)
|
||||
};
|
||||
|
||||
FState AFWeapHammer::States[] =
|
||||
{
|
||||
#define S_HAMM 0
|
||||
S_NORMAL (WFHM, 'A', -1, NULL , NULL),
|
||||
|
||||
#define S_FHAMMERREADY (S_HAMM+1)
|
||||
S_NORMAL (FHMR, 'A', 1, A_WeaponReady , &States[S_FHAMMERREADY]),
|
||||
|
||||
#define S_FHAMMERDOWN (S_FHAMMERREADY+1)
|
||||
S_NORMAL (FHMR, 'A', 1, A_Lower , &States[S_FHAMMERDOWN]),
|
||||
|
||||
#define S_FHAMMERUP (S_FHAMMERDOWN+1)
|
||||
S_NORMAL (FHMR, 'A', 1, A_Raise , &States[S_FHAMMERUP]),
|
||||
|
||||
#define S_FHAMMERATK (S_FHAMMERUP+1)
|
||||
S_NORMAL2 (FHMR, 'B', 6, NULL , &States[S_FHAMMERATK+1], 5, 0),
|
||||
S_NORMAL2 (FHMR, 'C', 3, A_FHammerAttack , &States[S_FHAMMERATK+2], 5, 0),
|
||||
S_NORMAL2 (FHMR, 'D', 3, NULL , &States[S_FHAMMERATK+3], 5, 0),
|
||||
S_NORMAL2 (FHMR, 'E', 2, NULL , &States[S_FHAMMERATK+4], 5, 0),
|
||||
S_NORMAL2 (FHMR, 'E', 10, A_FHammerThrow , &States[S_FHAMMERATK+5], 5, 150),
|
||||
S_NORMAL2 (FHMR, 'A', 1, NULL , &States[S_FHAMMERATK+6], 0, 60),
|
||||
S_NORMAL2 (FHMR, 'A', 1, NULL , &States[S_FHAMMERATK+7], 0, 55),
|
||||
S_NORMAL2 (FHMR, 'A', 1, NULL , &States[S_FHAMMERATK+8], 0, 50),
|
||||
S_NORMAL2 (FHMR, 'A', 1, NULL , &States[S_FHAMMERATK+9], 0, 45),
|
||||
S_NORMAL2 (FHMR, 'A', 1, NULL , &States[S_FHAMMERATK+10], 0, 40),
|
||||
S_NORMAL2 (FHMR, 'A', 1, NULL , &States[S_FHAMMERATK+11], 0, 35),
|
||||
S_NORMAL (FHMR, 'A', 1, NULL , &States[S_FHAMMERREADY]),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFWeapHammer, Hexen, 123, 28)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags5 (MF5_BLOODSPLATTER)
|
||||
PROP_SpawnState (S_HAMM)
|
||||
|
||||
PROP_Weapon_SelectionOrder (900)
|
||||
PROP_Weapon_Flags (WIF_AMMO_OPTIONAL|WIF_BOT_MELEE)
|
||||
PROP_Weapon_AmmoUse1 (3)
|
||||
PROP_Weapon_AmmoGive1 (25)
|
||||
PROP_Weapon_UpState (S_FHAMMERUP)
|
||||
PROP_Weapon_DownState (S_FHAMMERDOWN)
|
||||
PROP_Weapon_ReadyState (S_FHAMMERREADY)
|
||||
PROP_Weapon_AtkState (S_FHAMMERATK)
|
||||
PROP_Weapon_Kickback (150)
|
||||
PROP_Weapon_YAdjust (0-10)
|
||||
PROP_Weapon_MoveCombatDist (22000000)
|
||||
PROP_Weapon_AmmoType1 ("Mana2")
|
||||
PROP_Weapon_ProjectileType ("HammerMissile")
|
||||
PROP_Inventory_PickupMessage("$TXT_WEAPON_F3")
|
||||
END_DEFAULTS
|
||||
|
||||
// Hammer Missile -----------------------------------------------------------
|
||||
|
||||
class AHammerMissile : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AHammerMissile, AActor)
|
||||
public:
|
||||
void GetExplodeParms (int &damage, int &dist, bool &hurtSource);
|
||||
};
|
||||
|
||||
FState AHammerMissile::States[] =
|
||||
{
|
||||
#define S_HAMMER_MISSILE_1 0
|
||||
S_BRIGHT (FHFX, 'A', 2, NULL , &States[S_HAMMER_MISSILE_1+1]),
|
||||
S_BRIGHT (FHFX, 'B', 2, A_HammerSound , &States[S_HAMMER_MISSILE_1+2]),
|
||||
S_BRIGHT (FHFX, 'C', 2, NULL , &States[S_HAMMER_MISSILE_1+3]),
|
||||
S_BRIGHT (FHFX, 'D', 2, NULL , &States[S_HAMMER_MISSILE_1+4]),
|
||||
S_BRIGHT (FHFX, 'E', 2, NULL , &States[S_HAMMER_MISSILE_1+5]),
|
||||
S_BRIGHT (FHFX, 'F', 2, NULL , &States[S_HAMMER_MISSILE_1+6]),
|
||||
S_BRIGHT (FHFX, 'G', 2, NULL , &States[S_HAMMER_MISSILE_1+7]),
|
||||
S_BRIGHT (FHFX, 'H', 2, NULL , &States[S_HAMMER_MISSILE_1]),
|
||||
|
||||
#define S_HAMMER_MISSILE_X1 (S_HAMMER_MISSILE_1+8)
|
||||
S_BRIGHT (FHFX, 'I', 3, A_BeAdditive , &States[S_HAMMER_MISSILE_X1+1]),
|
||||
S_BRIGHT (FHFX, 'J', 3, NULL , &States[S_HAMMER_MISSILE_X1+2]),
|
||||
S_BRIGHT (FHFX, 'K', 3, A_Explode , &States[S_HAMMER_MISSILE_X1+3]),
|
||||
S_BRIGHT (FHFX, 'L', 3, NULL , &States[S_HAMMER_MISSILE_X1+4]),
|
||||
S_BRIGHT (FHFX, 'M', 3, NULL , &States[S_HAMMER_MISSILE_X1+5]),
|
||||
S_NORMAL (FHFX, 'N', 3, NULL , &States[S_HAMMER_MISSILE_X1+6]),
|
||||
S_BRIGHT (FHFX, 'O', 3, NULL , &States[S_HAMMER_MISSILE_X1+7]),
|
||||
S_BRIGHT (FHFX, 'P', 3, NULL , &States[S_HAMMER_MISSILE_X1+8]),
|
||||
S_BRIGHT (FHFX, 'Q', 3, NULL , &States[S_HAMMER_MISSILE_X1+9]),
|
||||
S_BRIGHT (FHFX, 'R', 3, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AHammerMissile, Hexen, -1, 0)
|
||||
PROP_SpeedFixed (25)
|
||||
PROP_RadiusFixed (14)
|
||||
PROP_HeightFixed (20)
|
||||
PROP_Damage (10)
|
||||
PROP_DamageType (NAME_Fire)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS)
|
||||
|
||||
PROP_SpawnState (S_HAMMER_MISSILE_1)
|
||||
PROP_DeathState (S_HAMMER_MISSILE_X1)
|
||||
|
||||
PROP_DeathSound ("FighterHammerExplode")
|
||||
END_DEFAULTS
|
||||
|
||||
void AHammerMissile::GetExplodeParms (int &damage, int &dist, bool &hurtSource)
|
||||
{
|
||||
damage = 128;
|
||||
dist;
|
||||
hurtSource = false;
|
||||
}
|
||||
|
||||
// Hammer Puff (also used by fist) ------------------------------------------
|
||||
|
||||
FState AHammerPuff::States[] =
|
||||
{
|
||||
S_NORMAL (FHFX, 'S', 4, NULL , &States[1]),
|
||||
S_NORMAL (FHFX, 'T', 4, NULL , &States[2]),
|
||||
S_NORMAL (FHFX, 'U', 4, NULL , &States[3]),
|
||||
S_NORMAL (FHFX, 'V', 4, NULL , &States[4]),
|
||||
S_NORMAL (FHFX, 'W', 4, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AHammerPuff, Hexen, -1, 0)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
|
||||
PROP_Flags3 (MF3_PUFFONACTORS)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (HX_SHADOW)
|
||||
|
||||
PROP_SpawnState (0)
|
||||
|
||||
PROP_SeeSound ("FighterHammerHitThing")
|
||||
PROP_AttackSound ("FighterHammerHitWall")
|
||||
PROP_ActiveSound ("FighterHammerMiss")
|
||||
END_DEFAULTS
|
||||
|
||||
void AHammerPuff::BeginPlay ()
|
||||
{
|
||||
Super::BeginPlay ();
|
||||
momz = FRACUNIT*8/10;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FHammerAttack
|
||||
|
@ -195,7 +47,7 @@ void A_FHammerAttack (AActor *actor)
|
|||
slope = P_AimLineAttack (pmo, angle, HAMMER_RANGE, &linetarget);
|
||||
if (linetarget)
|
||||
{
|
||||
P_LineAttack (pmo, angle, HAMMER_RANGE, slope, damage, NAME_Melee, RUNTIME_CLASS(AHammerPuff), true);
|
||||
P_LineAttack (pmo, angle, HAMMER_RANGE, slope, damage, NAME_Melee, PClass::FindClass ("HammerPuff"), true);
|
||||
AdjustPlayerAngle(pmo, linetarget);
|
||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
||||
{
|
||||
|
@ -208,7 +60,7 @@ void A_FHammerAttack (AActor *actor)
|
|||
slope = P_AimLineAttack(pmo, angle, HAMMER_RANGE, &linetarget);
|
||||
if(linetarget)
|
||||
{
|
||||
P_LineAttack(pmo, angle, HAMMER_RANGE, slope, damage, NAME_Melee, RUNTIME_CLASS(AHammerPuff), true);
|
||||
P_LineAttack(pmo, angle, HAMMER_RANGE, slope, damage, NAME_Melee, PClass::FindClass ("HammerPuff"), true);
|
||||
AdjustPlayerAngle(pmo, linetarget);
|
||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
||||
{
|
||||
|
@ -221,7 +73,7 @@ void A_FHammerAttack (AActor *actor)
|
|||
// didn't find any targets in meleerange, so set to throw out a hammer
|
||||
angle = pmo->angle;
|
||||
slope = P_AimLineAttack (pmo, angle, HAMMER_RANGE, &linetarget);
|
||||
if (P_LineAttack (pmo, angle, HAMMER_RANGE, slope, damage, NAME_Melee, RUNTIME_CLASS(AHammerPuff), true) != NULL)
|
||||
if (P_LineAttack (pmo, angle, HAMMER_RANGE, slope, damage, NAME_Melee, PClass::FindClass ("HammerPuff"), true) != NULL)
|
||||
{
|
||||
pmo->special1 = false;
|
||||
}
|
||||
|
@ -266,20 +118,9 @@ void A_FHammerThrow (AActor *actor)
|
|||
if (!weapon->DepleteAmmo (weapon->bAltFire, false))
|
||||
return;
|
||||
}
|
||||
mo = P_SpawnPlayerMissile (player->mo, RUNTIME_CLASS(AHammerMissile));
|
||||
mo = P_SpawnPlayerMissile (player->mo, PClass::FindClass ("HammerMissile"));
|
||||
if (mo)
|
||||
{
|
||||
mo->special1 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_HammerSound
|
||||
//
|
||||
//============================================================================
|
||||
|
||||
void A_HammerSound (AActor *actor)
|
||||
{
|
||||
S_Sound (actor, CHAN_BODY, "FighterHammerContinuous", 1, ATTN_NORM);
|
||||
}
|
||||
|
|
|
@ -133,93 +133,6 @@ void AdjustPlayerAngle (AActor *pmo, AActor *linetarget)
|
|||
}
|
||||
}
|
||||
|
||||
// Fist (first weapon) ------------------------------------------------------
|
||||
|
||||
void A_FPunchAttack (AActor *actor);
|
||||
|
||||
class AFWeapFist : public AFighterWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AFWeapFist, AFighterWeapon)
|
||||
};
|
||||
|
||||
FState AFWeapFist::States[] =
|
||||
{
|
||||
#define S_PUNCHREADY 0
|
||||
S_NORMAL (FPCH, 'A', 1, A_WeaponReady , &States[S_PUNCHREADY]),
|
||||
|
||||
#define S_PUNCHDOWN (S_PUNCHREADY+1)
|
||||
S_NORMAL (FPCH, 'A', 1, A_Lower , &States[S_PUNCHDOWN]),
|
||||
|
||||
#define S_PUNCHUP (S_PUNCHDOWN+1)
|
||||
S_NORMAL (FPCH, 'A', 1, A_Raise , &States[S_PUNCHUP]),
|
||||
|
||||
#define S_PUNCHATK1 (S_PUNCHUP+1)
|
||||
S_NORMAL2(FPCH, 'B', 5, NULL , &States[S_PUNCHATK1+1], 5, 40),
|
||||
S_NORMAL2(FPCH, 'C', 4, NULL , &States[S_PUNCHATK1+2], 5, 40),
|
||||
S_NORMAL2(FPCH, 'D', 4, A_FPunchAttack , &States[S_PUNCHATK1+3], 5, 40),
|
||||
S_NORMAL2(FPCH, 'C', 4, NULL , &States[S_PUNCHATK1+4], 5, 40),
|
||||
S_NORMAL2(FPCH, 'B', 5, A_ReFire , &States[S_PUNCHREADY], 5, 40),
|
||||
|
||||
#define S_PUNCHATK2 (S_PUNCHATK1+5)
|
||||
S_NORMAL2(FPCH, 'D', 4, NULL , &States[S_PUNCHATK2+1], 5, 40),
|
||||
S_NORMAL2(FPCH, 'E', 4, NULL , &States[S_PUNCHATK2+2], 5, 40),
|
||||
S_NORMAL2(FPCH, 'E', 1, NULL , &States[S_PUNCHATK2+3], 15, 50),
|
||||
S_NORMAL2(FPCH, 'E', 1, NULL , &States[S_PUNCHATK2+4], 25, 60),
|
||||
S_NORMAL2(FPCH, 'E', 1, NULL , &States[S_PUNCHATK2+5], 35, 70),
|
||||
S_NORMAL2(FPCH, 'E', 1, NULL , &States[S_PUNCHATK2+6], 45, 80),
|
||||
S_NORMAL2(FPCH, 'E', 1, NULL , &States[S_PUNCHATK2+7], 55, 90),
|
||||
S_NORMAL2(FPCH, 'E', 1, NULL , &States[S_PUNCHATK2+8], 65, 100),
|
||||
S_NORMAL2(FPCH, 'E', 10, NULL , &States[S_PUNCHREADY], 0, 150)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFWeapFist, Hexen, -1, 0)
|
||||
PROP_Flags5 (MF5_BLOODSPLATTER)
|
||||
PROP_Weapon_SelectionOrder (3400)
|
||||
PROP_Weapon_Flags (WIF_BOT_MELEE)
|
||||
PROP_Weapon_UpState (S_PUNCHUP)
|
||||
PROP_Weapon_DownState (S_PUNCHDOWN)
|
||||
PROP_Weapon_ReadyState (S_PUNCHREADY)
|
||||
PROP_Weapon_AtkState (S_PUNCHATK1)
|
||||
PROP_Weapon_Kickback (150)
|
||||
END_DEFAULTS
|
||||
|
||||
// Punch puff ---------------------------------------------------------------
|
||||
|
||||
class APunchPuff : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (APunchPuff, AActor)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
FState APunchPuff::States[] =
|
||||
{
|
||||
S_NORMAL (FHFX, 'S', 4, NULL , &States[1]),
|
||||
S_NORMAL (FHFX, 'T', 4, NULL , &States[2]),
|
||||
S_NORMAL (FHFX, 'U', 4, NULL , &States[3]),
|
||||
S_NORMAL (FHFX, 'V', 4, NULL , &States[4]),
|
||||
S_NORMAL (FHFX, 'W', 4, NULL , NULL)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (APunchPuff, Hexen, -1, 0)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
|
||||
PROP_Flags3 (MF3_PUFFONACTORS)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (HX_SHADOW)
|
||||
|
||||
PROP_SpawnState (0)
|
||||
|
||||
PROP_SeeSound ("FighterPunchHitThing")
|
||||
PROP_AttackSound ("FighterPunchHitWall")
|
||||
PROP_ActiveSound ("FighterPunchMiss")
|
||||
END_DEFAULTS
|
||||
|
||||
void APunchPuff::BeginPlay ()
|
||||
{
|
||||
Super::BeginPlay ();
|
||||
momz = FRACUNIT;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FPunchAttack
|
||||
|
@ -245,7 +158,7 @@ void A_FPunchAttack (AActor *actor)
|
|||
|
||||
damage = 40+(pr_fpatk()&15);
|
||||
power = 2*FRACUNIT;
|
||||
pufftype = RUNTIME_CLASS(APunchPuff);
|
||||
pufftype = PClass::FindClass ("PunchPuff");
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
angle = pmo->angle + i*(ANG45/16);
|
||||
|
@ -257,7 +170,7 @@ void A_FPunchAttack (AActor *actor)
|
|||
{
|
||||
damage <<= 1;
|
||||
power = 6*FRACUNIT;
|
||||
pufftype = RUNTIME_CLASS(AHammerPuff);
|
||||
pufftype = PClass::FindClass ("HammerPuff");
|
||||
}
|
||||
P_LineAttack (pmo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, pufftype, true);
|
||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
||||
|
@ -276,7 +189,7 @@ void A_FPunchAttack (AActor *actor)
|
|||
{
|
||||
damage <<= 1;
|
||||
power = 6*FRACUNIT;
|
||||
pufftype = RUNTIME_CLASS(AHammerPuff);
|
||||
pufftype = PClass::FindClass ("HammerPuff");
|
||||
}
|
||||
P_LineAttack (pmo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, pufftype, true);
|
||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
||||
|
@ -298,7 +211,7 @@ punchdone:
|
|||
if (pmo->special1 == 3)
|
||||
{
|
||||
pmo->special1 = 0;
|
||||
P_SetPsprite (player, ps_weapon, &AFWeapFist::States[S_PUNCHATK2]);
|
||||
P_SetPsprite (player, ps_weapon, player->ReadyWeapon->FindState ("Fire2"));
|
||||
S_Sound (pmo, CHAN_VOICE, "*fistgrunt", 1, ATTN_NORM);
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -28,9 +28,7 @@ protected:
|
|||
bool MatchPlayerClass (AActor *toucher);
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AFighterWeaponPiece, Hexen, -1, 0)
|
||||
PROP_Inventory_PickupMessage("$TXT_QUIETUS_PIECE")
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AFighterWeaponPiece)
|
||||
|
||||
bool AFighterWeaponPiece::MatchPlayerClass (AActor *toucher)
|
||||
{
|
||||
|
@ -42,21 +40,12 @@ bool AFighterWeaponPiece::MatchPlayerClass (AActor *toucher)
|
|||
|
||||
class AFWeaponPiece1 : public AFighterWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (AFWeaponPiece1, AFighterWeaponPiece)
|
||||
DECLARE_CLASS (AFWeaponPiece1, AFighterWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
FState AFWeaponPiece1::States[] =
|
||||
{
|
||||
S_BRIGHT (WFR1, 'A', -1, NULL , NULL)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFWeaponPiece1, Hexen, 12, 29)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AFWeaponPiece1)
|
||||
|
||||
void AFWeaponPiece1::BeginPlay ()
|
||||
{
|
||||
|
@ -68,21 +57,12 @@ void AFWeaponPiece1::BeginPlay ()
|
|||
|
||||
class AFWeaponPiece2 : public AFighterWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (AFWeaponPiece2, AFighterWeaponPiece)
|
||||
DECLARE_CLASS (AFWeaponPiece2, AFighterWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
FState AFWeaponPiece2::States[] =
|
||||
{
|
||||
S_BRIGHT (WFR2, 'A', -1, NULL , NULL)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFWeaponPiece2, Hexen, 13, 30)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AFWeaponPiece2)
|
||||
|
||||
void AFWeaponPiece2::BeginPlay ()
|
||||
{
|
||||
|
@ -94,21 +74,12 @@ void AFWeaponPiece2::BeginPlay ()
|
|||
|
||||
class AFWeaponPiece3 : public AFighterWeaponPiece
|
||||
{
|
||||
DECLARE_ACTOR (AFWeaponPiece3, AFighterWeaponPiece)
|
||||
DECLARE_CLASS (AFWeaponPiece3, AFighterWeaponPiece)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
FState AFWeaponPiece3::States[] =
|
||||
{
|
||||
S_BRIGHT (WFR3, 'A', -1, NULL , NULL)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFWeaponPiece3, Hexen, 16, 31)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOATBOB)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
IMPLEMENT_CLASS (AFWeaponPiece3)
|
||||
|
||||
void AFWeaponPiece3::BeginPlay ()
|
||||
{
|
||||
|
@ -116,147 +87,16 @@ void AFWeaponPiece3::BeginPlay ()
|
|||
PieceValue = WPIECE3;
|
||||
}
|
||||
|
||||
// An actor that spawns the three pieces of the fighter's fourth weapon -----
|
||||
|
||||
// This gets spawned if weapon drop is on so that other players can pick up
|
||||
// this player's weapon.
|
||||
|
||||
class AQuietusDrop : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AQuietusDrop, AActor)
|
||||
};
|
||||
|
||||
FState AQuietusDrop::States[] =
|
||||
{
|
||||
S_NORMAL (TNT1, 'A', 1, NULL, &States[1]),
|
||||
S_NORMAL (TNT1, 'A', 1, A_DropQuietusPieces, NULL)
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AQuietusDrop, Hexen, -1, 0)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
|
||||
// The Fighter's Sword (Quietus) --------------------------------------------
|
||||
|
||||
class AFWeapQuietus : public AFighterWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AFWeapQuietus, AFighterWeapon)
|
||||
};
|
||||
|
||||
FState AFWeapQuietus::States[] =
|
||||
{
|
||||
// Dummy state, because the fourth weapon does not appear in a level directly.
|
||||
S_NORMAL (TNT1, 'A', -1, NULL , NULL),
|
||||
|
||||
#define S_FSWORDREADY (1)
|
||||
S_BRIGHT (FSRD, 'A', 1, A_WeaponReady , &States[S_FSWORDREADY+1]), // S_FSWORDREADY
|
||||
S_BRIGHT (FSRD, 'A', 1, A_WeaponReady , &States[S_FSWORDREADY+2]), // S_FSWORDREADY1
|
||||
S_BRIGHT (FSRD, 'A', 1, A_WeaponReady , &States[S_FSWORDREADY+3]), // S_FSWORDREADY2
|
||||
S_BRIGHT (FSRD, 'A', 1, A_WeaponReady , &States[S_FSWORDREADY+4]), // S_FSWORDREADY3
|
||||
S_BRIGHT (FSRD, 'B', 1, A_WeaponReady , &States[S_FSWORDREADY+5]), // S_FSWORDREADY4
|
||||
S_BRIGHT (FSRD, 'B', 1, A_WeaponReady , &States[S_FSWORDREADY+6]), // S_FSWORDREADY5
|
||||
S_BRIGHT (FSRD, 'B', 1, A_WeaponReady , &States[S_FSWORDREADY+7]), // S_FSWORDREADY6
|
||||
S_BRIGHT (FSRD, 'B', 1, A_WeaponReady , &States[S_FSWORDREADY+8]), // S_FSWORDREADY7
|
||||
S_BRIGHT (FSRD, 'C', 1, A_WeaponReady , &States[S_FSWORDREADY+9]), // S_FSWORDREADY8
|
||||
S_BRIGHT (FSRD, 'C', 1, A_WeaponReady , &States[S_FSWORDREADY+10]), // S_FSWORDREADY9
|
||||
S_BRIGHT (FSRD, 'C', 1, A_WeaponReady , &States[S_FSWORDREADY+11]), // S_FSWORDREADY10
|
||||
S_BRIGHT (FSRD, 'C', 1, A_WeaponReady , &States[S_FSWORDREADY]), // S_FSWORDREADY11
|
||||
|
||||
#define S_FSWORDDOWN (S_FSWORDREADY+12)
|
||||
S_BRIGHT (FSRD, 'A', 1, A_Lower , &States[S_FSWORDDOWN]), // S_FSWORDDOWN
|
||||
|
||||
#define S_FSWORDUP (S_FSWORDDOWN+1)
|
||||
S_BRIGHT (FSRD, 'A', 1, A_Raise , &States[S_FSWORDUP]), // S_FSWORDUP
|
||||
|
||||
#define S_FSWORDATK (S_FSWORDUP+1)
|
||||
S_BRIGHT2 (FSRD, 'D', 3, NULL , &States[S_FSWORDATK+1], 5, 36), // S_FSWORDATK_1
|
||||
S_BRIGHT2 (FSRD, 'E', 3, NULL , &States[S_FSWORDATK+2], 5, 36), // S_FSWORDATK_2
|
||||
S_BRIGHT2 (FSRD, 'F', 2, NULL , &States[S_FSWORDATK+3], 5, 36), // S_FSWORDATK_3
|
||||
S_BRIGHT2 (FSRD, 'G', 3, A_FSwordAttack , &States[S_FSWORDATK+4], 5, 36), // S_FSWORDATK_4
|
||||
S_BRIGHT2 (FSRD, 'H', 2, NULL , &States[S_FSWORDATK+5], 5, 36), // S_FSWORDATK_5
|
||||
S_BRIGHT2 (FSRD, 'I', 2, NULL , &States[S_FSWORDATK+6], 5, 36), // S_FSWORDATK_6
|
||||
S_BRIGHT2 (FSRD, 'I', 10, NULL , &States[S_FSWORDATK+7], 5, 150), // S_FSWORDATK_7
|
||||
S_BRIGHT2 (FSRD, 'A', 1, NULL , &States[S_FSWORDATK+8], 5, 60), // S_FSWORDATK_8
|
||||
S_BRIGHT2 (FSRD, 'B', 1, NULL , &States[S_FSWORDATK+9], 5, 55), // S_FSWORDATK_9
|
||||
S_BRIGHT2 (FSRD, 'C', 1, NULL , &States[S_FSWORDATK+10], 5, 50), // S_FSWORDATK_10
|
||||
S_BRIGHT2 (FSRD, 'A', 1, NULL , &States[S_FSWORDATK+11], 5, 45), // S_FSWORDATK_11
|
||||
S_BRIGHT2 (FSRD, 'B', 1, NULL , &States[S_FSWORDREADY], 5, 40), // S_FSWORDATK_12
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFWeapQuietus, Hexen, -1, 0)
|
||||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_SpawnState (0)
|
||||
|
||||
PROP_Weapon_SelectionOrder (2900)
|
||||
PROP_Weapon_Flags (WIF_PRIMARY_USES_BOTH)
|
||||
PROP_Weapon_AmmoUse1 (14)
|
||||
PROP_Weapon_AmmoUse2 (14)
|
||||
PROP_Weapon_AmmoGive1 (0)
|
||||
PROP_Weapon_AmmoGive2 (0)
|
||||
PROP_Weapon_UpState (S_FSWORDUP)
|
||||
PROP_Weapon_DownState (S_FSWORDDOWN)
|
||||
PROP_Weapon_ReadyState (S_FSWORDREADY)
|
||||
PROP_Weapon_AtkState (S_FSWORDATK)
|
||||
PROP_Weapon_Kickback (150)
|
||||
PROP_Weapon_YAdjust (10)
|
||||
PROP_Weapon_MoveCombatDist (20000000)
|
||||
PROP_Weapon_AmmoType1 ("Mana1")
|
||||
PROP_Weapon_AmmoType2 ("Mana2")
|
||||
PROP_Weapon_ProjectileType ("FSwordMissile")
|
||||
PROP_Inventory_PickupMessage("$TXT_WEAPON_F4")
|
||||
END_DEFAULTS
|
||||
|
||||
// Fighter Sword Missile ----------------------------------------------------
|
||||
|
||||
class AFSwordMissile : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AFSwordMissile, AActor)
|
||||
DECLARE_CLASS (AFSwordMissile, AActor)
|
||||
public:
|
||||
void GetExplodeParms (int &damage, int &dist, bool &hurtSource);
|
||||
int DoSpecialDamage(AActor *victim, AActor *source, int damage);
|
||||
};
|
||||
|
||||
FState AFSwordMissile::States[] =
|
||||
{
|
||||
#define S_FSWORD_MISSILE1 0
|
||||
S_BRIGHT (FSFX, 'A', 3, NULL , &States[S_FSWORD_MISSILE1+1]),
|
||||
S_BRIGHT (FSFX, 'B', 3, NULL , &States[S_FSWORD_MISSILE1+2]),
|
||||
S_BRIGHT (FSFX, 'C', 3, NULL , &States[S_FSWORD_MISSILE1]),
|
||||
|
||||
#define S_FSWORD_MISSILE_X1 (S_FSWORD_MISSILE1+3)
|
||||
S_BRIGHT (FSFX, 'D', 4, NULL , &States[S_FSWORD_MISSILE_X1+1]),
|
||||
S_BRIGHT (FSFX, 'E', 3, A_FSwordFlames , &States[S_FSWORD_MISSILE_X1+2]),
|
||||
S_BRIGHT (FSFX, 'F', 4, A_Explode , &States[S_FSWORD_MISSILE_X1+3]),
|
||||
S_BRIGHT (FSFX, 'G', 3, NULL , &States[S_FSWORD_MISSILE_X1+4]),
|
||||
S_BRIGHT (FSFX, 'H', 4, NULL , &States[S_FSWORD_MISSILE_X1+5]),
|
||||
S_BRIGHT (FSFX, 'I', 3, NULL , &States[S_FSWORD_MISSILE_X1+6]),
|
||||
S_BRIGHT (FSFX, 'J', 4, NULL , &States[S_FSWORD_MISSILE_X1+7]),
|
||||
S_BRIGHT (FSFX, 'K', 3, NULL , &States[S_FSWORD_MISSILE_X1+8]),
|
||||
S_BRIGHT (FSFX, 'L', 3, NULL , &States[S_FSWORD_MISSILE_X1+9]),
|
||||
S_BRIGHT (FSFX, 'M', 3, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFSwordMissile, Hexen, -1, 0)
|
||||
PROP_SpeedFixed (30)
|
||||
PROP_RadiusFixed (16)
|
||||
PROP_HeightFixed (8)
|
||||
PROP_Damage (8)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE)
|
||||
PROP_Flags2 (MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS)
|
||||
PROP_Flags4 (MF4_EXTREMEDEATH)
|
||||
PROP_RenderStyle (STYLE_Add)
|
||||
|
||||
PROP_SpawnState (S_FSWORD_MISSILE1)
|
||||
PROP_DeathState (S_FSWORD_MISSILE_X1)
|
||||
|
||||
PROP_DeathSound ("FighterSwordExplode")
|
||||
END_DEFAULTS
|
||||
|
||||
void AFSwordMissile::GetExplodeParms (int &damage, int &dist, bool &hurtSource)
|
||||
{
|
||||
damage = 64;
|
||||
hurtSource = false;
|
||||
}
|
||||
IMPLEMENT_CLASS (AFSwordMissile)
|
||||
|
||||
int AFSwordMissile::DoSpecialDamage(AActor *victim, AActor *source, int damage)
|
||||
{
|
||||
|
@ -267,36 +107,6 @@ int AFSwordMissile::DoSpecialDamage(AActor *victim, AActor *source, int damage)
|
|||
return damage;
|
||||
}
|
||||
|
||||
|
||||
// Fighter Sword Flame ------------------------------------------------------
|
||||
|
||||
class AFSwordFlame : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AFSwordFlame, AActor)
|
||||
};
|
||||
|
||||
FState AFSwordFlame::States[] =
|
||||
{
|
||||
S_BRIGHT (FSFX, 'N', 3, NULL , &States[1]),
|
||||
S_BRIGHT (FSFX, 'O', 3, NULL , &States[2]),
|
||||
S_BRIGHT (FSFX, 'P', 3, NULL , &States[3]),
|
||||
S_BRIGHT (FSFX, 'Q', 3, NULL , &States[4]),
|
||||
S_BRIGHT (FSFX, 'R', 3, NULL , &States[5]),
|
||||
S_BRIGHT (FSFX, 'S', 3, NULL , &States[6]),
|
||||
S_BRIGHT (FSFX, 'T', 3, NULL , &States[7]),
|
||||
S_BRIGHT (FSFX, 'U', 3, NULL , &States[8]),
|
||||
S_BRIGHT (FSFX, 'V', 3, NULL , &States[9]),
|
||||
S_BRIGHT (FSFX, 'W', 3, NULL , NULL),
|
||||
};
|
||||
|
||||
IMPLEMENT_ACTOR (AFSwordFlame, Hexen, -1, 0)
|
||||
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (HX_SHADOW)
|
||||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// A_FSwordAttack
|
||||
|
@ -340,7 +150,7 @@ void A_FSwordFlames (AActor *actor)
|
|||
fixed_t x = actor->x+((pr_fswordflame()-128)<<12);
|
||||
fixed_t y = actor->y+((pr_fswordflame()-128)<<12);
|
||||
fixed_t z = actor->z+((pr_fswordflame()-128)<<11);
|
||||
Spawn<AFSwordFlame> (x, y, z, ALLOW_REPLACE);
|
||||
Spawn ("FSwordFlame", x, y, z, ALLOW_REPLACE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -377,7 +187,7 @@ void A_DropQuietusPieces (AActor *actor)
|
|||
void AFighterWeaponPiece::BeginPlay ()
|
||||
{
|
||||
Super::BeginPlay ();
|
||||
FourthWeaponClass = RUNTIME_CLASS(AFWeapQuietus);
|
||||
FourthWeaponClass = PClass::FindClass ("FWeapQuietus");
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
|
|
|
@ -38,13 +38,6 @@ public:
|
|||
bool IsOkayToAttack (AActor *link);
|
||||
};
|
||||
|
||||
class AHammerPuff : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AHammerPuff, AActor)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
};
|
||||
|
||||
class AFourthWeaponPiece : public AInventory
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AFourthWeaponPiece, AInventory)
|
||||
|
|
|
@ -1249,7 +1249,7 @@ bool AInventory::TryPickup (AActor *toucher)
|
|||
{
|
||||
// Add the item to the inventory. It is not already there, or HandlePickup
|
||||
// would have already taken care of it.
|
||||
AInventory *copy = CreateCopy (toucher);
|
||||
AInventory *copy = CreeCopy (toucher);
|
||||
if (copy == NULL)
|
||||
{
|
||||
return false;
|
||||
|
|
|
@ -66,17 +66,7 @@ public:
|
|||
bool TryPickup (AActor *toucher);
|
||||
};
|
||||
|
||||
class AStrifeWeapon : public AWeapon
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStrifeWeapon, AWeapon)
|
||||
};
|
||||
|
||||
class AFlameThrower : public AStrifeWeapon
|
||||
{
|
||||
DECLARE_ACTOR (AFlameThrower, AStrifeWeapon)
|
||||
};
|
||||
|
||||
class ASigil : public AStrifeWeapon
|
||||
class ASigil : public AWeapon
|
||||
{
|
||||
DECLARE_ACTOR (ASigil, AStrifeWeapon)
|
||||
public:
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -414,6 +414,7 @@ FState *P_GetState(AActor *self, FState *CallingState, int offset)
|
|||
}
|
||||
else if (offset>0)
|
||||
{
|
||||
if (CallingState == NULL) return NULL;
|
||||
return CallingState + offset;
|
||||
}
|
||||
else if (self != NULL)
|
||||
|
|
113
wadsrc/static/actors/hexen/fighteraxe.txt
Normal file
113
wadsrc/static/actors/hexen/fighteraxe.txt
Normal file
|
@ -0,0 +1,113 @@
|
|||
|
||||
// The Fighter's Axe --------------------------------------------------------
|
||||
|
||||
ACTOR FWeapAxe : FighterWeapon 8010 native
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 27
|
||||
Weapon.SelectionOrder 1500
|
||||
+WEAPON.AXEBLOOD +WEAPON.AMMO_OPTIONAL +WEAPON.MELEEWEAPON
|
||||
Weapon.AmmoUse1 2
|
||||
Weapon.AmmoGive1 25
|
||||
Weapon.KickBack 150
|
||||
Weapon.YAdjust -12
|
||||
Weapon.AmmoType1 "Mana1"
|
||||
Inventory.PickupMessage "$TXT_WEAPON_F2"
|
||||
|
||||
action native A_FAxeCheckUp();
|
||||
action native A_FAxeCheckReady();
|
||||
action native A_FAxeCheckAtk();
|
||||
action native A_FAxeAttack();
|
||||
action native A_FAxeCheckUpG();
|
||||
action native A_FAxeCheckReadyG();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WFAX A -1
|
||||
Stop
|
||||
Select:
|
||||
FAXE A 1 A_FAxeCheckUp
|
||||
Loop
|
||||
Deselect:
|
||||
FAXE A 1 A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
FAXE A 1 A_FAxeCheckReady
|
||||
Loop
|
||||
Fire:
|
||||
FAXE B 4 Offset (15, 32) A_FAxeCheckAtk
|
||||
FAXE C 3 Offset (15, 32)
|
||||
FAXE D 2 Offset (15, 32)
|
||||
FAXE D 1 Offset (-5, 70) A_FAxeAttack
|
||||
FAXE D 2 Offset (-25, 90)
|
||||
FAXE E 1 Offset (15, 32)
|
||||
FAXE E 2 Offset (10, 54)
|
||||
FAXE E 7 Offset (10, 150)
|
||||
FAXE A 1 Offset (0, 60) A_ReFire
|
||||
FAXE A 1 Offset (0, 52)
|
||||
FAXE A 1 Offset (0, 44)
|
||||
FAXE A 1 Offset (0, 36)
|
||||
FAXE A 1
|
||||
Goto Ready
|
||||
SelectGlow:
|
||||
FAXE L 1 A_FAxeCheckUpG
|
||||
Loop
|
||||
DeselectGlow:
|
||||
FAXE L 1 A_Lower
|
||||
Loop
|
||||
ReadyGlow:
|
||||
FAXE LLL 1 A_FAxeCheckReadyG
|
||||
FAXE MMM 1 A_FAxeCheckReadyG
|
||||
Loop
|
||||
FireGlow:
|
||||
FAXE N 4 Offset (15, 32)
|
||||
FAXE O 3 Offset (15, 32)
|
||||
FAXE P 2 Offset (15, 32)
|
||||
FAXE P 1 Offset (-5, 70) A_FAxeAttack
|
||||
FAXE P 2 Offset (-25, 90)
|
||||
FAXE Q 1 Offset (15, 32)
|
||||
FAXE Q 2 Offset (10, 54)
|
||||
FAXE Q 7 Offset (10, 150)
|
||||
FAXE A 1 Offset (0, 60) A_ReFire
|
||||
FAXE A 1 Offset (0, 52)
|
||||
FAXE A 1 Offset (0, 44)
|
||||
FAXE A 1 Offset (0, 36)
|
||||
FAXE A 1
|
||||
Goto ReadyGlow
|
||||
}
|
||||
}
|
||||
|
||||
// Axe Puff -----------------------------------------------------------------
|
||||
|
||||
ACTOR AxePuff
|
||||
{
|
||||
+NOBLOCKMAP +NOGRAVITY
|
||||
+PUFFONACTORS
|
||||
RenderStyle Translucent
|
||||
Alpha 0.6
|
||||
SeeSound "FighterAxeHitThing"
|
||||
AttackSound "FighterHammerHitWall"
|
||||
ActiveSound "FighterHammerMiss"
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
FHFX STUVW 4
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Glowing Axe Puff ---------------------------------------------------------
|
||||
|
||||
ACTOR AxePuffGlow : AxePuff
|
||||
{
|
||||
+PUFFONACTORS
|
||||
RenderStyle Add
|
||||
Alpha 1
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
FAXE RSTUVWX 4 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
62
wadsrc/static/actors/hexen/fighterfist.txt
Normal file
62
wadsrc/static/actors/hexen/fighterfist.txt
Normal file
|
@ -0,0 +1,62 @@
|
|||
|
||||
// Fist (first weapon) ------------------------------------------------------
|
||||
|
||||
ACTOR FWeapFist : FighterWeapon
|
||||
{
|
||||
+BLOODSPLATTER
|
||||
Weapon.SelectionOrder 3400
|
||||
+WEAPON.MELEEWEAPON
|
||||
Weapon.KickBack 150
|
||||
|
||||
action native A_FPunchAttack();
|
||||
|
||||
States
|
||||
{
|
||||
Select:
|
||||
FPCH A 1 A_Raise
|
||||
Loop
|
||||
Deselect:
|
||||
FPCH A 1 A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
FPCH A 1 A_WeaponReady
|
||||
Loop
|
||||
Fire:
|
||||
FPCH B 5 Offset (5, 40)
|
||||
FPCH C 4 Offset (5, 40)
|
||||
FPCH D 4 Offset (5, 40) A_FPunchAttack
|
||||
FPCH C 4 Offset (5, 40)
|
||||
FPCH B 5 Offset (5, 40) A_ReFire
|
||||
Goto Ready
|
||||
Fire2:
|
||||
FPCH DE 4 Offset (5, 40)
|
||||
FPCH E 1 Offset (15, 50)
|
||||
FPCH E 1 Offset (25, 60)
|
||||
FPCH E 1 Offset (35, 70)
|
||||
FPCH E 1 Offset (45, 80)
|
||||
FPCH E 1 Offset (55, 90)
|
||||
FPCH E 1 Offset (65, 90)
|
||||
FPCH E 10 Offset (0, 150)
|
||||
Goto Ready
|
||||
}
|
||||
}
|
||||
|
||||
// Punch puff ---------------------------------------------------------------
|
||||
|
||||
ACTOR PunchPuff
|
||||
{
|
||||
+NOBLOCKMAP +NOGRAVITY
|
||||
+PUFFONACTORS
|
||||
RenderStyle Translucent
|
||||
Alpha 0.6
|
||||
SeeSound "FighterPunchHitThing"
|
||||
AttackSound "FighterPunchHitWall"
|
||||
ActiveSound "FighterPunchMiss"
|
||||
VSpeed 1
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
FHFX STUVW 4
|
||||
Stop
|
||||
}
|
||||
}
|
102
wadsrc/static/actors/hexen/fighterhammer.txt
Normal file
102
wadsrc/static/actors/hexen/fighterhammer.txt
Normal file
|
@ -0,0 +1,102 @@
|
|||
|
||||
// The Fighter's Hammer -----------------------------------------------------
|
||||
|
||||
ACTOR FWeapHammer : FighterWeapon 123
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 28
|
||||
+BLOODSPLATTER
|
||||
Weapon.SelectionOrder 900
|
||||
+WEAPON.AMMO_OPTIONAL +WEAPON.MELEEWEAPON
|
||||
Weapon.AmmoUse1 3
|
||||
Weapon.AmmoGive1 25
|
||||
Weapon.KickBack 150
|
||||
Weapon.YAdjust -10
|
||||
Weapon.AmmoType1 "Mana2"
|
||||
Inventory.PickupMessage "$TXT_WEAPON_F3"
|
||||
|
||||
action native A_FHammerAttack();
|
||||
action native A_FHammerThrow();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WFHM A -1
|
||||
Stop
|
||||
Select:
|
||||
FHMR A 1 A_Raise
|
||||
Loop
|
||||
Deselect:
|
||||
FHMR A 1 A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
FHMR A 1 A_WeaponReady
|
||||
Loop
|
||||
Fire:
|
||||
FHMR B 6 Offset (5, 0)
|
||||
FHMR C 3 Offset (5, 0) A_FHammerAttack
|
||||
FHMR D 3 Offset (5, 0)
|
||||
FHMR E 2 Offset (5, 0)
|
||||
FHMR E 10 Offset (5, 150) A_FHammerThrow
|
||||
FHMR A 1 Offset (0, 60)
|
||||
FHMR A 1 Offset (0, 55)
|
||||
FHMR A 1 Offset (0, 50)
|
||||
FHMR A 1 Offset (0, 45)
|
||||
FHMR A 1 Offset (0, 40)
|
||||
FHMR A 1 Offset (0, 35)
|
||||
FHMR A 1
|
||||
Goto Ready
|
||||
}
|
||||
}
|
||||
|
||||
// Hammer Missile -----------------------------------------------------------
|
||||
|
||||
ACTOR HammerMissile
|
||||
{
|
||||
Speed 25
|
||||
Radius 14
|
||||
Height 20
|
||||
Damage 10
|
||||
DamageType "Fire"
|
||||
Projectile
|
||||
DeathSound "FighterHammerExplode"
|
||||
|
||||
action native A_BeAdditive();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
FHFX A 2 Bright
|
||||
FHFX B 2 Bright A_PlaySound ("FighterHammerContinuous")
|
||||
FHFX CDEFGH 2 Bright
|
||||
Loop
|
||||
Death:
|
||||
FHFX I 3 Bright A_BeAdditive
|
||||
FHFX J 3 Bright
|
||||
FHFX K 3 Bright A_Explode (128, 128, 0)
|
||||
FHFX LM 3 Bright
|
||||
FHFX N 3
|
||||
FHFX OPQR 3 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Hammer Puff (also used by fist) ------------------------------------------
|
||||
|
||||
ACTOR HammerPuff
|
||||
{
|
||||
+NOBLOCKMAP +NOGRAVITY
|
||||
+PUFFONACTORS
|
||||
RenderStyle "Translucent"
|
||||
Alpha 0.6
|
||||
VSpeed 0.8
|
||||
SeeSound "FighterHammerHitThing"
|
||||
AttackSound "FighterHammerHitWall"
|
||||
ActiveSound "FighterHammerMiss"
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
FHFX STUVW 4
|
||||
Stop
|
||||
}
|
||||
}
|
163
wadsrc/static/actors/hexen/fighterquietus.txt
Normal file
163
wadsrc/static/actors/hexen/fighterquietus.txt
Normal file
|
@ -0,0 +1,163 @@
|
|||
|
||||
// Fighter Weapon Piece -----------------------------------------------------
|
||||
|
||||
ACTOR FighterWeaponPiece : FourthWeaponPiece native
|
||||
{
|
||||
Inventory.PickupMessage "$TXT_QUIETUS_PIECE"
|
||||
}
|
||||
|
||||
// Fighter Weapon Piece 1 ---------------------------------------------------
|
||||
|
||||
ACTOR FWeaponPiece1 : FighterWeaponPiece 12 native
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 29
|
||||
+FLOATBOB
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WFR1 A -1 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Fighter Weapon Piece 2 ---------------------------------------------------
|
||||
|
||||
ACTOR FWeaponPiece2 : FighterWeaponPiece 13 native
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 30
|
||||
+FLOATBOB
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WFR2 A -1 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Fighter Weapon Piece 3 ---------------------------------------------------
|
||||
|
||||
ACTOR FWeaponPiece3 : FighterWeaponPiece 16 native
|
||||
{
|
||||
Game Hexen
|
||||
SpawnID 31
|
||||
+FLOATBOB
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
WFR3 A -1 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Quietus Drop -------------------------------------------------------------
|
||||
|
||||
ACTOR QuietusDrop
|
||||
{
|
||||
action native A_DropQuietusPieces();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A 1
|
||||
TNT1 A 1 A_DropQuietusPieces
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// The Fighter's Sword (Quietus) --------------------------------------------
|
||||
|
||||
ACTOR FWeapQuietus : FighterWeapon
|
||||
{
|
||||
Weapon.SelectionOrder 2900
|
||||
+WEAPON.PRIMARY_USES_BOTH
|
||||
Weapon.AmmoUse1 14
|
||||
Weapon.AmmoUse2 14
|
||||
Weapon.AmmoGive1 0
|
||||
Weapon.AmmoGive2 0
|
||||
Weapon.KickBack 150
|
||||
Weapon.YAdjust 10
|
||||
Weapon.AmmoType1 "Mana1"
|
||||
Weapon.AmmoType2 "Mana2"
|
||||
Inventory.PickupMessage "$TXT_WEAPON_F4"
|
||||
|
||||
action native A_FSwordAttack();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A -1
|
||||
Stop
|
||||
Select:
|
||||
FSRD A 1 Bright A_Raise
|
||||
Loop
|
||||
Deselect:
|
||||
FSRD A 1 Bright A_Lower
|
||||
Loop
|
||||
Ready:
|
||||
FSRD AAAABBBBCCCC 1 Bright A_WeaponReady
|
||||
Loop
|
||||
Fire:
|
||||
FSRD DE 3 Bright Offset (5, 36)
|
||||
FSRD F 2 Bright Offset (5, 36)
|
||||
FSRD G 3 Bright Offset (5, 36) A_FSwordAttack
|
||||
FSRD H 2 Bright Offset (5, 36)
|
||||
FSRD I 2 Bright Offset (5, 36)
|
||||
FSRD I 10 Bright Offset (5, 150)
|
||||
FSRD A 1 Bright Offset (5, 60)
|
||||
FSRD B 1 Bright Offset (5, 55)
|
||||
FSRD C 1 Bright Offset (5, 50)
|
||||
FSRD A 1 Bright Offset (5, 45)
|
||||
FSRD B 1 Bright Offset (5, 40)
|
||||
Goto Ready
|
||||
}
|
||||
}
|
||||
|
||||
// Fighter Sword Missile ----------------------------------------------------
|
||||
|
||||
ACTOR FSwordMissile native
|
||||
{
|
||||
Speed 30
|
||||
Radius 16
|
||||
Height 8
|
||||
Damage 8
|
||||
Projectile
|
||||
+EXTREMEDEATH
|
||||
RenderStyle Add
|
||||
DeathSound "FighterSwordExplode"
|
||||
|
||||
action native A_FSwordFlames();
|
||||
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
FSFX ABC 3 Bright
|
||||
Loop
|
||||
Death:
|
||||
FSFX D 4 Bright
|
||||
FSFX E 3 Bright A_FSwordFlames
|
||||
FSFX F 4 Bright A_Explode (64, 128, 0)
|
||||
FSFX G 3 Bright
|
||||
FSFX H 4 Bright
|
||||
FSFX I 3 Bright
|
||||
FSFX J 4 Bright
|
||||
FSFX KLM 3 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
||||
|
||||
// Fighter Sword Flame ------------------------------------------------------
|
||||
|
||||
ACTOR FSwordFlame
|
||||
{
|
||||
+NOBLOCKMAP +NOGRAVITY
|
||||
RenderStyle Translucent
|
||||
Alpha 0.6
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
FSFX NOPQRSTUVW 3 Bright
|
||||
Stop
|
||||
}
|
||||
}
|
|
@ -101,6 +101,10 @@
|
|||
#include "actors/hexen/magecone.txt"
|
||||
#include "actors/hexen/magelightning.txt"
|
||||
#include "actors/hexen/magestaff.txt"
|
||||
#include "actors/hexen/fighterfist.txt"
|
||||
#include "actors/hexen/fighteraxe.txt"
|
||||
#include "actors/hexen/fighterhammer.txt"
|
||||
#include "actors/hexen/fighterquietus.txt"
|
||||
|
||||
#include "actors/strife/strifehumanoid.txt"
|
||||
#include "actors/strife/strifeplayer.txt"
|
||||
|
|
Loading…
Reference in a new issue