From 6630a07d0a18ac1ed18125b11a82c10a666748d6 Mon Sep 17 00:00:00 2001
From: ShiftyRail <31417754+ShiftyRail@users.noreply.github.com>
Date: Thu, 4 Oct 2018 04:36:42 +0000
Subject: [PATCH] Right and wrong equalisation of opportunity (#19955)
* Equal Opportunity for summon spells
* Better
* Re-adds survivors as an antag type
* Unless else clause
---
code/datums/gamemode/role/role.dm | 46 +---
code/datums/gamemode/role/syndicate.dm | 214 +---------------
code/game/gamemodes/wizard/rightandwrong.dm | 270 +++++++++++++++++++-
code/modules/admin/admin.dm | 7 +
4 files changed, 277 insertions(+), 260 deletions(-)
diff --git a/code/datums/gamemode/role/role.dm b/code/datums/gamemode/role/role.dm
index 43c87a2ce5a..b44228e8817 100644
--- a/code/datums/gamemode/role/role.dm
+++ b/code/datums/gamemode/role/role.dm
@@ -579,51 +579,7 @@
to_chat(antag.current, "You are a Magician! Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
/datum/role/wizard/summon_magic/OnPostSetup()
- var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","blink","disorient","staffchange","armor","scrying", "clowncurse", "mimecurse", "shoesnatch", "robesummon")
- var/mob/living/carbon/human/H = antag.current
- switch (randomizemagic)
- if("fireball")
- new /obj/item/weapon/spellbook/oneuse/fireball(get_turf(H))
- if("smoke")
- new /obj/item/weapon/spellbook/oneuse/smoke(get_turf(H))
- if("blind")
- new /obj/item/weapon/spellbook/oneuse/blind(get_turf(H))
- if("mindswap")
- new /obj/item/weapon/spellbook/oneuse/mindswap(get_turf(H))
- if("forcewall")
- new /obj/item/weapon/spellbook/oneuse/forcewall(get_turf(H))
- if("knock")
- new /obj/item/weapon/spellbook/oneuse/knock(get_turf(H))
- if("horsemask")
- new /obj/item/weapon/spellbook/oneuse/horsemask(get_turf(H))
- if("blink")
- new /obj/item/weapon/spellbook/oneuse/teleport/blink(get_turf(H))
- if("disorient")
- new /obj/item/weapon/spellbook/oneuse/disorient(get_turf(H))
- if("clowncurse")
- new /obj/item/weapon/spellbook/oneuse/clown(get_turf(H))
- if("mimecurse")
- new /obj/item/weapon/spellbook/oneuse/mime(get_turf(H))
- if("shoesnatch")
- new /obj/item/weapon/spellbook/oneuse/shoesnatch(get_turf(H))
- if("robesummon")
- new /obj/item/weapon/spellbook/oneuse/robesummon(get_turf(H))
- if("staffchange")
- new /obj/item/weapon/gun/energy/staff(get_turf(H))
- if("armor")
- new /obj/item/clothing/suit/space/rig/wizard(get_turf(H))
- new /obj/item/clothing/head/helmet/space/rig/wizard(get_turf(H))
- if("scrying")
- if (!istype(H))
- return
- new /obj/item/weapon/scrying(get_turf(H))
- if (!(M_XRAY in H.mutations))
- H.mutations.Add(M_XRAY)
- H.change_sight(adding = SEE_MOBS|SEE_OBJS|SEE_TURFS)
- H.see_in_dark = 8
- H.see_invisible = SEE_INVISIBLE_LEVEL_TWO
- to_chat(H, "The walls suddenly disappear.")
-
+ return TRUE
//________________________________________________
/datum/role/wish_granter_avatar
diff --git a/code/datums/gamemode/role/syndicate.dm b/code/datums/gamemode/role/syndicate.dm
index d5d6257e64d..7148050f50d 100644
--- a/code/datums/gamemode/role/syndicate.dm
+++ b/code/datums/gamemode/role/syndicate.dm
@@ -100,218 +100,6 @@
name = CRUSADER
survivor_type = "crusader"
-/datum/role/traitor/survivor/OnPostSetup()
- var/randomizeguns = pick("taser","stunrevolver","egun","laser","retro","laserak","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","microuzi","crossbow","saw","hecate","osipr","gatling","bison","ricochet","spur","nagant","obrez","beegun","beretta","usp","glock","luger","colt","plasmapistol")
- var/mob/living/H = antag.current
- switch (randomizeguns)
- if("taser")
- new /obj/item/weapon/gun/energy/taser(get_turf(H))
- if("stunrevolver")
- new /obj/item/weapon/gun/energy/stunrevolver(get_turf(H))
- if("egun")
- new /obj/item/weapon/gun/energy/gun(get_turf(H))
- if("laser")
- new /obj/item/weapon/gun/energy/laser(get_turf(H))
- if("retro")
- new /obj/item/weapon/gun/energy/laser/retro(get_turf(H))
- if("laserak")
- new /obj/item/weapon/gun/energy/laser/LaserAK(get_turf(H))
- if("plasmapistol")
- new /obj/item/weapon/gun/energy/plasma/pistol(get_turf(H))
- if("revolver")
- new /obj/item/weapon/gun/projectile(get_turf(H))
- if("detective")
- new /obj/item/weapon/gun/projectile/detective(get_turf(H))
- if("c20r")
- new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(H))
- if("nuclear")
- new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H))
- if("deagle")
- new /obj/item/weapon/gun/projectile/deagle/camo(get_turf(H))
- if("gyrojet")
- new /obj/item/weapon/gun/projectile/gyropistol(get_turf(H))
- if("pulse")
- new /obj/item/weapon/gun/energy/pulse_rifle(get_turf(H))
- if("silenced")
- new /obj/item/weapon/gun/projectile/pistol(get_turf(H))
- new /obj/item/gun_part/silencer(get_turf(H))
- if("cannon")
- new /obj/item/weapon/gun/energy/laser/cannon(get_turf(H))
- if("doublebarrel")
- new /obj/item/weapon/gun/projectile/shotgun/pump/(get_turf(H))
- if("shotgun")
- new /obj/item/weapon/gun/projectile/shotgun/pump/(get_turf(H))
- if("combatshotgun")
- new /obj/item/weapon/gun/projectile/shotgun/pump/combat(get_turf(H))
- if("mateba")
- new /obj/item/weapon/gun/projectile/mateba(get_turf(H))
- if("smg")
- new /obj/item/weapon/gun/projectile/automatic(get_turf(H))
- if("uzi")
- new /obj/item/weapon/gun/projectile/automatic/uzi(get_turf(H))
- if("microuzi")
- new /obj/item/weapon/gun/projectile/automatic/uzi/micro(get_turf(H))
- if("crossbow")
- new /obj/item/weapon/gun/energy/crossbow(get_turf(H))
- if("saw")
- new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H))
- if("hecate")
- new /obj/item/weapon/gun/projectile/hecate(get_turf(H))
- new /obj/item/ammo_casing/BMG50(get_turf(H))//can't give a full box of such deadly bullets. 3 shots is plenty.
- new /obj/item/ammo_casing/BMG50(get_turf(H))
- if("osipr")
- new /obj/item/weapon/gun/osipr(get_turf(H))
- if("gatling")
- new /obj/item/weapon/gun/gatling(get_turf(H))
- if("bison")
- new /obj/item/weapon/gun/energy/bison(get_turf(H))
- if("ricochet")
- new /obj/item/weapon/gun/energy/ricochet(get_turf(H))
- if("spur")
- new /obj/item/weapon/gun/energy/polarstar(get_turf(H))
- new /obj/item/device/modkit/spur_parts(get_turf(H))
- if("nagant")
- new /obj/item/weapon/gun/projectile/nagant(get_turf(H))
- if("obrez")
- new /obj/item/weapon/gun/projectile/nagant/obrez(get_turf(H))
- if("beegun")
- new /obj/item/weapon/gun/gatling/beegun(get_turf(H))
- if("beretta")
- new /obj/item/weapon/gun/projectile/beretta(get_turf(H))
- if("usp")
- new /obj/item/weapon/gun/projectile/NTUSP/fancy(get_turf(H))
- if("glock")
- new /obj/item/weapon/gun/projectile/sec/fancy(get_turf(H))
- if("luger")
- new /obj/item/weapon/gun/projectile/luger(get_turf(H))
- if("colt")
- new /obj/item/weapon/gun/projectile/colt(get_turf(H))
- playsound(H,'sound/effects/summon_guns.ogg', 50, 1)
-
-/datum/role/traitor/survivor/crusader/OnPostSetup()
- var/randomizeswords = pick("unlucky", "misc", "glass", "throw", "armblade", "pickaxe", "pcutter", "esword", "alt-esword", "machete", "kitchen", "spear", "katana", "axe", "venom", "boot", "saw", "scalpel", "bottle", "switchtool")
- var/randomizeknightcolor = pick("green", "yellow", "blue", "red", "templar")
- var/mob/living/H = antag.current
- switch (randomizeknightcolor) //everyone gets some armor as well
- if("green")
- new /obj/item/clothing/suit/armor/knight(get_turf(H))
- new /obj/item/clothing/head/helmet/knight(get_turf(H))
- if("yellow")
- new /obj/item/clothing/suit/armor/knight/yellow(get_turf(H))
- new /obj/item/clothing/head/helmet/knight/yellow(get_turf(H))
- if("blue")
- new /obj/item/clothing/suit/armor/knight/blue(get_turf(H))
- new /obj/item/clothing/head/helmet/knight/blue(get_turf(H))
- if("red")
- new /obj/item/clothing/suit/armor/knight/red(get_turf(H))
- new /obj/item/clothing/head/helmet/knight/red(get_turf(H))
- if("templar")
- new /obj/item/clothing/suit/armor/knight/templar(get_turf(H))
- new /obj/item/clothing/head/helmet/knight/templar(get_turf(H))
-
- switch (randomizeswords)
- if("unlucky") //so the chance to get an unlucky item does't clutter the main pool of swords
- var/noluck = pick(/obj/item/weapon/kitchen/utensil/knife/plastic, /obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters, /obj/item/toy/foamblade, /obj/item/toy/sword)
- new noluck(get_turf(H))
- if("misc")
- var/miscpick = pick(/obj/item/weapon/scythe, /obj/item/weapon/harpoon, /obj/item/weapon/sword, /obj/item/weapon/sword/executioner, /obj/item/weapon/claymore, /obj/item/weapon/sord)
- new miscpick(get_turf(H))
- if("glass")
- if(prob(50))
- new /obj/item/weapon/shard(get_turf(H))
- else
- new /obj/item/weapon/shard/plasma(get_turf(H))
- if("throw")
- if(prob(20))
- new /obj/item/weapon/kitchen/utensil/knife/nazi(get_turf(H))
- else
- new /obj/item/weapon/hatchet(get_turf(H))
- if("armblade") // good luck getting it off. Maybe cut your own arm off :^)
- new /obj/item/weapon/armblade(get_turf(H))
- if("pickaxe")
- var/pickedaxe = pick(/obj/item/weapon/pickaxe, /obj/item/weapon/pickaxe/silver, /obj/item/weapon/pickaxe/gold, /obj/item/weapon/pickaxe/diamond)
- new pickedaxe(get_turf(H))
- if("pcutter")
- new /obj/item/weapon/pickaxe/plasmacutter(get_turf(H))
- if("esword")
- new /obj/item/weapon/melee/energy/sword(get_turf(H))
- if(prob(70)) //chance for a second one to make a double esword
- new /obj/item/weapon/melee/energy/sword(get_turf(H))
- if("alt-esword")
- if(prob(75))
- new /obj/item/weapon/melee/energy/sword/pirate(get_turf(H))
- if(prob(70))
- new /obj/item/weapon/melee/energy/sword/pirate(get_turf(H))
- else //hope you're the clown
- new /obj/item/weapon/melee/energy/sword/bsword(get_turf(H))
- if(prob(70))
- new /obj/item/weapon/melee/energy/sword/bsword(get_turf(H))
- if("machete")
- new /obj/item/weapon/melee/energy/hfmachete(get_turf(H))
- if(prob(70))
- new /obj/item/weapon/melee/energy/hfmachete(get_turf(H))
- if("kitchen")
- if(prob(60))
- if(prob(25))
- new /obj/item/weapon/kitchen/utensil/knife/large(get_turf(H))
- else
- new /obj/item/weapon/kitchen/utensil/knife/large/butch(get_turf(H))
- else
- new /obj/item/weapon/kitchen/utensil/knife/large/butch/meatcleaver(get_turf(H))
- if("spear")
- if(prob(50))
- new /obj/item/weapon/spear(get_turf(H))
- else
- new /obj/item/weapon/melee/lance(get_turf(H))
- if("katana")
- new /obj/item/weapon/katana(get_turf(H))
- //No fun allowed, maybe nerf later and readd
- /*
- if(prob(5))
- new /obj/item/weapon/katana/hfrequency(get_turf(H))
- else
- new /obj/item/weapon/katana(get_turf(H))
- */
- if("axe")
- if(prob(50))
- if(prob(5))
- new /obj/item/weapon/melee/energy/axe(get_turf(H))
- else
- new /obj/item/weapon/melee/energy/axe/rusty(get_turf(H))
- else
- new /obj/item/weapon/fireaxe(get_turf(H))
- if("venom")
- new /obj/item/weapon/sword/venom(get_turf(H))
- if("boot")
- if(prob(50))
- new /obj/item/clothing/accessory/holster/knife/boot/preloaded/tactical(get_turf(H))
- else
- new /obj/item/clothing/accessory/holster/knife/boot/preloaded/skinning(get_turf(H))
- if("saw")
- if(prob(40))
- new /obj/item/weapon/circular_saw/plasmasaw(get_turf(H))
- else
- new /obj/item/weapon/circular_saw(get_turf(H))
- if("scalpel")
- if(prob(60))
- if(prob(50))
- new /obj/item/weapon/scalpel/laser(get_turf(H))
- else
- new /obj/item/weapon/scalpel/laser/tier2(get_turf(H))
- else
- new /obj/item/weapon/scalpel(get_turf(H))
- if("bottle")
- new /obj/abstract/map/spawner/space/drinks(get_turf(H))
- if("switchtool")
- if(prob(40))
- if(prob(50))
- new /obj/item/weapon/switchtool(get_turf(H))
- else
- new /obj/item/weapon/switchtool/surgery(get_turf(H))
- else
- new /obj/item/weapon/switchtool/swiss_army_knife(get_turf(H))
- playsound(H,'sound/items/zippo_open.ogg', 50, 1)
-
/datum/role/traitor/survivor/Greet()
to_chat(antag.current, "You are a [survivor_type]! Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
@@ -319,6 +107,8 @@
var/datum/objective/survive/S = new
AppendObjective(S)
+/datum/role/traitor/survivor/OnPostSetup()
+ return TRUE
//________________________________________________
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index 2ea301f40bd..24e88d4bc7c 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -16,11 +16,12 @@
survivor_type = /datum/role/traitor/survivor/
for(var/mob/living/carbon/human/H in player_list)
+ H.equip_survivor(summon_type)
if (prob(65) || iswizard(H))
continue
if(H.stat == DEAD || !(H.client))
continue
-
+
var/datum/role/R = new survivor_type()
if (!(isrole(R.id, H)))
@@ -29,6 +30,269 @@
R.OnPostSetup()
R.ForgeObjectives()
R.AnnounceObjectives()
+
+
+
+/mob/living/carbon/human/proc/equip_survivor(var/summon_type)
+ switch (summon_type)
+ if ("swords")
+ return equip_swords()
+ if ("magic")
+ return equip_magician()
else
- R = H.mind.GetRole(R.id)
- R.OnPostSetup()
\ No newline at end of file
+ return equip_guns()
+
+/mob/living/carbon/human/proc/equip_guns()
+ var/randomizeguns = pick("taser","stunrevolver","egun","laser","retro","laserak","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","microuzi","crossbow","saw","hecate","osipr","gatling","bison","ricochet","spur","nagant","obrez","beegun","beretta","usp","glock","luger","colt","plasmapistol")
+ switch (randomizeguns)
+ if("taser")
+ new /obj/item/weapon/gun/energy/taser(get_turf(src))
+ if("stunrevolver")
+ new /obj/item/weapon/gun/energy/stunrevolver(get_turf(src))
+ if("egun")
+ new /obj/item/weapon/gun/energy/gun(get_turf(src))
+ if("laser")
+ new /obj/item/weapon/gun/energy/laser(get_turf(src))
+ if("retro")
+ new /obj/item/weapon/gun/energy/laser/retro(get_turf(src))
+ if("laserak")
+ new /obj/item/weapon/gun/energy/laser/LaserAK(get_turf(src))
+ if("plasmapistol")
+ new /obj/item/weapon/gun/energy/plasma/pistol(get_turf(src))
+ if("revolver")
+ new /obj/item/weapon/gun/projectile(get_turf(src))
+ if("detective")
+ new /obj/item/weapon/gun/projectile/detective(get_turf(src))
+ if("c20r")
+ new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(src))
+ if("nuclear")
+ new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(src))
+ if("deagle")
+ new /obj/item/weapon/gun/projectile/deagle/camo(get_turf(src))
+ if("gyrojet")
+ new /obj/item/weapon/gun/projectile/gyropistol(get_turf(src))
+ if("pulse")
+ new /obj/item/weapon/gun/energy/pulse_rifle(get_turf(src))
+ if("silenced")
+ new /obj/item/weapon/gun/projectile/pistol(get_turf(src))
+ new /obj/item/gun_part/silencer(get_turf(src))
+ if("cannon")
+ new /obj/item/weapon/gun/energy/laser/cannon(get_turf(src))
+ if("doublebarrel")
+ new /obj/item/weapon/gun/projectile/shotgun/pump/(get_turf(src))
+ if("shotgun")
+ new /obj/item/weapon/gun/projectile/shotgun/pump/(get_turf(src))
+ if("combatshotgun")
+ new /obj/item/weapon/gun/projectile/shotgun/pump/combat(get_turf(src))
+ if("mateba")
+ new /obj/item/weapon/gun/projectile/mateba(get_turf(src))
+ if("smg")
+ new /obj/item/weapon/gun/projectile/automatic(get_turf(src))
+ if("uzi")
+ new /obj/item/weapon/gun/projectile/automatic/uzi(get_turf(src))
+ if("microuzi")
+ new /obj/item/weapon/gun/projectile/automatic/uzi/micro(get_turf(src))
+ if("crossbow")
+ new /obj/item/weapon/gun/energy/crossbow(get_turf(src))
+ if("saw")
+ new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(src))
+ if("hecate")
+ new /obj/item/weapon/gun/projectile/hecate(get_turf(src))
+ new /obj/item/ammo_casing/BMG50(get_turf(src))//can't give a full box of such deadly bullets. 3 shots is plenty.
+ new /obj/item/ammo_casing/BMG50(get_turf(src))
+ if("osipr")
+ new /obj/item/weapon/gun/osipr(get_turf(src))
+ if("gatling")
+ new /obj/item/weapon/gun/gatling(get_turf(src))
+ if("bison")
+ new /obj/item/weapon/gun/energy/bison(get_turf(src))
+ if("ricochet")
+ new /obj/item/weapon/gun/energy/ricochet(get_turf(src))
+ if("spur")
+ new /obj/item/weapon/gun/energy/polarstar(get_turf(src))
+ new /obj/item/device/modkit/spur_parts(get_turf(src))
+ if("nagant")
+ new /obj/item/weapon/gun/projectile/nagant(get_turf(src))
+ if("obrez")
+ new /obj/item/weapon/gun/projectile/nagant/obrez(get_turf(src))
+ if("beegun")
+ new /obj/item/weapon/gun/gatling/beegun(get_turf(src))
+ if("beretta")
+ new /obj/item/weapon/gun/projectile/beretta(get_turf(src))
+ if("usp")
+ new /obj/item/weapon/gun/projectile/NTUSP/fancy(get_turf(src))
+ if("glock")
+ new /obj/item/weapon/gun/projectile/sec/fancy(get_turf(src))
+ if("luger")
+ new /obj/item/weapon/gun/projectile/luger(get_turf(src))
+ if("colt")
+ new /obj/item/weapon/gun/projectile/colt(get_turf(src))
+ playsound(src,'sound/effects/summon_guns.ogg', 50, 1)
+
+/mob/living/carbon/human/proc/equip_swords()
+ var/randomizeswords = pick("unlucky", "misc", "glass", "throw", "armblade", "pickaxe", "pcutter", "esword", "alt-esword", "machete", "kitchen", "spear", "katana", "axe", "venom", "boot", "saw", "scalpel", "bottle", "switchtool")
+ var/randomizeknightcolor = pick("green", "yellow", "blue", "red", "templar")
+ switch (randomizeknightcolor) //everyone gets some armor as well
+ if("green")
+ new /obj/item/clothing/suit/armor/knight(get_turf(src))
+ new /obj/item/clothing/head/helmet/knight(get_turf(src))
+ if("yellow")
+ new /obj/item/clothing/suit/armor/knight/yellow(get_turf(src))
+ new /obj/item/clothing/head/helmet/knight/yellow(get_turf(src))
+ if("blue")
+ new /obj/item/clothing/suit/armor/knight/blue(get_turf(src))
+ new /obj/item/clothing/head/helmet/knight/blue(get_turf(src))
+ if("red")
+ new /obj/item/clothing/suit/armor/knight/red(get_turf(src))
+ new /obj/item/clothing/head/helmet/knight/red(get_turf(src))
+ if("templar")
+ new /obj/item/clothing/suit/armor/knight/templar(get_turf(src))
+ new /obj/item/clothing/head/helmet/knight/templar(get_turf(src))
+
+ switch (randomizeswords)
+ if("unlucky") //so the chance to get an unlucky item does't clutter the main pool of swords
+ var/noluck = pick(/obj/item/weapon/kitchen/utensil/knife/plastic, /obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters, /obj/item/toy/foamblade, /obj/item/toy/sword)
+ new noluck(get_turf(src))
+ if("misc")
+ var/miscpick = pick(/obj/item/weapon/scythe, /obj/item/weapon/harpoon, /obj/item/weapon/sword, /obj/item/weapon/sword/executioner, /obj/item/weapon/claymore, /obj/item/weapon/sord)
+ new miscpick(get_turf(src))
+ if("glass")
+ if(prob(50))
+ new /obj/item/weapon/shard(get_turf(src))
+ else
+ new /obj/item/weapon/shard/plasma(get_turf(src))
+ if("throw")
+ if(prob(20))
+ new /obj/item/weapon/kitchen/utensil/knife/nazi(get_turf(src))
+ else
+ new /obj/item/weapon/hatchet(get_turf(src))
+ if("armblade") // good luck getting it off. Maybe cut your own arm off :^)
+ new /obj/item/weapon/armblade(get_turf(src))
+ if("pickaxe")
+ var/pickedaxe = pick(/obj/item/weapon/pickaxe, /obj/item/weapon/pickaxe/silver, /obj/item/weapon/pickaxe/gold, /obj/item/weapon/pickaxe/diamond)
+ new pickedaxe(get_turf(src))
+ if("pcutter")
+ new /obj/item/weapon/pickaxe/plasmacutter(get_turf(src))
+ if("esword")
+ new /obj/item/weapon/melee/energy/sword(get_turf(src))
+ if(prob(70)) //chance for a second one to make a double esword
+ new /obj/item/weapon/melee/energy/sword(get_turf(src))
+ if("alt-esword")
+ if(prob(75))
+ new /obj/item/weapon/melee/energy/sword/pirate(get_turf(src))
+ if(prob(70))
+ new /obj/item/weapon/melee/energy/sword/pirate(get_turf(src))
+ else //hope you're the clown
+ new /obj/item/weapon/melee/energy/sword/bsword(get_turf(src))
+ if(prob(70))
+ new /obj/item/weapon/melee/energy/sword/bsword(get_turf(src))
+ if("machete")
+ new /obj/item/weapon/melee/energy/hfmachete(get_turf(src))
+ if(prob(70))
+ new /obj/item/weapon/melee/energy/hfmachete(get_turf(src))
+ if("kitchen")
+ if(prob(60))
+ if(prob(25))
+ new /obj/item/weapon/kitchen/utensil/knife/large(get_turf(src))
+ else
+ new /obj/item/weapon/kitchen/utensil/knife/large/butch(get_turf(src))
+ else
+ new /obj/item/weapon/kitchen/utensil/knife/large/butch/meatcleaver(get_turf(src))
+ if("spear")
+ if(prob(50))
+ new /obj/item/weapon/spear(get_turf(src))
+ else
+ new /obj/item/weapon/melee/lance(get_turf(src))
+ if("katana")
+ new /obj/item/weapon/katana(get_turf(src))
+ //No fun allowed, maybe nerf later and readd
+ /*
+ if(prob(5))
+ new /obj/item/weapon/katana/hfrequency(get_turf(src))
+ else
+ new /obj/item/weapon/katana(get_turf(src))
+ */
+ if("axe")
+ if(prob(50))
+ if(prob(5))
+ new /obj/item/weapon/melee/energy/axe(get_turf(src))
+ else
+ new /obj/item/weapon/melee/energy/axe/rusty(get_turf(src))
+ else
+ new /obj/item/weapon/fireaxe(get_turf(src))
+ if("venom")
+ new /obj/item/weapon/sword/venom(get_turf(src))
+ if("boot")
+ if(prob(50))
+ new /obj/item/clothing/accessory/holster/knife/boot/preloaded/tactical(get_turf(src))
+ else
+ new /obj/item/clothing/accessory/holster/knife/boot/preloaded/skinning(get_turf(src))
+ if("saw")
+ if(prob(40))
+ new /obj/item/weapon/circular_saw/plasmasaw(get_turf(src))
+ else
+ new /obj/item/weapon/circular_saw(get_turf(src))
+ if("scalpel")
+ if(prob(60))
+ if(prob(50))
+ new /obj/item/weapon/scalpel/laser(get_turf(src))
+ else
+ new /obj/item/weapon/scalpel/laser/tier2(get_turf(src))
+ else
+ new /obj/item/weapon/scalpel(get_turf(src))
+ if("bottle")
+ new /obj/abstract/map/spawner/space/drinks(get_turf(src))
+ if("switchtool")
+ if(prob(40))
+ if(prob(50))
+ new /obj/item/weapon/switchtool(get_turf(src))
+ else
+ new /obj/item/weapon/switchtool/surgery(get_turf(src))
+ else
+ new /obj/item/weapon/switchtool/swiss_army_knife(get_turf(src))
+ playsound(src,'sound/items/zippo_open.ogg', 50, 1)
+
+/mob/living/carbon/human/proc/equip_magician()
+ var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","blink","disorient","staffchange","armor","scrying", "clowncurse", "mimecurse", "shoesnatch", "robesummon")
+ switch (randomizemagic)
+ if("fireball")
+ new /obj/item/weapon/spellbook/oneuse/fireball(get_turf(src))
+ if("smoke")
+ new /obj/item/weapon/spellbook/oneuse/smoke(get_turf(src))
+ if("blind")
+ new /obj/item/weapon/spellbook/oneuse/blind(get_turf(src))
+ if("mindswap")
+ new /obj/item/weapon/spellbook/oneuse/mindswap(get_turf(src))
+ if("forcewall")
+ new /obj/item/weapon/spellbook/oneuse/forcewall(get_turf(src))
+ if("knock")
+ new /obj/item/weapon/spellbook/oneuse/knock(get_turf(src))
+ if("horsemask")
+ new /obj/item/weapon/spellbook/oneuse/horsemask(get_turf(src))
+ if("blink")
+ new /obj/item/weapon/spellbook/oneuse/teleport/blink(get_turf(src))
+ if("disorient")
+ new /obj/item/weapon/spellbook/oneuse/disorient(get_turf(src))
+ if("clowncurse")
+ new /obj/item/weapon/spellbook/oneuse/clown(get_turf(src))
+ if("mimecurse")
+ new /obj/item/weapon/spellbook/oneuse/mime(get_turf(src))
+ if("shoesnatch")
+ new /obj/item/weapon/spellbook/oneuse/shoesnatch(get_turf(src))
+ if("robesummon")
+ new /obj/item/weapon/spellbook/oneuse/robesummon(get_turf(src))
+ if("staffchange")
+ new /obj/item/weapon/gun/energy/staff(get_turf(src))
+ if("armor")
+ new /obj/item/clothing/suit/space/rig/wizard(get_turf(src))
+ new /obj/item/clothing/head/helmet/space/rig/wizard(get_turf(src))
+ if("scrying")
+ if (!istype(src))
+ return
+ new /obj/item/weapon/scrying(get_turf(src))
+ if (!(M_XRAY in mutations))
+ mutations.Add(M_XRAY)
+ change_sight(adding = SEE_MOBS|SEE_OBJS|SEE_TURFS)
+ see_in_dark = 8
+ see_invisible = SEE_INVISIBLE_LEVEL_TWO
+ to_chat(src, "The walls suddenly disappear.")
\ No newline at end of file
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index ccdfab7c6dc..f5a67aebf09 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -1260,6 +1260,13 @@ var/global/floorIsLava = 0
return 1
if(M.mind&&M.mind.special_role)//If they have a mind and special role, they are some type of traitor or antagonist.
return 1
+ if (M.mind && M.mind.GetRole(CRUSADER))
+ return 1
+ if (M.mind && M.mind.GetRole(SURVIVOR))
+ return 1
+ if (M.mind && M.mind.GetRole(MAGICIAN))
+ return 1
+
return 0