mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-29 23:33:00 +00:00
a638cfbd6e
As a consequence it must return null in the failure case instead of asserting and all calls to this function must check for the failure case.
168 lines
4.1 KiB
Text
168 lines
4.1 KiB
Text
// The player ---------------------------------------------------------------
|
|
|
|
class StrifePlayer : PlayerPawn
|
|
{
|
|
Default
|
|
{
|
|
Health 100;
|
|
Radius 18;
|
|
Height 56;
|
|
Mass 100;
|
|
PainChance 255;
|
|
Speed 1;
|
|
MaxStepHeight 16;
|
|
CrushPainSound "misc/pcrush";
|
|
Player.DisplayName "Rebel";
|
|
Player.StartItem "PunchDagger";
|
|
Player.RunHealth 15;
|
|
Player.WeaponSlot 1, "PunchDagger";
|
|
Player.WeaponSlot 2, "StrifeCrossbow2", "StrifeCrossbow";
|
|
Player.WeaponSlot 3, "AssaultGun";
|
|
Player.WeaponSlot 4, "MiniMissileLauncher";
|
|
Player.WeaponSlot 5, "StrifeGrenadeLauncher2", "StrifeGrenadeLauncher";
|
|
Player.WeaponSlot 6, "FlameThrower";
|
|
Player.WeaponSlot 7, "Mauler2", "Mauler";
|
|
Player.WeaponSlot 8, "Sigil";
|
|
|
|
Player.ColorRange 128, 143;
|
|
Player.Colorset 0, "$TXT_COLOR_BROWN", 0x80, 0x8F, 0x82;
|
|
Player.Colorset 1, "$TXT_COLOR_RED", 0x40, 0x4F, 0x42, 0x20, 0x3F, 0x00, 0x1F, 0xF1, 0xF6, 0xE0, 0xE5, 0xF7, 0xFB, 0xF1, 0xF5;
|
|
Player.Colorset 2, "$TXT_COLOR_RUST", 0xB0, 0xBF, 0xB2, 0x20, 0x3F, 0x00, 0x1F;
|
|
Player.Colorset 3, "$TXT_COLOR_GRAY", 0x10, 0x1F, 0x12, 0x20, 0x2F, 0xD0, 0xDF, 0x30, 0x3F, 0xD0, 0xDF;
|
|
Player.Colorset 4, "$TXT_COLOR_DARKGREEN", 0x30, 0x3F, 0x32, 0x20, 0x2F, 0xD0, 0xDF, 0x30, 0x3F, 0xD0, 0xDF;
|
|
Player.Colorset 5, "$TXT_COLOR_GOLD", 0x50, 0x5F, 0x52, 0x20, 0x3F, 0x00, 0x1F, 0x50, 0x5F, 0x80, 0x8F, 0xC0, 0xCF, 0xA0, 0xAF, 0xD0, 0xDF, 0xB0, 0xBF;
|
|
Player.Colorset 6, "$TXT_COLOR_BRIGHTGREEN",0x60, 0x6F, 0x62, 0x20, 0x3F, 0x00, 0x1F, 0x50, 0x5F, 0x10, 0x1F, 0xC0, 0xCF, 0x20, 0x2F, 0xD0, 0xDF, 0x30, 0x3F;
|
|
Player.Colorset 7, "$TXT_COLOR_BLUE", 0x90, 0x9F, 0x92, 0x20, 0x3F, 0x00, 0x1F, 0x50, 0x5F, 0x40, 0x4F, 0xC1, 0xCF, 0x01, 0x0F, 0xC0,0xC0,1,1, 0xD0, 0xDF, 0x10, 0x1F;
|
|
}
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
PLAY A -1;
|
|
stop;
|
|
See:
|
|
PLAY ABCD 4;
|
|
loop;
|
|
Missile:
|
|
PLAY E 12;
|
|
goto Spawn;
|
|
Melee:
|
|
PLAY F 6;
|
|
goto Missile;
|
|
Pain:
|
|
PLAY Q 4;
|
|
PLAY Q 4 A_Pain;
|
|
Goto Spawn;
|
|
Death:
|
|
PLAY H 3;
|
|
PLAY I 3 A_PlayerScream;
|
|
PLAY J 3 A_NoBlocking;
|
|
PLAY KLMNO 4;
|
|
PLAY P -1;
|
|
Stop;
|
|
XDeath:
|
|
RGIB A 5 A_TossGib;
|
|
RGIB B 5 A_XScream;
|
|
RGIB C 5 A_NoBlocking;
|
|
RGIB DEFG 5 A_TossGib;
|
|
RGIB H -1 A_TossGib;
|
|
Burn:
|
|
BURN A 3 Bright A_ItBurnsItBurns;
|
|
BURN B 3 Bright A_DropFire;
|
|
BURN C 3 Bright A_Wander;
|
|
BURN D 3 Bright A_NoBlocking;
|
|
BURN E 5 Bright A_DropFire;
|
|
BURN FGH 5 Bright A_Wander;
|
|
BURN I 5 Bright A_DropFire;
|
|
BURN JKL 5 Bright A_Wander;
|
|
BURN M 5 Bright A_DropFire;
|
|
BURN N 5 Bright A_CrispyPlayer;
|
|
BURN OPQPQ 5 Bright;
|
|
BURN RSTU 7 Bright;
|
|
BURN V -1;
|
|
Stop;
|
|
Disintegrate:
|
|
DISR A 5 A_StartSound("misc/disruptordeath", CHAN_VOICE);
|
|
DISR BC 5;
|
|
DISR D 5 A_NoBlocking;
|
|
DISR EF 5;
|
|
DISR GHIJ 4;
|
|
MEAT D -1;
|
|
Stop;
|
|
Firehands:
|
|
WAVE ABCD 3;
|
|
Loop;
|
|
Firehandslower:
|
|
WAVE ABCD 3 A_HandLower;
|
|
Loop;
|
|
}
|
|
|
|
void A_ItBurnsItBurns()
|
|
{
|
|
A_StartSound ("human/imonfire", CHAN_VOICE);
|
|
|
|
if (player != null && player.mo == self)
|
|
{
|
|
player.SetPsprite(PSP_STRIFEHANDS, FindState("FireHands"));
|
|
|
|
player.ReadyWeapon = null;
|
|
player.PendingWeapon = WP_NOCHANGE;
|
|
player.playerstate = PST_LIVE;
|
|
player.extralight = 3;
|
|
}
|
|
}
|
|
|
|
void A_CrispyPlayer()
|
|
{
|
|
if (player != null && player.mo == self)
|
|
{
|
|
PSprite psp = player.GetPSprite(PSP_STRIFEHANDS);
|
|
|
|
State firehandslower = FindState("FireHandsLower");
|
|
State firehands = FindState("FireHands");
|
|
|
|
if (psp)
|
|
{
|
|
if (psp.CurState != null && firehandslower != null && firehands != null)
|
|
{
|
|
// Calculate state to go to.
|
|
int dist = firehands.DistanceTo(psp.curState);
|
|
if (dist > 0)
|
|
{
|
|
player.playerstate = PST_DEAD;
|
|
psp.SetState(firehandslower + dist);
|
|
return;
|
|
}
|
|
}
|
|
player.playerstate = PST_DEAD;
|
|
psp.SetState(null);
|
|
}
|
|
}
|
|
}
|
|
|
|
void A_HandLower()
|
|
{
|
|
if (player != null)
|
|
{
|
|
PSprite psp = player.GetPSprite(PSP_STRIFEHANDS);
|
|
if (psp)
|
|
{
|
|
if (psp.CurState == null)
|
|
{
|
|
psp.SetState(null);
|
|
return;
|
|
}
|
|
|
|
psp.y += 9;
|
|
if (psp.y > WEAPONBOTTOM*2)
|
|
{
|
|
psp.SetState(null);
|
|
}
|
|
}
|
|
if (player.extralight > 0) player.extralight--;
|
|
}
|
|
return;
|
|
}
|
|
|
|
}
|
|
|