Merge branch 'master' of git://github.com/Baystation12/Baystation12

This commit is contained in:
unknown
2012-06-11 17:23:44 +03:00
124 changed files with 2810 additions and 1302 deletions
+17 -9
View File
@@ -1,4 +1,4 @@
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
#define CANDLE_LUM 3
@@ -27,14 +27,22 @@
attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter) && W:lit)
light()
else if(istype(W, /obj/item/weapon/match) && W:lit)
light()
else if(istype(W, /obj/item/candle) && W:lit)
light()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit)
light()
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
light()
else if(istype(W, /obj/item/candle))
var/obj/item/candle/C = W
if(C.lit)
light()
light(var/flavor_text = "\red [usr] lights the [name].")
+87 -80
View File
@@ -330,87 +330,93 @@ THERMAL GLASSES
/obj/item/clothing/suit/storage/labcoat/verb/toggle()
set name = "Toggle Labcoat Buttons"
set category = "Object"
if(src.icon_state == "labcoat_open")
src.icon_state = "labcoat"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat")
src.icon_state = "labcoat_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmo_open")
src.icon_state = "labcoat_cmo"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmo")
src.icon_state = "labcoat_cmo_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmoalt_open")
src.icon_state = "labcoat_cmoalt"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmoalt")
src.icon_state = "labcoat_cmoalt_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_gen_open")
src.icon_state = "labcoat_gen"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_gen")
src.icon_state = "labcoat_gen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_chem_open")
src.icon_state = "labcoat_chem"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_chem")
src.icon_state = "labcoat_chem_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_vir_open")
src.icon_state = "labcoat_vir"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_vir")
src.icon_state = "labcoat_vir_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_tox_open")
src.icon_state = "labcoat_tox"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_tox")
src.icon_state = "labcoat_tox_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labgreen_open")
src.icon_state = "labgreen"
usr << "You button up the labcoat."
else if(src.icon_state == "labgreen")
src.icon_state = "labgreen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_pink_open")
src.icon_state = "labcoat_pink"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_pink")
src.icon_state = "labcoat_pink_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_red_open")
src.icon_state = "labcoat_red"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_red")
src.icon_state = "labcoat_red_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cdc_open")
src.icon_state = "labcoat_cdc"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cdc")
src.icon_state = "labcoat_cdc_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "fr_jacket_open")
src.icon_state = "fr_jacket"
usr << "You button up the jacket."
else if(src.icon_state == "fr_jacket")
src.icon_state = "fr_jacket_open"
usr << "You unbutton the jacket."
else if(src.icon_state == "fr_sleeve_open")
src.icon_state = "fr_sleeve"
usr << "You button up the jacket."
else if(src.icon_state == "fr_sleeve")
src.icon_state = "fr_sleeve_open"
usr << "You unbutton the jacket."
if(!usr.canmove || usr.stat || usr.restrained())
return 0
else
usr << "Sorry! The suit you're wearing doesn't have buttons!"
usr.update_clothing()
if(src.icon_state == "labcoat_open")
src.icon_state = "labcoat"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat")
src.icon_state = "labcoat_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmo_open")
src.icon_state = "labcoat_cmo"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmo")
src.icon_state = "labcoat_cmo_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmoalt_open")
src.icon_state = "labcoat_cmoalt"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmoalt")
src.icon_state = "labcoat_cmoalt_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_gen_open")
src.icon_state = "labcoat_gen"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_gen")
src.icon_state = "labcoat_gen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_chem_open")
src.icon_state = "labcoat_chem"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_chem")
src.icon_state = "labcoat_chem_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_vir_open")
src.icon_state = "labcoat_vir"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_vir")
src.icon_state = "labcoat_vir_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_tox_open")
src.icon_state = "labcoat_tox"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_tox")
src.icon_state = "labcoat_tox_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labgreen_open")
src.icon_state = "labgreen"
usr << "You button up the labcoat."
else if(src.icon_state == "labgreen")
src.icon_state = "labgreen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_pink_open")
src.icon_state = "labcoat_pink"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_pink")
src.icon_state = "labcoat_pink_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_red_open")
src.icon_state = "labcoat_red"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_red")
src.icon_state = "labcoat_red_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cdc_open")
src.icon_state = "labcoat_cdc"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cdc")
src.icon_state = "labcoat_cdc_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "fr_jacket_open")
src.icon_state = "fr_jacket"
usr << "You button up the jacket."
else if(src.icon_state == "fr_jacket")
src.icon_state = "fr_jacket_open"
usr << "You unbutton the jacket."
else if(src.icon_state == "fr_sleeve_open")
src.icon_state = "fr_sleeve"
usr << "You button up the jacket."
else if(src.icon_state == "fr_sleeve")
src.icon_state = "fr_sleeve_open"
usr << "You unbutton the jacket."
else
usr << "Sorry! The suit you're wearing doesn't have buttons!"
usr.update_clothing()
/obj/item/clothing/head/ushanka/attack_self(mob/user as mob)
if(src.icon_state == "ushankadown")
@@ -422,6 +428,7 @@ THERMAL GLASSES
src.item_state = "ushankadown"
user << "You lower the ear flaps on the ushanka."
/obj/item/clothing/glasses/thermal/emp_act(severity)
if(istype(src.loc, /mob/living/carbon/human))
var/mob/living/carbon/human/M = src.loc
@@ -1,4 +1,4 @@
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
/*
CONTAINS:
@@ -124,71 +124,82 @@ ZIPPO
var/smoketime = 300
var/butt_count = 5 //count of butt sprite variations
proc
light(var/flavor_text = "[usr] lights the [name].")
put_out()
if (src.lit == -1)
return
src.lit = -1
src.damtype = "brute"
src.icon_state = icon_butt + "[rand(0,butt_count)]"
src.item_state = icon_off
src.desc = "A [src.name] butt."
src.name = "[src.name] butt"
attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter/zippo) && (W:lit > 0))
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
if(Z.lit > 0)
light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
else if(istype(W, /obj/item/weapon/lighter) && (W:lit > 0))
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit > 0)
light("\red After some fiddling, [user] manages to light their [name] with [W].")
else if(istype(W, /obj/item/weapon/match) && (W:lit > 0))
else if(istype(W, /obj/item/weapon/melee/energy/sword))
var/obj/item/weapon/melee/energy/sword/S = W
if(S.active)
light("\red [user] swings their [W], barely missing their nose. They light their [name] in the process.")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit > 0)
light("\red [user] lights their [name] with their [W].")
return
return
light(var/flavor_text = "[usr] lights the [name].")
if(!src.lit)
src.lit = 1
src.damtype = "fire"
src.icon_state = icon_on
src.item_state = icon_on
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
processing_objects.Add(src)
/obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights the [name].")
if(!src.lit)
src.lit = 1
src.damtype = "fire"
src.icon_state = icon_on
src.item_state = icon_on
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
processing_objects.Add(src)
process()
var/turf/location = get_turf(src)
src.smoketime--
if(src.smoketime < 1)
if(ismob(src.loc))
var/mob/living/M = src.loc
M << "\red Your [src.name] goes out."
put_out()
M.update_clothing()
else
put_out()
processing_objects.Remove(src)
return
if(location)
location.hotspot_expose(700, 5)
return
dropped(mob/user as mob)
if(src.lit == 1)
src.visible_message("\red [user] calmly drops and treads on the lit [src], putting it out instantly.")
/obj/item/clothing/mask/cigarette/process()
var/turf/location = get_turf(src)
src.smoketime--
if(src.smoketime < 1)
if(ismob(src.loc))
var/mob/living/M = src.loc
M << "\red Your [src.name] goes out."
put_out()
return ..()
M.update_clothing()
else
put_out()
processing_objects.Remove(src)
return
if(location)
location.hotspot_expose(700, 5)
return
/obj/item/clothing/mask/cigarette/dropped(mob/user as mob)
if(src.lit == 1)
src.visible_message("\red [user] calmly drops and treads on the lit [src], putting it out instantly.")
put_out()
return ..()
/obj/item/clothing/mask/cigarette/proc/put_out()
if (src.lit == -1)
return
src.lit = -1
src.damtype = "brute"
src.icon_state = icon_butt + "[rand(0,butt_count)]"
src.item_state = icon_off
src.desc = "A [src.name] butt."
src.name = "[src.name] butt"
////////////
// CIGARS //
@@ -252,24 +263,30 @@ ZIPPO
var/lastHolder = null
var/smoketime = 100
var/maxsmoketime = 100 //make sure this is equal to your smoketime
proc
light(var/flavor_text = "[usr] lights the [name].")
attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
light("\red [user] casually lights the [name] with [W], what a badass.")
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn())
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter/zippo) && (W:lit > 0))
light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
if(Z.lit > 0)
light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
else if(istype(W, /obj/item/weapon/lighter) && (W:lit > 0))
light("\red After some fiddling, [user] manages to light their [name] with [W].")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit > 0)
light("\red After some fiddling, [user] manages to light their [name] with [W].")
else if(istype(W, /obj/item/weapon/match) && (W:lit > 0))
light("\red [user] lights \his [name] with \his [W].")
return
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit > 0)
light("\red [user] lights their [name] with their [W].")
light(var/flavor_text = "[usr] lights the [name].")
if(!src.lit)
@@ -475,4 +492,4 @@ ZIPPO
if(lit)
user.total_luminosity -= 2
src.sd_SetLuminosity(2)
return
return
+260 -216
View File
@@ -71,242 +71,278 @@ WELDINGTOOOL
icon_state = "welder"
flags = FPRINT | TABLEPASS| 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 = 2.0
//Cost to make in the autolathe
m_amt = 70
g_amt = 30
//R&D tech level
origin_tech = "engineering=1"
var/welding = 0
var/status = 1
var/max_fuel = 20
proc
get_fuel()
remove_fuel(var/amount = 1, var/mob/M = null)
check_status()
toggle(var/message = 0)
eyecheck(mob/user as mob)
//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
/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)
return
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", random_fuel)
return
/obj/item/weapon/weldingtool/examine()
set src in usr
usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
return
examine()
set src in usr
usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
return
attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/screwdriver))
if(welding)
user << "\red Stop welding first!"
return
status = !status
if(status)
user << "\blue You resecure the welder."
else
user << "\blue The welder can now be attached and modified."
src.add_fingerprint(user)
/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/screwdriver))
if(welding)
user << "\red Stop welding first!"
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.u_equip(src)
else
user.u_equip(src)
src.master = F
src.layer = initial(src.layer)
user.u_equip(src)
if (user.client)
user.client.screen -= src
src.loc = F
src.add_fingerprint(user)
return
..()
return
process()
switch(welding)
if(0)
processing_objects.Remove(src)
return
if(1)
if(prob(5))//Welders left on now use up fuel, but lets not have them run out quite that fast
remove_fuel(1)
if(2)
if(prob(75))
remove_fuel(1)
//if you're actually actively welding, use fuel faster.
var/turf/location = src.loc
if(istype(location, /mob/))
var/mob/M = location
if(M.l_hand == src || M.r_hand == src)
location = get_turf(M)
if (istype(location, /turf))
location.hotspot_expose(700, 5)
afterattack(obj/O as obj, mob/user as mob)
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding)
O.reagents.trans_to(src, max_fuel)
user << "\blue Welder refueled"
playsound(src.loc, 'refill.ogg', 50, 1, -6)
return
else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding)
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
log_game("[key_name(user)] triggered a fueltank explosion.")
user << "\red That was stupid of you."
explosion(O.loc,-1,0,2)
if(O)
del(O)
return
if (src.welding)
remove_fuel(1)
var/turf/location = get_turf(user)
if (istype(location, /turf))
location.hotspot_expose(700, 50, 1)
return
attack_self(mob/user as mob)
toggle()
user.update_clothing()
return
///GET prop for fuel
get_fuel()
return reagents.get_reagent_amount("fuel")
///SET prop for fuel
///Will also turn it off if it is out of fuel
///The mob argument is not needed but if included will call eyecheck() on it if the welder is on.
remove_fuel(var/amount = 1, var/mob/M = null)
if(!welding || !check_status())
return 0
if(get_fuel() >= amount)
reagents.remove_reagent("fuel", amount)
check_status()
if(M)
eyecheck(M)//TODO:eyecheck should really be in mob not here
return 1
status = !status
if(status)
user << "\blue You resecure the welder."
else
if(M)
M << "\blue You need more welding fuel to complete this task."
return 0
user << "\blue 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.u_equip(src)
else
user.u_equip(src)
src.master = F
src.layer = initial(src.layer)
user.u_equip(src)
if (user.client)
user.client.screen -= src
src.loc = F
src.add_fingerprint(user)
return
..()
return
///Quick check to see if we even have any fuel and should shut off
///This could use a better name
check_status()
if((get_fuel() <= 0) && welding)
toggle(1)
return 0
return 1
//toggles the welder off and on
toggle(var/message = 0)
if(!status) return
src.welding = !( src.welding )
if (src.welding)
if (remove_fuel(1))
usr << "\blue You switch the [src] on."
/obj/item/weapon/weldingtool/process()
switch(welding)
//If off
if(0)
if(src.icon_state != "welder") //Check that the sprite is correct, if it isnt, it means toggle() was not called
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
processing_objects.Remove(src)
return
//Welders left on now use up fuel, but lets not have them run out quite that fast
if(1)
if(src.icon_state != "welder1") //Check that the sprite is correct, if it isnt, it means toggle() was not called
src.force = 15
src.damtype = "fire"
src.icon_state = "welder1"
processing_objects.Add(src)
else
usr << "\blue Need more fuel!"
src.welding = 0
return
else
if(!message)
usr << "\blue You switch the [src] off."
else
usr << "\blue The [src] shuts off!"
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
if(prob(5))
remove_fuel(1)
//If you're actually actively welding, use fuel faster.
//Is this actually used or set anywhere? - Nodrak
if(2)
if(prob(75))
remove_fuel(1)
eyecheck(mob/user as mob)
//check eye protection
if(!iscarbon(user)) return 1
var/safety = user:eyecheck()
switch(safety)
if(1)
usr << "\red Your eyes sting a little."
user.eye_stat += rand(1, 2)
if(user.eye_stat > 12)
user.eye_blurry += rand(3,6)
if(0)
usr << "\red Your eyes burn."
user.eye_stat += rand(2, 4)
if(user.eye_stat > 10)
user.eye_blurry += rand(4,10)
if(-1)
usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely."
user.eye_blurry += rand(12,20)
user.eye_stat += rand(12, 16)
if(user.eye_stat > 10 && safety < 2)
user << "\red Your eyes are really starting to hurt. This can't be good for you!"
if (prob(user.eye_stat - 25 + 1))
user << "\red You go blind!"
user.disabilities |= 128
else if (prob(user.eye_stat - 15 + 1))
user << "\red You go blind!"
user.eye_blind = 5
user.eye_blurry = 5
user.disabilities |= 1
// spawn(100)
// user.disabilities &= ~1 //Simpler to just leave them short sighted.
//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/))
var/mob/M = location
if(M.l_hand == src || M.r_hand == 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)
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding)
O.reagents.trans_to(src, max_fuel)
user << "\blue Welder refueled"
playsound(src.loc, 'refill.ogg', 50, 1, -6)
return
else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding)
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
log_game("[key_name(user)] triggered a fueltank explosion.")
user << "\red That was stupid of you."
explosion(O.loc,-1,0,2)
if(O)
del(O)
return
if (src.welding)
remove_fuel(1)
var/turf/location = get_turf(user)
if (istype(location, /turf))
location.hotspot_expose(700, 50, 1)
return
attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
if(S)
message_admins("It appears [M] has \"null\" where there should be a [user.zone_sel.selecting]. Check into this, and tell SkyMarshal: \"[M.type]\"")
return ..()
if(!S.robot || user.a_intent != "help")
return ..()
if(S.brute_dam)
S.heal_damage(15,0,0,1)
if(user != M)
user.visible_message("\red You patch some dents on \the [M]'s [S.display_name]",\
"\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src]",\
"You hear a welder.")
else
user.visible_message("\red You patch some dents on your [S.display_name]",\
"\red \The [user] patches some dents on their [S.display_name] with \the [src]",\
"You hear a welder.")
else
user << "Nothing to fix!"
/obj/item/weapon/weldingtool/attack_self(mob/user as mob)
toggle()
user.update_clothing()
return
//Returns the amount of fuel in the welder
/obj/item/weapon/weldingtool/proc/get_fuel()
return reagents.get_reagent_amount("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 || !check_fuel())
return 0
if(get_fuel() >= amount)
reagents.remove_reagent("fuel", amount)
check_fuel()
if(M)
eyecheck(M)
return 1
else
if(M)
M << "\blue You need more welding fuel to complete this task."
return 0
//Returns whether or not the welding tool is currently on.
/obj/item/weapon/weldingtool/proc/isOn()
return src.welding
//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/temp_welding)
//If we're turning it on
if(temp_welding > 0)
if (remove_fuel(1))
usr << "\blue The [src] switches on."
src.force = 15
src.damtype = "fire"
src.icon_state = "welder1"
processing_objects.Add(src)
else
return ..()
usr << "\blue Need more fuel!"
src.welding = 0
return
//Otherwise
else
usr << "\blue The [src] switches off."
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
//Turns off the welder if there is no more fuel (does this really need to be its own proc?)
/obj/item/weapon/weldingtool/proc/check_fuel()
if((get_fuel() <= 0) && welding)
toggle(1)
return 0
return 1
//Toggles the welder off and on
/obj/item/weapon/weldingtool/proc/toggle(var/message = 0)
if(!status) return
src.welding = !( src.welding )
if (src.welding)
if (remove_fuel(1))
usr << "\blue You switch the [src] on."
src.force = 15
src.damtype = "fire"
src.icon_state = "welder1"
processing_objects.Add(src)
else
usr << "\blue Need more fuel!"
src.welding = 0
return
else
if(!message)
usr << "\blue You switch the [src] off."
else
usr << "\blue The [src] shuts off!"
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
return
//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/user as mob)
if(!iscarbon(user)) return 1
var/safety = user:eyecheck()
switch(safety)
if(1)
usr << "\red Your eyes sting a little."
user.eye_stat += rand(1, 2)
if(user.eye_stat > 12)
user.eye_blurry += rand(3,6)
if(0)
usr << "\red Your eyes burn."
user.eye_stat += rand(2, 4)
if(user.eye_stat > 10)
user.eye_blurry += rand(4,10)
if(-1)
usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely."
user.eye_blurry += rand(12,20)
user.eye_stat += rand(12, 16)
if(user.eye_stat > 10 && safety < 2)
user << "\red Your eyes are really starting to hurt. This can't be good for you!"
if (prob(user.eye_stat - 25 + 1))
user << "\red You go blind!"
user.disabilities |= 128
else if (prob(user.eye_stat - 15 + 1))
user << "\red You go blind!"
user.eye_blind = 5
user.eye_blurry = 5
user.disabilities |= 1
// spawn(100)
// user.disabilities &= ~1 //Simpler to just leave them short sighted.
return
/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
if(!S.robot || user.a_intent != "help")
return ..()
if(S.brute_dam)
S.heal_damage(15,0,0,1)
if(user != M)
user.visible_message("\red You patch some dents on \the [M]'s [S.display_name]",\
"\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src]",\
"You hear a welder.")
else
user.visible_message("\red You patch some dents on your [S.display_name]",\
"\red \The [user] patches some dents on their [S.display_name] with \the [src]",\
"You hear a welder.")
else
user << "Nothing to fix!"
else
return ..()
/obj/item/weapon/weldingtool/largetank
name = "Industrial Welding Tool"
@@ -325,13 +361,21 @@ WELDINGTOOOL
/obj/item/weapon/weldingtool/experimental
name = "Experimental Welding Tool"
max_fuel = 80
max_fuel = 40
w_class = 3.0
m_amt = 70
g_amt = 120
origin_tech = "engineering=4;plasma=3"
icon_state = "ewelder"
var/last_gen = 0
/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve
var/gen_amount = ((world.time-last_gen)/25)
reagents += (gen_amount)
if(reagents > max_fuel)
reagents = max_fuel
/obj/item/weapon/wirecutters
name = "wirecutters"
desc = "This cuts wires."
@@ -346,10 +390,10 @@ WELDINGTOOOL
m_amt = 80
origin_tech = "materials=1;engineering=1"
New()
if(prob(50))
icon_state = "cutters-y"
item_state = "cutters_yellow"
/obj/item/weapon/wirecutters/New()
if(prob(50))
icon_state = "cutters-y"
item_state = "cutters_yellow"
/obj/item/weapon/wirecutters/attack(mob/M as mob, mob/user as mob)
if((M.handcuffed) && (istype(M:handcuffed, /obj/item/weapon/handcuffs/cable)))