diff --git a/language.version b/language.version index 5f798981b..52756cf0a 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r727 \cu(Sat 2 Jan 23:26:14 CET 2021)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r729 \cu(Sun 3 Jan 01:51:49 CET 2021)"; diff --git a/zmapinfo.txt b/zmapinfo.txt index 522ac2ff1..5bb84d2e1 100644 --- a/zmapinfo.txt +++ b/zmapinfo.txt @@ -113,9 +113,9 @@ Skill lunatic FastMonsters DisableCheats Aggressiveness = 1.0 - MonsterHealth = 2.0 - DamageFactor = 2.0 SpawnFilter = nightmare + SpawnMulti + TotalInfighting ACSReturn = 4 Name = "$SWWM_SKLUNATIC" MustConfirm = "$SWWM_SKLUNATICCONFIRM" diff --git a/zscript/swwm_handler.zsc b/zscript/swwm_handler.zsc index e38a70b6b..cdc6a9fb1 100644 --- a/zscript/swwm_handler.zsc +++ b/zscript/swwm_handler.zsc @@ -173,6 +173,20 @@ Class SWWMStaticHandler : StaticEventHandler } } +// fuck +Class DontDuplicate : Inventory {} +Class DontDuplicate2 : Inventory {} +Class HOLYCOWIMTOTALLYGOINGSOFASTOHFUCK : Inventory +{ + override void DoEffect() + { + Super.DoEffect(); + if ( !Owner ) return; + if ( (Owner.tics > 1) && (Owner.tics > max(1,Owner.CurState.tics/2)) ) + Owner.tics = max(1,Owner.CurState.tics/2); + } +} + // Handler responsible for item replacements and whatever else Class SWWMHandler : EventHandler { @@ -1687,6 +1701,65 @@ Class SWWMHandler : EventHandler override void WorldThingSpawned( WorldEvent e ) { + // I WANT DIE + if ( G_SkillPropertyInt(SKILLP_ACSReturn) >= 4 ) + { + if ( e.Thing.bMISSILE && !e.Thing.FindInventory("DontDuplicate") && !e.Thing.IsZeroDamage() && (e.Thing.target && e.Thing.target.bISMONSTER && !e.Thing.target.player) ) + { + e.Thing.speed *= 2; + e.Thing.vel *= 2; + Vector3 x, y, z; + [x, y, z] = swwm_CoordUtil.GetAxes(e.Thing.pitch,e.Thing.angle,e.Thing.roll); + int numpt = Random[ExtraMissiles](1,2); + for ( int i=0; i= invoker.default.clipcount) && (invoker.fcbselected == invoker.fcbloaded)) || (!sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) && (invoker.Ammo1.Amount <= 0) && (invoker.Ammo2.Amount <= 0) && (CountInv("SilverBullets") <= 0) && (CountInv("SilverBullets2") <= 0)) ) return ResolveState("Idle"); if ( invoker.zoomed )