diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index e337ca8c60f..c87427bc44d 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -108,17 +108,10 @@
light_range=5
light_color="#ff0000"
spawnable=list(
-<<<<<<< HEAD
- /mob/living/simple_animal/hostile/scarybat,
- /mob/living/simple_animal/hostile/creature/vore,
- /mob/living/simple_animal/hostile/faithless
- ) // Vorestation Edit
-=======
/mob/living/simple_mob/animal/space/bats,
/mob/living/simple_mob/creature,
/mob/living/simple_mob/faithless
)
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
/obj/effect/gateway/active/cult
light_range=5
diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm
index f86fd79bf58..1c91862a4ec 100644
--- a/code/game/gamemodes/technomancer/spells/control.dm
+++ b/code/game/gamemodes/technomancer/spells/control.dm
@@ -21,34 +21,7 @@
aspect = ASPECT_BIOMED //Not sure if this should be something else.
var/image/control_overlay = null
var/list/controlled_mobs = list()
-<<<<<<< HEAD
- var/list/allowed_mobs = list(
- /mob/living/bot,
- /mob/living/simple_animal/cat,
- /mob/living/simple_animal/chick,
- /mob/living/simple_animal/chicken,
- /mob/living/simple_animal/corgi,
- /mob/living/simple_animal/cow,
- /mob/living/simple_animal/crab,
- /mob/living/simple_animal/lizard,
- /mob/living/simple_animal/mouse,
- /mob/living/simple_animal/parrot,
- /mob/living/simple_animal/slime,
-// /mob/living/simple_animal/adultslime,
- /mob/living/simple_animal/tindalos,
- /mob/living/simple_animal/yithian,
- /mob/living/simple_animal/hostile/scarybat,
- /mob/living/simple_animal/hostile/viscerator,
- /mob/living/simple_animal/hostile/malf_drone,
- /mob/living/simple_animal/hostile/giant_spider,
- /mob/living/simple_animal/hostile/hivebot,
- /mob/living/simple_animal/retaliate/diyaab, //Doubt these will get used but might as well,
- /mob/living/simple_animal/hostile/savik,
- /mob/living/simple_animal/hostile/shantak
- )
-=======
var/allowed_mob_classes = MOB_CLASS_ANIMAL|MOB_CLASS_SYNTHETIC
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
//This unfortunately is gonna be rather messy due to the various mobtypes involved.
/obj/item/weapon/spell/control/proc/select(var/mob/living/L)
diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm
index 7ac370433d8..c29d9827ec2 100644
--- a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm
+++ b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm
@@ -16,26 +16,6 @@
desc = "Chitter chitter."
summoned_mob_type = null
summon_options = list(
-<<<<<<< HEAD
- "Mouse" = /mob/living/simple_animal/mouse,
- "Lizard" = /mob/living/simple_animal/lizard,
- "Chicken" = /mob/living/simple_animal/chicken,
- "Chick" = /mob/living/simple_animal/chick,
- "Crab" = /mob/living/simple_animal/crab,
- "Parrot" = /mob/living/simple_animal/parrot,
- "Goat" = /mob/living/simple_animal/retaliate/goat,
- "Cat" = /mob/living/simple_animal/cat,
- "Kitten" = /mob/living/simple_animal/cat/kitten,
- "Corgi" = /mob/living/simple_animal/corgi,
- "Corgi Pup" = /mob/living/simple_animal/corgi/puppy,
- "BAT" = /mob/living/simple_animal/hostile/scarybat,
- "SPIDER" = /mob/living/simple_animal/hostile/giant_spider,
- "SPIDER HUNTER" = /mob/living/simple_animal/hostile/giant_spider/hunter,
- "SPIDER NURSE" = /mob/living/simple_animal/hostile/giant_spider/nurse,
- "CARP" = /mob/living/simple_animal/hostile/carp,
- "BEAR" = /mob/living/simple_animal/hostile/bear
- ) // Vorestation edits to add vore versions.
-=======
"Mouse" = /mob/living/simple_mob/animal/passive/mouse,
"Lizard" = /mob/living/simple_mob/animal/passive/lizard,
"Chicken" = /mob/living/simple_mob/animal/passive/chicken,
@@ -54,7 +34,6 @@
"CARP" = /mob/living/simple_mob/animal/space/carp,
"BEAR" = /mob/living/simple_mob/animal/space/bear
)
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
cooldown = 30
instability_cost = 10
energy_cost = 1000
diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm
index 9cc09b47704..374df11df36 100644
--- a/code/game/objects/items/weapons/tools/weldingtool.dm
+++ b/code/game/objects/items/weapons/tools/weldingtool.dm
@@ -1,619 +1,612 @@
-<<<<<<< HEAD
-=======
-
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
-#define WELDER_FUEL_BURN_INTERVAL 13
-/*
- * Welding Tool
- */
-/obj/item/weapon/weldingtool
- name = "\improper welding tool"
- icon = 'icons/obj/tools.dmi'
- icon_state = "welder"
- item_state = "welder"
- flags = CONDUCT
- slot_flags = SLOT_BELT
-
- //Amount of OUCH when it's thrown
- force = 3.0
- throwforce = 5.0
- throw_speed = 1
- throw_range = 5
- w_class = ITEMSIZE_SMALL
-
- //Cost to make in the autolathe
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
-
- //R&D tech level
- origin_tech = list(TECH_ENGINEERING = 1)
-
- //Welding tool specific stuff
- var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
- var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
- var/max_fuel = 20 //The max amount of fuel the welder can hold
-
- var/acti_sound = 'sound/items/welderactivate.ogg'
- var/deac_sound = 'sound/items/welderdeactivate.ogg'
- usesound = 'sound/items/Welder2.ogg'
- var/change_icons = TRUE
- var/flame_intensity = 2 //how powerful the emitted light is when used.
- var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color.
- var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
- var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
- var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
- toolspeed = 1
-
-/obj/item/weapon/weldingtool/New()
-// var/random_fuel = min(rand(10,20),max_fuel)
- var/datum/reagents/R = new/datum/reagents(max_fuel)
- reagents = R
- R.my_atom = src
- R.add_reagent("fuel", max_fuel)
- update_icon()
- if(always_process)
- processing_objects |= src
- ..()
-
-/obj/item/weapon/weldingtool/Destroy()
- if(welding || always_process)
- processing_objects -= src
- return ..()
-
-/obj/item/weapon/weldingtool/examine(mob/user)
- if(..(user, 0))
- if(max_fuel)
- to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
-
-/obj/item/weapon/weldingtool/attack(var/atom/A, var/mob/living/user, var/def_zone)
- if(ishuman(A) && user.a_intent == I_HELP)
- var/mob/living/carbon/human/H = A
- var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
-
- if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
- return ..()
-
- if(!welding)
- to_chat(user, "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!")
- return 1
-
- if(S.robo_repair(15, BRUTE, "some dents", src, user))
- remove_fuel(1, user)
- return 1
-
- return ..()
-
-/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
- if(istype(W,/obj/item/weapon/tool/screwdriver))
- if(welding)
- to_chat(user, "Stop welding first!")
- return
- status = !status
- if(status)
- to_chat(user, "You secure the welder.")
- else
- to_chat(user, "The welder can now be attached and modified.")
- src.add_fingerprint(user)
- return
-
- if((!status) && (istype(W,/obj/item/stack/rods)))
- var/obj/item/stack/rods/R = W
- R.use(1)
- var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
- src.loc = F
- F.weldtool = src
- if (user.client)
- user.client.screen -= src
- if (user.r_hand == src)
- user.remove_from_mob(src)
- else
- user.remove_from_mob(src)
- src.master = F
- src.layer = initial(src.layer)
- user.remove_from_mob(src)
- if (user.client)
- user.client.screen -= src
- src.loc = F
- src.add_fingerprint(user)
- return
-
- ..()
- return
-
-
-/obj/item/weapon/weldingtool/process()
- if(welding)
- ++burned_fuel_for
- if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
- remove_fuel(1)
-
-
-
- if(get_fuel() < 1)
- setWelding(0)
-
- //I'm not sure what this does. I assume it has to do with starting fires...
- //...but it doesnt check to see if the welder is on or not.
- var/turf/location = src.loc
- if(istype(location, /mob/living))
- var/mob/living/M = location
- if(M.item_is_in_hands(src))
- location = get_turf(M)
- if (istype(location, /turf))
- location.hotspot_expose(700, 5)
-
-
-/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
- if(!proximity) return
- if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
- if(!welding && max_fuel)
- O.reagents.trans_to_obj(src, max_fuel)
- to_chat(user, "Welder refueled")
- playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
- return
- else if(!welding)
- to_chat(user, "[src] doesn't use fuel.")
- return
- else
- message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
- log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
- to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
- var/obj/structure/reagent_dispensers/fueltank/tank = O
- tank.explode()
- return
- if (src.welding)
- remove_fuel(1)
- var/turf/location = get_turf(user)
- if(isliving(O))
- var/mob/living/L = O
- L.IgniteMob()
- if (istype(location, /turf))
- location.hotspot_expose(700, 50, 1)
- return
-
-
-/obj/item/weapon/weldingtool/attack_self(mob/user as mob)
- setWelding(!welding, usr)
- return
-
-//Returns the amount of fuel in the welder
-/obj/item/weapon/weldingtool/proc/get_fuel()
- return reagents.get_reagent_amount("fuel")
-
-/obj/item/weapon/weldingtool/proc/get_max_fuel()
- return max_fuel
-
-//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use()
-/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null)
- if(!welding)
- return 0
- if(amount)
- burned_fuel_for = 0 // Reset the counter since we're removing fuel.
- if(get_fuel() >= amount)
- reagents.remove_reagent("fuel", amount)
- if(M)
- eyecheck(M)
- update_icon()
- return 1
- else
- if(M)
- to_chat(M, "You need more welding fuel to complete this task.")
- update_icon()
- return 0
-
-//Returns whether or not the welding tool is currently on.
-/obj/item/weapon/weldingtool/proc/isOn()
- return src.welding
-
-/obj/item/weapon/weldingtool/update_icon()
- ..()
- overlays.Cut()
- // Welding overlay.
- if(welding)
- var/image/I = image(icon, src, "[icon_state]-on")
- overlays.Add(I)
- item_state = "[initial(item_state)]1"
- else
- item_state = initial(item_state)
-
- // Fuel counter overlay.
- if(change_icons && get_max_fuel())
- var/ratio = get_fuel() / get_max_fuel()
- ratio = Ceiling(ratio*4) * 25
- var/image/I = image(icon, src, "[icon_state][ratio]")
- overlays.Add(I)
-
- // Lights
- if(welding && flame_intensity)
- set_light(flame_intensity, flame_intensity, flame_color)
- else
- set_light(0)
-
-// icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
- var/mob/M = loc
- if(istype(M))
- M.update_inv_l_hand()
- M.update_inv_r_hand()
-
-/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
- if(!canremove)
- return
-
- if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
-
- if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
- return
-
- if (!( istype(over_object, /obj/screen) ))
- return ..()
-
- //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
- //there's got to be a better way of doing this.
- if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
- return
-
- if (( usr.restrained() ) || ( usr.stat ))
- return
-
- if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
- return
-
- switch(over_object.name)
- if("r_hand")
- usr.u_equip(src)
- usr.put_in_r_hand(src)
- if("l_hand")
- usr.u_equip(src)
- usr.put_in_l_hand(src)
- src.add_fingerprint(usr)
-
-//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1)
-//so that the welding tool updates accordingly
-/obj/item/weapon/weldingtool/proc/setWelding(var/set_welding, var/mob/M)
- if(!status) return
-
- var/turf/T = get_turf(src)
- //If we're turning it on
- if(set_welding && !welding)
- if (get_fuel() > 0)
- if(M)
- to_chat(M, "You switch the [src] on.")
- else if(T)
- T.visible_message("\The [src] turns on.")
- playsound(loc, acti_sound, 50, 1)
- src.force = 15
- src.damtype = "fire"
- src.w_class = ITEMSIZE_LARGE
- src.hitsound = 'sound/items/welder.ogg'
- welding = 1
- update_icon()
- if(!always_process)
- processing_objects |= src
- else
- if(M)
- var/msg = max_fuel ? "welding fuel" : "charge"
- to_chat(M, "You need more [msg] to complete this task.")
- return
- //Otherwise
- else if(!set_welding && welding)
- if(!always_process)
- processing_objects -= src
- if(M)
- to_chat(M, "You switch \the [src] off.")
- else if(T)
- T.visible_message("\The [src] turns off.")
- playsound(loc, deac_sound, 50, 1)
- src.force = 3
- src.damtype = "brute"
- src.w_class = initial(src.w_class)
- src.welding = 0
- src.hitsound = initial(src.hitsound)
- update_icon()
-
-//Decides whether or not to damage a player's eyes based on what they're wearing as protection
-//Note: This should probably be moved to mob
-/obj/item/weapon/weldingtool/proc/eyecheck(mob/living/carbon/user)
- if(!istype(user))
- return 1
- var/safety = user.eyecheck()
- safety = between(-1, safety + eye_safety_modifier, 2)
- if(istype(user, /mob/living/carbon/human))
- var/mob/living/carbon/human/H = user
- var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
- if(!E)
- return
-<<<<<<< HEAD
- if(H.nif && H.nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) return //VOREStation Add - NIF
-=======
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
- switch(safety)
- if(1)
- to_chat(usr, "Your eyes sting a little.")
- E.damage += rand(1, 2)
- if(E.damage > 12)
- user.eye_blurry += rand(3,6)
- if(0)
- to_chat(usr, "Your eyes burn.")
- E.damage += rand(2, 4)
- if(E.damage > 10)
- E.damage += rand(4,10)
- if(-1)
- to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
- user.eye_blurry += rand(12,20)
- E.damage += rand(12, 16)
- if(safety<2)
-
- if(E.damage > 10)
- to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
-
- if (E.damage >= E.min_broken_damage)
- to_chat(user, "You go blind!")
- user.sdisabilities |= BLIND
- else if (E.damage >= E.min_bruised_damage)
- to_chat(user, "You go blind!")
- user.Blind(5)
- user.eye_blurry = 5
- user.disabilities |= NEARSIGHTED
- spawn(100)
- user.disabilities &= ~NEARSIGHTED
- return
-
-/obj/item/weapon/weldingtool/is_hot()
- return isOn()
-
-/obj/item/weapon/weldingtool/largetank
- name = "industrial welding tool"
- desc = "A slightly larger welder with a larger tank."
- icon_state = "indwelder"
- max_fuel = 40
- origin_tech = list(TECH_ENGINEERING = 2, TECH_PHORON = 2)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
-
-/obj/item/weapon/weldingtool/largetank/cyborg
- name = "integrated welding tool"
- desc = "An advanced welder designed to be used in robotic systems."
- toolspeed = 0.5
-
-/obj/item/weapon/weldingtool/hugetank
- name = "upgraded welding tool"
- desc = "A much larger welder with a huge tank."
- icon_state = "indwelder"
- max_fuel = 80
- w_class = ITEMSIZE_NORMAL
- origin_tech = list(TECH_ENGINEERING = 3)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
-
-/obj/item/weapon/weldingtool/mini
- name = "emergency welding tool"
- desc = "A miniature welder used during emergencies."
- icon_state = "miniwelder"
- max_fuel = 10
- w_class = ITEMSIZE_SMALL
- matter = list(MAT_METAL = 30, MAT_GLASS = 10)
- change_icons = 0
- toolspeed = 2
- eye_safety_modifier = 1 // Safer on eyes.
-
-/obj/item/weapon/weldingtool/alien
- name = "alien welding tool"
- desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
- icon = 'icons/obj/abductor.dmi'
- icon_state = "welder"
- toolspeed = 0.1
- flame_color = "#6699FF" // Light bluish.
- eye_safety_modifier = 2
- change_icons = 0
- origin_tech = list(TECH_PHORON = 5 ,TECH_ENGINEERING = 5)
- always_process = TRUE
-
-/obj/item/weapon/weldingtool/alien/process()
- if(get_fuel() <= get_max_fuel())
- reagents.add_reagent("fuel", 1)
- ..()
-
-/obj/item/weapon/weldingtool/experimental
- name = "experimental welding tool"
- desc = "An experimental welder capable of synthesizing its own fuel from waste compounds. It can output a flame hotter than regular welders."
- icon_state = "exwelder"
- max_fuel = 40
- w_class = ITEMSIZE_NORMAL
- origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
- toolspeed = 0.5
- change_icons = 0
- flame_intensity = 3
- always_process = TRUE
- var/nextrefueltick = 0
-
-/obj/item/weapon/weldingtool/experimental/process()
- ..()
- if(get_fuel() < get_max_fuel() && nextrefueltick < world.time)
- nextrefueltick = world.time + 10
- reagents.add_reagent("fuel", 1)
-
-/*
- * Backpack Welder.
- */
-
-/obj/item/weapon/weldingtool/tubefed
- name = "tube-fed welding tool"
- desc = "A bulky, cooler-burning welding tool that draws from a worn welding tank."
- icon_state = "tubewelder"
- max_fuel = 10
- w_class = ITEMSIZE_NO_CONTAINER
- matter = null
- toolspeed = 1.25
- change_icons = 0
- flame_intensity = 1
- eye_safety_modifier = 1
- always_process = TRUE
- var/obj/item/weapon/weldpack/mounted_pack = null
-
-/obj/item/weapon/weldingtool/tubefed/New(location)
- ..()
- if(istype(location, /obj/item/weapon/weldpack))
- var/obj/item/weapon/weldpack/holder = location
- mounted_pack = holder
- else
- qdel(src)
-
-/obj/item/weapon/weldingtool/tubefed/Destroy()
- mounted_pack.nozzle = null
- mounted_pack = null
- return ..()
-
-/obj/item/weapon/weldingtool/tubefed/process()
- if(mounted_pack)
- if(!istype(mounted_pack.loc,/mob/living/carbon/human))
- mounted_pack.return_nozzle()
- else
- var/mob/living/carbon/human/H = mounted_pack.loc
- if(H.back != mounted_pack)
- mounted_pack.return_nozzle()
-
- if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
- mounted_pack.return_nozzle()
- visible_message("\The [src] retracts to its fueltank.")
-
- if(get_fuel() <= get_max_fuel())
- mounted_pack.reagents.trans_to_obj(src, 1)
-
- ..()
-
-/obj/item/weapon/weldingtool/tubefed/dropped(mob/user)
- ..()
- if(src.loc != user)
- mounted_pack.return_nozzle()
- to_chat(user, "\The [src] retracts to its fueltank.")
-
-/*
- * Electric/Arc Welder
- */
-
-/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
- name = "electric welding tool"
- desc = "A welder which runs off of electricity."
- icon_state = "arcwelder"
- max_fuel = 0 //We'll handle the consumption later.
- item_state = "ewelder"
- var/obj/item/weapon/cell/power_supply //What type of power cell this uses
- var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
- var/cell_type = /obj/item/weapon/cell/device
- var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
- flame_color = "#00CCFF" // Blue-ish, to set it apart from the gas flames.
- acti_sound = 'sound/effects/sparks4.ogg'
- deac_sound = 'sound/effects/sparks4.ogg'
-
-/obj/item/weapon/weldingtool/electric/unloaded/New()
- cell_type = null
-
-/obj/item/weapon/weldingtool/electric/New()
- ..()
- if(cell_type == null)
- update_icon()
- else if(cell_type)
- power_supply = new cell_type(src)
- else
- power_supply = new /obj/item/weapon/cell/device(src)
- update_icon()
-
-/obj/item/weapon/weldingtool/electric/get_cell()
- return power_supply
-
-/obj/item/weapon/weldingtool/electric/examine(mob/user)
- if(get_dist(src, user) > 1)
- to_chat(user, desc)
- else // The << need to stay, for some reason
- if(power_supply)
- user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
- else
- user << text("\icon[] The [] has no power cell!", src, src.name)
-
-/obj/item/weapon/weldingtool/electric/get_fuel()
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(external)
- return external.charge
- else if(power_supply)
- return power_supply.charge
- else
- return 0
-
-/obj/item/weapon/weldingtool/electric/get_max_fuel()
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(external)
- return external.maxcharge
- else if(power_supply)
- return power_supply.maxcharge
- return 0
-
-/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
- if(!welding)
- return 0
- if(get_fuel() >= amount)
- power_supply.checked_use(charge_cost)
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(!external || !external.use(charge_cost)) //Take power from the borg...
- power_supply.give(charge_cost) //Give it back to the cell.
- if(M)
- eyecheck(M)
- update_icon()
- return 1
- else
- if(M)
- to_chat(M, "You need more energy to complete this task.")
- update_icon()
- return 0
-
-/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
- if(user.get_inactive_hand() == src)
- if(power_supply)
- power_supply.update_icon()
- user.put_in_hands(power_supply)
- power_supply = null
- to_chat(user, "You remove the cell from the [src].")
- setWelding(0)
- update_icon()
- return
- ..()
- else
- return ..()
-
-/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
- if(istype(W, /obj/item/weapon/cell))
- if(istype(W, /obj/item/weapon/cell/device))
- if(!power_supply)
- user.drop_item()
- W.loc = src
- power_supply = W
- to_chat(user, "You install a cell in \the [src].")
- update_icon()
- else
- to_chat(user, "\The [src] already has a cell.")
- else
- to_chat(user, "\The [src] cannot use that type of cell.")
- else
- ..()
-
-/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
- if(isrobot(src.loc))
- var/mob/living/silicon/robot/R = src.loc
- return R.cell
- if(istype(src.loc, /obj/item/rig_module))
- var/obj/item/rig_module/module = src.loc
- if(module.holder && module.holder.wearer)
- var/mob/living/carbon/human/H = module.holder.wearer
- if(istype(H) && H.back)
- var/obj/item/weapon/rig/suit = H.back
- if(istype(suit))
- return suit.cell
- return null
-
-/obj/item/weapon/weldingtool/electric/mounted
- use_external_power = 1
-
-/obj/item/weapon/weldingtool/electric/mounted/cyborg
- toolspeed = 0.5
-
-#undef WELDER_FUEL_BURN_INTERVAL
+#define WELDER_FUEL_BURN_INTERVAL 13
+/*
+ * Welding Tool
+ */
+/obj/item/weapon/weldingtool
+ name = "\improper welding tool"
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "welder"
+ item_state = "welder"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+
+ //Amount of OUCH when it's thrown
+ force = 3.0
+ throwforce = 5.0
+ throw_speed = 1
+ throw_range = 5
+ w_class = ITEMSIZE_SMALL
+
+ //Cost to make in the autolathe
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
+
+ //R&D tech level
+ origin_tech = list(TECH_ENGINEERING = 1)
+
+ //Welding tool specific stuff
+ var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
+ var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
+ var/max_fuel = 20 //The max amount of fuel the welder can hold
+
+ var/acti_sound = 'sound/items/welderactivate.ogg'
+ var/deac_sound = 'sound/items/welderdeactivate.ogg'
+ usesound = 'sound/items/Welder2.ogg'
+ var/change_icons = TRUE
+ var/flame_intensity = 2 //how powerful the emitted light is when used.
+ var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color.
+ var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
+ var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
+ var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
+ toolspeed = 1
+
+/obj/item/weapon/weldingtool/New()
+// var/random_fuel = min(rand(10,20),max_fuel)
+ var/datum/reagents/R = new/datum/reagents(max_fuel)
+ reagents = R
+ R.my_atom = src
+ R.add_reagent("fuel", max_fuel)
+ update_icon()
+ if(always_process)
+ processing_objects |= src
+ ..()
+
+/obj/item/weapon/weldingtool/Destroy()
+ if(welding || always_process)
+ processing_objects -= src
+ return ..()
+
+/obj/item/weapon/weldingtool/examine(mob/user)
+ if(..(user, 0))
+ if(max_fuel)
+ to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
+
+/obj/item/weapon/weldingtool/attack(var/atom/A, var/mob/living/user, var/def_zone)
+ if(ishuman(A) && user.a_intent == I_HELP)
+ var/mob/living/carbon/human/H = A
+ var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
+
+ if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
+ return ..()
+
+ if(!welding)
+ to_chat(user, "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!")
+ return 1
+
+ if(S.robo_repair(15, BRUTE, "some dents", src, user))
+ remove_fuel(1, user)
+ return 1
+
+ return ..()
+
+/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
+ if(istype(W,/obj/item/weapon/tool/screwdriver))
+ if(welding)
+ to_chat(user, "Stop welding first!")
+ return
+ status = !status
+ if(status)
+ to_chat(user, "You secure the welder.")
+ else
+ to_chat(user, "The welder can now be attached and modified.")
+ src.add_fingerprint(user)
+ return
+
+ if((!status) && (istype(W,/obj/item/stack/rods)))
+ var/obj/item/stack/rods/R = W
+ R.use(1)
+ var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
+ src.loc = F
+ F.weldtool = src
+ if (user.client)
+ user.client.screen -= src
+ if (user.r_hand == src)
+ user.remove_from_mob(src)
+ else
+ user.remove_from_mob(src)
+ src.master = F
+ src.layer = initial(src.layer)
+ user.remove_from_mob(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = F
+ src.add_fingerprint(user)
+ return
+
+ ..()
+ return
+
+
+/obj/item/weapon/weldingtool/process()
+ if(welding)
+ ++burned_fuel_for
+ if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
+ remove_fuel(1)
+
+
+
+ if(get_fuel() < 1)
+ setWelding(0)
+
+ //I'm not sure what this does. I assume it has to do with starting fires...
+ //...but it doesnt check to see if the welder is on or not.
+ var/turf/location = src.loc
+ if(istype(location, /mob/living))
+ var/mob/living/M = location
+ if(M.item_is_in_hands(src))
+ location = get_turf(M)
+ if (istype(location, /turf))
+ location.hotspot_expose(700, 5)
+
+
+/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
+ if(!proximity) return
+ if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
+ if(!welding && max_fuel)
+ O.reagents.trans_to_obj(src, max_fuel)
+ to_chat(user, "Welder refueled")
+ playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
+ return
+ else if(!welding)
+ to_chat(user, "[src] doesn't use fuel.")
+ return
+ else
+ message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
+ log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
+ to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
+ var/obj/structure/reagent_dispensers/fueltank/tank = O
+ tank.explode()
+ return
+ if (src.welding)
+ remove_fuel(1)
+ var/turf/location = get_turf(user)
+ if(isliving(O))
+ var/mob/living/L = O
+ L.IgniteMob()
+ if (istype(location, /turf))
+ location.hotspot_expose(700, 50, 1)
+ return
+
+
+/obj/item/weapon/weldingtool/attack_self(mob/user as mob)
+ setWelding(!welding, usr)
+ return
+
+//Returns the amount of fuel in the welder
+/obj/item/weapon/weldingtool/proc/get_fuel()
+ return reagents.get_reagent_amount("fuel")
+
+/obj/item/weapon/weldingtool/proc/get_max_fuel()
+ return max_fuel
+
+//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use()
+/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null)
+ if(!welding)
+ return 0
+ if(amount)
+ burned_fuel_for = 0 // Reset the counter since we're removing fuel.
+ if(get_fuel() >= amount)
+ reagents.remove_reagent("fuel", amount)
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more welding fuel to complete this task.")
+ update_icon()
+ return 0
+
+//Returns whether or not the welding tool is currently on.
+/obj/item/weapon/weldingtool/proc/isOn()
+ return src.welding
+
+/obj/item/weapon/weldingtool/update_icon()
+ ..()
+ overlays.Cut()
+ // Welding overlay.
+ if(welding)
+ var/image/I = image(icon, src, "[icon_state]-on")
+ overlays.Add(I)
+ item_state = "[initial(item_state)]1"
+ else
+ item_state = initial(item_state)
+
+ // Fuel counter overlay.
+ if(change_icons && get_max_fuel())
+ var/ratio = get_fuel() / get_max_fuel()
+ ratio = Ceiling(ratio*4) * 25
+ var/image/I = image(icon, src, "[icon_state][ratio]")
+ overlays.Add(I)
+
+ // Lights
+ if(welding && flame_intensity)
+ set_light(flame_intensity, flame_intensity, flame_color)
+ else
+ set_light(0)
+
+// icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
+ var/mob/M = loc
+ if(istype(M))
+ M.update_inv_l_hand()
+ M.update_inv_r_hand()
+
+/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
+ if(!canremove)
+ return
+
+ if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
+
+ if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
+ return
+
+ if (!( istype(over_object, /obj/screen) ))
+ return ..()
+
+ //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
+ //there's got to be a better way of doing this.
+ if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
+ return
+
+ if (( usr.restrained() ) || ( usr.stat ))
+ return
+
+ if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
+ return
+
+ switch(over_object.name)
+ if("r_hand")
+ usr.u_equip(src)
+ usr.put_in_r_hand(src)
+ if("l_hand")
+ usr.u_equip(src)
+ usr.put_in_l_hand(src)
+ src.add_fingerprint(usr)
+
+//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1)
+//so that the welding tool updates accordingly
+/obj/item/weapon/weldingtool/proc/setWelding(var/set_welding, var/mob/M)
+ if(!status) return
+
+ var/turf/T = get_turf(src)
+ //If we're turning it on
+ if(set_welding && !welding)
+ if (get_fuel() > 0)
+ if(M)
+ to_chat(M, "You switch the [src] on.")
+ else if(T)
+ T.visible_message("\The [src] turns on.")
+ playsound(loc, acti_sound, 50, 1)
+ src.force = 15
+ src.damtype = "fire"
+ src.w_class = ITEMSIZE_LARGE
+ src.hitsound = 'sound/items/welder.ogg'
+ welding = 1
+ update_icon()
+ if(!always_process)
+ processing_objects |= src
+ else
+ if(M)
+ var/msg = max_fuel ? "welding fuel" : "charge"
+ to_chat(M, "You need more [msg] to complete this task.")
+ return
+ //Otherwise
+ else if(!set_welding && welding)
+ if(!always_process)
+ processing_objects -= src
+ if(M)
+ to_chat(M, "You switch \the [src] off.")
+ else if(T)
+ T.visible_message("\The [src] turns off.")
+ playsound(loc, deac_sound, 50, 1)
+ src.force = 3
+ src.damtype = "brute"
+ src.w_class = initial(src.w_class)
+ src.welding = 0
+ src.hitsound = initial(src.hitsound)
+ update_icon()
+
+//Decides whether or not to damage a player's eyes based on what they're wearing as protection
+//Note: This should probably be moved to mob
+/obj/item/weapon/weldingtool/proc/eyecheck(mob/living/carbon/user)
+ if(!istype(user))
+ return 1
+ var/safety = user.eyecheck()
+ safety = between(-1, safety + eye_safety_modifier, 2)
+ if(istype(user, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
+ if(!E)
+ return
+ if(H.nif && H.nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) return //VOREStation Add - NIF
+ switch(safety)
+ if(1)
+ to_chat(usr, "Your eyes sting a little.")
+ E.damage += rand(1, 2)
+ if(E.damage > 12)
+ user.eye_blurry += rand(3,6)
+ if(0)
+ to_chat(usr, "Your eyes burn.")
+ E.damage += rand(2, 4)
+ if(E.damage > 10)
+ E.damage += rand(4,10)
+ if(-1)
+ to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
+ user.eye_blurry += rand(12,20)
+ E.damage += rand(12, 16)
+ if(safety<2)
+
+ if(E.damage > 10)
+ to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
+
+ if (E.damage >= E.min_broken_damage)
+ to_chat(user, "You go blind!")
+ user.sdisabilities |= BLIND
+ else if (E.damage >= E.min_bruised_damage)
+ to_chat(user, "You go blind!")
+ user.Blind(5)
+ user.eye_blurry = 5
+ user.disabilities |= NEARSIGHTED
+ spawn(100)
+ user.disabilities &= ~NEARSIGHTED
+ return
+
+/obj/item/weapon/weldingtool/is_hot()
+ return isOn()
+
+/obj/item/weapon/weldingtool/largetank
+ name = "industrial welding tool"
+ desc = "A slightly larger welder with a larger tank."
+ icon_state = "indwelder"
+ max_fuel = 40
+ origin_tech = list(TECH_ENGINEERING = 2, TECH_PHORON = 2)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
+
+/obj/item/weapon/weldingtool/largetank/cyborg
+ name = "integrated welding tool"
+ desc = "An advanced welder designed to be used in robotic systems."
+ toolspeed = 0.5
+
+/obj/item/weapon/weldingtool/hugetank
+ name = "upgraded welding tool"
+ desc = "A much larger welder with a huge tank."
+ icon_state = "indwelder"
+ max_fuel = 80
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+
+/obj/item/weapon/weldingtool/mini
+ name = "emergency welding tool"
+ desc = "A miniature welder used during emergencies."
+ icon_state = "miniwelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_SMALL
+ matter = list(MAT_METAL = 30, MAT_GLASS = 10)
+ change_icons = 0
+ toolspeed = 2
+ eye_safety_modifier = 1 // Safer on eyes.
+
+/obj/item/weapon/weldingtool/alien
+ name = "alien welding tool"
+ desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "welder"
+ toolspeed = 0.1
+ flame_color = "#6699FF" // Light bluish.
+ eye_safety_modifier = 2
+ change_icons = 0
+ origin_tech = list(TECH_PHORON = 5 ,TECH_ENGINEERING = 5)
+ always_process = TRUE
+
+/obj/item/weapon/weldingtool/alien/process()
+ if(get_fuel() <= get_max_fuel())
+ reagents.add_reagent("fuel", 1)
+ ..()
+
+/obj/item/weapon/weldingtool/experimental
+ name = "experimental welding tool"
+ desc = "An experimental welder capable of synthesizing its own fuel from waste compounds. It can output a flame hotter than regular welders."
+ icon_state = "exwelder"
+ max_fuel = 40
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+ toolspeed = 0.5
+ change_icons = 0
+ flame_intensity = 3
+ always_process = TRUE
+ var/nextrefueltick = 0
+
+/obj/item/weapon/weldingtool/experimental/process()
+ ..()
+ if(get_fuel() < get_max_fuel() && nextrefueltick < world.time)
+ nextrefueltick = world.time + 10
+ reagents.add_reagent("fuel", 1)
+
+/*
+ * Backpack Welder.
+ */
+
+/obj/item/weapon/weldingtool/tubefed
+ name = "tube-fed welding tool"
+ desc = "A bulky, cooler-burning welding tool that draws from a worn welding tank."
+ icon_state = "tubewelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_NO_CONTAINER
+ matter = null
+ toolspeed = 1.25
+ change_icons = 0
+ flame_intensity = 1
+ eye_safety_modifier = 1
+ always_process = TRUE
+ var/obj/item/weapon/weldpack/mounted_pack = null
+
+/obj/item/weapon/weldingtool/tubefed/New(location)
+ ..()
+ if(istype(location, /obj/item/weapon/weldpack))
+ var/obj/item/weapon/weldpack/holder = location
+ mounted_pack = holder
+ else
+ qdel(src)
+
+/obj/item/weapon/weldingtool/tubefed/Destroy()
+ mounted_pack.nozzle = null
+ mounted_pack = null
+ return ..()
+
+/obj/item/weapon/weldingtool/tubefed/process()
+ if(mounted_pack)
+ if(!istype(mounted_pack.loc,/mob/living/carbon/human))
+ mounted_pack.return_nozzle()
+ else
+ var/mob/living/carbon/human/H = mounted_pack.loc
+ if(H.back != mounted_pack)
+ mounted_pack.return_nozzle()
+
+ if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
+ mounted_pack.return_nozzle()
+ visible_message("\The [src] retracts to its fueltank.")
+
+ if(get_fuel() <= get_max_fuel())
+ mounted_pack.reagents.trans_to_obj(src, 1)
+
+ ..()
+
+/obj/item/weapon/weldingtool/tubefed/dropped(mob/user)
+ ..()
+ if(src.loc != user)
+ mounted_pack.return_nozzle()
+ to_chat(user, "\The [src] retracts to its fueltank.")
+
+/*
+ * Electric/Arc Welder
+ */
+
+/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
+ name = "electric welding tool"
+ desc = "A welder which runs off of electricity."
+ icon_state = "arcwelder"
+ max_fuel = 0 //We'll handle the consumption later.
+ item_state = "ewelder"
+ var/obj/item/weapon/cell/power_supply //What type of power cell this uses
+ var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
+ var/cell_type = /obj/item/weapon/cell/device
+ var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
+ flame_color = "#00CCFF" // Blue-ish, to set it apart from the gas flames.
+ acti_sound = 'sound/effects/sparks4.ogg'
+ deac_sound = 'sound/effects/sparks4.ogg'
+
+/obj/item/weapon/weldingtool/electric/unloaded/New()
+ cell_type = null
+
+/obj/item/weapon/weldingtool/electric/New()
+ ..()
+ if(cell_type == null)
+ update_icon()
+ else if(cell_type)
+ power_supply = new cell_type(src)
+ else
+ power_supply = new /obj/item/weapon/cell/device(src)
+ update_icon()
+
+/obj/item/weapon/weldingtool/electric/get_cell()
+ return power_supply
+
+/obj/item/weapon/weldingtool/electric/examine(mob/user)
+ if(get_dist(src, user) > 1)
+ to_chat(user, desc)
+ else // The << need to stay, for some reason
+ if(power_supply)
+ user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
+ else
+ user << text("\icon[] The [] has no power cell!", src, src.name)
+
+/obj/item/weapon/weldingtool/electric/get_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.charge
+ else if(power_supply)
+ return power_supply.charge
+ else
+ return 0
+
+/obj/item/weapon/weldingtool/electric/get_max_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.maxcharge
+ else if(power_supply)
+ return power_supply.maxcharge
+ return 0
+
+/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
+ if(!welding)
+ return 0
+ if(get_fuel() >= amount)
+ power_supply.checked_use(charge_cost)
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(!external || !external.use(charge_cost)) //Take power from the borg...
+ power_supply.give(charge_cost) //Give it back to the cell.
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more energy to complete this task.")
+ update_icon()
+ return 0
+
+/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
+ if(user.get_inactive_hand() == src)
+ if(power_supply)
+ power_supply.update_icon()
+ user.put_in_hands(power_supply)
+ power_supply = null
+ to_chat(user, "You remove the cell from the [src].")
+ setWelding(0)
+ update_icon()
+ return
+ ..()
+ else
+ return ..()
+
+/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
+ if(istype(W, /obj/item/weapon/cell))
+ if(istype(W, /obj/item/weapon/cell/device))
+ if(!power_supply)
+ user.drop_item()
+ W.loc = src
+ power_supply = W
+ to_chat(user, "You install a cell in \the [src].")
+ update_icon()
+ else
+ to_chat(user, "\The [src] already has a cell.")
+ else
+ to_chat(user, "\The [src] cannot use that type of cell.")
+ else
+ ..()
+
+/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ return R.cell
+ if(istype(src.loc, /obj/item/rig_module))
+ var/obj/item/rig_module/module = src.loc
+ if(module.holder && module.holder.wearer)
+ var/mob/living/carbon/human/H = module.holder.wearer
+ if(istype(H) && H.back)
+ var/obj/item/weapon/rig/suit = H.back
+ if(istype(suit))
+ return suit.cell
+ return null
+
+/obj/item/weapon/weldingtool/electric/mounted
+ use_external_power = 1
+
+/obj/item/weapon/weldingtool/electric/mounted/cyborg
+ toolspeed = 0.5
+
+#undef WELDER_FUEL_BURN_INTERVAL
diff --git a/code/modules/food/kitchen/smartfridge.dm b/code/modules/food/kitchen/smartfridge.dm
index b7c3ac443f4..d1b93812160 100644
--- a/code/modules/food/kitchen/smartfridge.dm
+++ b/code/modules/food/kitchen/smartfridge.dm
@@ -10,11 +10,8 @@
idle_power_usage = 5
active_power_usage = 100
flags = NOREACT
-<<<<<<< HEAD
var/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. //VOREStation Edit - Non-global
-=======
- var/global/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000.
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
+ //var/global/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000.
var/icon_on = "smartfridge"
var/icon_off = "smartfridge-off"
var/icon_panel = "smartfridge-panel"
diff --git a/code/modules/xenoarcheaology/artifacts/autocloner.dm b/code/modules/xenoarcheaology/artifacts/autocloner.dm
index d0568b2080b..3370f3f8521 100644
--- a/code/modules/xenoarcheaology/artifacts/autocloner.dm
+++ b/code/modules/xenoarcheaology/artifacts/autocloner.dm
@@ -21,22 +21,13 @@
//33% chance to spawn nasties
if(prob(33))
-<<<<<<< HEAD
- spawn_type = pick(\
- /mob/living/simple_animal/hostile/giant_spider/nurse,\
- /mob/living/simple_animal/hostile/alien,\
- /mob/living/simple_animal/hostile/bear,\
- /mob/living/simple_animal/hostile/carp,\
- /mob/living/simple_animal/hostile/creature\
- ) // Vorestation Edits
-=======
spawn_type = pick(
/mob/living/simple_mob/animal/giant_spider/nurse,
/mob/living/simple_mob/animal/space/alien,
/mob/living/simple_mob/animal/space/bear,
+ /mob/living/simple_mob/carp,\ // Vorestation edit
/mob/living/simple_mob/creature,
/mob/living/simple_mob/slime/xenobio)
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
else
spawn_type = pick(\
/mob/living/simple_mob/animal/passive/cat,
diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm
index 7e27528aeb3..2adc23ca7df 100644
--- a/code/modules/xenoarcheaology/artifacts/replicator.dm
+++ b/code/modules/xenoarcheaology/artifacts/replicator.dm
@@ -26,14 +26,9 @@
/obj/item/roller,
/obj/structure/closet/crate,
/obj/structure/closet/acloset,
-<<<<<<< HEAD
- /mob/living/simple_animal/hostile/mimic/crate,
- /mob/living/simple_animal/hostile/viscerator,
- /mob/living/simple_animal/hostile/hivebot,
-=======
+ /mob/living/simple_mob/mimic/crate, // Vorestation edit
/mob/living/simple_mob/mechanical/viscerator,
/mob/living/simple_mob/mechanical/hivebot,
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
/obj/item/device/analyzer,
/obj/item/device/camera,
/obj/item/device/flash,
diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm
index d467af7a4b2..0798b4fcfbd 100644
--- a/code/modules/xenoarcheaology/finds/special.dm
+++ b/code/modules/xenoarcheaology/finds/special.dm
@@ -87,11 +87,7 @@
if(charges >= 3)
if(prob(5))
charges -= 1
-<<<<<<< HEAD
- var/spawn_type = pick(/mob/living/simple_animal/hostile/creature/vore) // Vorestation Edit
-=======
var/spawn_type = pick(/mob/living/simple_mob/creature)
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
new spawn_type(pick(view(1,src)))
playsound(src.loc, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 50, 1, -3)
diff --git a/maps/RandomZLevels/wildwest.dm b/maps/RandomZLevels/wildwest.dm
index da7377e0b99..6464339edb0 100644
--- a/maps/RandomZLevels/wildwest.dm
+++ b/maps/RandomZLevels/wildwest.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
/* Code for the Wild West map by Brotemis
* Contains:
* Wish Granter
@@ -91,7 +90,7 @@
if("Peace")
user << "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence."
user << "You feel as if you just narrowly avoided a terrible fate..."
- for(var/mob/living/simple_animal/hostile/faithless/F in living_mob_list)
+ for(var/mob/living/simple_mob/faithless/F in living_mob_list)
F.health = -10
F.stat = 2
F.icon_state = "faithless_dead"
@@ -171,179 +170,4 @@
C << "You have regenerated."
C.visible_message("[usr] appears to wake from the dead, having healed all wounds.")
C.update_canmove()
- return 1
-=======
-/* Code for the Wild West map by Brotemis
- * Contains:
- * Wish Granter
- * Meat Grinder
- */
-
-/*
- * Wish Granter
- */
-/obj/machinery/wish_granter_dark
- name = "Wish Granter"
- desc = "You're not so sure about this, anymore..."
- icon = 'icons/obj/device.dmi'
- icon_state = "syndbeacon"
-
- anchored = 1
- density = 1
- use_power = 0
-
- var/chargesa = 1
- var/insistinga = 0
-
-/obj/machinery/wish_granter_dark/attack_hand(var/mob/living/carbon/human/user as mob)
- usr.set_machine(src)
-
- if(chargesa <= 0)
- user << "The Wish Granter lies silent."
- return
-
- else if(!istype(user, /mob/living/carbon/human))
- user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's."
- return
-
- else if(is_special_character(user))
- user << "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away."
-
- else if (!insistinga)
- user << "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?"
- insistinga++
-
- else
- chargesa--
- insistinga = 0
- var/wish = input("You want...","Wish") as null|anything in list("Power","Wealth","Immortality","To Kill","Peace")
- switch(wish)
- if("Power")
- user << "Your wish is granted, but at a terrible cost..."
- user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."
- if (!(LASER in user.mutations))
- user.mutations.Add(LASER)
- user << "You feel pressure building behind your eyes."
- if (!(COLD_RESISTANCE in user.mutations))
- user.mutations.Add(COLD_RESISTANCE)
- user << "Your body feels warm."
- if (!(XRAY in user.mutations))
- user.mutations.Add(XRAY)
- user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
- user.see_in_dark = 8
- user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
- user << "The walls suddenly disappear."
- user.dna.mutantrace = "shadow"
- user.update_mutantrace()
- if("Wealth")
- user << "Your wish is granted, but at a terrible cost..."
- user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."
- new /obj/structure/closet/syndicate/resources/everything(loc)
- user.dna.mutantrace = "shadow"
- user.update_mutantrace()
- if("Immortality")
- user << "Your wish is granted, but at a terrible cost..."
- user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."
- user.verbs += /mob/living/carbon/proc/immortality
- user.dna.mutantrace = "shadow"
- user.update_mutantrace()
- if("To Kill")
- user << "Your wish is granted, but at a terrible cost..."
- user << "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart."
- ticker.mode.traitors += user.mind
- user.mind.special_role = "traitor"
- var/datum/objective/hijack/hijack = new
- hijack.owner = user.mind
- user.mind.objectives += hijack
- user << "Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!"
- var/obj_count = 1
- for(var/datum/objective/OBJ in user.mind.objectives)
- user << "Objective #[obj_count]: [OBJ.explanation_text]"
- obj_count++
- user.dna.mutantrace = "shadow"
- user.update_mutantrace()
- if("Peace")
- user << "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence."
- user << "You feel as if you just narrowly avoided a terrible fate..."
- for(var/mob/living/simple_mob/faithless/F in living_mob_list)
- F.health = -10
- F.stat = 2
- F.icon_state = "faithless_dead"
-
-
-///////////////Meatgrinder//////////////
-
-
-/obj/effect/meatgrinder
- name = "Meat Grinder"
- desc = "What is that thing?"
- density = 1
- anchored = 1
- icon = 'icons/mob/critter.dmi'
- icon_state = "blob"
- var/triggerproc = "explode" //name of the proc thats called when the mine is triggered
- var/triggered = 0
-
-/obj/effect/meatgrinder/New()
- icon_state = "blob"
-
-/obj/effect/meatgrinder/HasEntered(AM as mob|obj)
- Bumped(AM)
-
-/obj/effect/meatgrinder/Bumped(mob/M as mob|obj)
-
- if(triggered) return
-
- if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))
- for(var/mob/O in viewers(world.view, src.loc))
- O << "[M] triggered the \icon[src] [src]"
- triggered = 1
- call(src,triggerproc)(M)
-
-/obj/effect/meatgrinder/proc/triggerrad1(mob)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- for(var/mob/O in viewers(world.view, src.loc))
- s.set_up(3, 1, src)
- s.start()
- explosion(mob, 1, 0, 0, 0)
- spawn(0)
- qdel(src)
-
-/obj/effect/meatgrinder
- name = "Meat Grinder"
- icon_state = "blob"
- triggerproc = "triggerrad1"
-
-
-/////For the Wishgranter///////////
-
-/mob/living/carbon/proc/immortality()
- set category = "Immortality"
- set name = "Resurrection"
-
- var/mob/living/carbon/C = usr
- if(!C.stat)
- C << "You're not dead yet!"
- return
- C << "Death is not your end!"
-
- spawn(rand(800,1200))
- if(C.stat == DEAD)
- dead_mob_list -= C
- living_mob_list += C
- C.stat = CONSCIOUS
- C.tod = null
- C.setToxLoss(0)
- C.setOxyLoss(0)
- C.setCloneLoss(0)
- C.SetParalysis(0)
- C.SetStunned(0)
- C.SetWeakened(0)
- C.radiation = 0
- C.heal_overall_damage(C.getBruteLoss(), C.getFireLoss())
- C.reagents.clear_reagents()
- C << "You have regenerated."
- C.visible_message("[usr] appears to wake from the dead, having healed all wounds.")
- C.update_canmove()
- return 1
->>>>>>> 3155d58... Merge pull request #5735 from Neerti/hopefully_last_master_sync
+ return 1
\ No newline at end of file