Boss handling in various places now accounts for enhanced vanilla bosses.
This commit is contained in:
parent
7891c441c6
commit
6dd9550d0a
8 changed files with 38 additions and 17 deletions
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1.7 \cu(Tue 21 Sep 23:35:36 CEST 2021)\c-";
|
||||
SWWM_SHORTVER="\cw1.1.7 \cu(2021-09-21 23:35:36)\c-";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1.7 r1 \cu(Wed 22 Sep 00:32:40 CEST 2021)\c-";
|
||||
SWWM_SHORTVER="\cw1.1.7 r1 \cu(2021-09-22 00:32:40)\c-";
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ extend Class SWWMHandler
|
|||
if ( e.Damage > s.topdealt ) s.topdealt = e.Damage;
|
||||
}
|
||||
SWWMFlyTracker.Track(e.Thing,e.DamageSource);
|
||||
if ( e.Thing.bBOSS )
|
||||
if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") )
|
||||
{
|
||||
let tk = e.Thing.FindInventory("DeepImpactOnlyToken");
|
||||
if ( !tk )
|
||||
|
|
@ -141,7 +141,7 @@ extend Class SWWMHandler
|
|||
{
|
||||
if ( e.Thing.IsFriend(e.DamageSource) )
|
||||
lastcombat = AddOneliner("friendhit",1,10);
|
||||
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,e.DamageSource.bBOSS?2:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls
|
||||
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.FindInventory("BossMarker"))?2:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls
|
||||
lastcombat = AddOneliner("gethit",1,15);
|
||||
}
|
||||
highesttic = gametic;
|
||||
|
|
@ -180,7 +180,7 @@ extend Class SWWMHandler
|
|||
{
|
||||
if ( e.Thing.IsFriend(src) )
|
||||
lastcombat = AddOneliner("friendkill",1,5);
|
||||
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,e.Thing.bBOSS?2:5) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls
|
||||
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?2:5) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls
|
||||
lastcombat = AddOneliner("scorekill",1,15);
|
||||
}
|
||||
}
|
||||
|
|
@ -188,7 +188,7 @@ extend Class SWWMHandler
|
|||
// achievement stuff
|
||||
if ( e.Thing.IsHostile(src) )
|
||||
{
|
||||
if ( e.Thing.bBOSS && ((e.DamageType == 'Dash') || (e.DamageType == 'Buttslam')) )
|
||||
if ( (e.Thing.bBOSS||e.Thing.FindInventory("BossMarker")) && ((e.DamageType == 'Dash') || (e.DamageType == 'Buttslam')) )
|
||||
SWWMUtility.AchievementProgressInc('swwm_progress_bossdash',1,src.player);
|
||||
if ( e.DamageType == 'Push' )
|
||||
SWWMUtility.AchievementProgressInc('swwm_progress_sneeze',1,src.player);
|
||||
|
|
@ -334,7 +334,7 @@ extend Class SWWMHandler
|
|||
scr.xcnt = ++ofs;
|
||||
}
|
||||
}
|
||||
if ( e.Thing.bBOSS )
|
||||
if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") )
|
||||
{
|
||||
score += 2000;
|
||||
if ( scr )
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// vanilla boss stuff
|
||||
|
||||
Class EndgameBossMarker : Inventory {}
|
||||
Class BossMarker : Inventory {}
|
||||
|
||||
extend Class SWWMHandler
|
||||
{
|
||||
|
|
@ -116,6 +117,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_BRUISERS";
|
||||
}
|
||||
|
|
@ -126,6 +128,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_CYBIE";
|
||||
}
|
||||
|
|
@ -136,6 +139,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 6;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_SPIDER";
|
||||
|
|
@ -147,6 +151,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_SPIDER2";
|
||||
}
|
||||
|
|
@ -157,6 +162,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_DIMPLE";
|
||||
}
|
||||
|
|
@ -168,6 +174,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 40; // goodbye, instakills
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
}
|
||||
if ( e.Thing is 'BossEye' )
|
||||
|
|
@ -181,6 +188,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_CYBIE2";
|
||||
}
|
||||
|
|
@ -191,6 +199,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_LICHES";
|
||||
}
|
||||
|
|
@ -201,6 +210,7 @@ extend Class SWWMHandler
|
|||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
bosstag = "$BT_MINOTAUR";
|
||||
}
|
||||
|
|
@ -212,6 +222,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_DSPARIL";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
}
|
||||
else if ( e.Thing is 'Sorcerer2' )
|
||||
|
|
@ -223,6 +234,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_DSPARIL2";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
}
|
||||
}
|
||||
|
|
@ -234,6 +246,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_CLERIC";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP36 )
|
||||
|
|
@ -244,6 +257,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_FIGHTER";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP37 )
|
||||
|
|
@ -254,6 +268,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_MAGE";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP12 )
|
||||
|
|
@ -264,6 +279,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_DRAGON";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP23_HMAP27_HMAP48_HMAP55 )
|
||||
|
|
@ -274,6 +290,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_HERESIARCH";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP40 )
|
||||
|
|
@ -284,6 +301,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 10;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_KORAX";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
}
|
||||
}
|
||||
|
|
@ -296,6 +314,7 @@ extend Class SWWMHandler
|
|||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_DEATHKINGS";
|
||||
initialized = true; // healthbar shows from the start
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
}
|
||||
}
|
||||
|
|
@ -307,6 +326,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_ARCHANGELUS";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
}
|
||||
else if ( e.Thing.GetClassName() == "ArchangelusB" )
|
||||
|
|
@ -318,6 +338,7 @@ extend Class SWWMHandler
|
|||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_ARCHANGELUS";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
doextramsg = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ extend Class SWWMHandler
|
|||
override void WorldThingDied( WorldEvent e )
|
||||
{
|
||||
if ( profiling ) curms = MSTime();
|
||||
if ( e.Thing.default.bISMONSTER && ((e.Thing.default.bBOSS) || (e.Thing.GetSpawnHealth() >= 1000)) && (alreadygold.Find(e.Thing) == alreadygold.Size()) )
|
||||
if ( e.Thing.default.bISMONSTER && ((e.Thing.default.bBOSS) || (e.Thing.GetSpawnHealth() >= 1000) || e.Thing.FindInventory("BossMarker")) && (alreadygold.Find(e.Thing) == alreadygold.Size()) )
|
||||
{
|
||||
// make sure we can't farm drops from revivable enemies
|
||||
// (or cause some things to spam-spawn gold shells)
|
||||
|
|
|
|||
|
|
@ -2345,7 +2345,7 @@ Class MykradvoTendril : Actor
|
|||
{
|
||||
if ( t.hitlist[i].hitactor.IsFriend(target) ) continue;
|
||||
if ( (t.hitlist[i].hitactor == tracer) && bMISSILEMORE ) bMISSILEEVENMORE = true; // we split
|
||||
int dmg = t.hitlist[i].hitactor.bBOSS?(GetMissileDamage(0,0)*4):max(t.hitlist[i].hitactor.Health,GetMissileDamage(0,0));
|
||||
int dmg = (t.hitlist[i].hitactor.bBOSS||t.hitlist[i].hitactor.FindInventory("BossMarker"))?(GetMissileDamage(0,0)*4):max(t.hitlist[i].hitactor.Health,GetMissileDamage(0,0));
|
||||
SWWMUtility.DoKnockback(t.hitlist[i].hitactor,-t.hitlist[i].x+(0,0,.5),((t.hitlist[i].hitactor.Health-dmg)<=0)?60000:8000);
|
||||
t.hitlist[i].hitactor.DamageMobj(self,target,dmg,'Plasma',DMG_THRUSTLESS);
|
||||
if ( t.hitlist[i].hitactor && t.hitlist[i].hitactor.bISMONSTER && !Random[Mykradvo](0,3) )
|
||||
|
|
@ -2353,7 +2353,7 @@ Class MykradvoTendril : Actor
|
|||
}
|
||||
}
|
||||
invoker.nextpos = level.Vec3Offset(pos,x*speed);
|
||||
if ( !bSTANDSTILL && (!tracer || !tracer.bSHOOTABLE || (tracer.Health <= 0) || (tracer.bBOSS && !bMISSILEMORE)) )
|
||||
if ( !bSTANDSTILL && (!tracer || !tracer.bSHOOTABLE || (tracer.Health <= 0) || ((tracer.bBOSS || tracer.FindInventory("BossMarker")) && !bMISSILEMORE)) )
|
||||
{
|
||||
ReactionTime--;
|
||||
if ( ReactionTime <= 0 )
|
||||
|
|
@ -2396,7 +2396,7 @@ Class MykradvoTendril : Actor
|
|||
r.pitch = asin(-sdir.z);
|
||||
r.target = target;
|
||||
r.tracer = tracer;
|
||||
if ( tracer && tracer.bBOSS ) r.ReactionTime -= Random[ExploS](5,15);
|
||||
if ( tracer && (tracer.bBOSS || tracer.FindInventory("BossMarker")) ) r.ReactionTime -= Random[ExploS](5,15);
|
||||
else r.ReactionTime += Random[ExploS](0,20);
|
||||
}
|
||||
return;
|
||||
|
|
@ -2850,7 +2850,7 @@ Class Mykradvo : Inventory
|
|||
Amount++;
|
||||
return true;
|
||||
}
|
||||
if ( (targets.Size() == 1) && targets[0] && !targets[0].bBOSS )
|
||||
if ( (targets.Size() == 1) && targets[0] && !targets[0].bBOSS && !targets[0].FindInventory("BossMarker") )
|
||||
SWWMUtility.MarkAchievement('swwm_achievement_anone',Owner.player);
|
||||
let p = Spawn("MykradvoBurst",spawnpos);
|
||||
p.target = Owner;
|
||||
|
|
|
|||
|
|
@ -518,7 +518,7 @@ Class YnykronImpact : Actor
|
|||
if ( t && YnykronShot(master) )
|
||||
{
|
||||
YnykronShot(master).hitlist.Push(t);
|
||||
if ( t.bBOSS ) YnykronShot(master).hitboss = true;
|
||||
if ( t.bBOSS || t.FindInventory("BossMarker") ) YnykronShot(master).hitboss = true;
|
||||
}
|
||||
// spawn blast that will propagate
|
||||
let b = Spawn("YnykronDelayedImpact",t.pos);
|
||||
|
|
@ -705,7 +705,7 @@ Class YnykronBeam : Actor
|
|||
if ( t.hitlist[i].hitactor && YnykronShot(master) )
|
||||
{
|
||||
YnykronShot(master).hitlist.Push(t.hitlist[i].hitactor);
|
||||
if ( t.hitlist[i].hitactor.bBOSS ) YnykronShot(master).hitboss = true;
|
||||
if ( t.hitlist[i].hitactor.bBOSS || t.hitlist[i].hitactor.FindInventory("BossMarker") ) YnykronShot(master).hitboss = true;
|
||||
}
|
||||
// spawn blast that will propagate
|
||||
let b = Spawn("YnykronImpact",t.hitlist[i].hitlocation);
|
||||
|
|
@ -805,7 +805,7 @@ Class YnykronBeam : Actor
|
|||
if ( it.hitlist[i].hitactor && YnykronShot(master) )
|
||||
{
|
||||
YnykronShot(master).hitlist.Push(it.hitlist[i].hitactor);
|
||||
if ( it.hitlist[i].hitactor.bBOSS ) YnykronShot(master).hitboss = true;
|
||||
if ( it.hitlist[i].hitactor.bBOSS || it.hitlist[i].hitactor.FindInventory("BossMarker") ) YnykronShot(master).hitboss = true;
|
||||
}
|
||||
// spawn blast that will propagate
|
||||
let b = Spawn("YnykronImpact",it.hitlist[i].hitlocation);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ Class AirBullet : FastProjectile
|
|||
}
|
||||
override int DoSpecialDamage( Actor target, int damage, Name damagetype )
|
||||
{
|
||||
if ( target.bBOSS ) damage = int(damage*.4);
|
||||
if ( target.bBOSS || target.FindInventory("BossMarker") ) damage = int(damage*.4);
|
||||
if ( !bAMBUSH )
|
||||
{
|
||||
if ( target == lasthit ) return 0;
|
||||
|
|
|
|||
|
|
@ -1220,7 +1220,7 @@ Class TheBall : Actor
|
|||
}
|
||||
if ( crit )
|
||||
SWWMUtility.DoExplosion(self,dmg/2,25000,150,80,ignoreme:target);
|
||||
if ( crit && victim && (victim.Health <= 0) && victim.bBOSS && target )
|
||||
if ( crit && victim && (victim.Health <= 0) && (victim.bBOSS || victim.FindInventory("BossMarker")) && target )
|
||||
SWWMUtility.MarkAchievement('swwm_achievement_clonk',target.player);
|
||||
// only rip shootables
|
||||
if ( (slamforce > girth) && is_schutt )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue