Revert "PLASE"

This reverts commit 8af225e6e3.
This commit is contained in:
Fermi
2019-11-24 03:06:08 +00:00
parent aeb8606ce0
commit ba4fa1ef67
2145 changed files with 1387321 additions and 5257 deletions
+61
View File
@@ -0,0 +1,61 @@
/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 MINUTES
can_be_midround_wizard = FALSE
//Note about adding items to this: Because of how NODROP_1 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/loadout[SLOTS_AMT]
var/ruins_spaceworthiness
var/ruins_wizard_loadout
switch(item_set)
if("wizardmimic")
loadout[SLOT_WEAR_SUIT] = /obj/item/clothing/suit/wizrobe
loadout[SLOT_SHOES] = /obj/item/clothing/shoes/sandal/magic
loadout[SLOT_HEAD] = /obj/item/clothing/head/wizard
ruins_spaceworthiness = 1
if("swords")
loadout[SLOT_HANDS] = /obj/item/katana/cursed
if("bigfatdoobie")
loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy
ruins_spaceworthiness = 1
if("boxing")
loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/luchador
loadout[SLOT_GLOVES] = /obj/item/clothing/gloves/boxing
ruins_spaceworthiness = 1
if("voicemodulators")
loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/chameleon
if("catgirls2015")
loadout[SLOT_HEAD] = /obj/item/clothing/head/kitty
ruins_spaceworthiness = 1
ruins_wizard_loadout = 1
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
if(ruins_spaceworthiness && !is_station_level(H.z) || isspaceturf(H.loc) || isplasmaman(H))
continue //#savetheminers
if(ruins_wizard_loadout && iswizard(H))
continue
if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry
H.gender = FEMALE
for(var/i in 1 to loadout.len)
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.dropItemToGround(H.get_item_by_slot(i), TRUE)
H.equip_to_slot_or_del(I, i)
ADD_TRAIT(I, TRAIT_NODROP, CURSED_ITEM_TRAIT)
I.item_flags |= DROPDEL
I.name = "cursed " + I.name
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
@@ -0,0 +1,56 @@
/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 MINUTES
can_be_midround_wizard = FALSE // not removing it completely yet
/datum/round_event/wizard/deprevolt/start()
var/list/tidecolor
var/list/jobs_to_revolt = list()
var/nation_name
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_name = 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_name = pick("Mede", "Healtha", "Recova", "Chemi", "Geneti", "Viro", "Psych")
if("yellow")
jobs_to_revolt = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
nation_name = pick("Atomo", "Engino", "Power", "Teleco")
if("purple")
jobs_to_revolt = list("Research Director","Scientist", "Roboticist")
nation_name = pick("Sci", "Griffa", "Explosi", "Mecha", "Xeno")
if("brown")
jobs_to_revolt = list("Quartermaster", "Cargo Technician", "Shaft Miner")
nation_name = 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_name = pick("Honka", "Boozo", "Fatu", "Danka", "Mimi", "Libra", "Jani", "Religi")
nation_name += pick("stan", "topia", "land", "nia", "ca", "tova", "dor", "ador", "tia", "sia", "ano", "tica", "tide", "cis", "marea", "co", "taoide", "slavia", "stotzka")
var/datum/team/nation/nation = new
nation.name = nation_name
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
if(H.mind)
var/datum/mind/M = H.mind
if(M.assigned_role && !(M.has_antag_datum(/datum/antagonist)))
for(var/job in jobs_to_revolt)
if(M.assigned_role == job)
citizens += H
M.add_antag_datum(/datum/antagonist/separatist,nation)
H.log_message("Was made into a separatist, long live [nation_name]!", LOG_ATTACK, color="red")
if(citizens.len)
var/message
for(var/job in jobs_to_revolt)
message += "[job],"
message_admins("The nation of [nation_name] has been formed. Affected jobs are [message]")
+102
View File
@@ -0,0 +1,102 @@
/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 MINUTES
/datum/round_event/wizard/greentext/start()
var/list/holder_canadates = GLOB.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/greentext(H.loc)
to_chat(H, "<font color='green'>The mythical greentext appear at your feet! Pick it up if you dare...</font>")
/obj/item/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 = WEIGHT_CLASS_BULKY
icon = 'icons/obj/wizard.dmi'
icon_state = "greentext"
var/mob/living/last_holder
var/mob/living/new_holder
var/list/color_altered_mobs = list()
var/datum/callback/roundend_callback
resistance_flags = FIRE_PROOF | ACID_PROOF
var/quiet = FALSE
/obj/item/greentext/Initialize(mapload)
. = ..()
GLOB.poi_list |= src
roundend_callback = CALLBACK(src,.proc/check_winner)
SSticker.OnRoundend(roundend_callback)
/obj/item/greentext/equipped(mob/living/user as mob)
to_chat(user, "<font color='green'>So long as you leave this place with greentext in hand you know will be happy...</font>")
var/list/other_objectives = user.mind.get_all_objectives()
if(user.mind && other_objectives.len > 0)
to_chat(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.add_atom_colour("#00FF00", ADMIN_COLOUR_PRIORITY)
START_PROCESSING(SSobj, src)
..()
/obj/item/greentext/dropped(mob/living/user as mob)
if(user in color_altered_mobs)
to_chat(user, "<span class='warning'>A sudden wave of failure washes over you...</span>")
user.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY) //ya blew it
last_holder = null
new_holder = null
STOP_PROCESSING(SSobj, src)
..()
/obj/item/greentext/proc/check_winner()
if(!new_holder)
return
if(is_centcom_level(new_holder.z))//you're winner!
to_chat(new_holder, "<font color='green'>At last it feels like victory is assured!</font>")
new_holder.mind.add_antag_datum(/datum/antagonist/greentext)
new_holder.log_message("won with greentext!!!", LOG_ATTACK, color="green")
color_altered_mobs -= new_holder
resistance_flags |= ON_FIRE
qdel(src)
/obj/item/greentext/process()
if(last_holder && last_holder != new_holder) //Somehow it was swiped without ever getting dropped
to_chat(last_holder, "<span class='warning'>A sudden wave of failure washes over you...</span>")
last_holder.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY)
last_holder = new_holder //long live the king
/obj/item/greentext/Destroy(force)
if(!(resistance_flags & ON_FIRE) && !force)
return QDEL_HINT_LETMELIVE
SSticker.round_end_events -= roundend_callback
GLOB.poi_list.Remove(src)
for(var/i in GLOB.player_list)
var/mob/M = i
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"
if(M.color == "#FF0000" || M.color == "#00FF00")
M.remove_atom_colour(ADMIN_COLOUR_PRIORITY)
message += "...</span>"
// can't skip the mob check as it also does the decolouring
if(!quiet)
to_chat(M, message)
. = ..()
/obj/item/greentext/quiet
quiet = TRUE
+57
View File
@@ -0,0 +1,57 @@
/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 MINUTES
/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(fake)
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/carpspawn/C in GLOB.landmarks_list)
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
gold_core_spawnable = NO_SPAWN
var/allowed_projectile_types = list(/obj/item/projectile/magic/change, /obj/item/projectile/magic/animate, /obj/item/projectile/magic/resurrection,
/obj/item/projectile/magic/death, /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball,
/obj/item/projectile/magic/spellblade, /obj/item/projectile/magic/arcane_barrage)
/mob/living/simple_animal/hostile/carp/ranged/Initialize()
projectiletype = pick(allowed_projectile_types)
. = ..()
/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(allowed_projectile_types)
..()
+59
View File
@@ -0,0 +1,59 @@
/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 MINUTES
can_be_midround_wizard = FALSE
/datum/round_event/wizard/race
var/list/stored_name
var/list/stored_species
var/list/stored_dna
/datum/round_event/wizard/race/setup()
stored_name = list()
stored_species = list()
stored_dna = list()
endWhen = rand(600,1200) //10 to 20 minutes
..()
/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 && !S.blacklisted && !S.nojumpsuit) //Dangerous Species, Blacklisted Species, and Species who can't wear jumpsuits are blacklisted.
all_species += speciestype
var/datum/species/new_species = pick(all_species)
if(prob(75))
all_the_same = 1
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
var/turf/T = get_turf(H)
if(!T)
continue
if(!is_station_level(T.z))
continue
stored_name[H] = H.real_name
stored_species[H] = H.dna.species
stored_dna[H] = H.dna.unique_enzymes
H.set_species(new_species)
H.real_name = H.dna.species.random_name(H.gender,1)
H.dna.unique_enzymes = H.dna.generate_unique_enzymes()
to_chat(H, "<span class='notice'>You feel somehow... different?</span>")
if(!all_the_same)
new_species = pick(all_species)
/datum/round_event/wizard/race/end()
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
if(!(stored_name[H] && stored_species[H] && stored_dna[H]))
continue
H.set_species(stored_species[H])
H.real_name = stored_name[H]
H.dna.unique_enzymes = stored_dna[H]
to_chat(H, "<span class='notice'>You feel back to your normal self again.</span>")
+53
View File
@@ -0,0 +1,53 @@
/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 MINUTES
/datum/round_event/wizard/rpgloot/start()
var/upgrade_scroll_chance = 0
for(var/obj/item/I in world)
CHECK_TICK
if(!(I.flags_1 & INITIALIZED_1))
continue
I.AddComponent(/datum/component/fantasy)
if(istype(I, /obj/item/storage))
var/obj/item/storage/S = I
var/datum/component/storage/STR = S.GetComponent(/datum/component/storage)
if(prob(upgrade_scroll_chance) && S.contents.len < STR.max_items && !S.invisibility)
var/obj/item/upgradescroll/scroll = new
SEND_SIGNAL(S, COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE)
upgrade_scroll_chance = max(0,upgrade_scroll_chance-100)
upgrade_scroll_chance += 25
GLOB.rpg_loot_items = TRUE
/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 = WEIGHT_CLASS_TINY
var/upgrade_amount = 1
var/can_backfire = TRUE
var/uses = 1
/obj/item/upgradescroll/afterattack(obj/item/target, mob/user , proximity)
. = ..()
if(!proximity || !istype(target))
return
target.AddComponent(/datum/component/fantasy, upgrade_amount, null, null, can_backfire, TRUE)
if(--uses <= 0)
qdel(src)
/obj/item/upgradescroll/unlimited
name = "unlimited foolproof item fortification scroll"
desc = "Somehow, this piece of paper can be applied to items to make them \"better\". This scroll is made from the tongues of dead paper wizards, and can be used an unlimited number of times, with no drawbacks."
uses = INFINITY
can_backfire = FALSE
+107
View File
@@ -0,0 +1,107 @@
/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 MINUTES
can_be_midround_wizard = FALSE // not removing it completely yet
/datum/round_event/wizard/shuffleloc/start()
var/list/moblocs = list()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
if(!is_station_level(H.z))
continue //lets not try to strand people in space or stuck in the wizards den
moblocs += H.loc
mobs += H
if(!mobs)
return
shuffle_inplace(moblocs)
shuffle_inplace(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], channel = TELEPORT_CHANNEL_MAGIC)
moblocs.len -= 1
for(var/mob/living/carbon/human/H in GLOB.alive_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 MINUTES
can_be_midround_wizard = FALSE // not removing it completely yet
/datum/round_event/wizard/shufflenames/start()
var/list/mobnames = list()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
mobnames += H.real_name
mobs += H
if(!mobs)
return
shuffle_inplace(mobnames)
shuffle_inplace(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 GLOB.alive_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 MINUTES
can_be_midround_wizard = FALSE // not removing it completely yet
/datum/round_event/wizard/shuffleminds/start()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
if(H.stat || !H.mind || iswizard(H))
continue //the wizard(s) are spared on this one
mobs += H
if(!mobs)
return
shuffle_inplace(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 GLOB.alive_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
+31
View File
@@ -0,0 +1,31 @@
/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 MINUTES
can_be_midround_wizard = FALSE // not removing it completely yet
/datum/round_event_control/wizard/summonguns/New()
if(CONFIG_GET(flag/no_summon_guns))
weight = 0
..()
/datum/round_event/wizard/summonguns/start()
rightandwrong(SUMMON_GUNS, null, 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 MINUTES
can_be_midround_wizard = FALSE // not removing it completely yet
/datum/round_event_control/wizard/summonmagic/New()
if(CONFIG_GET(flag/no_summon_magic))
weight = 0
..()
/datum/round_event/wizard/summonmagic/start()
rightandwrong(SUMMON_MAGIC, null, 10)