PWADÁMainCfg MaxXtraLife = 99 TailsFlyTics = 12*TICRATE UnderwaterTics = 60*TICRATE SpacetimeTics = 30*TICRATE NiGHTSLinkTics = 5*TICRATE//Boss HP Cuts in half addHook("BossThinker", function(boss) if boss and boss.health > 1 and (boss.health % 2 == 0) then boss.health = $-1 //The Boss HP will drain end end) local function spillringseffect(target,numofrings) local ringtype = MT_FLINGRING local ringangle = (FRACUNIT*360)/numofrings if mariomode == true then ringtype = MT_FLINGCOIN elseif maptol == maptol|TOL_NIGHTS and G_IsSpecialStage() == false then ringtype = MT_FLINGNIGHTSSTAR end if numofrings > 0 then for i = 1,numofrings do local ring = P_SpawnMobjFromMobj(target,0,0,0,ringtype) if ring ~= nil then P_Thrust(ring,FixedAngle(ringangle*i),FRACUNIT*4) P_SetObjectMomZ(ring,FRACUNIT*5,true) ring.fuse = TICRATE*10 end end end end //Eggman Box lose some rings function A_EggmanBox(actor,var1,var2) if actor.target and actor.target.player then if actor.target.player.powers[pw_shield] > 0 and actor.target.player.powers[pw_shield] ~= 512 then super(actor,var1,var2) elseif (actor.target.player.rings/2) >= 20 then P_PlayRinglossSound(actor.target) P_DoPlayerPain(actor.target.player) spillringseffect(actor.target,20) actor.target.player.rings = $-20 elseif actor.target.player.rings > 1 then P_PlayRinglossSound(actor.target) P_DoPlayerPain(actor.target.player) spillringseffect(actor.target,actor.target.player.rings/2) actor.target.player.rings = $/2 elseif actor.target.player.rings == 1 then P_PlayRinglossSound(actor.target) P_DoPlayerPain(actor.target.player) spillringseffect(actor.target,1) actor.target.player.rings = 0 else super(actor,var1,var2) end else super(actor,var1,var2) end end //Some of the hard objects is replaced with an easy version of the objects local EasyObjects = {} EasyObjects[MT_REDCRAWLA] = MT_BLUECRAWLA EasyObjects[MT_REDBUZZ] = MT_GOLDBUZZ EasyObjects[MT_JETTBOMBER] = MT_GOLDBUZZ EasyObjects[MT_JETTGUNNER] = MT_GOLDBUZZ EasyObjects[MT_CRAWLACOMMANDER] = MT_BLUECRAWLA EasyObjects[MT_DETON] = MT_GOLDBUZZ EasyObjects[MT_SPINCUSHION] = MT_BLUECRAWLA EasyObjects[MT_CRUSHSTACEAN] = MT_BANPYURA EasyObjects[MT_CRUSHCLAW] = MT_BANPSPRING EasyObjects[MT_CRUSHCHAIN] = MT_NULL EasyObjects[MT_JETJAW] = MT_BUGGLE EasyObjects[MT_GSNAPPER] = MT_BLUECRAWLA EasyObjects[MT_SNAPPER_LEG] = MT_NULL EasyObjects[MT_SNAPPER_HEAD] = MT_NULL EasyObjects[MT_MINUS] = MT_BLUECRAWLA EasyObjects[MT_CANARIVORE] = MT_HANGSTER EasyObjects[MT_PTERABYTE] = MT_PYREFLY EasyObjects[MT_DRAGONBOMBER] = MT_PYREFLY EasyObjects[MT_DRAGONWING] = MT_NULL EasyObjects[MT_DRAGONTAIL] = MT_NULL EasyObjects[MT_EGGMAN_BOX] = MT_1UP_BOX EasyObjects[MT_SCORE1K_BOX] = MT_SCORE10K_BOX EasyObjects[MT_EGGMAN_GOLDBOX] = MT_INVULN_GOLDBOX EasyObjects[MT_SMALLMACE] = MT_SPIKEBALL EasyObjects[MT_BIGMACE] = MT_SPIKEBALL EasyObjects[MT_SMALLFIREBAR] = MT_FLAME EasyObjects[MT_BIGFIREBAR] = MT_FLAME EasyObjects[MT_CACTI1] = MT_RING EasyObjects[MT_CACTI2] = MT_RING EasyObjects[MT_CACTI3] = MT_RING EasyObjects[MT_CACTI4] = MT_RING EasyObjects[MT_CACTI5] = MT_RING EasyObjects[MT_CACTI6] = MT_RING EasyObjects[MT_CACTI7] = MT_RING EasyObjects[MT_CACTI8] = MT_RING EasyObjects[MT_CACTI9] = MT_RING EasyObjects[MT_CACTI10] = MT_RING EasyObjects[MT_CACTI11] = MT_RING EasyObjects[MT_CACTITINYSEG] = MT_RING EasyObjects[MT_CACTISMALLSEG] = MT_RING EasyObjects[MT_ARIDSIGN_CACTI] = MT_RING_BOX EasyObjects[MT_PIAN] = MT_NIGHTSHELPER EasyObjects[MT_SHLEEP] = MT_NIGHTSEXTRATIME EasyObjects[MT_POPHAT] = MT_PENGUINATOR EasyObjects[MT_HIVEELEMENTAL] = MT_THUNDERCOIN_BOX EasyObjects[MT_BUMBLEBORE] = MT_GOLDBUZZ EasyObjects[MT_CACOLANTERN] = MT_FLAMEAURA_BOX //Replace some of the objects for i = 1,#mobjinfo-1 do if EasyObjects[i] == nil then continue end if mobjinfo[i].doomednum ~= nil and mobjinfo[i].doomednum > 0 then addHook("MapThingSpawn", function(obj,thing) thing.type = mobjinfo[EasyObjects[i]].doomednum if obj then if EasyObjects[i] == MT_NULL then P_RemoveMobj(obj) else obj.type = EasyObjects[i] obj.state = mobjinfo[EasyObjects[i]].spawnstate obj.sprite = states[mobjinfo[EasyObjects[i]].spawnstate].sprite obj.frame = states[mobjinfo[EasyObjects[i]].spawnstate].frame obj.tics = states[mobjinfo[EasyObjects[i]].spawnstate].tics obj.health = mobjinfo[EasyObjects[i]].spawnhealth obj.radius = mobjinfo[EasyObjects[i]].radius obj.height = mobjinfo[EasyObjects[i]].height obj.flags = mobjinfo[EasyObjects[i]].flags if states[mobjinfo[EasyObjects[i]].spawnstate].action ~= nil then states[mobjinfo[EasyObjects[i]].spawnstate].action(obj,states[mobjinfo[EasyObjects[i]].spawnstate].var1,states[mobjinfo[EasyObjects[i]].spawnstate].var2) end end end end,i) end addHook("MobjSpawn", function(obj) if obj then if EasyObjects[i] == MT_NULL then P_RemoveMobj(obj) else obj.type = EasyObjects[i] obj.state = mobjinfo[EasyObjects[i]].spawnstate obj.sprite = states[mobjinfo[EasyObjects[i]].spawnstate].sprite obj.frame = states[mobjinfo[EasyObjects[i]].spawnstate].frame obj.tics = states[mobjinfo[EasyObjects[i]].spawnstate].tics obj.health = mobjinfo[EasyObjects[i]].spawnhealth obj.radius = mobjinfo[EasyObjects[i]].radius obj.height = mobjinfo[EasyObjects[i]].height obj.flags = mobjinfo[EasyObjects[i]].flags if states[mobjinfo[EasyObjects[i]].spawnstate].action ~= nil then states[mobjinfo[EasyObjects[i]].spawnstate].action(obj,states[mobjinfo[EasyObjects[i]].spawnstate].var1,states[mobjinfo[EasyObjects[i]].spawnstate].var2) end end end end,i) end //Make the Boss4 Maces a little smaller addHook("MobjSpawn", function(obj) obj.scale = $/2 end,MT_EGGMOBILE4_MACE) //Turret is now killable mobjinfo[MT_TURRET].spawnhealth = 1 mobjinfo[MT_TURRET].flags = MF_SPECIAL|MF_SHOOTABLE|MF_NOBLOCKMAP|MF_ENEMY //Player now have given the timer powerup when the lap completes. addHook("PlayerSpawn",function(player) player.timegive_mare = 0 player.timegive_marelap = 0 end) addHook("PlayerThink",function(player) if player.timegive_mare ~= nil and player.timegive_marelap ~= nil then //when mare changes, reset it if player.timegive_mare ~= player.mare then player.timegive_mare = player.mare player.timegive_marelap = 0 end end //extra time earned for every mare lap if player.marelap > player.timegive_marelap then player.timegive_marelap = player.marelap //give a powerup to a player if player.mo then local timepowerup = P_SpawnMobjFromMobj(player.mo,0,0,0,MT_NIGHTSEXTRATIME) timepowerup.state = S_NIGHTSEXTRATIME timepowerup.flags2 = timepowerup.flags2 & ~MF2_DONTDRAW timepowerup.flags = timepowerup.flags |MF_SPECIAL & ~MF_NIGHTSITEM end end end) //Special Stage Timers are doubled addHook("PlayerSpawn",function(player) if G_IsSpecialStage() == true then player.timegive_start = true else player.timegive_start = false end end) addHook("PlayerThink",function(player) if player.timegive_start ~= nil and player.timegive_start == true then if player.nightstime > 0 then player.nightstime = $*2 player.timegive_start = false end end end) //Infinite Night Powerups addHook("PlayerThink",function(player) if player.powers[pw_nights_superloop] > 0 then player.powers[pw_nights_superloop] = TICRATE*15 end if player.powers[pw_nights_helper] > 0 then player.powers[pw_nights_helper] = TICRATE*15 end if player.powers[pw_nights_linkfreeze] > 0 then player.powers[pw_nights_linkfreeze] = TICRATE*15 end end) ‰SOC_MAIN•,LUA_MAIN