mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 23:01:50 +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(MinotaurChase)
|
||||||
ACTOR(MinotaurDeath)
|
ACTOR(MinotaurDeath)
|
||||||
|
|
||||||
|
// Hexen stuff
|
||||||
ACTOR(BatSpawnInit)
|
ACTOR(BatSpawnInit)
|
||||||
ACTOR(BatSpawn)
|
ACTOR(BatSpawn)
|
||||||
ACTOR(BatMove)
|
ACTOR(BatMove)
|
||||||
|
@ -255,6 +255,18 @@ ACTOR(FiredSplotch)
|
||||||
ACTOR(SmBounce)
|
ACTOR(SmBounce)
|
||||||
ACTOR(FogSpawn)
|
ACTOR(FogSpawn)
|
||||||
ACTOR(FogMove)
|
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(Summon)
|
||||||
ACTOR(PoisonBagInit)
|
ACTOR(PoisonBagInit)
|
||||||
ACTOR(CheckThrowBomb)
|
ACTOR(CheckThrowBomb)
|
||||||
|
|
|
@ -33,7 +33,7 @@ void A_CMaceAttack (AActor *actor)
|
||||||
slope = P_AimLineAttack (player->mo, angle, 2*MELEERANGE, &linetarget);
|
slope = P_AimLineAttack (player->mo, angle, 2*MELEERANGE, &linetarget);
|
||||||
if (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);
|
AdjustPlayerAngle (player->mo, linetarget);
|
||||||
// player->mo->angle = R_PointToAngle2(player->mo->x,
|
// player->mo->angle = R_PointToAngle2(player->mo->x,
|
||||||
// player->mo->y, linetarget->x, linetarget->y);
|
// 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);
|
slope = P_AimLineAttack (player->mo, angle, 2*MELEERANGE, &linetarget);
|
||||||
if (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);
|
AdjustPlayerAngle (player->mo, linetarget);
|
||||||
// player->mo->angle = R_PointToAngle2(player->mo->x,
|
// player->mo->angle = R_PointToAngle2(player->mo->x,
|
||||||
// player->mo->y, linetarget->x, linetarget->y);
|
// player->mo->y, linetarget->x, linetarget->y);
|
||||||
|
@ -55,7 +55,7 @@ void A_CMaceAttack (AActor *actor)
|
||||||
|
|
||||||
angle = player->mo->angle;
|
angle = player->mo->angle;
|
||||||
slope = P_AimLineAttack (player->mo, angle, MELEERANGE, &linetarget);
|
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:
|
macedone:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ EXTERN_CVAR (Int, cl_bloodtype)
|
||||||
|
|
||||||
class AFWeapAxe : public AFighterWeapon
|
class AFWeapAxe : public AFighterWeapon
|
||||||
{
|
{
|
||||||
DECLARE_ACTOR (AFWeapAxe, AFighterWeapon)
|
DECLARE_CLASS (AFWeapAxe, AFighterWeapon)
|
||||||
public:
|
public:
|
||||||
FState *GetUpState ();
|
FState *GetUpState ();
|
||||||
FState *GetDownState ();
|
FState *GetDownState ();
|
||||||
|
@ -39,157 +39,28 @@ public:
|
||||||
FState *GetAtkState (bool hold);
|
FState *GetAtkState (bool hold);
|
||||||
};
|
};
|
||||||
|
|
||||||
FState AFWeapAxe::States[] =
|
IMPLEMENT_CLASS (AFWeapAxe)
|
||||||
{
|
|
||||||
#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
|
|
||||||
|
|
||||||
FState *AFWeapAxe::GetUpState ()
|
FState *AFWeapAxe::GetUpState ()
|
||||||
{
|
{
|
||||||
return Ammo1->Amount ? &States[S_FAXEUP_G] : Super::GetUpState();
|
return Ammo1->Amount ? FindState ("SelectGlow") : Super::GetUpState();
|
||||||
}
|
}
|
||||||
|
|
||||||
FState *AFWeapAxe::GetDownState ()
|
FState *AFWeapAxe::GetDownState ()
|
||||||
{
|
{
|
||||||
return Ammo1->Amount ? &States[S_FAXEDOWN_G] : Super::GetDownState();
|
return Ammo1->Amount ? FindState ("DeselectGlow") : Super::GetDownState();
|
||||||
}
|
}
|
||||||
|
|
||||||
FState *AFWeapAxe::GetReadyState ()
|
FState *AFWeapAxe::GetReadyState ()
|
||||||
{
|
{
|
||||||
return Ammo1->Amount ? &States[S_FAXEREADY_G] : Super::GetReadyState();
|
return Ammo1->Amount ? FindState ("ReadyGlow") : Super::GetReadyState();
|
||||||
}
|
}
|
||||||
|
|
||||||
FState *AFWeapAxe::GetAtkState (bool hold)
|
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
|
// A_FAxeCheckReady
|
||||||
|
@ -206,7 +77,7 @@ void A_FAxeCheckReady (AActor *actor)
|
||||||
}
|
}
|
||||||
if (player->ReadyWeapon->Ammo1->Amount)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -230,7 +101,7 @@ void A_FAxeCheckReadyG (AActor *actor)
|
||||||
}
|
}
|
||||||
if (player->ReadyWeapon->Ammo1->Amount <= 0)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -254,7 +125,7 @@ void A_FAxeCheckUp (AActor *actor)
|
||||||
}
|
}
|
||||||
if (player->ReadyWeapon->Ammo1->Amount)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -278,7 +149,7 @@ void A_FAxeCheckUpG (AActor *actor)
|
||||||
}
|
}
|
||||||
if (player->ReadyWeapon->Ammo1->Amount <= 0)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -302,7 +173,7 @@ void A_FAxeCheckAtk (AActor *actor)
|
||||||
}
|
}
|
||||||
if (player->ReadyWeapon->Ammo1->Amount)
|
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;
|
damage <<= 1;
|
||||||
power = 6*FRACUNIT;
|
power = 6*FRACUNIT;
|
||||||
pufftype = RUNTIME_CLASS(AAxePuffGlow);
|
pufftype = PClass::FindClass ("AxePuffGlow");
|
||||||
useMana = 1;
|
useMana = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pufftype = RUNTIME_CLASS(AAxePuff);
|
pufftype = PClass::FindClass ("AxePuff");
|
||||||
useMana = 0;
|
useMana = 0;
|
||||||
}
|
}
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
|
@ -395,7 +266,7 @@ axedone:
|
||||||
(!(weapon->WeaponFlags & WIF_PRIMARY_USES_BOTH) ||
|
(!(weapon->WeaponFlags & WIF_PRIMARY_USES_BOTH) ||
|
||||||
weapon->Ammo2 == NULL || weapon->Ammo2->Amount == 0))
|
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);
|
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
|
// A_FHammerAttack
|
||||||
|
@ -195,7 +47,7 @@ void A_FHammerAttack (AActor *actor)
|
||||||
slope = P_AimLineAttack (pmo, angle, HAMMER_RANGE, &linetarget);
|
slope = P_AimLineAttack (pmo, angle, HAMMER_RANGE, &linetarget);
|
||||||
if (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);
|
AdjustPlayerAngle(pmo, linetarget);
|
||||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
||||||
{
|
{
|
||||||
|
@ -208,7 +60,7 @@ void A_FHammerAttack (AActor *actor)
|
||||||
slope = P_AimLineAttack(pmo, angle, HAMMER_RANGE, &linetarget);
|
slope = P_AimLineAttack(pmo, angle, HAMMER_RANGE, &linetarget);
|
||||||
if(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);
|
AdjustPlayerAngle(pmo, linetarget);
|
||||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
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
|
// didn't find any targets in meleerange, so set to throw out a hammer
|
||||||
angle = pmo->angle;
|
angle = pmo->angle;
|
||||||
slope = P_AimLineAttack (pmo, angle, HAMMER_RANGE, &linetarget);
|
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;
|
pmo->special1 = false;
|
||||||
}
|
}
|
||||||
|
@ -266,20 +118,9 @@ void A_FHammerThrow (AActor *actor)
|
||||||
if (!weapon->DepleteAmmo (weapon->bAltFire, false))
|
if (!weapon->DepleteAmmo (weapon->bAltFire, false))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mo = P_SpawnPlayerMissile (player->mo, RUNTIME_CLASS(AHammerMissile));
|
mo = P_SpawnPlayerMissile (player->mo, PClass::FindClass ("HammerMissile"));
|
||||||
if (mo)
|
if (mo)
|
||||||
{
|
{
|
||||||
mo->special1 = 0;
|
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
|
// A_FPunchAttack
|
||||||
|
@ -245,7 +158,7 @@ void A_FPunchAttack (AActor *actor)
|
||||||
|
|
||||||
damage = 40+(pr_fpatk()&15);
|
damage = 40+(pr_fpatk()&15);
|
||||||
power = 2*FRACUNIT;
|
power = 2*FRACUNIT;
|
||||||
pufftype = RUNTIME_CLASS(APunchPuff);
|
pufftype = PClass::FindClass ("PunchPuff");
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
angle = pmo->angle + i*(ANG45/16);
|
angle = pmo->angle + i*(ANG45/16);
|
||||||
|
@ -257,7 +170,7 @@ void A_FPunchAttack (AActor *actor)
|
||||||
{
|
{
|
||||||
damage <<= 1;
|
damage <<= 1;
|
||||||
power = 6*FRACUNIT;
|
power = 6*FRACUNIT;
|
||||||
pufftype = RUNTIME_CLASS(AHammerPuff);
|
pufftype = PClass::FindClass ("HammerPuff");
|
||||||
}
|
}
|
||||||
P_LineAttack (pmo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, pufftype, true);
|
P_LineAttack (pmo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, pufftype, true);
|
||||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
||||||
|
@ -276,7 +189,7 @@ void A_FPunchAttack (AActor *actor)
|
||||||
{
|
{
|
||||||
damage <<= 1;
|
damage <<= 1;
|
||||||
power = 6*FRACUNIT;
|
power = 6*FRACUNIT;
|
||||||
pufftype = RUNTIME_CLASS(AHammerPuff);
|
pufftype = PClass::FindClass ("HammerPuff");
|
||||||
}
|
}
|
||||||
P_LineAttack (pmo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, pufftype, true);
|
P_LineAttack (pmo, angle, 2*MELEERANGE, slope, damage, NAME_Melee, pufftype, true);
|
||||||
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
if (linetarget->flags3&MF3_ISMONSTER || linetarget->player)
|
||||||
|
@ -298,7 +211,7 @@ punchdone:
|
||||||
if (pmo->special1 == 3)
|
if (pmo->special1 == 3)
|
||||||
{
|
{
|
||||||
pmo->special1 = 0;
|
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);
|
S_Sound (pmo, CHAN_VOICE, "*fistgrunt", 1, ATTN_NORM);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -28,9 +28,7 @@ protected:
|
||||||
bool MatchPlayerClass (AActor *toucher);
|
bool MatchPlayerClass (AActor *toucher);
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_STATELESS_ACTOR (AFighterWeaponPiece, Hexen, -1, 0)
|
IMPLEMENT_CLASS (AFighterWeaponPiece)
|
||||||
PROP_Inventory_PickupMessage("$TXT_QUIETUS_PIECE")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
bool AFighterWeaponPiece::MatchPlayerClass (AActor *toucher)
|
bool AFighterWeaponPiece::MatchPlayerClass (AActor *toucher)
|
||||||
{
|
{
|
||||||
|
@ -42,21 +40,12 @@ bool AFighterWeaponPiece::MatchPlayerClass (AActor *toucher)
|
||||||
|
|
||||||
class AFWeaponPiece1 : public AFighterWeaponPiece
|
class AFWeaponPiece1 : public AFighterWeaponPiece
|
||||||
{
|
{
|
||||||
DECLARE_ACTOR (AFWeaponPiece1, AFighterWeaponPiece)
|
DECLARE_CLASS (AFWeaponPiece1, AFighterWeaponPiece)
|
||||||
public:
|
public:
|
||||||
void BeginPlay ();
|
void BeginPlay ();
|
||||||
};
|
};
|
||||||
|
|
||||||
FState AFWeaponPiece1::States[] =
|
IMPLEMENT_CLASS (AFWeaponPiece1)
|
||||||
{
|
|
||||||
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
|
|
||||||
|
|
||||||
void AFWeaponPiece1::BeginPlay ()
|
void AFWeaponPiece1::BeginPlay ()
|
||||||
{
|
{
|
||||||
|
@ -68,21 +57,12 @@ void AFWeaponPiece1::BeginPlay ()
|
||||||
|
|
||||||
class AFWeaponPiece2 : public AFighterWeaponPiece
|
class AFWeaponPiece2 : public AFighterWeaponPiece
|
||||||
{
|
{
|
||||||
DECLARE_ACTOR (AFWeaponPiece2, AFighterWeaponPiece)
|
DECLARE_CLASS (AFWeaponPiece2, AFighterWeaponPiece)
|
||||||
public:
|
public:
|
||||||
void BeginPlay ();
|
void BeginPlay ();
|
||||||
};
|
};
|
||||||
|
|
||||||
FState AFWeaponPiece2::States[] =
|
IMPLEMENT_CLASS (AFWeaponPiece2)
|
||||||
{
|
|
||||||
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
|
|
||||||
|
|
||||||
void AFWeaponPiece2::BeginPlay ()
|
void AFWeaponPiece2::BeginPlay ()
|
||||||
{
|
{
|
||||||
|
@ -94,21 +74,12 @@ void AFWeaponPiece2::BeginPlay ()
|
||||||
|
|
||||||
class AFWeaponPiece3 : public AFighterWeaponPiece
|
class AFWeaponPiece3 : public AFighterWeaponPiece
|
||||||
{
|
{
|
||||||
DECLARE_ACTOR (AFWeaponPiece3, AFighterWeaponPiece)
|
DECLARE_CLASS (AFWeaponPiece3, AFighterWeaponPiece)
|
||||||
public:
|
public:
|
||||||
void BeginPlay ();
|
void BeginPlay ();
|
||||||
};
|
};
|
||||||
|
|
||||||
FState AFWeaponPiece3::States[] =
|
IMPLEMENT_CLASS (AFWeaponPiece3)
|
||||||
{
|
|
||||||
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
|
|
||||||
|
|
||||||
void AFWeaponPiece3::BeginPlay ()
|
void AFWeaponPiece3::BeginPlay ()
|
||||||
{
|
{
|
||||||
|
@ -116,147 +87,16 @@ void AFWeaponPiece3::BeginPlay ()
|
||||||
PieceValue = WPIECE3;
|
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 ----------------------------------------------------
|
// Fighter Sword Missile ----------------------------------------------------
|
||||||
|
|
||||||
class AFSwordMissile : public AActor
|
class AFSwordMissile : public AActor
|
||||||
{
|
{
|
||||||
DECLARE_ACTOR (AFSwordMissile, AActor)
|
DECLARE_CLASS (AFSwordMissile, AActor)
|
||||||
public:
|
public:
|
||||||
void GetExplodeParms (int &damage, int &dist, bool &hurtSource);
|
|
||||||
int DoSpecialDamage(AActor *victim, AActor *source, int damage);
|
int DoSpecialDamage(AActor *victim, AActor *source, int damage);
|
||||||
};
|
};
|
||||||
|
|
||||||
FState AFSwordMissile::States[] =
|
IMPLEMENT_CLASS (AFSwordMissile)
|
||||||
{
|
|
||||||
#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;
|
|
||||||
}
|
|
||||||
|
|
||||||
int AFSwordMissile::DoSpecialDamage(AActor *victim, AActor *source, int damage)
|
int AFSwordMissile::DoSpecialDamage(AActor *victim, AActor *source, int damage)
|
||||||
{
|
{
|
||||||
|
@ -267,36 +107,6 @@ int AFSwordMissile::DoSpecialDamage(AActor *victim, AActor *source, int damage)
|
||||||
return 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
|
// A_FSwordAttack
|
||||||
|
@ -340,7 +150,7 @@ void A_FSwordFlames (AActor *actor)
|
||||||
fixed_t x = actor->x+((pr_fswordflame()-128)<<12);
|
fixed_t x = actor->x+((pr_fswordflame()-128)<<12);
|
||||||
fixed_t y = actor->y+((pr_fswordflame()-128)<<12);
|
fixed_t y = actor->y+((pr_fswordflame()-128)<<12);
|
||||||
fixed_t z = actor->z+((pr_fswordflame()-128)<<11);
|
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 ()
|
void AFighterWeaponPiece::BeginPlay ()
|
||||||
{
|
{
|
||||||
Super::BeginPlay ();
|
Super::BeginPlay ();
|
||||||
FourthWeaponClass = RUNTIME_CLASS(AFWeapQuietus);
|
FourthWeaponClass = PClass::FindClass ("FWeapQuietus");
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
|
@ -38,13 +38,6 @@ public:
|
||||||
bool IsOkayToAttack (AActor *link);
|
bool IsOkayToAttack (AActor *link);
|
||||||
};
|
};
|
||||||
|
|
||||||
class AHammerPuff : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (AHammerPuff, AActor)
|
|
||||||
public:
|
|
||||||
void BeginPlay ();
|
|
||||||
};
|
|
||||||
|
|
||||||
class AFourthWeaponPiece : public AInventory
|
class AFourthWeaponPiece : public AInventory
|
||||||
{
|
{
|
||||||
DECLARE_STATELESS_ACTOR (AFourthWeaponPiece, 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
|
// Add the item to the inventory. It is not already there, or HandlePickup
|
||||||
// would have already taken care of it.
|
// would have already taken care of it.
|
||||||
AInventory *copy = CreateCopy (toucher);
|
AInventory *copy = CreeCopy (toucher);
|
||||||
if (copy == NULL)
|
if (copy == NULL)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -66,17 +66,7 @@ public:
|
||||||
bool TryPickup (AActor *toucher);
|
bool TryPickup (AActor *toucher);
|
||||||
};
|
};
|
||||||
|
|
||||||
class AStrifeWeapon : public AWeapon
|
class ASigil : public AWeapon
|
||||||
{
|
|
||||||
DECLARE_STATELESS_ACTOR (AStrifeWeapon, AWeapon)
|
|
||||||
};
|
|
||||||
|
|
||||||
class AFlameThrower : public AStrifeWeapon
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (AFlameThrower, AStrifeWeapon)
|
|
||||||
};
|
|
||||||
|
|
||||||
class ASigil : public AStrifeWeapon
|
|
||||||
{
|
{
|
||||||
DECLARE_ACTOR (ASigil, AStrifeWeapon)
|
DECLARE_ACTOR (ASigil, AStrifeWeapon)
|
||||||
public:
|
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)
|
else if (offset>0)
|
||||||
{
|
{
|
||||||
|
if (CallingState == NULL) return NULL;
|
||||||
return CallingState + offset;
|
return CallingState + offset;
|
||||||
}
|
}
|
||||||
else if (self != NULL)
|
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/magecone.txt"
|
||||||
#include "actors/hexen/magelightning.txt"
|
#include "actors/hexen/magelightning.txt"
|
||||||
#include "actors/hexen/magestaff.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/strifehumanoid.txt"
|
||||||
#include "actors/strife/strifeplayer.txt"
|
#include "actors/strife/strifeplayer.txt"
|
||||||
|
|
Loading…
Reference in a new issue