Special Ynykron handling for D'Sparil and Korax.

This commit is contained in:
Mari the Deer 2020-06-24 15:51:02 +02:00
commit 5765e6fcad
3 changed files with 32 additions and 2 deletions

View file

@ -1,2 +1,2 @@
[default]
SWWM_MODVER="\chSWWM \cwGZ\c- r399 (Wed 24 Jun 14:55:40 CEST 2020)";
SWWM_MODVER="\chSWWM \cwGZ\c- r400 (Wed 24 Jun 15:51:02 CEST 2020)";

View file

@ -3065,6 +3065,12 @@ Class SWWMHandler : EventHandler
}
}
override void CheckReplacee( ReplacedEvent e )
{
if ( e.Replacement is 'DSparilHax' )
e.Replacee = 'Sorcerer2';
}
override void CheckReplacement( ReplaceEvent e )
{
// shell types (sorted by rarity

View file

@ -53,9 +53,20 @@ Class PlayerGone : PlayerChunk
}
}
Class DSparilHax : Sorcerer2
{
override void PostBeginPlay()
{
Thing_Destroy(0);
A_BossDeath();
Destroy();
}
}
Class IDontFeelSoGood : Thinker
{
Actor goner;
int cnt;
static void DeletThis( Actor whomst )
{
@ -75,7 +86,20 @@ Class IDontFeelSoGood : Thinker
Destroy();
return;
}
if ( (goner.Health > 0) || (goner.tics != -1) ) return;
if ( goner.Health > 0 ) return;
// special handling for some bosses:
// - D'Sparil does not spawn, he's already gone
// - Korax doesn't leave ghosts
if ( (goner.tics != -1) && !(goner is 'Sorcerer1') && !(goner is 'Korax') ) return;
cnt++;
if ( cnt < 15 ) return;
if ( goner is 'Sorcerer1' )
{
let h = Actor.Spawn("DSparilHax",goner.pos);
h.CopyFriendliness(goner,true);
}
else if ( goner is 'Korax' )
level.ExecuteSpecial(80,goner,null,0,255);
goner.Destroy();
}
}