//TempSuper script Made by TechnoGod print("\n\x82".."TempSuper Version 2.0","\x82".."Made by TechnoGod\n") //Branding, cause why the fuck not? rawset(_G, "ts", {}) //TempSuper Activation local function tempsupermsg(var) if var.value==1 print("Temp Super has been activated.") S_StartSound(mo, sfx_cgot) else print("Temp Super has been deactivated.") S_StartSound(mo, sfx_s3k66) end end local tempsupercmd = CV_RegisterVar({ name = "tempsuper", defaultvalue = "On", flags = CV_CALL|CV_NOINIT|CV_NETVAR, PossibleValue = CV_OnOff, func = tempsupermsg}) rawset(_G, "tempsupercmd", tempsupercmd) //TempSuper Timer local function tempsupertimer(p) if tempsupercmd.value == 1 print("The Temp Super timer has been changed to "..tempsupertimercmd.value.." seconds.") elseif tempsupercmd.value == 0 print("The Temp Super timer has been changed to "..tempsupertimercmd.value.." seconds. But Temp Super is disabled.") end end local tempsupertimercmd = CV_RegisterVar({ name = "tempsupertimer", defaultvalue = "30", flags = CV_CALL|CV_NOINIT|CV_NETVAR, PossibleValue = {MIN = 0, MAX = 60}, func = tempsupertimer}) rawset(_G, "tempsupertimercmd", tempsupertimercmd) COM_AddCommand("resetuse", function(p) for p in players.iterate if p.powers[pw_super] S_StartSound(mo, sfx_lose) else S_StartSound(mo, sfx_cgot) p.tempsuperused = false p.TempSuper = false end end end) local tempsupercost = 50 addHook("ThinkFrame", do for p in players.iterate if p.powers[pw_super] and not p.TempSuper return end if G_CoopGametype() return end local mo = p.mo if p.spectator and p.TempSuper p.tempsuperused = true end if p.TempSuper p.tempsupertimer = $ -1 if p.tempsupertimer == 0 or p.rings == 0 p.tempsuperused = true p.charflags = $ & ~SF_SUPER end end if p.rings < tempsupercost and not p.TempSuper or p.tempsuperused p.cantempsuper = false else if not p.cantempsuper S_StartSound(p.mo, sfx_supert) p.cantempsuper = true end end if tempsupercmd.value == 1 and p.rings >= 0 + tempsupercost and not p.TempSuper if p.pflags & PF_STARTDASH or (p.pflags & PF_SPINNING and not (p.pflags & PF_JUMPED)) p.spin_prev = true else if not (p.cmd.buttons & BT_USE) or not ((p.cmd.buttons & BT_USE) and p.pflags & PF_SPINNING and p.pflags & PF_JUMPED) p.spin_prev = false end end if (p.cmd.buttons & BT_SPIN) and (p.pflags & PF_JUMPED) and (p.pflags != PF_ROPEHANG) and (p.pflags != PF_MACESPIN) and (p.pflags & PF_JUMPED) and not (p.pflags & PF_THOKKED) and not p.mo.spin_prev TempSuperCore(p) COM_BufInsertText(server, "csay "..p.name.." \\is now temporarily super!") end end end end) //TempSuper Core rawset(_G, "TempSuperCore", function(p) if not p.mo or not p.mo.valid return end if p.spectator return end if p.tempsuperused return end if p.rings<=-1 return end if p.powers[pw_super] and not p.TempSuper return end if tempsupercmd.value == 0 CONS_Printf(p,"Temp Super has not been enabled by the admin.") return end for i = 0, 6 do P_SpawnMobj(p.mo.x, p.mo.y, p.mo.z, MT_EMERALD1+i) end p.charflags = $|SF_SUPER P_DoSuperTransformation(p) p.tempsupertimer = tempsupertimercmd.value*TICRATE p.TempSuper = true end) //MapLoad Hooks addHook("MapLoad", do for p in players.iterate p.TempSuper = false end end) addHook("MapChange", do for p in players.iterate p.TempSuper = false end end) //Ringslinger Super Hack addHook("ShouldDamage", function(mo, inflictor, source) if not mo or not mo.valid or not mo.player or not mo.player.valid return end if mo == inflictor or mo == source return end -- notmyproblem if not mo.player.powers[pw_super] return end -- notmyproblem if not G_RingSlingerGametype() return end if (inflictor and inflictor.player) or (source and source.player) return true elseif (not inflictor and not source) return else return false end end, MT_PLAYER) addHook("MobjDamage", function(mo, inflictor, source) if mo.player.powers[pw_super] and mo ~= inflictor and mo ~= source if mo and mo.valid and mo.player and mo.player.valid and mo.player.powers[pw_super] mo.player.rings = max(0, $-10) S_StartSound(mo, sfx_s3kb9) end if G_TagGametype() local tp if inflictor and inflictor.player tp = inflictor.player elseif source and source.player tp = source.player end if tp and tp.pflags & PF_TAGIT and not (mo.player.pflags & PF_TAGIT) mo.player.pflags = $|PF_TAGIT print(mo.player.cname.." is now IT!") P_AddPlayerScore(tp, 100) end -- check if everyone is tagged local ingame, tagged = 0, 0 for p in players.iterate if (p.spectator) then continue end ingame = $+1 if not (p.pflags & PF_TAGIT) then continue end tagged = $+1 end -- end the game! if (ingame == tagged) then G_ExitLevel() end end return true end end, MT_PLAYER) //HUD Stuff ts.TempSuperCounter = function(v, p) if p.spectator then return end if p.rings >= 0 + tempsupercost return end if p.powers[pw_super] return end if G_CoopGametype() return end local RingsLeft = tempsupercost-p.rings if tempsupercmd.value == 1 and not p.TempSuper v.drawString(80, 874, "Temp Super:", V_NOSCALESTART, "thin") v.drawString(340, 874, RingsLeft.." Rings", V_YELLOWMAP|V_NOSCALESTART, "thin") end end ts.TempSuperTimer = function(v, p) if not p.mo or not p.mo.valid return end if p.spectator then return end if p.tempsuperused return end if p.TempSuper v.drawString(80, 874, "Temp Super:", V_NOSCALESTART, "thin") v.drawString(340, 874, G_TicsToSeconds(p.tempsupertimer), V_YELLOWMAP|V_NOSCALESTART, "thin") end end ts.TempSuperReady = function(v, p) if p.spectator then return end if p.tempsuperused then return end if p.powers[pw_super] return end if G_CoopGametype() return end if tempsupercmd.value == 1 and p.rings >= 0 + tempsupercost and leveltime%10 < 5 and not p.TempSuper v.drawString(80, 874, "Temp Super:", V_NOSCALESTART, "thin") v.drawString(340, 874, "Ready", V_YELLOWMAP|V_NOSCALESTART, "thin") end end ts.TempSuperUsed = function(v, p) if p.spectator then return end if G_CoopGametype() return end if p.tempsuperused and tempsupercmd.value == 1 v.drawString(80, 874, "Temp Super:", V_NOSCALESTART, "thin") v.drawString(340, 874, "Used", V_YELLOWMAP|V_NOSCALESTART|V_40TRANS, "thin") end end hud.add(ts.TempSuperCounter, "game") hud.add(ts.TempSuperTimer, "game") hud.add(ts.TempSuperReady, "game") hud.add(ts.TempSuperUsed, "game") //Did I do good Lat' & Snu sensei? //End of script