mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-12-12 05:31:58 +00:00
b667b930a3
The old code was essentially ineffective and useless, this is how MBF had it and how it was supposed to be.
99 lines
1.8 KiB
Text
99 lines
1.8 KiB
Text
//===========================================================================
|
|
//
|
|
// Spider boss
|
|
//
|
|
//===========================================================================
|
|
class SpiderMastermind : Actor
|
|
{
|
|
Default
|
|
{
|
|
Health 3000;
|
|
Radius 128;
|
|
Height 100;
|
|
Mass 1000;
|
|
Speed 12;
|
|
PainChance 40;
|
|
MissileChanceMult 0.5;
|
|
Monster;
|
|
+BOSS
|
|
+FLOORCLIP
|
|
+NORADIUSDMG
|
|
+DONTMORPH
|
|
+BOSSDEATH
|
|
+E3M8BOSS
|
|
+E4M8BOSS
|
|
SeeSound "spider/sight";
|
|
AttackSound "spider/attack";
|
|
PainSound "spider/pain";
|
|
DeathSound "spider/death";
|
|
ActiveSound "spider/active";
|
|
Obituary "$OB_SPIDER";
|
|
Tag "$FN_SPIDER";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
SPID AB 10 A_Look;
|
|
Loop;
|
|
See:
|
|
SPID A 3 A_Metal;
|
|
SPID ABB 3 A_Chase;
|
|
SPID C 3 A_Metal;
|
|
SPID CDD 3 A_Chase;
|
|
SPID E 3 A_Metal;
|
|
SPID EFF 3 A_Chase;
|
|
Loop;
|
|
Missile:
|
|
SPID A 20 BRIGHT A_FaceTarget;
|
|
SPID G 4 BRIGHT A_SPosAttackUseAtkSound;
|
|
SPID H 4 BRIGHT A_SposAttackUseAtkSound;
|
|
SPID H 1 BRIGHT A_SpidRefire;
|
|
Goto Missile+1;
|
|
Pain:
|
|
SPID I 3;
|
|
SPID I 3 A_Pain;
|
|
Goto See;
|
|
Death:
|
|
SPID J 20 A_Scream;
|
|
SPID K 10 A_NoBlocking;
|
|
SPID LMNOPQR 10;
|
|
SPID S 30;
|
|
SPID S -1 A_BossDeath;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
//===========================================================================
|
|
//
|
|
// Code (must be attached to Actor)
|
|
//
|
|
//===========================================================================
|
|
|
|
extend class Actor
|
|
{
|
|
void A_SpidRefire()
|
|
{
|
|
if (HitFriend())
|
|
{
|
|
SetState(SeeState);
|
|
return;
|
|
}
|
|
// keep firing unless target got out of sight
|
|
A_FaceTarget();
|
|
if (Random[CPosRefire](0, 255) >= 10)
|
|
{
|
|
if (!target
|
|
|| target.health <= 0
|
|
|| !CheckSight(target, SF_SEEPASTBLOCKEVERYTHING|SF_SEEPASTSHOOTABLELINES))
|
|
{
|
|
SetState(SeeState);
|
|
}
|
|
}
|
|
}
|
|
|
|
void A_Metal()
|
|
{
|
|
A_StartSound("spider/walk", CHAN_BODY, CHANF_DEFAULT, 1, ATTN_IDLE);
|
|
A_Chase();
|
|
}
|
|
}
|