diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index 45922040d7f..c5bff0660e2 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -118,6 +118,11 @@
if(teleatom.Move(destturf))
playSpecials(destturf,effectout,soundout)
+ if(isliving(teleatom))
+ var/mob/living/L = teleatom
+ if(L.buckled)
+ L.buckled.unbuckle()
+
destarea.Entered(teleatom)
return 1
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index 5c6e9ff06f7..e8560103ecc 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -134,12 +134,12 @@
new /obj/item/weapon/gun/magic/staff/chaos(get_turf(H))
H << "You suddenly feel lucky."
-/mob/proc/summonevents()
+/proc/summonevents()
if(events) //if there isn't something is very wrong
if(!events.wizardmode)
- events.toggleWizardmode()
events.frequency_lower = 600 //1 minute lower bound
events.frequency_upper = 3000 //5 minutes upper bound
+ events.toggleWizardmode()
events.reschedule()
else //Speed it up
@@ -148,4 +148,6 @@
if(events.frequency_upper < events.frequency_lower)
events.frequency_upper = events.frequency_lower //this can't happen unless somehow multiple spellbooks are used, but just in case
- events.reschedule()
+ events.reschedule()
+ message_admins("Summon Events intensifies, events will now occur every [events.frequency_lower / 600] to [events.frequency_upper / 600] minutes.")
+ log_game("Summon Events was increased!")
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index aded7d5e8d2..09cad46c59b 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -305,7 +305,7 @@
temp = "You have cast summon magic."
if("summonevents")
feedback_add_details("wizard_spell_learned","SE") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
- H.summonevents()
+ summonevents()
max_uses--
temp = "You have cast summon events."
if("staffchange")
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 2f00ae34b70..3459e1ebe67 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -444,6 +444,7 @@ var/global/floorIsLava = 0
Everyone is the traitor
Summon Guns
Summon Magic
+ Summon Events (Toggle)
There can only be one!
Make all players retarded
Egalitarian Station Mode
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 6275aceffeb..c4e51cbb72b 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1853,6 +1853,22 @@
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","SM")
rightandwrong(1, usr)
+ if("events")
+ if(events && !events.wizardmode)
+ if(alert("Do you want to toggle summon events on?",,"Yes","No") == "Yes")
+ summonevents()
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","SE")
+
+ else if(events && events.wizardmode)
+ switch(alert("What would you like to do?",,"Intensify Summon Events","Turn Off Summon Events","Nothing"))
+ if("Intensify Summon Events")
+ summonevents()
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","SE")
+ if("Turn Off Summon Events")
+ events.toggleWizardmode()
+ events.resetFrequency()
if("dorf")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","DF")
diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm
index c2035b0e378..cf18c8b549f 100644
--- a/code/modules/events/event_manager.dm
+++ b/code/modules/events/event_manager.dm
@@ -124,9 +124,20 @@ var/datum/controller/event/events
holder.forceEvent()
/datum/admins/proc/forceEvent()
- var/dat = ""
+ var/dat = ""
+ var/normal = ""
+ var/magic = ""
+ var/holiday = ""
for(var/datum/round_event_control/E in events.control)
- dat += "
[E]"
+ dat = "
[E]"
+ if(E.holidayID)
+ holiday += dat
+ else if(E.wizardevent)
+ magic += dat
+ else
+ normal += dat
+
+ dat = normal + "
" + magic + "
" + holiday
var/datum/browser/popup = new(usr, "forceevent", "Force Random Event", 300, 750)
popup.set_content(dat)
@@ -262,4 +273,10 @@ var/datum/controller/event/events
for(var/datum/round_event_control/E in control)
E.weight = initial(E.weight)
if((E.wizardevent && !wizardmode) || (!E.wizardevent && wizardmode))
- E.weight = 0
\ No newline at end of file
+ E.weight = 0
+ message_admins("Summon Events has been [wizardmode ? "enabled, events will occur every [events.frequency_lower / 600] to [events.frequency_upper / 600] minutes" : "disabled"]!")
+ log_game("Summon Events was [wizardmode ? "enabled" : "disabled"]!")
+
+/datum/controller/event/proc/resetFrequency()
+ frequency_lower = initial(frequency_lower)
+ frequency_upper = initial(frequency_upper)
\ No newline at end of file
diff --git a/code/modules/events/wizard/aid.dm b/code/modules/events/wizard/aid.dm
index 8c215e0fbe0..f7689ae4e1f 100644
--- a/code/modules/events/wizard/aid.dm
+++ b/code/modules/events/wizard/aid.dm
@@ -34,6 +34,8 @@
for(var/obj/effect/proc_holder/spell/S in L.mind.spell_list)
S.name = initial(S.name)
S.spell_level++
+ if(S.spell_level >= 6 || S.charge_max <= 0) //Badmin checks, these should never be a problem in normal play
+ continue
S.charge_max = round(initial(S.charge_max) - S.spell_level * (initial(S.charge_max) - S.cooldown_min)/ S.level_max)
if(S.charge_max < S.charge_counter)
S.charge_counter = S.charge_max
diff --git a/code/modules/events/wizard/blobies.dm b/code/modules/events/wizard/blobies.dm
index aff93fccaa7..d66cd5f76c3 100644
--- a/code/modules/events/wizard/blobies.dm
+++ b/code/modules/events/wizard/blobies.dm
@@ -3,7 +3,7 @@
weight = 3
typepath = /datum/round_event/wizard/blobies/
max_occurrences = 3
- earliest_start = 0
+ earliest_start = 12000 // 20 minutes (gotta get some bodies made!)
/datum/round_event/wizard/blobies/start()
diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm
index 340e3a0c268..c057de5b96e 100644
--- a/code/modules/events/wizard/curseditems.dm
+++ b/code/modules/events/wizard/curseditems.dm
@@ -10,7 +10,7 @@
//item you want to equip to the hand, and set its slots_flags = null. Only items equiped to hands need do this.
/datum/round_event/wizard/cursed_items/start()
- var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "headphones")
+ var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators")
var/list/wearslots = list(slot_wear_suit, slot_shoes, slot_head, slot_wear_mask, slot_r_hand, slot_gloves, slot_ears)
var/list/loadout = list()
var/ruins_spaceworthiness
@@ -29,7 +29,6 @@
loadout[6] = /obj/item/clothing/gloves/boxing
ruins_spaceworthiness = 1
if("voicemodulators") loadout[4] = /obj/item/clothing/mask/gas/voice
- if("headphones") loadout[7] = /obj/item/clothing/ears/earmuffs
for(var/mob/living/carbon/human/H in living_mob_list)
if(ruins_spaceworthiness && (H.z != 1 || istype(H.loc, /turf/space))) continue //#savetheminers
diff --git a/code/modules/events/wizard/fakeexplosion.dm b/code/modules/events/wizard/fakeexplosion.dm
index 893b6d2e95b..1424d63c18e 100644
--- a/code/modules/events/wizard/fakeexplosion.dm
+++ b/code/modules/events/wizard/fakeexplosion.dm
@@ -1,6 +1,6 @@
/datum/round_event_control/wizard/fake_explosion //Oh no the station is gone!
name = "Fake Explosion"
- weight = 2
+ weight = 0 //Badmin exclusive now because once it's expected its not funny
typepath = /datum/round_event/wizard/fake_explosion/
max_occurrences = 1
earliest_start = 0
diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm
index 6ac5ad460ee..3d8b0f4ddca 100644
--- a/code/modules/events/wizard/greentext.dm
+++ b/code/modules/events/wizard/greentext.dm
@@ -21,7 +21,7 @@
/obj/item/weapon/greentext/
name = "greentext"
- desc = "for some the pursuit of greentext is the greatest calling in life..."
+ desc = "No one knows what this massive tome does, but it feels desirable all the same..."
w_class = 4.0
icon = 'icons/obj/wizard.dmi'
icon_state = "greentext"
diff --git a/code/modules/events/wizard/race.dm b/code/modules/events/wizard/race.dm
index a28dab20daf..96d8c5ea8ff 100644
--- a/code/modules/events/wizard/race.dm
+++ b/code/modules/events/wizard/race.dm
@@ -18,5 +18,6 @@
if(H.dna)
H.dna.species = new new_species
H.regenerate_icons()
+ H << "You feel somehow... different?"
if(!all_the_same)
new_species = pick(all_species)
diff --git a/code/modules/events/wizard/shuffle.dm b/code/modules/events/wizard/shuffle.dm
index e49d9be5368..4315f3a4261 100644
--- a/code/modules/events/wizard/shuffle.dm
+++ b/code/modules/events/wizard/shuffle.dm
@@ -24,7 +24,7 @@
for(var/mob/living/carbon/human/H in mobs)
if(!moblocs) break //locs aren't always unique, so this may come into play
- H.loc = moblocs[moblocs.len]
+ do_teleport(H, moblocs[moblocs.len])
moblocs.len -= 1
for(var/mob/living/carbon/human/H in living_mob_list)
@@ -46,7 +46,7 @@
var/list/mobs = list()
for(var/mob/living/carbon/human/H in living_mob_list)
- mobnames += H.name
+ mobnames += H.real_name
mobs += H
if(!mobs) return
@@ -56,7 +56,7 @@
for(var/mob/living/carbon/human/H in mobs)
if(!mobnames) break
- H.name = mobnames[mobnames.len]
+ H.real_name = mobnames[mobnames.len]
mobnames.len -= 1
for(var/mob/living/carbon/human/H in living_mob_list)
@@ -85,10 +85,11 @@
shuffle(mobs)
var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new /obj/effect/proc_holder/spell/targeted/mind_transfer/
- for(var/mob/living/carbon/human/H in mobs)
+ while(mobs.len > 1)
+ var/mob/living/carbon/human/H = pick(mobs)
+ mobs -= H
swapper.cast(list(H), mobs[mobs.len], 1)
- mobs.len -= 1
- if(mobs.len <= 1) break
+ mobs -= mobs[mobs.len]
for(var/mob/living/carbon/human/H in living_mob_list)
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index f60fc499f5a..1b6a9ea8545 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -996,6 +996,8 @@ datum/reagent/adminordrazine/on_mob_life(var/mob/living/carbon/M as mob)
M.sleeping = 0
M.jitteriness = 0
for(var/datum/disease/D in M.viruses)
+ if(D.severity == D.non_threat)
+ continue
D.spread = "Remissive"
D.stage--
if(D.stage < 1)
diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi
index 19a83504864..b87ea13bf30 100644
Binary files a/icons/obj/wizard.dmi and b/icons/obj/wizard.dmi differ