initial commit - cross reference with 5th port - obviously has compile errors

This commit is contained in:
LetterJay
2016-07-03 02:17:19 -05:00
commit 35a1723e98
4355 changed files with 2221257 additions and 0 deletions
@@ -0,0 +1,17 @@
/datum/round_event_control/wizard/darkness
name = "Advanced Darkness"
weight = 2
typepath = /datum/round_event/wizard/darkness
max_occurrences = 2
earliest_start = 0
/datum/round_event/wizard/darkness
endWhen = 0
var/started = FALSE
/datum/round_event/wizard/darkness/start()
if(!started)
started = TRUE
var/datum/weather/advanced_darkness/darkness = new
darkness.weather_start_up()
+56
View File
@@ -0,0 +1,56 @@
//in this file: Various events that directly aid the wizard. This is the "lets entice the wizard to use summon events!" file.
/datum/round_event_control/wizard/robelesscasting //EI NUDTH!
name = "Robeless Casting"
weight = 2
typepath = /datum/round_event/wizard/robelesscasting/
max_occurrences = 1
earliest_start = 0
/datum/round_event/wizard/robelesscasting/start()
for(var/mob/living/L in mob_list) //Hey if a corgi has magic missle he should get the same benifit as anyone
if(L.mind && L.mind.spell_list.len != 0)
var/spell_improved = 0
for(var/obj/effect/proc_holder/spell/S in L.mind.spell_list)
if(S.clothes_req)
S.clothes_req = 0
spell_improved = 1
if(spell_improved)
L << "<span class='notice'>You suddenly feel like you never needed those garish robes in the first place...</span>"
//--//
/datum/round_event_control/wizard/improvedcasting //blink x5 disintergrate x5 here I come!
name = "Improved Casting"
weight = 3
typepath = /datum/round_event/wizard/improvedcasting/
max_occurrences = 4 //because that'd be max level spells
earliest_start = 0
/datum/round_event/wizard/improvedcasting/start()
for(var/mob/living/L in mob_list)
if(L.mind && L.mind.spell_list.len != 0)
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
if(S.level_max <= 0)
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
switch(S.spell_level)
if(1)
S.name = "Efficient [S.name]"
if(2)
S.name = "Quickened [S.name]"
if(3)
S.name = "Free [S.name]"
if(4)
S.name = "Instant [S.name]"
if(5)
S.name = "Ludicrous [S.name]"
L << "<span class='notice'>You suddenly feel more competent with your casting!</span>"
+11
View File
@@ -0,0 +1,11 @@
/datum/round_event_control/wizard/blobies //avast!
name = "Zombie Outbreak"
weight = 3
typepath = /datum/round_event/wizard/blobies/
max_occurrences = 3
earliest_start = 12000 // 20 minutes (gotta get some bodies made!)
/datum/round_event/wizard/blobies/start()
for(var/mob/living/carbon/human/H in dead_mob_list)
new /mob/living/simple_animal/hostile/blob/blobspore(H.loc)
+60
View File
@@ -0,0 +1,60 @@
/datum/round_event_control/wizard/cursed_items //fashion disasters
name = "Cursed Items"
weight = 3
typepath = /datum/round_event/wizard/cursed_items/
max_occurrences = 3
earliest_start = 0
//Note about adding items to this: Because of how NODROP works if an item spawned to the hands can also be equiped to a slot
//it will be able to be put into that slot from the hand, but then get stuck there. To avoid this make a new subtype of any
//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", "catgirls2015")
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
var/ruins_wizard_loadout
loadout.len = 7
switch(item_set)
if("wizardmimic")
loadout = list(/obj/item/clothing/suit/wizrobe, /obj/item/clothing/shoes/sandal, /obj/item/clothing/head/wizard)
ruins_spaceworthiness = 1
if("swords")
loadout[5] = /obj/item/weapon/katana/cursed
if("bigfatdoobie")
loadout[4] = /obj/item/clothing/mask/cigarette/rollie/trippy/
ruins_spaceworthiness = 1
if("boxing")
loadout[4] = /obj/item/clothing/mask/luchador
loadout[6] = /obj/item/clothing/gloves/boxing
ruins_spaceworthiness = 1
if("voicemodulators")
loadout[4] = /obj/item/clothing/mask/chameleon
if("catgirls2015")
loadout[3] = /obj/item/clothing/head/kitty
ruins_spaceworthiness = 1
ruins_wizard_loadout = 1
for(var/mob/living/carbon/human/H in living_mob_list)
if(ruins_spaceworthiness && (H.z != 1 || istype(H.loc, /turf/open/space)))
continue //#savetheminers
if(ruins_wizard_loadout && H.mind && ((H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices)))
continue
if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry
H.gender = FEMALE
var/list/slots = list(H.wear_suit, H.shoes, H.head, H.wear_mask, H.r_hand, H.gloves, H.ears) //add new slots as needed to back
for(var/i = 1, i <= loadout.len, i++)
if(loadout[i])
var/obj/item/J = loadout[i]
var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list
H.unEquip(slots[i])
H.equip_to_slot_or_del(I, wearslots[i])
I.flags |= NODROP
I.name = "cursed " + I.name
for(var/mob/living/carbon/human/H in living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
@@ -0,0 +1,53 @@
/datum/round_event_control/wizard/deprevolt //stationwide!
name = "Departmental Uprising"
weight = 0 //An order that requires order in a round of chaos was maybe not the best idea. Requiescat in pace departmental uprising August 2014 - March 2015
typepath = /datum/round_event/wizard/deprevolt/
max_occurrences = 1
earliest_start = 0
/datum/round_event/wizard/deprevolt/start()
var/list/tidecolor
var/list/jobs_to_revolt = list()
var/nation
var/list/citizens = list()
tidecolor = pick("grey", "white", "yellow", "purple", "brown", "whatevercolorrepresentstheservicepeople")
switch(tidecolor)
if("grey") //God help you
jobs_to_revolt = list("Assistant")
nation = pick("Assa", "Mainte", "Tunnel", "Gris", "Grey", "Liath", "Grigio", "Ass", "Assi")
if("white")
jobs_to_revolt = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist")
nation = pick("Mede", "Healtha", "Recova", "Chemi", "Geneti", "Viro", "Psych")
if("yellow")
jobs_to_revolt = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
nation = pick("Atomo", "Engino", "Power", "Teleco")
if("purple")
jobs_to_revolt = list("Research Director","Scientist", "Roboticist")
nation = pick("Sci", "Griffa", "Explosi", "Mecha", "Xeno")
if("brown")
jobs_to_revolt = list("Quartermaster", "Cargo Technician", "Shaft Miner")
nation = pick("Cargo", "Guna", "Suppli", "Mule", "Crate", "Ore", "Mini", "Shaf")
if("whatevercolorrepresentstheservicepeople") //the few, the proud, the technically aligned
jobs_to_revolt = list("Bartender", "Cook", "Botanist", "Clown", "Mime", "Janitor", "Chaplain")
nation = pick("Honka", "Boozo", "Fatu", "Danka", "Mimi", "Libra", "Jani", "Religi")
nation += pick("stan", "topia", "land", "nia", "ca", "tova", "dor", "ador", "tia", "sia", "ano", "tica", "tide", "cis", "marea", "co", "taoide", "slavia", "stotzka")
for(var/mob/living/carbon/human/H in mob_list)
if(H.mind)
var/datum/mind/M = H.mind
if(M.assigned_role && !(M in ticker.mode.traitors))
for(var/job in jobs_to_revolt)
if(M.assigned_role == job)
citizens += H
ticker.mode.traitors += M
M.special_role = "separatist"
H.attack_log += "\[[time_stamp()]\] <font color='red'>Was made into a separatist, long live [nation]!</font>"
H << "<B>You are a separatist! [nation] forever! Protect the soverignty of your newfound land with your comrades in arms!</B>"
if(citizens.len)
var/message
for(var/job in jobs_to_revolt)
message += "[job],"
message_admins("The nation of [nation] has been formed. Affected jobs are [message]")
@@ -0,0 +1,12 @@
/datum/round_event_control/wizard/fake_explosion //Oh no the station is gone!
name = "Fake Nuclear Explosion"
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
/datum/round_event/wizard/fake_explosion/start()
for(var/mob/M in player_list)
M << 'sound/machines/Alarm.ogg'
spawn(100)
ticker.station_explosion_cinematic(1,"fake") //:o)
+27
View File
@@ -0,0 +1,27 @@
/datum/round_event_control/wizard/ghost //The spook is real
name = "G-G-G-Ghosts!"
weight = 3
typepath = /datum/round_event/wizard/ghost/
max_occurrences = 5
earliest_start = 0
/datum/round_event/wizard/ghost/start()
for(var/mob/dead/observer/G in player_list)
G.invisibility = 0
G << "You suddenly feel extremely obvious..."
//--//
/datum/round_event_control/wizard/possession //Oh shit
name = "Possessing G-G-G-Ghosts!"
weight = 2
typepath = /datum/round_event/wizard/possession
max_occurrences = 5
earliest_start = 0
/datum/round_event/wizard/possession/start()
for(var/mob/dead/observer/G in player_list)
G.verbs += /mob/dead/observer/verb/boo
G.verbs += /mob/dead/observer/verb/possess
G << "You suddenly feel a welling of new spooky powers..."
+97
View File
@@ -0,0 +1,97 @@
/datum/round_event_control/wizard/greentext //Gotta have it!
name = "Greentext"
weight = 4
typepath = /datum/round_event/wizard/greentext/
max_occurrences = 1
earliest_start = 0
/datum/round_event/wizard/greentext/start()
var/list/holder_canadates = player_list.Copy()
for(var/mob/M in holder_canadates)
if(!ishuman(M))
holder_canadates -= M
if(!holder_canadates) //Very unlikely, but just in case
return 0
var/mob/living/carbon/human/H = pick(holder_canadates)
new /obj/item/weapon/greentext(H.loc)
H << "<font color='green'>The mythical greentext appear at your feet! Pick it up if you dare...</font>"
/obj/item/weapon/greentext
name = "greentext"
desc = "No one knows what this massive tome does, but it feels <i><font color='green'>desirable</font></i> all the same..."
w_class = 4
icon = 'icons/obj/wizard.dmi'
icon_state = "greentext"
var/mob/living/last_holder
var/mob/living/new_holder
var/list/color_altered_mobs = list()
burn_state = FIRE_PROOF
var/quiet = FALSE
/obj/item/weapon/greentext/New()
..()
poi_list |= src
/obj/item/weapon/greentext/equipped(mob/living/user as mob)
user << "<font color='green'>So long as you leave this place with greentext in hand you know will be happy...</font>"
if(user.mind && user.mind.objectives.len > 0)
user << "<span class='warning'>... so long as you still perform your other objectives that is!</span>"
new_holder = user
if(!last_holder)
last_holder = user
if(!(user in color_altered_mobs))
color_altered_mobs += user
user.color = "#00FF00"
START_PROCESSING(SSobj, src)
..()
/obj/item/weapon/greentext/dropped(mob/living/user as mob)
if(user in color_altered_mobs)
user << "<span class='warning'>A sudden wave of failure washes over you...</span>"
user.color = "#FF0000" //ya blew it
last_holder = null
new_holder = null
STOP_PROCESSING(SSobj, src)
..()
/obj/item/weapon/greentext/process()
if(new_holder && new_holder.z == ZLEVEL_CENTCOM)//you're winner!
new_holder << "<font color='green'>At last it feels like victory is assured!</font>"
if(!(new_holder in ticker.mode.traitors))
ticker.mode.traitors += new_holder.mind
new_holder.mind.special_role = "winner"
var/datum/objective/O = new /datum/objective("Succeed")
O.completed = 1 //YES!
O.owner = new_holder.mind
new_holder.mind.objectives += O
new_holder.attack_log += "\[[time_stamp()]\] <font color='green'>Won with greentext!!!</font>"
color_altered_mobs -= new_holder
burn_state = ON_FIRE
qdel(src)
if(last_holder && last_holder != new_holder) //Somehow it was swiped without ever getting dropped
last_holder << "<span class='warning'>A sudden wave of failure washes over you...</span>"
last_holder.color = "#FF0000"
last_holder = new_holder //long live the king
/obj/item/weapon/greentext/Destroy(force)
if((burn_state != ON_FIRE) && (!force))
return QDEL_HINT_LETMELIVE
. = ..()
poi_list.Remove(src)
for(var/mob/M in mob_list)
var/message = "<span class='warning'>A dark temptation has passed from this world"
if(M in color_altered_mobs)
message += " and you're finally able to forgive yourself"
M.color = initial(M.color)
message += "...</span>"
// can't skip the mob check as it also does the decolouring
if(!quiet)
M << message
/obj/item/weapon/greentext/quiet
quiet = TRUE
+58
View File
@@ -0,0 +1,58 @@
/datum/round_event_control/wizard/imposter //Mirror Mania
name = "Imposter Wizard"
weight = 1
typepath = /datum/round_event/wizard/imposter/
max_occurrences = 1
earliest_start = 0
/datum/round_event/wizard/imposter/start()
for(var/datum/mind/M in ticker.mode.wizards)
if(!ishuman(M.current))
continue
var/mob/living/carbon/human/W = M.current
var/list/candidates = get_candidates(ROLE_WIZARD)
if(!candidates)
return //Sad Trombone
var/client/C = pick(candidates)
PoolOrNew(/obj/effect/particle_effect/smoke, W.loc)
var/mob/living/carbon/human/I = new /mob/living/carbon/human(W.loc)
W.dna.transfer_identity(I, transfer_SE=1)
I.real_name = I.dna.real_name
I.name = I.dna.real_name
I.updateappearance(mutcolor_update=1)
I.domutcheck()
if(W.ears)
I.equip_to_slot_or_del(new W.ears.type, slot_ears)
if(W.w_uniform)
I.equip_to_slot_or_del(new W.w_uniform.type , slot_w_uniform)
if(W.shoes)
I.equip_to_slot_or_del(new W.shoes.type, slot_shoes)
if(W.wear_suit)
I.equip_to_slot_or_del(new W.wear_suit.type, slot_wear_suit)
if(W.head)
I.equip_to_slot_or_del(new W.head.type, slot_head)
if(W.back)
I.equip_to_slot_or_del(new W.back.type, slot_back)
I.key = C.key
//Operation: Fuck off and scare people
I.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null))
I.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(null))
I.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null))
ticker.mode.apprentices += I.mind
I.mind.special_role = "imposter"
var/datum/objective/protect/protect_objective = new /datum/objective/protect
protect_objective.owner = I.mind
protect_objective.target = W.mind
protect_objective.explanation_text = "Protect [W.real_name], the wizard."
I.mind.objectives += protect_objective
ticker.mode.update_wiz_icons_added(I.mind)
I.attack_log += "\[[time_stamp()]\] <font color='red'>Is an imposter!</font>"
I << "<B>You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!</B>"
I << sound('sound/effects/magic.ogg')
+12
View File
@@ -0,0 +1,12 @@
/datum/round_event_control/wizard/invincible //Boolet Proof
name = "Invincibility"
weight = 3
typepath = /datum/round_event/wizard/invincible/
max_occurrences = 5
earliest_start = 0
/datum/round_event/wizard/invincible/start()
for(var/mob/living/carbon/human/H in living_mob_list)
H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs)
H << "<span class='notice'>You feel invincible, nothing can hurt you!</span>"
+16
View File
@@ -0,0 +1,16 @@
/datum/round_event_control/wizard/lava //THE LEGEND NEVER DIES
name = "The Floor Is LAVA!"
weight = 2
typepath = /datum/round_event/wizard/lava/
max_occurrences = 3
earliest_start = 0
/datum/round_event/wizard/lava/
endWhen = 0
var/started = FALSE
/datum/round_event/wizard/lava/start()
if(!started)
started = TRUE
var/datum/weather/floor_is_lava/LAVA = new /datum/weather/floor_is_lava
LAVA.weather_start_up()
+54
View File
@@ -0,0 +1,54 @@
/datum/round_event_control/wizard/magicarp //these fish is loaded
name = "Magicarp"
weight = 1
typepath = /datum/round_event/wizard/magicarp/
max_occurrences = 1
earliest_start = 0
/datum/round_event/wizard/magicarp/
announceWhen = 3
startWhen = 50
/datum/round_event/wizard/magicarp/setup()
startWhen = rand(40, 60)
/datum/round_event/wizard/magicarp/announce()
priority_announce("Unknown magical entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
/datum/round_event/wizard/magicarp/start()
for(var/obj/effect/landmark/C in landmarks_list)
if(C.name == "carpspawn")
if(prob(5))
new /mob/living/simple_animal/hostile/carp/ranged/chaos(C.loc)
else
new /mob/living/simple_animal/hostile/carp/ranged(C.loc)
/mob/living/simple_animal/hostile/carp/ranged
name = "magicarp"
desc = "50% magic, 50% carp, 100% horrible."
icon_state = "magicarp"
icon_living = "magicarp"
icon_dead = "magicarp_dead"
icon_gib = "magicarp_gib"
ranged = 1
retreat_distance = 2
minimum_distance = 0 //Between shots they can and will close in to nash
projectiletype = /obj/item/projectile/magic
projectilesound = 'sound/weapons/emitter.ogg'
maxHealth = 50
health = 50
/mob/living/simple_animal/hostile/carp/ranged/New()
projectiletype = pick(typesof(initial(projectiletype)))
..()
/mob/living/simple_animal/hostile/carp/ranged/chaos
name = "chaos magicarp"
desc = "50% carp, 100% magic, 150% horrible."
color = "#00FFFF"
maxHealth = 75
health = 75
/mob/living/simple_animal/hostile/carp/ranged/chaos/Shoot()
projectiletype = pick(typesof(initial(projectiletype)))
..()
+17
View File
@@ -0,0 +1,17 @@
/datum/round_event_control/wizard/petsplosion //the horror
name = "Petsplosion"
weight = 2
typepath = /datum/round_event/wizard/petsplosion/
max_occurrences = 1 //Exponential growth is nothing to sneeze at!
earliest_start = 0
/datum/round_event/wizard/petsplosion/
endWhen = 61 //1 minute (+1 tick for endWhen not to interfere with tick)
var/countdown = 0
/datum/round_event/wizard/petsplosion/tick()
if(activeFor >= 30 * countdown) // 0 seconds : 2 animals | 30 seconds : 4 animals | 1 minute : 8 animals
countdown += 1
for(var/mob/living/simple_animal/F in living_mob_list) //If you cull the heard before the next replication, things will be easier for you
if(!istype(F, /mob/living/simple_animal/hostile))
new F.type(F.loc)
+29
View File
@@ -0,0 +1,29 @@
/datum/round_event_control/wizard/race //Lizard Wizard? Lizard Wizard.
name = "Race Swap"
weight = 2
typepath = /datum/round_event/wizard/race/
max_occurrences = 5
earliest_start = 0
/datum/round_event/wizard/race/start()
var/all_the_same = 0
var/all_species = list()
for(var/speciestype in subtypesof(/datum/species))
var/datum/species/S = new speciestype()
if(!S.dangerous_existence)
all_species += speciestype
var/datum/species/new_species = pick(all_species)
if(prob(50))
all_the_same = 1
for(var/mob/living/carbon/human/H in mob_list) //yes, even the dead
H.set_species(new_species)
H.real_name = new_species.random_name(H.gender,1)
H.dna.unique_enzymes = H.dna.generate_unique_enzymes()
H << "<span class='notice'>You feel somehow... different?</span>"
if(!all_the_same)
new_species = pick(all_species)
+62
View File
@@ -0,0 +1,62 @@
/datum/round_event_control/wizard/rpgloot //its time to minmax your shit
name = "RPG Loot"
weight = 3
typepath = /datum/round_event/wizard/rpgloot/
max_occurrences = 1
earliest_start = 0
/datum/round_event/wizard/rpgloot/start()
var/list/prefixespositive = list("greater", "major", "blessed", "superior", "enpowered", "honed", "true", "glorious", "robust")
var/list/prefixesnegative = list("lesser", "minor", "blighted", "inferior", "enfeebled", "rusted", "unsteady", "tragic", "gimped")
var/list/suffixes = list("orc slaying", "elf slaying", "corgi slaying", "strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma", "the forest", "the hills", "the plains", "the sea", "the sun", "the moon", "the void", "the world", "the fool", "many secrets", "many tales", "many colors", "rending", "sundering", "the night", "the day")
var/upgrade_scroll_chance = 0
for(var/obj/item/I in world)
if(istype(I,/obj/item/organ/))
continue
var/quality = pick(1;15, 2;14, 2;13, 2;12, 3;11, 3;10, 3;9, 4;8, 4;7, 4;6, 5;5, 5;4, 5;3, 6;2, 6;1, 6;0)
if(prob(50))
quality = -quality
if(quality > 0)
I.name = "[pick(prefixespositive)] [I.name] of [pick(suffixes)] +[quality]"
else if(quality < 0)
I.name = "[pick(prefixesnegative)] [I.name] of [pick(suffixes)] [quality]"
else
I.name = "[I.name] of [pick(suffixes)]"
I.force = max(0,I.force + quality)
I.throwforce = max(0,I.throwforce + quality)
for(var/value in I.armor)
I.armor[value] += quality
if(istype(I,/obj/item/weapon/storage))
var/obj/item/weapon/storage/S = I
if(prob(upgrade_scroll_chance) && S.contents.len < S.storage_slots)
var/obj/item/upgradescroll/scroll = new
S.handle_item_insertion(scroll,1)
upgrade_scroll_chance = max(0,upgrade_scroll_chance-100)
upgrade_scroll_chance += 25
/obj/item/upgradescroll
name = "Item Fortification Scroll"
desc = "Somehow, this piece of paper can be applied to items to make them \"better\". Apparently there's a risk of losing the item if it's already \"too good\". <i>This all feels so arbitrary...</i>"
icon = 'icons/obj/wizard.dmi'
icon_state = "scroll"
w_class = 1
/obj/item/upgradescroll/afterattack(obj/item/target, mob/user , proximity)
if(!proximity || !istype(target))
return
var/quality = target.force - initial(target.force)
if(quality > 9 && prob((quality - 9)*10))
user << "<span class='danger'>[target] catches fire!</span>"
if(target.burn_state == -1)
target.burn_state = 0
target.fire_act()
qdel(src)
return
target.force += 1
target.throwforce += 1
for(var/value in target.armor)
target.armor[value] += 1
user << "<span class='notice'>[target] glows blue and seems vaguely \"better\"!</span>"
qdel(src)
+104
View File
@@ -0,0 +1,104 @@
/datum/round_event/wizard/shuffle/start()
/datum/round_event_control/wizard/shuffleloc //Somewhere an AI is crying
name = "Change Places!"
weight = 2
typepath = /datum/round_event/wizard/shuffleloc/
max_occurrences = 5
earliest_start = 0
/datum/round_event/wizard/shuffleloc/start()
var/list/moblocs = list()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in living_mob_list)
if(H.z != 1)
continue //lets not try to strand people in space or stuck in the wizards den
moblocs += H.loc
mobs += H
if(!mobs)
return
shuffle(moblocs)
shuffle(mobs)
for(var/mob/living/carbon/human/H in mobs)
if(!moblocs)
break //locs aren't always unique, so this may come into play
do_teleport(H, moblocs[moblocs.len])
moblocs.len -= 1
for(var/mob/living/carbon/human/H in living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
//---//
/datum/round_event_control/wizard/shufflenames //Face/off joke
name = "Change Faces!"
weight = 4
typepath = /datum/round_event/wizard/shufflenames/
max_occurrences = 5
earliest_start = 0
/datum/round_event/wizard/shufflenames/start()
var/list/mobnames = list()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in living_mob_list)
mobnames += H.real_name
mobs += H
if(!mobs)
return
shuffle(mobnames)
shuffle(mobs)
for(var/mob/living/carbon/human/H in mobs)
if(!mobnames)
break
H.real_name = mobnames[mobnames.len]
mobnames.len -= 1
for(var/mob/living/carbon/human/H in living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
//---//
/datum/round_event_control/wizard/shuffleminds //Basically Mass Ranged Mindswap
name = "Change Minds!"
weight = 1
typepath = /datum/round_event/wizard/shuffleminds/
max_occurrences = 3
earliest_start = 0
/datum/round_event/wizard/shuffleminds/start()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in living_mob_list)
if(!H.stat || !H.mind || (H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices))
continue //the wizard(s) are spared on this one
mobs += H
if(!mobs)
return
shuffle(mobs)
var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new /obj/effect/proc_holder/spell/targeted/mind_transfer/
while(mobs.len > 1)
var/mob/living/carbon/human/H = pick(mobs)
mobs -= H
swapper.cast(list(H), mobs[mobs.len], 1)
mobs -= mobs[mobs.len]
for(var/mob/living/carbon/human/H in living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
+29
View File
@@ -0,0 +1,29 @@
/datum/round_event_control/wizard/summonguns //The Classic
name = "Summon Guns"
weight = 1
typepath = /datum/round_event/wizard/summonguns/
max_occurrences = 1
earliest_start = 0
/datum/round_event_control/wizard/summonguns/New()
if(config.no_summon_guns)
weight = 0
..()
/datum/round_event/wizard/summonguns/start()
rightandwrong(0,,10)
/datum/round_event_control/wizard/summonmagic //The Somewhat Less Classic
name = "Summon Magic"
weight = 1
typepath = /datum/round_event/wizard/summonmagic/
max_occurrences = 1
earliest_start = 0
/datum/round_event_control/wizard/summonmagic/New()
if(config.no_summon_magic)
weight = 0
..()
/datum/round_event/wizard/summonmagic/start()
rightandwrong(1,,10)