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