// I WANT DIE // tokens Class DontDuplicate : Inventory {} Class DontDuplicate2 : Inventory {} extend Class SWWMHandler { double smult; int dmult; private void IWantDieSpawn( WorldEvent e ) { if ( iwantdie == -1 ) { int acsre = G_SkillPropertyInt(SKILLP_ACSReturn); iwantdie = (acsre >= 5); smult = 2.-(acsre-5)*.5; // reduced in Kynikoss skill because it'd stack with FastMonsters dmult = acsre-3; } if ( iwantdie <= 0 ) return; if ( SWWMUtility.ValidProjectile(e.Thing) && !e.Thing.FindInventory('DontDuplicate') && (e.Thing.target && e.Thing.target.bISMONSTER && !e.Thing.target.player) ) { e.Thing.speed *= smult; e.Thing.vel *= smult; double ang = e.Thing.target.target?e.Thing.AngleTo(e.Thing.target.target):e.Thing.angle; double pt = e.Thing.target.target?e.Thing.PitchTo(e.Thing.target.target,e.Thing.target.missileheight,e.Thing.target.target.Height/2.):e.Thing.pitch; let [x, y, z] = SWWMUtility.GetAxes(ang,pt,e.Thing.roll); int numpt = Random[ExtraMissiles](1,dmult); for ( int i=0; i x.ceilingz ) x.SetZ(x.ceilingz-x.height); if ( x.pos.z < x.floorz ) x.SetZ(x.floorz); if ( !x.TestMobjLocation() || !x.TestMobjZ() || !level.IsPointInLevel(x.pos) ) { x.ClearCounters(); x.Destroy(); } else { x.angle = e.Thing.angle; x.bAMBUSH = e.Thing.bAMBUSH; x.GiveInventory('DontDuplicate',1); break; } } } } }