diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
index 5f8ad3de9d..083e610587 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
@@ -47,8 +47,8 @@
icon_state = "teleport"
duration = 80
-/obj/effect/overlay/temp/teleport_abductor/New()
+/obj/effect/overlay/temp/teleport_abductor/Initialize()
+ . = ..()
var/datum/effect_system/spark_spread/S = new
S.set_up(10,0,loc)
- S.start()
- ..()
\ No newline at end of file
+ S.start()
\ No newline at end of file
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index 6ce04bed14..c6248b03cc 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -527,9 +527,9 @@
icon_state = "disintegrate"
duration = 10
-/obj/effect/overlay/temp/swarmer/disintegration/New()
- playsound(src.loc, "sparks", 100, 1)
- ..()
+/obj/effect/overlay/temp/swarmer/disintegration/Initialize()
+ . = ..()
+ playsound(loc, "sparks", 100, 1)
/obj/effect/overlay/temp/swarmer/dismantle
icon_state = "dismantle"
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index a3cd947b81..137514d1e3 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -1,643 +1,635 @@
-
-//Apprenticeship contract - moved to antag_spawner.dm
-
-///////////////////////////Veil Render//////////////////////
-
-/obj/item/weapon/veilrender
- name = "veil render"
- desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast city."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "render"
- item_state = "render"
- force = 15
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
- var/charges = 1
- var/spawn_type = /obj/singularity/wizard
- var/spawn_amt = 1
- var/activate_descriptor = "reality"
- var/rend_desc = "You should run now."
- var/spawn_fast = 0 //if 1, ignores checking for mobs on loc before spawning
-
-/obj/item/weapon/veilrender/attack_self(mob/user)
- if(charges > 0)
- new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast)
- charges--
- user.visible_message("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!")
- else
- to_chat(user, "The unearthly energies that powered the blade are now dormant.")
-
-/obj/effect/rend
- name = "tear in the fabric of reality"
- desc = "You should run now."
- icon = 'icons/obj/biomass.dmi'
- icon_state = "rift"
- density = 1
- anchored = 1
- var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies
- var/spawn_amt_left = 20
- var/spawn_fast = 0
-
-/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc, var/spawn_fast)
- src.spawn_path = spawn_type
- src.spawn_amt_left = spawn_amt
- src.desc = desc
- src.spawn_fast = spawn_fast
- START_PROCESSING(SSobj, src)
- return
-
-/obj/effect/rend/process()
- if(!spawn_fast)
- if(locate(/mob) in loc)
- return
- new spawn_path(loc)
- spawn_amt_left--
- if(spawn_amt_left <= 0)
- qdel(src)
-
-/obj/effect/rend/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/weapon/nullrod))
- user.visible_message("[user] seals \the [src] with \the [I].")
- qdel(src)
- return
- else
- return ..()
-
-/obj/item/weapon/veilrender/vealrender
- name = "veal render"
- desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm."
- spawn_type = /mob/living/simple_animal/cow
- spawn_amt = 20
- activate_descriptor = "hunger"
- rend_desc = "Reverberates with the sound of ten thousand moos."
-
-/obj/item/weapon/veilrender/honkrender
- name = "honk render"
- desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast circus."
- spawn_type = /mob/living/simple_animal/hostile/retaliate/clown
- spawn_amt = 10
- activate_descriptor = "depression"
- rend_desc = "Gently wafting with the sounds of endless laughter."
- icon_state = "clownrender"
-
-////TEAR IN REALITY
-
-/obj/singularity/wizard
- name = "tear in the fabric of reality"
- desc = "This isn't right."
- icon = 'icons/effects/224x224.dmi'
- icon_state = "reality"
- pixel_x = -96
- pixel_y = -96
- grav_pull = 6
- consume_range = 3
- current_size = STAGE_FOUR
- allowed_size = STAGE_FOUR
-
-/obj/singularity/wizard/process()
- move()
- eat()
- return
-/////////////////////////////////////////Scrying///////////////////
-
-/obj/item/weapon/scrying
- name = "scrying orb"
- desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means."
- icon = 'icons/obj/projectiles.dmi'
- icon_state ="bluespace"
- throw_speed = 3
- throw_range = 7
- throwforce = 15
- damtype = BURN
- force = 15
- hitsound = 'sound/items/welder2.ogg'
-
-/obj/item/weapon/scrying/attack_self(mob/user)
- to_chat(user, "You can see...everything!")
- visible_message("[user] stares into [src], their eyes glazing over.")
- user.ghostize(1)
- return
-
-/////////////////////////////////////////Necromantic Stone///////////////////
-
-/obj/item/device/necromantic_stone
- name = "necromantic stone"
- desc = "A shard capable of resurrecting humans as skeleton thralls."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "necrostone"
- item_state = "electronic"
- origin_tech = "bluespace=4;materials=4"
- w_class = WEIGHT_CLASS_TINY
- var/list/spooky_scaries = list()
- var/unlimited = 0
-
-/obj/item/device/necromantic_stone/unlimited
- unlimited = 1
-
-/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user)
- if(!istype(M))
- return ..()
-
- if(!istype(user) || !user.canUseTopic(M,1))
- return
-
- if(M.stat != DEAD)
- to_chat(user, "This artifact can only affect the dead!")
- return
-
- if(!M.mind || !M.client)
- to_chat(user, "There is no soul connected to this body...")
- return
-
- check_spooky()//clean out/refresh the list
- if(spooky_scaries.len >= 3 && !unlimited)
- to_chat(user, "This artifact can only affect three undead at a time!")
- return
-
- M.set_species(/datum/species/skeleton, icon_update=0)
- M.revive(full_heal = 1, admin_revive = 1)
- spooky_scaries |= M
- to_chat(M, "You have been revived by [user.real_name]!")
- to_chat(M, "[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!")
-
- equip_roman_skeleton(M)
-
- desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]"
-
-/obj/item/device/necromantic_stone/proc/check_spooky()
- if(unlimited) //no point, the list isn't used.
- return
-
- for(var/X in spooky_scaries)
- if(!ishuman(X))
- spooky_scaries.Remove(X)
- continue
- var/mob/living/carbon/human/H = X
- if(H.stat == DEAD)
- spooky_scaries.Remove(X)
- continue
- listclearnulls(spooky_scaries)
-
-//Funny gimmick, skeletons always seem to wear roman/ancient armour
-/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H)
- for(var/obj/item/I in H)
- H.dropItemToGround(I)
-
- var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire)
- H.equip_to_slot_or_del(new hat(H), slot_head)
- H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform)
- H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes)
- H.put_in_hands_or_del(new /obj/item/weapon/shield/riot/roman(H))
- H.put_in_hands_or_del(new /obj/item/weapon/claymore(H))
- H.equip_to_slot_or_del(new /obj/item/weapon/twohanded/spear(H), slot_back)
-
-
-
-/////////////////////Multiverse Blade////////////////////
-
-/obj/item/weapon/multisword
- name = "multiverse sword"
- desc = "A weapon capable of conquering the universe and beyond. Activate it to summon copies of yourself from others dimensions to fight by your side."
- icon = 'icons/obj/weapons.dmi'
- icon_state = "multiverse"
- item_state = "multiverse"
- hitsound = 'sound/weapons/bladeslice.ogg'
- flags = CONDUCT
- slot_flags = SLOT_BELT
- sharpness = IS_SHARP
- force = 20
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- var/faction = list("unassigned")
- var/cooldown = 0
- var/assigned = "unassigned"
- var/static/list/multiverse = list()
-
-/obj/item/weapon/multisword/New()
- ..()
- multiverse += src
-
-
-/obj/item/weapon/multisword/Destroy()
- multiverse.Remove(src)
- return ..()
-
-/obj/item/weapon/multisword/attack_self(mob/user)
- if(user.mind.special_role == "apprentice")
- to_chat(user, "You know better than to touch your teacher's stuff.")
- return
- if(cooldown < world.time)
- var/faction_check = 0
- for(var/F in faction)
- if(F in user.faction)
- faction_check = 1
- break
- if(faction_check == 0)
- faction = list("[user.real_name]")
- assigned = "[user.real_name]"
- user.faction = list("[user.real_name]")
- to_chat(user, "You bind the sword to yourself. You can now use it to summon help.")
- if(!is_gangster(user))
- var/datum/gang/multiverse/G = new(src, "[user.real_name]")
- SSticker.mode.gangs += G
- G.bosses += user.mind
- G.add_gang_hud(user.mind)
- user.mind.gang_datum = G
- to_chat(user, "With your new found power you could easily conquer the station!")
- var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
- hijack_objective.owner = user.mind
- user.mind.objectives += hijack_objective
- hijack_objective.explanation_text = "Ensure only [user.real_name] and their copies are on the shuttle!"
- to_chat(user, "Objective #[1]: [hijack_objective.explanation_text]")
- SSticker.mode.traitors += user.mind
- user.mind.special_role = "[user.real_name] Prime"
- else
- var/list/candidates = get_candidates(ROLE_WIZARD)
- if(candidates.len)
- var/client/C = pick(candidates)
- spawn_copy(C, get_turf(user.loc), user)
- to_chat(user, "The sword flashes, and you find yourself face to face with...you!")
- cooldown = world.time + 400
- for(var/obj/item/weapon/multisword/M in multiverse)
- if(M.assigned == assigned)
- M.cooldown = cooldown
-
- else
- to_chat(user, "You fail to summon any copies of yourself. Perhaps you should try again in a bit.")
- else
- to_chat(user, "[src] is recharging! Keep in mind it shares a cooldown with the swords wielded by your copies.")
-
-
-/obj/item/weapon/multisword/proc/spawn_copy(var/client/C, var/turf/T, mob/user)
- var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
- C.prefs.copy_to(M, icon_updates=0)
- M.key = C.key
- M.mind.name = user.real_name
- to_chat(M, "You are an alternate version of [user.real_name] from another universe! Help them accomplish their goals at all costs.")
- SSticker.mode.add_gangster(M.mind, user.mind.gang_datum, FALSE)
- M.real_name = user.real_name
- M.name = user.real_name
- M.faction = list("[user.real_name]")
- if(prob(50))
- var/list/all_species = list()
- for(var/speciestype in subtypesof(/datum/species))
- var/datum/species/S = speciestype
- if(!initial(S.dangerous_existence))
- all_species += speciestype
- M.set_species(pick(all_species), icon_update=0)
- M.update_body()
- M.update_hair()
- M.update_body_parts()
- M.dna.update_dna_identity()
- equip_copy(M)
-
-/obj/item/weapon/multisword/proc/equip_copy(var/mob/living/carbon/human/M)
-
- var/obj/item/weapon/multisword/sword = new /obj/item/weapon/multisword
- sword.assigned = assigned
- sword.faction = list("[assigned]")
-
- var/randomize = pick("mobster","roman","wizard","cyborg","syndicate","assistant", "animu", "cultist", "highlander", "clown", "killer", "pirate", "soviet", "officer", "gladiator")
-
- switch(randomize)
- if("mobster")
- M.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
- M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
- M.put_in_hands_or_del(sword)
-
- if("roman")
- var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire)
- M.equip_to_slot_or_del(new hat(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/under/roman(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(M), slot_shoes)
- M.put_in_hands_or_del(new /obj/item/weapon/shield/riot/roman(M))
- M.put_in_hands_or_del(sword)
-
- if("wizard")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
- M.put_in_hands_or_del(sword)
- if("cyborg")
- for(var/X in M.bodyparts)
- var/obj/item/bodypart/affecting = X
- affecting.change_bodypart_status(BODYPART_ROBOTIC, FALSE, TRUE)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
- M.put_in_hands_or_del(sword)
-
- if("syndicate")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
- M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M),slot_wear_mask)
- M.put_in_hands_or_del(sword)
-
- if("assistant")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes)
- M.put_in_hands_or_del(sword)
-
- if("animu")
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/head/kitty(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/under/schoolgirl/red(M), slot_w_uniform)
- M.put_in_hands_or_del(sword)
-
- if("cultist")
- M.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(M), slot_wear_suit)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.put_in_hands_or_del(sword)
-
- if("highlander")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/head/beret(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
- M.put_in_hands_or_del(sword)
-
- if("clown")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
- M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_l_store)
- M.put_in_hands_or_del(sword)
-
- if("killer")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
- M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
- M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
- M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
- M.put_in_hands_or_del(sword)
- for(var/obj/item/carried_item in M.get_equipped_items())
- carried_item.add_mob_blood(M)
- for(var/obj/item/I in M.held_items)
- I.add_mob_blood(M)
- if("pirate")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.put_in_hands_or_del(sword)
-
- if("soviet")
- M.equip_to_slot_or_del(new /obj/item/clothing/head/pirate/captain(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/suit/pirate/captain(M), slot_wear_suit)
- M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
- M.put_in_hands_or_del(sword)
-
- if("officer")
- M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/beret(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/suit/jacket/miljacket(M), slot_wear_suit)
- M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
- M.put_in_hands_or_del(sword)
-
- if("gladiator")
- M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/gladiator(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/under/gladiator(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
- M.put_in_hands_or_del(sword)
-
-
- else
- return
-
- M.update_body_parts()
-
- var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id
- W.icon_state = "centcom"
- W.access += GLOB.access_maint_tunnels
- W.assignment = "Multiverse Traveller"
- W.registered_name = M.real_name
- W.update_label(M.real_name)
- M.equip_to_slot_or_del(W, slot_wear_id)
-
-
-/obj/item/voodoo
- name = "wicker doll"
- desc = "Something creepy about it."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "voodoo"
- item_state = "electronic"
- var/mob/living/carbon/human/target = null
- var/list/mob/living/carbon/human/possible = list()
- var/obj/item/link = null
- var/cooldown_time = 30 //3s
- var/cooldown = 0
- obj_integrity = 10
- max_integrity = 10
- resistance_flags = FLAMMABLE
-
-/obj/item/voodoo/attackby(obj/item/I, mob/user, params)
- if(target && cooldown < world.time)
- if(I.is_hot())
- to_chat(target, "You suddenly feel very hot")
- target.bodytemperature += 50
- GiveHint(target)
- else if(is_pointed(I))
- to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!")
- target.Weaken(2)
- GiveHint(target)
- else if(istype(I,/obj/item/weapon/bikehorn))
- to_chat(target, "HONK")
- target << 'sound/items/AirHorn.ogg'
- target.adjustEarDamage(0,3)
- GiveHint(target)
- cooldown = world.time +cooldown_time
- return
-
- if(!link)
- if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL)
- user.drop_item()
- I.loc = src
- link = I
- to_chat(user, "You attach [I] to the doll.")
- update_targets()
-
-/obj/item/voodoo/check_eye(mob/user)
- if(loc != user)
- user.reset_perspective(null)
- user.unset_machine()
-
-/obj/item/voodoo/attack_self(mob/user)
- if(!target && possible.len)
- target = input(user, "Select your victim!", "Voodoo") as null|anything in possible
- return
-
- if(user.zone_selected == "chest")
- if(link)
- target = null
- link.loc = get_turf(src)
- to_chat(user, "You remove the [link] from the doll.")
- link = null
- update_targets()
- return
-
- if(target && cooldown < world.time)
- switch(user.zone_selected)
- if("mouth")
- var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text)
- target.say(wgw)
- log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.")
- if("eyes")
- user.set_machine(src)
- user.reset_perspective(target)
- spawn(100)
- user.reset_perspective(null)
- user.unset_machine()
- if("r_leg","l_leg")
- to_chat(user, "You move the doll's legs around.")
- var/turf/T = get_step(target,pick(GLOB.cardinal))
- target.Move(T)
- if("r_arm","l_arm")
- target.click_random_mob()
- GiveHint(target)
- if("head")
- to_chat(user, "You smack the doll's head with your hand.")
- target.Dizzy(10)
- to_chat(target, "You suddenly feel as if your head was hit with a hammer!")
- GiveHint(target,user)
- if("groin")
- if(target.canbearoused)
- to_chat(user, "You rub the groin on [src]. You're weird.")
- target.adjustArousalLoss(5)
- to_chat(target, "You suddenly feel hot... and quite good")
- if(prob(33))
- target.emote(pick("moan","blush"))
- GiveHint(target, user)
- cooldown = world.time + cooldown_time
-
-/obj/item/voodoo/proc/update_targets()
- possible = list()
- if(!link)
- return
- for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
- if(md5(H.dna.uni_identity) in link.fingerprints)
- possible |= H
-
-/obj/item/voodoo/proc/GiveHint(mob/victim,force=0)
- if(prob(50) || force)
- var/way = dir2text(get_dir(victim,get_turf(src)))
- to_chat(victim, "You feel a dark presence from [way]")
- if(prob(20) || force)
- var/area/A = get_area(src)
- to_chat(victim, "You feel a dark presence from [A.name]")
-
-/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume)
- if(target)
- target.adjust_fire_stacks(20)
- target.IgniteMob()
- GiveHint(target,1)
- return ..()
-
-
-//Provides a decent heal, need to pump every 6 seconds
-/obj/item/organ/heart/cursed/wizard
- pump_delay = 60
- heal_brute = 25
- heal_burn = 25
- heal_oxy = 25
-
-//Warp Whistle: Provides uncontrolled long distance teleportation.
-
-/obj/item/warpwhistle
- name = "warp whistle"
- desc = "One toot on this whistle will send you to a far away land!"
- icon = 'icons/obj/wizard.dmi'
- icon_state = "whistle"
- var/on_cooldown = 0 //0: usable, 1: in use, 2: on cooldown
- var/mob/living/carbon/last_user
-
-/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user)
- if(!user || QDELETED(src))
- on_cooldown = FALSE
- return TRUE
- return FALSE
-
-/obj/item/warpwhistle/attack_self(mob/living/carbon/user)
- if(!istype(user) || on_cooldown)
- return
- on_cooldown = TRUE
- last_user = user
- var/turf/T = get_turf(user)
- playsound(T,'sound/magic/WarpWhistle.ogg', 200, 1)
- user.canmove = 0
- new /obj/effect/overlay/temp/tornado(T)
- sleep(20)
- if(interrupted(user))
- return
- user.invisibility = INVISIBILITY_MAXIMUM
- user.status_flags |= GODMODE
- sleep(20)
- if(interrupted(user))
- return
- var/breakout = 0
- while(breakout < 50)
- var/turf/potential_T = find_safe_turf()
- if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout)
- user.forceMove(potential_T)
- user.canmove = 0
- T = potential_T
- break
- breakout += 1
- new /obj/effect/overlay/temp/tornado(T)
- sleep(20)
- if(interrupted(user))
- return
- user.invisibility = initial(user.invisibility)
- user.status_flags &= ~GODMODE
- user.canmove = 1
- on_cooldown = 2
- sleep(40)
- on_cooldown = 0
-
-/obj/item/warpwhistle/Destroy()
- if(on_cooldown == 1 && last_user) //Flute got dunked somewhere in the teleport
- last_user.invisibility = initial(last_user.invisibility)
- last_user.status_flags &= ~GODMODE
- last_user.canmove = 1
- return ..()
-
-/obj/effect/overlay/temp/tornado
- icon = 'icons/obj/wizard.dmi'
- icon_state = "tornado"
- name = "tornado"
- desc = "This thing sucks!"
- layer = FLY_LAYER
- randomdir = 0
- duration = 40
- pixel_x = 500
-
-/obj/effect/overlay/temp/tornado/New(loc)
- ..()
- animate(src, pixel_x = -500, time = 40)
+
+//Apprenticeship contract - moved to antag_spawner.dm
+
+///////////////////////////Veil Render//////////////////////
+
+/obj/item/weapon/veilrender
+ name = "veil render"
+ desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast city."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "render"
+ item_state = "render"
+ force = 15
+ throwforce = 10
+ w_class = WEIGHT_CLASS_NORMAL
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ var/charges = 1
+ var/spawn_type = /obj/singularity/wizard
+ var/spawn_amt = 1
+ var/activate_descriptor = "reality"
+ var/rend_desc = "You should run now."
+ var/spawn_fast = 0 //if 1, ignores checking for mobs on loc before spawning
+
+/obj/item/weapon/veilrender/attack_self(mob/user)
+ if(charges > 0)
+ new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast)
+ charges--
+ user.visible_message("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!")
+ else
+ to_chat(user, "The unearthly energies that powered the blade are now dormant.")
+
+/obj/effect/rend
+ name = "tear in the fabric of reality"
+ desc = "You should run now."
+ icon = 'icons/obj/biomass.dmi'
+ icon_state = "rift"
+ density = 1
+ anchored = 1
+ var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies
+ var/spawn_amt_left = 20
+ var/spawn_fast = 0
+
+/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc, var/spawn_fast)
+ src.spawn_path = spawn_type
+ src.spawn_amt_left = spawn_amt
+ src.desc = desc
+ src.spawn_fast = spawn_fast
+ START_PROCESSING(SSobj, src)
+ return
+
+/obj/effect/rend/process()
+ if(!spawn_fast)
+ if(locate(/mob) in loc)
+ return
+ new spawn_path(loc)
+ spawn_amt_left--
+ if(spawn_amt_left <= 0)
+ qdel(src)
+
+/obj/effect/rend/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/weapon/nullrod))
+ user.visible_message("[user] seals \the [src] with \the [I].")
+ qdel(src)
+ return
+ else
+ return ..()
+
+/obj/item/weapon/veilrender/vealrender
+ name = "veal render"
+ desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm."
+ spawn_type = /mob/living/simple_animal/cow
+ spawn_amt = 20
+ activate_descriptor = "hunger"
+ rend_desc = "Reverberates with the sound of ten thousand moos."
+
+/obj/item/weapon/veilrender/honkrender
+ name = "honk render"
+ desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast circus."
+ spawn_type = /mob/living/simple_animal/hostile/retaliate/clown
+ spawn_amt = 10
+ activate_descriptor = "depression"
+ rend_desc = "Gently wafting with the sounds of endless laughter."
+ icon_state = "clownrender"
+
+////TEAR IN REALITY
+
+/obj/singularity/wizard
+ name = "tear in the fabric of reality"
+ desc = "This isn't right."
+ icon = 'icons/effects/224x224.dmi'
+ icon_state = "reality"
+ pixel_x = -96
+ pixel_y = -96
+ grav_pull = 6
+ consume_range = 3
+ current_size = STAGE_FOUR
+ allowed_size = STAGE_FOUR
+
+/obj/singularity/wizard/process()
+ move()
+ eat()
+ return
+/////////////////////////////////////////Scrying///////////////////
+
+/obj/item/weapon/scrying
+ name = "scrying orb"
+ desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means."
+ icon = 'icons/obj/projectiles.dmi'
+ icon_state ="bluespace"
+ throw_speed = 3
+ throw_range = 7
+ throwforce = 15
+ damtype = BURN
+ force = 15
+ hitsound = 'sound/items/welder2.ogg'
+
+/obj/item/weapon/scrying/attack_self(mob/user)
+ to_chat(user, "You can see...everything!")
+ visible_message("[user] stares into [src], their eyes glazing over.")
+ user.ghostize(1)
+ return
+
+/////////////////////////////////////////Necromantic Stone///////////////////
+
+/obj/item/device/necromantic_stone
+ name = "necromantic stone"
+ desc = "A shard capable of resurrecting humans as skeleton thralls."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "necrostone"
+ item_state = "electronic"
+ origin_tech = "bluespace=4;materials=4"
+ w_class = WEIGHT_CLASS_TINY
+ var/list/spooky_scaries = list()
+ var/unlimited = 0
+
+/obj/item/device/necromantic_stone/unlimited
+ unlimited = 1
+
+/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user)
+ if(!istype(M))
+ return ..()
+
+ if(!istype(user) || !user.canUseTopic(M,1))
+ return
+
+ if(M.stat != DEAD)
+ to_chat(user, "This artifact can only affect the dead!")
+ return
+
+ if(!M.mind || !M.client)
+ to_chat(user, "There is no soul connected to this body...")
+ return
+
+ check_spooky()//clean out/refresh the list
+ if(spooky_scaries.len >= 3 && !unlimited)
+ to_chat(user, "This artifact can only affect three undead at a time!")
+ return
+
+ M.set_species(/datum/species/skeleton, icon_update=0)
+ M.revive(full_heal = 1, admin_revive = 1)
+ spooky_scaries |= M
+ to_chat(M, "You have been revived by [user.real_name]!")
+ to_chat(M, "[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!")
+
+ equip_roman_skeleton(M)
+
+ desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]"
+
+/obj/item/device/necromantic_stone/proc/check_spooky()
+ if(unlimited) //no point, the list isn't used.
+ return
+
+ for(var/X in spooky_scaries)
+ if(!ishuman(X))
+ spooky_scaries.Remove(X)
+ continue
+ var/mob/living/carbon/human/H = X
+ if(H.stat == DEAD)
+ spooky_scaries.Remove(X)
+ continue
+ listclearnulls(spooky_scaries)
+
+//Funny gimmick, skeletons always seem to wear roman/ancient armour
+/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H)
+ for(var/obj/item/I in H)
+ H.dropItemToGround(I)
+
+ var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire)
+ H.equip_to_slot_or_del(new hat(H), slot_head)
+ H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform)
+ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes)
+ H.put_in_hands_or_del(new /obj/item/weapon/shield/riot/roman(H))
+ H.put_in_hands_or_del(new /obj/item/weapon/claymore(H))
+ H.equip_to_slot_or_del(new /obj/item/weapon/twohanded/spear(H), slot_back)
+
+
+
+/////////////////////Multiverse Blade////////////////////
+
+/obj/item/weapon/multisword
+ name = "multiverse sword"
+ desc = "A weapon capable of conquering the universe and beyond. Activate it to summon copies of yourself from others dimensions to fight by your side."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "multiverse"
+ item_state = "multiverse"
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+ sharpness = IS_SHARP
+ force = 20
+ throwforce = 10
+ w_class = WEIGHT_CLASS_NORMAL
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ var/faction = list("unassigned")
+ var/cooldown = 0
+ var/assigned = "unassigned"
+ var/static/list/multiverse = list()
+
+/obj/item/weapon/multisword/New()
+ ..()
+ multiverse += src
+
+
+/obj/item/weapon/multisword/Destroy()
+ multiverse.Remove(src)
+ return ..()
+
+/obj/item/weapon/multisword/attack_self(mob/user)
+ if(user.mind.special_role == "apprentice")
+ to_chat(user, "You know better than to touch your teacher's stuff.")
+ return
+ if(cooldown < world.time)
+ var/faction_check = 0
+ for(var/F in faction)
+ if(F in user.faction)
+ faction_check = 1
+ break
+ if(faction_check == 0)
+ faction = list("[user.real_name]")
+ assigned = "[user.real_name]"
+ user.faction = list("[user.real_name]")
+ to_chat(user, "You bind the sword to yourself. You can now use it to summon help.")
+ if(!is_gangster(user))
+ var/datum/gang/multiverse/G = new(src, "[user.real_name]")
+ SSticker.mode.gangs += G
+ G.bosses += user.mind
+ G.add_gang_hud(user.mind)
+ user.mind.gang_datum = G
+ to_chat(user, "With your new found power you could easily conquer the station!")
+ var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
+ hijack_objective.owner = user.mind
+ user.mind.objectives += hijack_objective
+ hijack_objective.explanation_text = "Ensure only [user.real_name] and their copies are on the shuttle!"
+ to_chat(user, "Objective #[1]: [hijack_objective.explanation_text]")
+ SSticker.mode.traitors += user.mind
+ user.mind.special_role = "[user.real_name] Prime"
+ else
+ var/list/candidates = get_candidates(ROLE_WIZARD)
+ if(candidates.len)
+ var/client/C = pick(candidates)
+ spawn_copy(C, get_turf(user.loc), user)
+ to_chat(user, "The sword flashes, and you find yourself face to face with...you!")
+ cooldown = world.time + 400
+ for(var/obj/item/weapon/multisword/M in multiverse)
+ if(M.assigned == assigned)
+ M.cooldown = cooldown
+
+ else
+ to_chat(user, "You fail to summon any copies of yourself. Perhaps you should try again in a bit.")
+ else
+ to_chat(user, "[src] is recharging! Keep in mind it shares a cooldown with the swords wielded by your copies.")
+
+
+/obj/item/weapon/multisword/proc/spawn_copy(var/client/C, var/turf/T, mob/user)
+ var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
+ C.prefs.copy_to(M, icon_updates=0)
+ M.key = C.key
+ M.mind.name = user.real_name
+ to_chat(M, "You are an alternate version of [user.real_name] from another universe! Help them accomplish their goals at all costs.")
+ SSticker.mode.add_gangster(M.mind, user.mind.gang_datum, FALSE)
+ M.real_name = user.real_name
+ M.name = user.real_name
+ M.faction = list("[user.real_name]")
+ if(prob(50))
+ var/list/all_species = list()
+ for(var/speciestype in subtypesof(/datum/species))
+ var/datum/species/S = speciestype
+ if(!initial(S.dangerous_existence))
+ all_species += speciestype
+ M.set_species(pick(all_species), icon_update=0)
+ M.update_body()
+ M.update_hair()
+ M.update_body_parts()
+ M.dna.update_dna_identity()
+ equip_copy(M)
+
+/obj/item/weapon/multisword/proc/equip_copy(var/mob/living/carbon/human/M)
+
+ var/obj/item/weapon/multisword/sword = new /obj/item/weapon/multisword
+ sword.assigned = assigned
+ sword.faction = list("[assigned]")
+
+ var/randomize = pick("mobster","roman","wizard","cyborg","syndicate","assistant", "animu", "cultist", "highlander", "clown", "killer", "pirate", "soviet", "officer", "gladiator")
+
+ switch(randomize)
+ if("mobster")
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
+ M.put_in_hands_or_del(sword)
+
+ if("roman")
+ var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire)
+ M.equip_to_slot_or_del(new hat(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/roman(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(M), slot_shoes)
+ M.put_in_hands_or_del(new /obj/item/weapon/shield/riot/roman(M))
+ M.put_in_hands_or_del(sword)
+
+ if("wizard")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
+ M.put_in_hands_or_del(sword)
+ if("cyborg")
+ for(var/X in M.bodyparts)
+ var/obj/item/bodypart/affecting = X
+ affecting.change_bodypart_status(BODYPART_ROBOTIC, FALSE, TRUE)
+ M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
+ M.put_in_hands_or_del(sword)
+
+ if("syndicate")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
+ M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M),slot_wear_mask)
+ M.put_in_hands_or_del(sword)
+
+ if("assistant")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes)
+ M.put_in_hands_or_del(sword)
+
+ if("animu")
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/kitty(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/schoolgirl/red(M), slot_w_uniform)
+ M.put_in_hands_or_del(sword)
+
+ if("cultist")
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(M), slot_wear_suit)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.put_in_hands_or_del(sword)
+
+ if("highlander")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/beret(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
+ M.put_in_hands_or_del(sword)
+
+ if("clown")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
+ M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_l_store)
+ M.put_in_hands_or_del(sword)
+
+ if("killer")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
+ M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
+ M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
+ M.put_in_hands_or_del(sword)
+ for(var/obj/item/carried_item in M.get_equipped_items())
+ carried_item.add_mob_blood(M)
+ for(var/obj/item/I in M.held_items)
+ I.add_mob_blood(M)
+ if("pirate")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.put_in_hands_or_del(sword)
+
+ if("soviet")
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/pirate/captain(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/suit/pirate/captain(M), slot_wear_suit)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
+ M.put_in_hands_or_del(sword)
+
+ if("officer")
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/beret(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/suit/jacket/miljacket(M), slot_wear_suit)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
+ M.put_in_hands_or_del(sword)
+
+ if("gladiator")
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/gladiator(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/gladiator(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
+ M.put_in_hands_or_del(sword)
+
+
+ else
+ return
+
+ M.update_body_parts()
+
+ var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id
+ W.icon_state = "centcom"
+ W.access += GLOB.access_maint_tunnels
+ W.assignment = "Multiverse Traveller"
+ W.registered_name = M.real_name
+ W.update_label(M.real_name)
+ M.equip_to_slot_or_del(W, slot_wear_id)
+
+
+/obj/item/voodoo
+ name = "wicker doll"
+ desc = "Something creepy about it."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "voodoo"
+ item_state = "electronic"
+ var/mob/living/carbon/human/target = null
+ var/list/mob/living/carbon/human/possible = list()
+ var/obj/item/link = null
+ var/cooldown_time = 30 //3s
+ var/cooldown = 0
+ obj_integrity = 10
+ max_integrity = 10
+ resistance_flags = FLAMMABLE
+
+/obj/item/voodoo/attackby(obj/item/I, mob/user, params)
+ if(target && cooldown < world.time)
+ if(I.is_hot())
+ to_chat(target, "You suddenly feel very hot")
+ target.bodytemperature += 50
+ GiveHint(target)
+ else if(is_pointed(I))
+ to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!")
+ target.Weaken(2)
+ GiveHint(target)
+ else if(istype(I,/obj/item/weapon/bikehorn))
+ to_chat(target, "HONK")
+ target << 'sound/items/AirHorn.ogg'
+ target.adjustEarDamage(0,3)
+ GiveHint(target)
+ cooldown = world.time +cooldown_time
+ return
+
+ if(!link)
+ if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL)
+ user.drop_item()
+ I.loc = src
+ link = I
+ to_chat(user, "You attach [I] to the doll.")
+ update_targets()
+
+/obj/item/voodoo/check_eye(mob/user)
+ if(loc != user)
+ user.reset_perspective(null)
+ user.unset_machine()
+
+/obj/item/voodoo/attack_self(mob/user)
+ if(!target && possible.len)
+ target = input(user, "Select your victim!", "Voodoo") as null|anything in possible
+ return
+
+ if(user.zone_selected == "chest")
+ if(link)
+ target = null
+ link.loc = get_turf(src)
+ to_chat(user, "You remove the [link] from the doll.")
+ link = null
+ update_targets()
+ return
+
+ if(target && cooldown < world.time)
+ switch(user.zone_selected)
+ if("mouth")
+ var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text)
+ target.say(wgw)
+ log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.")
+ if("eyes")
+ user.set_machine(src)
+ user.reset_perspective(target)
+ spawn(100)
+ user.reset_perspective(null)
+ user.unset_machine()
+ if("r_leg","l_leg")
+ to_chat(user, "You move the doll's legs around.")
+ var/turf/T = get_step(target,pick(GLOB.cardinal))
+ target.Move(T)
+ if("r_arm","l_arm")
+ target.click_random_mob()
+ GiveHint(target)
+ if("head")
+ to_chat(user, "You smack the doll's head with your hand.")
+ target.Dizzy(10)
+ to_chat(target, "You suddenly feel as if your head was hit with a hammer!")
+ GiveHint(target,user)
+ cooldown = world.time + cooldown_time
+
+/obj/item/voodoo/proc/update_targets()
+ possible = list()
+ if(!link)
+ return
+ for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
+ if(md5(H.dna.uni_identity) in link.fingerprints)
+ possible |= H
+
+/obj/item/voodoo/proc/GiveHint(mob/victim,force=0)
+ if(prob(50) || force)
+ var/way = dir2text(get_dir(victim,get_turf(src)))
+ to_chat(victim, "You feel a dark presence from [way]")
+ if(prob(20) || force)
+ var/area/A = get_area(src)
+ to_chat(victim, "You feel a dark presence from [A.name]")
+
+/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume)
+ if(target)
+ target.adjust_fire_stacks(20)
+ target.IgniteMob()
+ GiveHint(target,1)
+ return ..()
+
+
+//Provides a decent heal, need to pump every 6 seconds
+/obj/item/organ/heart/cursed/wizard
+ pump_delay = 60
+ heal_brute = 25
+ heal_burn = 25
+ heal_oxy = 25
+
+//Warp Whistle: Provides uncontrolled long distance teleportation.
+
+/obj/item/warpwhistle
+ name = "warp whistle"
+ desc = "One toot on this whistle will send you to a far away land!"
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "whistle"
+ var/on_cooldown = 0 //0: usable, 1: in use, 2: on cooldown
+ var/mob/living/carbon/last_user
+
+/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user)
+ if(!user || QDELETED(src))
+ on_cooldown = FALSE
+ return TRUE
+ return FALSE
+
+/obj/item/warpwhistle/attack_self(mob/living/carbon/user)
+ if(!istype(user) || on_cooldown)
+ return
+ on_cooldown = TRUE
+ last_user = user
+ var/turf/T = get_turf(user)
+ playsound(T,'sound/magic/WarpWhistle.ogg', 200, 1)
+ user.canmove = 0
+ new /obj/effect/overlay/temp/tornado(T)
+ sleep(20)
+ if(interrupted(user))
+ return
+ user.invisibility = INVISIBILITY_MAXIMUM
+ user.status_flags |= GODMODE
+ sleep(20)
+ if(interrupted(user))
+ return
+ var/breakout = 0
+ while(breakout < 50)
+ var/turf/potential_T = find_safe_turf()
+ if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout)
+ user.forceMove(potential_T)
+ user.canmove = 0
+ T = potential_T
+ break
+ breakout += 1
+ new /obj/effect/overlay/temp/tornado(T)
+ sleep(20)
+ if(interrupted(user))
+ return
+ user.invisibility = initial(user.invisibility)
+ user.status_flags &= ~GODMODE
+ user.canmove = 1
+ on_cooldown = 2
+ sleep(40)
+ on_cooldown = 0
+
+/obj/item/warpwhistle/Destroy()
+ if(on_cooldown == 1 && last_user) //Flute got dunked somewhere in the teleport
+ last_user.invisibility = initial(last_user.invisibility)
+ last_user.status_flags &= ~GODMODE
+ last_user.canmove = 1
+ return ..()
+
+/obj/effect/overlay/temp/tornado
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "tornado"
+ name = "tornado"
+ desc = "This thing sucks!"
+ layer = FLY_LAYER
+ randomdir = 0
+ duration = 40
+ pixel_x = 500
+
+/obj/effect/overlay/temp/tornado/Initialize()
+ . = ..()
+ animate(src, pixel_x = -500, time = 40)
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index bc9251d9fc..3935b86c92 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -31,8 +31,8 @@
. = ..()
deltimer(timerid)
-/obj/effect/overlay/temp/New()
- ..()
+/obj/effect/overlay/temp/Initialize()
+ . = ..()
if(randomdir)
setDir(pick(GLOB.cardinal))
@@ -44,10 +44,10 @@
/obj/effect/overlay/temp/dir_setting
randomdir = FALSE
-/obj/effect/overlay/temp/dir_setting/New(loc, set_dir)
+/obj/effect/overlay/temp/dir_setting/Initialize(mapload, set_dir)
if(set_dir)
setDir(set_dir)
- ..()
+ . = ..()
/obj/effect/overlay/temp/dir_setting/bloodsplatter
icon = 'icons/effects/blood.dmi'
@@ -56,12 +56,12 @@
layer = BELOW_MOB_LAYER
var/splatter_type = "splatter"
-/obj/effect/overlay/temp/dir_setting/bloodsplatter/New(loc, set_dir)
+/obj/effect/overlay/temp/dir_setting/bloodsplatter/Initialize(mapload, set_dir)
if(set_dir in GLOB.diagonals)
icon_state = "[splatter_type][pick(1, 2, 6)]"
else
icon_state = "[splatter_type][pick(3, 4, 5)]"
- ..()
+ . = ..()
var/target_pixel_x = 0
var/target_pixel_y = 0
switch(set_dir)
@@ -93,6 +93,13 @@
/obj/effect/overlay/temp/dir_setting/bloodsplatter/xenosplatter
splatter_type = "xsplatter"
+/obj/effect/overlay/temp/dir_setting/speedbike_trail
+ name = "speedbike trails"
+ icon_state = "ion_fade"
+ layer = BELOW_MOB_LAYER
+ duration = 10
+ randomdir = 0
+
/obj/effect/overlay/temp/dir_setting/firing_effect
icon = 'icons/effects/effects.dmi'
icon_state = "firing_effect"
@@ -189,8 +196,8 @@
desc = "It's a decoy!"
duration = 15
-/obj/effect/overlay/temp/decoy/New(loc, atom/mimiced_atom)
- ..()
+/obj/effect/overlay/temp/decoy/Initialize(mapload, atom/mimiced_atom)
+ . = ..()
alpha = initial(alpha)
if(mimiced_atom)
name = mimiced_atom.name
@@ -198,8 +205,8 @@
setDir(mimiced_atom.dir)
mouse_opacity = 0
-/obj/effect/overlay/temp/decoy/fading/New(loc, atom/mimiced_atom)
- ..()
+/obj/effect/overlay/temp/decoy/fading/Initialize(mapload, atom/mimiced_atom)
+ . = ..()
animate(src, alpha = 0, time = duration)
/obj/effect/overlay/temp/decoy/fading/fivesecond
@@ -324,15 +331,15 @@
var/mob/user
var/damage = 20
-/obj/effect/overlay/temp/ratvar/volt_hit/New(loc, caster, multiplier)
+/obj/effect/overlay/temp/ratvar/volt_hit/Initialize(mapload, caster, multiplier)
if(multiplier)
damage *= multiplier
duration = max(round(damage * 0.2), 1)
- ..()
+ . = ..()
set_light(1.5, 2, LIGHT_COLOR_ORANGE)
-/obj/effect/overlay/temp/ratvar/volt_hit/true/New(loc, caster, multiplier)
- ..()
+/obj/effect/overlay/temp/ratvar/volt_hit/true/Initialize(mapload, caster, multiplier)
+ . = ..()
user = caster
if(user)
var/matrix/M = new
@@ -376,8 +383,8 @@
icon_state = "warden_gaze"
duration = 3
-/obj/effect/overlay/temp/ratvar/ocular_warden/New()
- ..()
+/obj/effect/overlay/temp/ratvar/ocular_warden/Initialize()
+ . = ..()
pixel_x = rand(-8, 8)
pixel_y = rand(-10, 10)
animate(src, alpha = 0, time = 3, easing = EASE_OUT)
@@ -401,8 +408,8 @@
layer = ABOVE_MOB_LAYER
duration = 10
-/obj/effect/overlay/temp/ratvar/component/New()
- ..()
+/obj/effect/overlay/temp/ratvar/component/Initialize()
+ . = ..()
transform = matrix()*0.75
pixel_x = rand(-10, 10)
pixel_y = rand(-10, -2)
@@ -432,9 +439,8 @@
light_power = 2
light_color = "#FAE48C"
-/obj/effect/overlay/temp/ratvar/sigil/transgression/New()
- ..()
- update_light()
+/obj/effect/overlay/temp/ratvar/sigil/transgression/Initialize()
+ . = ..()
var/oldtransform = transform
animate(src, transform = matrix()*2, time = 5)
animate(transform = oldtransform, alpha = 0, time = 65)
@@ -447,10 +453,6 @@
light_power = 0.5
light_color = "#1E8CE1"
-/obj/effect/overlay/temp/ratvar/sigil/vitality/New()
- ..()
- update_light()
-
/obj/effect/overlay/temp/ratvar/sigil/accession
color = "#AF0AAF"
layer = ABOVE_MOB_LAYER
@@ -493,9 +495,9 @@
icon = 'icons/mob/mob.dmi'
duration = 15
-/obj/effect/overlay/temp/gib_animation/New(loc, gib_icon)
+/obj/effect/overlay/temp/gib_animation/Initialize(mapload, gib_icon)
icon_state = gib_icon // Needs to be before ..() so icon is correct
- ..()
+ . = ..()
/obj/effect/overlay/temp/gib_animation/ex_act(severity)
return //so the overlay isn't deleted by the explosion that gibbed the mob.
@@ -507,9 +509,9 @@
icon = 'icons/mob/mob.dmi'
duration = 15
-/obj/effect/overlay/temp/dust_animation/New(loc, dust_icon)
+/obj/effect/overlay/temp/dust_animation/Initialize(mapload, dust_icon)
icon_state = dust_icon // Before ..() so the correct icon is flick()'d
- ..()
+ . = ..()
/obj/effect/overlay/temp/mummy_animation
icon = 'icons/mob/mob.dmi'
@@ -521,12 +523,12 @@
icon_state = "heal"
duration = 15
-/obj/effect/overlay/temp/heal/New(loc, colour)
- ..()
- pixel_x = rand(-12, 12)
- pixel_y = rand(-9, 0)
+/obj/effect/overlay/temp/heal/Initialize(mapload, colour)
if(colour)
color = colour
+ . = ..()
+ pixel_x = rand(-12, 12)
+ pixel_y = rand(-9, 0)
/obj/effect/overlay/temp/kinetic_blast
name = "kinetic explosion"
@@ -558,14 +560,14 @@
icon_state = "impact_bullet"
duration = 5
-/obj/effect/overlay/temp/impact_effect/New(loc, atom/target, obj/item/projectile/P)
+/obj/effect/overlay/temp/impact_effect/Initialize(mapload, atom/target, obj/item/projectile/P)
if(target == P.original) //the projectile hit the target originally clicked
pixel_x = P.p_x + target.pixel_x - 16 + rand(-4,4)
pixel_y = P.p_y + target.pixel_y - 16 + rand(-4,4)
else
pixel_x = target.pixel_x + rand(-4,4)
pixel_y = target.pixel_y + rand(-4,4)
- ..()
+ . = ..()
/obj/effect/overlay/temp/impact_effect/red_laser
icon_state = "impact_laser"
diff --git a/code/game/objects/effects/overlays.dm.rej b/code/game/objects/effects/overlays.dm.rej
new file mode 100644
index 0000000000..f25f8f24e9
--- /dev/null
+++ b/code/game/objects/effects/overlays.dm.rej
@@ -0,0 +1,21 @@
+diff a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm (rejected hunks)
+@@ -31,8 +31,8 @@
+ . = ..()
+ deltimer(timerid)
+
+-/obj/effect/overlay/temp/New()
+- ..()
++/obj/effect/overlay/temp/Initialize()
++ . = ..()
+ if(randomdir)
+ setDir(pick(GLOB.cardinal))
+ flick("[icon_state]", src) //Because we might be pulling it from a pool, flick whatever icon it uses so it starts at the start of the icon's animation.
+@@ -214,7 +221,7 @@
+ icon = 'icons/effects/fire.dmi'
+ icon_state = "3"
+ duration = 20
+-
++
+ /obj/effect/overlay/temp/cult
+ randomdir = 0
+ duration = 10
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 496702aa4d..6955872c27 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -100,8 +100,8 @@
icon_state = "medi_holo"
duration = 30
-/obj/effect/overlay/temp/medical_holosign/New(loc, creator)
- ..()
+/obj/effect/overlay/temp/medical_holosign/Initialize(mapload, creator)
+ . = ..()
playsound(loc, 'sound/machines/ping.ogg', 50, 0) //make some noise!
if(creator)
visible_message("[creator] created a medical hologram!")
diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm
index 41f3bbc001..9411917c39 100644
--- a/code/modules/VR/vr_sleeper.dm
+++ b/code/modules/VR/vr_sleeper.dm
@@ -17,8 +17,8 @@
var/allow_creating_vr_humans = TRUE //So you can have vr_sleepers that always spawn you as a specific person or 1 life/chance vr games
var/outfit = /datum/outfit/vr_basic
-/obj/machinery/vr_sleeper/New()
- ..()
+/obj/machinery/vr_sleeper/Initialize()
+ . = ..()
sparks = new /datum/effect_system/spark_spread()
sparks.set_up(2,0)
sparks.attach(src)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm
index 95d561abeb..159e6df5f4 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/support.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm
@@ -16,7 +16,7 @@
var/toggle = FALSE
/mob/living/simple_animal/hostile/guardian/healer/Initialize()
- ..()
+ . = ..()
var/datum/atom_hud/medsensor = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
medsensor.add_hud_to(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
index 2829bf574e..951589daaf 100644
--- a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
@@ -149,8 +149,8 @@
duration = 18
randomdir = FALSE
-/obj/effect/overlay/temp/paperwiz_dying/New()
- ..()
+/obj/effect/overlay/temp/paperwiz_dying/Initialize()
+ . = ..()
visible_message("The wizard cries out in pain as a gate appears behind him, sucking him in!")
playsound(get_turf(src),'sound/magic/MandSwap.ogg', 50, 1, 1)
playsound(get_turf(src),'sound/hallucinations/wail.ogg', 50, 1, 1)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm.rej b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm.rej
new file mode 100644
index 0000000000..3dab6ff0a6
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm (rejected hunks)
+@@ -106,7 +106,7 @@ Difficulty: Very Hard
+ var/target
+
+ /obj/effect/overlay/temp/at_shield/Initialize(mapload, new_target)
+- ..()
++ . = ..()
+ target = new_target
+ INVOKE_ASYNC(src, /atom/movable/proc/orbit, target, 0, FALSE, 0, 0, FALSE, TRUE)
+
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm.rej b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm.rej
new file mode 100644
index 0000000000..84c2ab0b38
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm.rej
@@ -0,0 +1,23 @@
+diff a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm (rejected hunks)
+@@ -96,8 +96,8 @@ Difficulty: Medium
+ duration = 12
+ pixel_z = 500
+
+-/obj/effect/overlay/temp/fireball/Initialize(loc)
+- ..()
++/obj/effect/overlay/temp/fireball/Initialize()
++ . = ..()
+ animate(src, pixel_z = 0, time = 12)
+
+ /obj/effect/overlay/temp/target
+@@ -121,8 +121,8 @@ Difficulty: Medium
+ /obj/effect/overlay/temp/target/ex_act()
+ return
+
+-/obj/effect/overlay/temp/target/Initialize(loc)
+- ..()
++/obj/effect/overlay/temp/target/Initialize()
++ . = ..()
+ INVOKE_ASYNC(src, .proc/fall)
+
+ /obj/effect/overlay/temp/target/proc/fall()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index f0c1a7ec04..03f8ce63cf 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -426,8 +426,8 @@ Difficulty: Hard
layer = BELOW_MOB_LAYER
var/mob/living/caster //who made this, anyway
-/obj/effect/overlay/temp/hierophant/New(loc, new_caster)
- ..()
+/obj/effect/overlay/temp/hierophant/Initialize(mapload, new_caster)
+ . = ..()
if(new_caster)
caster = new_caster
@@ -437,13 +437,13 @@ Difficulty: Hard
light_range = 1
randomdir = FALSE
-/obj/effect/overlay/temp/hierophant/squares/New(loc, new_caster)
- ..()
+/obj/effect/overlay/temp/hierophant/squares/Initialize(mapload, new_caster)
+ . = ..()
if(ismineralturf(loc))
var/turf/closed/mineral/M = loc
M.gets_drilled(caster)
-/obj/effect/overlay/temp/hierophant/wall //smoothing and pooling are not friends. TODO: figure this out
+/obj/effect/overlay/temp/hierophant/wall //smoothing and pooling were not friends, but pooling is dead.
name = "vortex wall"
icon = 'icons/turf/walls/hierophant_wall_temp.dmi'
icon_state = "wall"
@@ -451,15 +451,14 @@ Difficulty: Hard
duration = 100
smooth = SMOOTH_TRUE
-/obj/effect/overlay/temp/hierophant/wall/New(loc, new_caster)
- ..()
+/obj/effect/overlay/temp/hierophant/wall/Initialize(mapload, new_caster)
+ . = ..()
queue_smooth_neighbors(src)
queue_smooth(src)
/obj/effect/overlay/temp/hierophant/wall/Destroy()
queue_smooth_neighbors(src)
- ..()
- return QDEL_HINT_QUEUE
+ return ..()
/obj/effect/overlay/temp/hierophant/wall/CanPass(atom/movable/mover, turf/target, height = 0)
if(mover == caster)
@@ -480,8 +479,8 @@ Difficulty: Hard
var/currently_seeking = FALSE
var/friendly_fire_check = FALSE //if blasts produced apply friendly fire
-/obj/effect/overlay/temp/hierophant/chaser/New(loc, new_caster, new_target, new_speed, is_friendly_fire)
- ..()
+/obj/effect/overlay/temp/hierophant/chaser/Initialize(mapload, new_caster, new_target, new_speed, is_friendly_fire)
+ . = ..()
target = new_target
friendly_fire_check = is_friendly_fire
if(new_speed)
@@ -558,8 +557,8 @@ Difficulty: Hard
var/friendly_fire_check = FALSE
var/bursting = FALSE //if we're bursting and need to hit anyone crossing us
-/obj/effect/overlay/temp/hierophant/blast/New(loc, new_caster, friendly_fire)
- ..()
+/obj/effect/overlay/temp/hierophant/blast/Initialize(mapload, new_caster, friendly_fire)
+ . = ..()
friendly_fire_check = friendly_fire
if(new_caster)
hit_things += new_caster
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index b5c2a93996..f5df46cb7b 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -204,7 +204,8 @@
dismemberment = 20
impact_effect_type = /obj/effect/overlay/temp/impact_effect/purple_laser
-/obj/item/projectile/plasma/New()
+/obj/item/projectile/plasma/Initialize()
+ . = ..()
var/turf/proj_turf = get_turf(src)
if(!isturf(proj_turf))
return
@@ -215,7 +216,6 @@
name = "full strength [name]"
damage *= 4
range *= 2
- ..()
/obj/item/projectile/plasma/on_hit(atom/target)
. = ..()
@@ -254,9 +254,10 @@
var/power = 4
var/list/thrown_items = list()
-/obj/item/projectile/gravityrepulse/New(var/obj/item/ammo_casing/energy/gravityrepulse/C)
- ..()
- if(C) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
+/obj/item/projectile/gravityrepulse/Initialize()
+ . = ..()
+ var/obj/item/ammo_casing/energy/gravityrepulse/C = loc
+ if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
power = min(C.gun.power, 15)
/obj/item/projectile/gravityrepulse/on_hit()
@@ -284,9 +285,10 @@
var/power = 4
var/list/thrown_items = list()
-/obj/item/projectile/gravityattract/New(var/obj/item/ammo_casing/energy/gravityattract/C)
- ..()
- if(C) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
+/obj/item/projectile/gravityattract/Initialize()
+ . = ..()
+ var/obj/item/ammo_casing/energy/gravityattract/C = loc
+ if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
power = min(C.gun.power, 15)
/obj/item/projectile/gravityattract/on_hit()
@@ -313,9 +315,10 @@
var/power = 4
var/list/thrown_items = list()
-/obj/item/projectile/gravitychaos/New(var/obj/item/ammo_casing/energy/gravitychaos/C)
- ..()
- if(C) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
+/obj/item/projectile/gravitychaos/Initialize()
+ . = ..()
+ var/obj/item/ammo_casing/energy/gravitychaos/C = loc
+ if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items
power = min(C.gun.power, 15)
/obj/item/projectile/gravitychaos/on_hit()
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index f8989a2304..da1eb90685 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -52,8 +52,8 @@
"toxin"
)
-/obj/machinery/chem_dispenser/New()
- ..()
+/obj/machinery/chem_dispenser/Initialize()
+ . = ..()
recharge()
dispensable_reagents = sortList(dispensable_reagents)
@@ -244,8 +244,8 @@
)
)
-/obj/machinery/chem_dispenser/constructable/New()
- ..()
+/obj/machinery/chem_dispenser/constructable/Initialize()
+ . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_dispenser(null)
B.apply_default_parts(src)
diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm
index 2c6f7712e4..da728fea89 100644
--- a/code/modules/reagents/chemistry/machinery/chem_heater.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm
@@ -12,8 +12,8 @@
var/heater_coefficient = 0.10
var/on = FALSE
-/obj/machinery/chem_heater/New()
- ..()
+/obj/machinery/chem_heater/Initialize()
+ . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_heater(null)
B.apply_default_parts(src)
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index a94a1c01ff..93628a9cc1 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -17,12 +17,12 @@
var/useramount = 30 // Last used amount
layer = BELOW_OBJ_LAYER
-/obj/machinery/chem_master/New()
+/obj/machinery/chem_master/Initialize()
create_reagents(100)
add_overlay("waitlight")
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_master(null)
B.apply_default_parts(src)
- ..()
+ . = ..()
/obj/item/weapon/circuitboard/machine/chem_master
name = "ChemMaster 3000 (Machine Board)"
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index cfc8198b38..5a73c5dcf4 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -13,8 +13,8 @@
var/wait = null
var/obj/item/weapon/reagent_containers/beaker = null
-/obj/machinery/computer/pandemic/New()
- ..()
+/obj/machinery/computer/pandemic/Initialize()
+ . = ..()
update_icon()
/obj/machinery/computer/pandemic/proc/GetVirusByIndex(index)
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 6b02e1ed24..2dbc0ff1c2 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -91,10 +91,9 @@
var/list/holdingitems = list()
-/obj/machinery/reagentgrinder/New()
- ..()
+/obj/machinery/reagentgrinder/Initialize()
+ . = ..()
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
- return
/obj/machinery/reagentgrinder/Destroy()
if(beaker)
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 92662600d8..11b38d1e65 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -12,9 +12,9 @@
var/disease_amount = 20
var/spillable = 0
-/obj/item/weapon/reagent_containers/New(location, vol = 0)
- ..()
- if (isnum(vol) && vol > 0)
+/obj/item/weapon/reagent_containers/Initialize(mapload, vol)
+ . = ..()
+ if(isnum(vol) && vol > 0)
volume = vol
create_reagents(volume)
if(spawned_disease)
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 09fae5ff90..2571e3573d 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -7,8 +7,8 @@
var/blood_type = null
var/labelled = 0
-/obj/item/weapon/reagent_containers/blood/New()
- ..()
+/obj/item/weapon/reagent_containers/blood/Initialize()
+ . = ..()
if(blood_type != null)
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
update_icon()
@@ -40,9 +40,9 @@
if(51 to INFINITY)
icon_state = "full"
-/obj/item/weapon/reagent_containers/blood/random/New()
+/obj/item/weapon/reagent_containers/blood/random/Initialize()
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L")
- ..()
+ . = ..()
/obj/item/weapon/reagent_containers/blood/APlus
blood_type = "A+"
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index ee6da85de0..ee0cc3c8b4 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -30,8 +30,8 @@ Borg Hypospray
//Used as list for input() in shakers.
-/obj/item/weapon/reagent_containers/borghypo/New()
- ..()
+/obj/item/weapon/reagent_containers/borghypo/Initialize()
+ . = ..()
for(var/R in reagent_ids)
add_reagent(R)
diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm
index fc08ebdbe8..a92c52abf4 100644
--- a/code/modules/reagents/reagent_containers/bottle.dm
+++ b/code/modules/reagents/reagent_containers/bottle.dm
@@ -9,8 +9,8 @@
volume = 30
-/obj/item/weapon/reagent_containers/glass/bottle/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/bottle/Initialize()
+ . = ..()
if(!icon_state)
icon_state = "bottle"
update_icon()
@@ -139,8 +139,8 @@
icon_state = "bottle16"
var/extra_reagent = null
-/obj/item/weapon/reagent_containers/glass/bottle/traitor/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/bottle/traitor/Initialize()
+ . = ..()
extra_reagent = pick("polonium", "histamine", "formaldehyde", "venom", "neurotoxin2", "cyanide")
reagents.add_reagent("[extra_reagent]", 3)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 726a21c58a..6ea2673004 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -122,8 +122,8 @@
item_state = "beaker"
materials = list(MAT_GLASS=500)
-/obj/item/weapon/reagent_containers/glass/beaker/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/beaker/Initialize()
+ . = ..()
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/on_reagent_change()
@@ -176,8 +176,8 @@
origin_tech = "materials=2;engineering=3;plasmatech=3"
flags = OPENCONTAINER
-/obj/item/weapon/reagent_containers/glass/beaker/noreact/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/beaker/noreact/Initialize()
+ . = ..()
reagents.set_reacting(FALSE)
/obj/item/weapon/reagent_containers/glass/beaker/bluespace
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 11d4303ce8..b6bc9b2ccf 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -11,8 +11,8 @@
var/roundstart = 0
var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills
-/obj/item/weapon/reagent_containers/pill/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/Initialize()
+ . = ..()
if(!icon_state)
icon_state = "pill[rand(1,20)]"
if(reagents.total_volume && roundstart)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index eea1fe7a2b..f4f6d3a521 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -16,8 +16,8 @@
materials = list(MAT_METAL=10, MAT_GLASS=20)
container_type = TRANSPARENT
-/obj/item/weapon/reagent_containers/syringe/New()
- ..()
+/obj/item/weapon/reagent_containers/syringe/Initialize()
+ . = ..()
if(list_reagents) //syringe starts in inject mode if its already got something inside
mode = SYRINGE_INJECT
update_icon()
@@ -242,7 +242,7 @@
volume = 20
origin_tech = "materials=3;engineering=3"
-/obj/item/weapon/reagent_containers/syringe/noreact/New()
+/obj/item/weapon/reagent_containers/syringe/noreact/Initialize()
. = ..()
reagents.set_reacting(FALSE)
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index f3bc94c4e6..1844dc53ab 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -23,10 +23,10 @@
else
return ..()
-/obj/structure/reagent_dispensers/New()
+/obj/structure/reagent_dispensers/Initialize()
create_reagents(tank_volume)
reagents.add_reagent(reagent_id, tank_volume)
- ..()
+ . = ..()
/obj/structure/reagent_dispensers/examine(mob/user)
..()
@@ -129,8 +129,8 @@
density = 0
reagent_id = "condensedcapsaicin"
-/obj/structure/reagent_dispensers/peppertank/New()
- ..()
+/obj/structure/reagent_dispensers/peppertank/Initialize()
+ . = ..()
if(prob(1))
desc = "IT'S PEPPER TIME, BITCH!"
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 68190f5e45..28e8550b45 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -24,8 +24,8 @@
// Auto conveyour is always on unless unpowered
-/obj/machinery/conveyor/auto/New(loc, newdir)
- ..(loc, newdir)
+/obj/machinery/conveyor/auto/Initialize(mapload, newdir)
+ . = ..()
operating = 1
update_move_direction()
@@ -43,8 +43,8 @@
icon_state = "conveyor[operating * verted]"
// create a conveyor
-/obj/machinery/conveyor/New(loc, newdir)
- ..(loc)
+/obj/machinery/conveyor/Initialize(mapload, newdir)
+ . = ..()
if(newdir)
setDir(newdir)
update_move_direction()
@@ -327,8 +327,8 @@
w_class = WEIGHT_CLASS_BULKY
var/id = "" //inherited by the switch
-/obj/item/conveyor_switch_construct/New()
- ..()
+/obj/item/conveyor_switch_construct/Initialize()
+ . = ..()
id = rand() //this couldn't possibly go wrong
/obj/item/conveyor_switch_construct/afterattack(atom/A, mob/user, proximity)
diff --git a/code/modules/recycling/disposal-structures.dm b/code/modules/recycling/disposal-structures.dm
index 531af92238..6ea1d958b3 100644
--- a/code/modules/recycling/disposal-structures.dm
+++ b/code/modules/recycling/disposal-structures.dm
@@ -147,8 +147,8 @@
var/obj/structure/disposalconstruct/stored
// new pipe, set the icon_state as on map
-/obj/structure/disposalpipe/New(loc,var/obj/structure/disposalconstruct/make_from)
- ..()
+/obj/structure/disposalpipe/Initialize(mapload, obj/structure/disposalconstruct/make_from)
+ . = ..()
if(make_from && !QDELETED(make_from))
base_icon_state = make_from.base_state
@@ -176,7 +176,6 @@
stored.ptype = DISP_SORTJUNCTION
if("pipe-j2s")
stored.ptype = DISP_SORTJUNCTION_FLIP
- return
// pipe is deleted
@@ -359,15 +358,14 @@
/obj/structure/disposalpipe/segment
icon_state = "pipe-s"
-/obj/structure/disposalpipe/segment/New()
- ..()
+/obj/structure/disposalpipe/segment/Initialize()
+ . = ..()
if(stored.ptype == DISP_PIPE_STRAIGHT)
dpdir = dir | turn(dir, 180)
else
dpdir = dir | turn(dir, -90)
update()
- return
@@ -376,8 +374,8 @@
/obj/structure/disposalpipe/junction
icon_state = "pipe-j1"
-/obj/structure/disposalpipe/junction/New()
- ..()
+/obj/structure/disposalpipe/junction/Initialize()
+ . = ..()
switch(stored.ptype)
if(DISP_JUNCTION)
dpdir = dir | turn(dir, -90) | turn(dir,180)
@@ -386,7 +384,6 @@
if(DISP_YJUNCTION)
dpdir = dir | turn(dir,90) | turn(dir, -90)
update()
- return
// next direction to move
@@ -452,8 +449,8 @@
dpdir = sortdir | posdir | negdir
-/obj/structure/disposalpipe/sortjunction/New()
- ..()
+/obj/structure/disposalpipe/sortjunction/Initialize()
+ . = ..()
// Generate a list of soring tags.
if(sortType)
@@ -468,7 +465,6 @@
updatedir()
update()
- return
/obj/structure/disposalpipe/sortjunction/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/device/destTagger))
@@ -516,8 +512,8 @@
var/negdir = 0
var/sortdir = 0
-/obj/structure/disposalpipe/wrapsortjunction/New()
- ..()
+/obj/structure/disposalpipe/wrapsortjunction/Initialize()
+ . = ..()
posdir = dir
if(stored.ptype == DISP_SORTJUNCTION)
sortdir = turn(posdir, -90)
@@ -529,7 +525,6 @@
dpdir = sortdir | posdir | negdir
update()
- return
// next direction to move
// if coming in from negdir, then next is primary dir or sortdir
@@ -557,14 +552,13 @@
icon_state = "pipe-t"
var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet
-/obj/structure/disposalpipe/trunk/New()
- ..()
+/obj/structure/disposalpipe/trunk/Initialize()
+ . = ..()
dpdir = dir
spawn(1)
getlinked()
update()
- return
/obj/structure/disposalpipe/trunk/Destroy()
if(linked)
@@ -631,8 +625,8 @@
// i.e. will be treated as an empty turf
desc = "A broken piece of disposal pipe."
-/obj/structure/disposalpipe/broken/New()
- ..()
+/obj/structure/disposalpipe/broken/Initialize()
+ . = ..()
update()
// the disposal outlet machine
@@ -655,9 +649,8 @@
var/start_eject = 0
var/eject_range = 2
-/obj/structure/disposaloutlet/New(loc, var/obj/structure/disposalconstruct/make_from)
- ..()
-
+/obj/structure/disposaloutlet/Initialize(mapload, obj/structure/disposalconstruct/make_from)
+ . = ..()
if(make_from)
setDir(make_from.dir)
make_from.loc = src
diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm
index 5013d9d879..d3d630a766 100644
--- a/code/modules/recycling/disposal-unit.dm
+++ b/code/modules/recycling/disposal-unit.dm
@@ -26,9 +26,8 @@
// create a new disposal
// find the attached trunk (if present) and init gas resvr.
-/obj/machinery/disposal/New(loc, var/obj/structure/disposalconstruct/make_from)
- ..()
-
+/obj/machinery/disposal/Initialize(mapload, obj/structure/disposalconstruct/make_from)
+ . = ..()
if(make_from)
setDir(make_from.dir)
make_from.loc = 0
@@ -445,8 +444,8 @@
icon_state = "intake"
pressure_charging = FALSE // the chute doesn't need charging and always works
-/obj/machinery/disposal/deliveryChute/New(loc,var/obj/structure/disposalconstruct/make_from)
- ..()
+/obj/machinery/disposal/deliveryChute/Initialize(mapload, obj/structure/disposalconstruct/make_from)
+ . = ..()
stored.ptype = DISP_END_CHUTE
spawn(5)
trunk = locate() in loc
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 7b40e91bc8..76c7a22f60 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -27,8 +27,8 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
"Computer Parts"
)
-/obj/machinery/r_n_d/circuit_imprinter/New()
- ..()
+/obj/machinery/r_n_d/circuit_imprinter/Initialize()
+ . = ..()
materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL, MAT_BLUESPACE))
create_reagents(0)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/circuit_imprinter(null)
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index ab2ee3e9b2..15d8e5e80c 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -54,10 +54,10 @@ other types of metals and chemistry for reagents).
var/list/blueprints = list()
var/max_blueprints = 1
-/obj/item/weapon/disk/design_disk/New()
- ..()
- src.pixel_x = rand(-5, 5)
- src.pixel_y = rand(-5, 5)
+/obj/item/weapon/disk/design_disk/Initialize()
+ . = ..()
+ pixel_x = rand(-5, 5)
+ pixel_y = rand(-5, 5)
for(var/i in 1 to max_blueprints)
blueprints += null
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 8ec99809bf..5adfb14f88 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -13,8 +13,8 @@ Note: Must be placed within 3 tiles of the R&D Console
icon_state = "d_analyzer"
var/decon_mod = 0
-/obj/machinery/r_n_d/destructive_analyzer/New()
- ..()
+/obj/machinery/r_n_d/destructive_analyzer/Initialize()
+ . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/destructive_analyzer(null)
B.apply_default_parts(src)
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index c8f580cc34..fba7f241d2 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -79,8 +79,8 @@
critical_items += I
-/obj/machinery/r_n_d/experimentor/New()
- ..()
+/obj/machinery/r_n_d/experimentor/Initialize()
+ . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/experimentor(null)
B.apply_default_parts(src)
@@ -589,8 +589,8 @@
var/cooldownMax = 60
var/cooldown
-/obj/item/weapon/relic/New()
- ..()
+/obj/item/weapon/relic/Initialize()
+ . = ..()
icon_state = pick("shock_kit","armor-igniter-analyzer","infra-igniter0","infra-igniter1","radio-multitool","prox-radio1","radio-radio","timer-multitool0","radio-igniter-tank")
realName = "[pick("broken","twisted","spun","improved","silly","regular","badly made")] [pick("device","object","toy","illegal tech","weapon")]"
diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm
index f0d563b1ff..46bfab3788 100644
--- a/code/modules/research/message_server.dm
+++ b/code/modules/research/message_server.dm
@@ -78,12 +78,11 @@ GLOBAL_LIST_INIT(message_servers, list())
var/active = 1
var/decryptkey = "password"
-/obj/machinery/message_server/New()
+/obj/machinery/message_server/Initialize()
GLOB.message_servers += src
decryptkey = GenerateKey()
send_pda_message("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.")
- ..()
- return
+ . = ..()
/obj/machinery/message_server/Destroy()
GLOB.message_servers -= src
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index f6cbe90299..c6e742cbba 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -31,8 +31,8 @@ Note: Must be placed west/left of and R&D console to function.
)
-/obj/machinery/r_n_d/protolathe/New()
- ..()
+/obj/machinery/r_n_d/protolathe/Initialize()
+ . = ..()
create_reagents(0)
materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE))
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/protolathe(null)
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 2541d67d65..eb1aed1a1f 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -100,8 +100,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
C.files.RefreshResearch()
-/obj/machinery/computer/rdconsole/New()
- ..()
+/obj/machinery/computer/rdconsole/Initialize()
+ . = ..()
files = new /datum/research(src) //Setup the research data holder.
matching_designs = list()
if(!id)
@@ -1065,8 +1065,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
req_access = null
req_access_txt = "29"
-/obj/machinery/computer/rdconsole/robotics/New()
- ..()
+/obj/machinery/computer/rdconsole/robotics/Initialize()
+ . = ..()
if(circuit)
circuit.name = "R&D Console - Robotics (Computer Board)"
circuit.build_path = /obj/machinery/computer/rdconsole/robotics
diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm
index 4dfcf3ff85..ea7f5e727b 100644
--- a/code/modules/research/rdmachines.dm
+++ b/code/modules/research/rdmachines.dm
@@ -16,8 +16,8 @@
var/obj/machinery/computer/rdconsole/linked_console
var/obj/item/loaded_item = null //the item loaded inside the machine (currently only used by experimentor and destructive analyzer)
-/obj/machinery/r_n_d/New()
- ..()
+/obj/machinery/r_n_d/Initialize()
+ . = ..()
wires = new /datum/wires/r_n_d(src)
/obj/machinery/r_n_d/Destroy()
diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm
index 674825b9f7..25b3a98980 100644
--- a/code/modules/research/research.dm
+++ b/code/modules/research/research.dm
@@ -328,10 +328,10 @@ research holder datum.
var/list/tech_stored = list()
var/max_tech_stored = 1
-/obj/item/weapon/disk/tech_disk/New()
- ..()
- src.pixel_x = rand(-5, 5)
- src.pixel_y = rand(-5, 5)
+/obj/item/weapon/disk/tech_disk/Initialize()
+ . = ..()
+ pixel_x = rand(-5, 5)
+ pixel_y = rand(-5, 5)
for(var/i in 1 to max_tech_stored)
tech_stored += null
@@ -354,8 +354,8 @@ research holder datum.
materials = list()
max_tech_stored = 0
-/obj/item/weapon/disk/tech_disk/debug/New()
- ..()
+/obj/item/weapon/disk/tech_disk/debug/Initialize()
+ . = ..()
var/list/techs = subtypesof(/datum/tech)
max_tech_stored = techs.len
for(var/V in techs)
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 42143f6e3a..468185e615 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -14,8 +14,8 @@
var/delay = 10
req_access = list(GLOB.access_rd) //Only the R&D can change server settings.
-/obj/machinery/r_n_d/server/New()
- ..()
+/obj/machinery/r_n_d/server/Initialize()
+ . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/rdserver(null)
B.apply_default_parts(src)
diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm
index 74b5bc0121..0c32efbb64 100644
--- a/code/modules/research/stock_parts.dm
+++ b/code/modules/research/stock_parts.dm
@@ -72,10 +72,10 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
w_class = WEIGHT_CLASS_SMALL
var/rating = 1
-/obj/item/weapon/stock_parts/New()
- ..()
- src.pixel_x = rand(-5, 5)
- src.pixel_y = rand(-5, 5)
+/obj/item/weapon/stock_parts/Initialize()
+ . = ..()
+ pixel_x = rand(-5, 5)
+ pixel_y = rand(-5, 5)
//Rating 1
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 04c5c63989..28e3cbb760 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -25,9 +25,9 @@
qdel(O)
..()
-/obj/item/slime_extract/New()
- ..()
- create_reagents(100)
+/obj/item/slime_extract/Initialize()
+ . = ..()
+ create_reagents(100)
/obj/item/slime_extract/grey
name = "grey slime extract"
@@ -559,8 +559,8 @@
var/duration = 140
alpha = 125
-/obj/effect/timestop/New()
- ..()
+/obj/effect/timestop/Initialize()
+ . = ..()
for(var/mob/living/M in GLOB.player_list)
for(var/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop/T in M.mind.spell_list) //People who can stop time are immune to timestop
immune |= M
diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm
index c0dae175f3..ecc1398137 100644
--- a/code/modules/ruins/lavaland_ruin_code.dm
+++ b/code/modules/ruins/lavaland_ruin_code.dm
@@ -24,8 +24,8 @@
icon_state = "datadisk1"
max_blueprints = 1
-/obj/item/weapon/disk/design_disk/golem_shell/New()
- ..()
+/obj/item/weapon/disk/design_disk/golem_shell/Initialize()
+ . = ..()
var/datum/design/golem_shell/G = new
blueprints[1] = G
diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
index c5aacadecb..349d716d2d 100644
--- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
@@ -45,7 +45,7 @@
anchored = FALSE
density = TRUE
-/obj/structure/cursed_money/New()
+/obj/structure/cursed_money/Initialize()
. = ..()
addtimer(CALLBACK(src, .proc/collapse), 600)
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index 6f6533326b..66f29b28d0 100644
--- a/code/modules/security_levels/keycard_authentication.dm
+++ b/code/modules/security_levels/keycard_authentication.dm
@@ -18,7 +18,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
var/mob/triggerer = null
var/waiting = 0
-/obj/machinery/keycard_auth/New()
+/obj/machinery/keycard_auth/Initialize()
. = ..()
ev = GLOB.keycard_events.addEvent("triggerEvent", CALLBACK(src, .proc/triggerEvent))
diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm
index 18aa94998e..0475a28068 100644
--- a/code/modules/shuttle/computer.dm
+++ b/code/modules/shuttle/computer.dm
@@ -10,8 +10,8 @@
var/admin_controlled
var/no_destination_swap = 0
-/obj/machinery/computer/shuttle/New(location, obj/item/weapon/circuitboard/computer/shuttle/C)
- ..()
+/obj/machinery/computer/shuttle/Initialize(mapload, obj/item/weapon/circuitboard/computer/shuttle/C)
+ . = ..()
if(istype(C))
possible_destinations = C.possible_destinations
shuttleId = C.shuttleId
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index a4cf449b85..aa9c81bd02 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -421,8 +421,8 @@
to_chat(usr, "Escape pods will only launch during \"Code Red\" security alert.")
return 1
-/obj/docking_port/mobile/pod/New()
- ..()
+/obj/docking_port/mobile/pod/Initialize()
+ . = ..()
if(id == "pod")
WARNING("[type] id has not been changed from the default. Use the id convention \"pod1\" \"pod2\" etc.")
@@ -501,8 +501,7 @@
icon_state = "safe"
var/unlocked = FALSE
-/obj/item/weapon/storage/pod/New()
- ..()
+/obj/item/weapon/storage/pod/PopulateContents()
new /obj/item/clothing/head/helmet/space/orange(src)
new /obj/item/clothing/head/helmet/space/orange(src)
new /obj/item/clothing/suit/space/orange(src)
@@ -542,13 +541,13 @@
dir = EAST
roundstart_move = "backup_away"
-/obj/docking_port/mobile/emergency/backup/New()
+/obj/docking_port/mobile/emergency/backup/Initialize()
// We want to be a valid emergency shuttle
// but not be the main one, keep whatever's set
// valid.
// backup shuttle ignores `timid` because THERE SHOULD BE NO TOUCHING IT
var/current_emergency = SSshuttle.emergency
- ..()
+ . = ..()
SSshuttle.emergency = current_emergency
SSshuttle.backup_shuttle = src
diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm
index 594a6855da..0ec4709301 100644
--- a/code/modules/shuttle/manipulator.dm
+++ b/code/modules/shuttle/manipulator.dm
@@ -20,7 +20,7 @@
var/obj/docking_port/mobile/preview_shuttle
var/datum/map_template/shuttle/preview_template
-/obj/machinery/shuttle_manipulator/New()
+/obj/machinery/shuttle_manipulator/Initialize()
. = ..()
update_icon()
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index f214d018b4..de9338d55d 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -145,8 +145,8 @@
var/area_type = /area/space
var/last_dock_time
-/obj/docking_port/stationary/New()
- ..()
+/obj/docking_port/stationary/Initialize()
+ . = ..()
SSshuttle.stationary += src
if(!id)
id = "[SSshuttle.stationary.len]"
@@ -168,8 +168,8 @@
var/area/shuttle/transit/assigned_area
var/obj/docking_port/mobile/owner
-/obj/docking_port/stationary/transit/New()
- ..()
+/obj/docking_port/stationary/transit/Initialize()
+ . = ..()
SSshuttle.transit += src
/obj/docking_port/stationary/transit/proc/dezone()
@@ -223,8 +223,8 @@
var/list/ripples = list()
-/obj/docking_port/mobile/New()
- ..()
+/obj/docking_port/mobile/Initialize()
+ . = ..()
if(!timid)
register()
diff --git a/code/modules/shuttle/shuttle.dm.rej b/code/modules/shuttle/shuttle.dm.rej
new file mode 100644
index 0000000000..5dc3c5a13a
--- /dev/null
+++ b/code/modules/shuttle/shuttle.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm (rejected hunks)
+@@ -316,7 +316,7 @@
+ if(!check_dock(S))
+ testing("check_dock failed on request for [src]")
+ return
+-
++
+ if(mode == SHUTTLE_IGNITING && destination == S)
+ return
+
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index b78d0efd84..78732d82e4 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -14,7 +14,7 @@
var/tables_required = 2
active = FALSE
-/obj/machinery/power/emitter/energycannon/magical/New()
+/obj/machinery/power/emitter/energycannon/magical/Initialize()
. = ..()
if(prob(50))
desc = "Oh no, not again."
diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm
index 22a408ec6c..83ef7f06eb 100644
--- a/code/modules/shuttle/syndicate.dm
+++ b/code/modules/shuttle/syndicate.dm
@@ -31,9 +31,9 @@
var/challenge = FALSE
var/moved = FALSE
-/obj/item/weapon/circuitboard/computer/syndicate_shuttle/New()
+/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Initialize()
+ . = ..()
GLOB.syndicate_shuttle_boards += src
- ..()
/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Destroy()
GLOB.syndicate_shuttle_boards -= src
diff --git a/code/modules/shuttle/transit.dm b/code/modules/shuttle/transit.dm
index c03d4a2645..7bf217d1ff 100644
--- a/code/modules/shuttle/transit.dm
+++ b/code/modules/shuttle/transit.dm
@@ -5,7 +5,7 @@
icon = 'icons/effects/effects.dmi'
icon_state = "at_shield1"
-/obj/effect/landmark/transit/New()
+/obj/effect/landmark/transit/Initialize()
. = ..()
GLOB.transit_markers += src
diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm
index bdab8b6c22..cc3f2c1ab9 100644
--- a/code/modules/spells/spell.dm
+++ b/code/modules/spells/spell.dm
@@ -223,8 +223,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
/obj/effect/proc_holder/spell/proc/playMagSound()
playsound(get_turf(usr), sound,50,1)
-/obj/effect/proc_holder/spell/New()
- ..()
+/obj/effect/proc_holder/spell/Initialize()
+ . = ..()
action = new(src)
still_recharging_msg = "[name] is still recharging."
diff --git a/code/modules/spells/spell_types/forcewall.dm b/code/modules/spells/spell_types/forcewall.dm
index 6579171738..8b2a40fe59 100644
--- a/code/modules/spells/spell_types/forcewall.dm
+++ b/code/modules/spells/spell_types/forcewall.dm
@@ -26,8 +26,8 @@
/obj/effect/forcefield/wizard
var/mob/wizard
-/obj/effect/forcefield/wizard/New(atom/loc, mob/summoner)
- ..()
+/obj/effect/forcefield/wizard/Initialize(mapload, mob/summoner)
+ . = ..()
wizard = summoner
QDEL_IN(src, 300)
diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm
index 20d223354b..26c543537e 100644
--- a/code/modules/spells/spell_types/godhand.dm
+++ b/code/modules/spells/spell_types/godhand.dm
@@ -14,9 +14,9 @@
throw_range = 0
throw_speed = 0
-/obj/item/weapon/melee/touch_attack/New(var/spell)
- attached_spell = spell
- ..()
+/obj/item/weapon/melee/touch_attack/Initialize()
+ attached_spell = loc
+ . = ..()
/obj/item/weapon/melee/touch_attack/attack(mob/target, mob/living/carbon/user)
if(!iscarbon(user)) //Look ma, no hands
diff --git a/code/modules/spells/spell_types/trigger.dm b/code/modules/spells/spell_types/trigger.dm
index 4cd8107b6a..d219a22fca 100644
--- a/code/modules/spells/spell_types/trigger.dm
+++ b/code/modules/spells/spell_types/trigger.dm
@@ -5,8 +5,8 @@
var/list/linked_spells = list() //those are just referenced by the trigger spell and are unaffected by it directly
var/list/starting_spells = list() //those are added on New() to contents from default spells and are deleted when the trigger spell is deleted to prevent memory leaks
-/obj/effect/proc_holder/spell/targeted/trigger/New()
- ..()
+/obj/effect/proc_holder/spell/targeted/trigger/Initialize()
+ . = ..()
for(var/spell in starting_spells)
var/spell_to_add = text2path(spell)
diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm
index 53a7198302..5f808035fd 100644
--- a/code/modules/station_goals/bsa.dm
+++ b/code/modules/station_goals/bsa.dm
@@ -161,8 +161,8 @@
return locate(world.maxx,y,z)
return get_turf(src)
-/obj/machinery/bsa/full/New(loc,cannon_direction = WEST)
- ..()
+/obj/machinery/bsa/full/Initialize(mapload, cannon_direction = WEST)
+ . = ..()
top_layer = top_layer || mutable_appearance(icon, layer = ABOVE_MOB_LAYER)
switch(cannon_direction)
if(WEST)
diff --git a/code/modules/station_goals/bsa.dm.rej b/code/modules/station_goals/bsa.dm.rej
new file mode 100644
index 0000000000..d252acd18d
--- /dev/null
+++ b/code/modules/station_goals/bsa.dm.rej
@@ -0,0 +1,12 @@
+diff a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm (rejected hunks)
+@@ -161,8 +161,8 @@
+ return locate(world.maxx,y,z)
+ return get_turf(src)
+
+-/obj/machinery/bsa/full/New(loc,cannon_direction = WEST)
+- ..()
++/obj/machinery/bsa/full/Initialize(mapload,cannon_direction = WEST)
++ . = ..()
+ switch(cannon_direction)
+ if(WEST)
+ dir = WEST
diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm
index 863d7d4bde..b89ed4bde0 100644
--- a/code/modules/station_goals/shield.dm
+++ b/code/modules/station_goals/shield.dm
@@ -99,8 +99,8 @@
var/static/gid = 0
var/id = 0
-/obj/machinery/satellite/New()
- ..()
+/obj/machinery/satellite/Initialize()
+ . = ..()
id = gid++
/obj/machinery/satellite/interact(mob/user)
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index 1a0932f6e0..4fc22ec2c2 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -14,8 +14,8 @@
var/obj/item/holder = null
// You can use this var for item path, it would be converted into an item on New()
-/obj/item/organ/cyberimp/arm/New()
- ..()
+/obj/item/organ/cyberimp/arm/Initialize()
+ . = ..()
if(ispath(holder))
holder = new holder(src)
@@ -207,8 +207,8 @@
contents = newlist(/obj/item/device/assembly/flash/armimplant)
origin_tech = "materials=4;combat=3;biotech=4;magnets=4;powerstorage=3"
-/obj/item/organ/cyberimp/arm/flash/New()
- ..()
+/obj/item/organ/cyberimp/arm/flash/Initialize()
+ . = ..()
if(locate(/obj/item/device/assembly/flash/armimplant) in items_list)
var/obj/item/device/assembly/flash/armimplant/F = locate(/obj/item/device/assembly/flash/armimplant) in items_list
F.I = src
@@ -225,8 +225,8 @@
contents = newlist(/obj/item/weapon/melee/energy/blade/hardlight, /obj/item/weapon/gun/medbeam, /obj/item/borg/stun, /obj/item/device/assembly/flash/armimplant)
origin_tech = "materials=5;combat=7;biotech=5;powerstorage=5;syndicate=6;programming=5"
-/obj/item/organ/cyberimp/arm/combat/New()
- ..()
+/obj/item/organ/cyberimp/arm/combat/Initialize()
+ . = ..()
if(locate(/obj/item/device/assembly/flash/armimplant) in items_list)
var/obj/item/device/assembly/flash/armimplant/F = locate(/obj/item/device/assembly/flash/armimplant) in items_list
F.I = src
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index 7b4f98693c..ff2a3f0312 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -155,8 +155,7 @@
/obj/item/device/autosurgeon/reviver)
var/amount = 5
-/obj/item/weapon/storage/box/cyber_implants/bundle/New()
- ..()
+/obj/item/weapon/storage/box/cyber_implants/PopulateContents()
var/implant
while(contents.len <= amount)
implant = pick(boxed)
diff --git a/code/modules/surgery/organs/organ_internal.dm.rej b/code/modules/surgery/organs/organ_internal.dm.rej
new file mode 100644
index 0000000000..51db3e41ea
--- /dev/null
+++ b/code/modules/surgery/organs/organ_internal.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm (rejected hunks)
+@@ -655,7 +655,7 @@
+ var/phomeme_type = "sans"
+ var/list/phomeme_types = list("sans", "papyrus")
+
+-/obj/item/organ/tongue/bone/New()
++/obj/item/organ/tongue/bone/Initialize()
+ . = ..()
+ phomeme_type = pick(phomeme_types)
+
diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm
index d4e49215ad..5d85cde569 100644
--- a/code/modules/telesci/telepad.dm
+++ b/code/modules/telesci/telepad.dm
@@ -10,8 +10,8 @@
active_power_usage = 5000
var/efficiency
-/obj/machinery/telepad/New()
- ..()
+/obj/machinery/telepad/Initialize()
+ . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telesci_pad(null)
B.apply_default_parts(src)
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index a6c909438e..9a0fdf55fc 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -30,9 +30,9 @@
var/list/crystals = list()
var/obj/item/device/gps/inserted_gps
-/obj/machinery/computer/telescience/New()
+/obj/machinery/computer/telescience/Initialize()
recalibrate()
- ..()
+ . = ..()
/obj/machinery/computer/telescience/Destroy()
eject()
diff --git a/code/modules/uplink/uplink.dm b/code/modules/uplink/uplink.dm
index 8a72bd0566..f3379b9110 100644
--- a/code/modules/uplink/uplink.dm
+++ b/code/modules/uplink/uplink.dm
@@ -20,8 +20,8 @@ GLOBAL_LIST_EMPTY(uplinks)
var/purchase_log = ""
var/list/uplink_items
-/obj/item/device/uplink/New()
- ..()
+/obj/item/device/uplink/Initialize()
+ . = ..()
GLOB.uplinks += src
uplink_items = get_uplink_items(gamemode)
@@ -133,24 +133,24 @@ GLOBAL_LIST_EMPTY(uplinks)
return hidden_uplink.attackby(I, user, params)
// A collection of pre-set uplinks, for admin spawns.
-/obj/item/device/radio/uplink/New()
- ..()
+/obj/item/device/radio/uplink/Initialize()
+ . = ..()
icon_state = "radio"
hidden_uplink = new(src)
hidden_uplink.active = TRUE
hidden_uplink.lockable = FALSE
-/obj/item/device/radio/uplink/nuclear/New()
- ..()
+/obj/item/device/radio/uplink/nuclear/Initialize()
+ . = ..()
hidden_uplink.set_gamemode(/datum/game_mode/nuclear)
-/obj/item/device/multitool/uplink/New()
- ..()
+/obj/item/device/multitool/uplink/Initialize()
+ . = ..()
hidden_uplink = new(src)
hidden_uplink.active = TRUE
hidden_uplink.lockable = FALSE
-/obj/item/weapon/pen/uplink/New()
- ..()
+/obj/item/weapon/pen/uplink/Initialize()
+ . = ..()
hidden_uplink = new(src)
traitor_unlock_degrees = 360
diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm
index 5f663b85f8..35aff0867f 100644
--- a/code/modules/vehicles/atv.dm
+++ b/code/modules/vehicles/atv.dm
@@ -9,8 +9,8 @@
. = ..()
riding_datum = new/datum/riding/atv
-/obj/vehicle/atv/New()
- ..()
+/obj/vehicle/atv/Initialize()
+ .=..()
atvcover = atvcover || mutable_appearance(icon, "atvcover", ABOVE_MOB_LAYER)
@@ -34,7 +34,7 @@
density = 0
-/obj/vehicle/atv/turret/New()
+/obj/vehicle/atv/turret/Initialize()
. = ..()
turret = new(loc)
turret.base = src
diff --git a/code/modules/vehicles/atv.dm.rej b/code/modules/vehicles/atv.dm.rej
new file mode 100644
index 0000000000..4595beddc4
--- /dev/null
+++ b/code/modules/vehicles/atv.dm.rej
@@ -0,0 +1,12 @@
+diff a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm (rejected hunks)
+@@ -9,8 +9,8 @@
+ . = ..()
+ riding_datum = new/datum/riding/atv
+
+-/obj/vehicle/atv/New()
+- ..()
++/obj/vehicle/atv/Initialize()
++ . = ..()
+ if(!atvcover)
+ atvcover = image("icons/obj/vehicles.dmi", "atvcover")
+ atvcover.layer = ABOVE_MOB_LAYER
diff --git a/code/modules/vehicles/bicycle.dm b/code/modules/vehicles/bicycle.dm
index 184b03a6bf..d51de5809c 100644
--- a/code/modules/vehicles/bicycle.dm
+++ b/code/modules/vehicles/bicycle.dm
@@ -7,8 +7,8 @@
var/static/list/bike_music = list('sound/misc/bike1.mid',
'sound/misc/bike2.mid',
'sound/misc/bike3.mid')
-/obj/vehicle/bicycle/New()
- ..()
+/obj/vehicle/bicycle/Initialize()
+ . = ..()
riding_datum = new/datum/riding/bicycle
/obj/vehicle/bicycle/buckle_mob(mob/living/M, force = 0, check_loc = 1)
diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm
index 21d8cff1be..15337d8a28 100644
--- a/code/modules/vehicles/speedbike.dm
+++ b/code/modules/vehicles/speedbike.dm
@@ -15,20 +15,11 @@
overlay = overlay || mutable_appearance(icon, overlay_state, ABOVE_MOB_LAYER)
add_overlay(overlay)
-/obj/effect/overlay/temp/speedbike_trail
- name = "speedbike trails"
- icon_state = "ion_fade"
- layer = BELOW_MOB_LAYER
- duration = 10
- randomdir = 0
-/obj/effect/overlay/temp/speedbike_trail/New(loc,move_dir)
- ..()
- setDir(move_dir)
/obj/vehicle/space/speedbike/Move(newloc,move_dir)
if(has_buckled_mobs())
- new /obj/effect/overlay/temp/speedbike_trail(loc,move_dir)
+ new /obj/effect/overlay/temp/dir_setting/speedbike_trail(loc,move_dir)
. = ..()
/obj/vehicle/space/speedbike/red
diff --git a/code/modules/vehicles/speedbike.dm.rej b/code/modules/vehicles/speedbike.dm.rej
new file mode 100644
index 0000000000..26fe1428c9
--- /dev/null
+++ b/code/modules/vehicles/speedbike.dm.rej
@@ -0,0 +1,23 @@
+diff a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm (rejected hunks)
+@@ -16,20 +16,9 @@
+ overlay.layer = ABOVE_MOB_LAYER
+ add_overlay(overlay)
+
+-/obj/effect/overlay/temp/speedbike_trail
+- name = "speedbike trails"
+- icon_state = "ion_fade"
+- layer = BELOW_MOB_LAYER
+- duration = 10
+- randomdir = 0
+-
+-/obj/effect/overlay/temp/speedbike_trail/New(loc,move_dir)
+- ..()
+- setDir(move_dir)
+-
+ /obj/vehicle/space/speedbike/Move(newloc,move_dir)
+ if(has_buckled_mobs())
+- new /obj/effect/overlay/temp/speedbike_trail(loc,move_dir)
++ new /obj/effect/overlay/temp/dir_setting/speedbike_trail(loc,move_dir)
+ . = ..()
+
+ /obj/vehicle/space/speedbike/red
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index 295d774595..f254ef6337 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -13,7 +13,7 @@
var/revive_time_max = 700
var/timer_id
-/obj/item/organ/zombie_infection/New(loc)
+/obj/item/organ/zombie_infection/Initialize()
. = ..()
if(iscarbon(loc))
Insert(loc)