mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
General:
Flamethrower construction code cleaned up. Signalers on doors should work fine now. Changelog Updated. Weapons: Xbow radiation has been lowered from 100 to 20 and it has a 5% chance to do no rad damage Admin: Attempted to clean up the code a bit Commands Removed/CommentedOut: air_status, radio_report, toggletintedweldhelmets, modifytemperature, givetestverbs, restartcontroller, fix_next_move, Cell Renamed: edit_memory - show_traitor_panel un\stealthadmin - show/hide_verbs Cargo: Engineering crates cost 10 and contain: 1 mechanical toolbox, 1 electrical toolbox, 1 glove, 1 toolbelt, 1 vest, and 1 hard hat. PowerCell crates cost 10 and contain: 1 electrical toolbox, 2 wire coils, 2 power cells, and 1 high power cell. Water/Fuel tank crates cost 15 and contain: 1 water tank and 1 fuel tank. Cyborg: Fixed the open cover icons To override a cyborg's laws you must emag it when the cover is open Emags can now unlock the cover git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1995 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -1,45 +1,19 @@
|
||||
/*
|
||||
CONTAINS:
|
||||
GETLINEEEEEEEEEEEEEEEEEEEEE
|
||||
(well not really but it should)
|
||||
|
||||
*/
|
||||
/obj/item/assembly/weld_rod
|
||||
desc = "A welding torch with metal rods attached to the flame tip."
|
||||
name = "Welder/Rods Assembly"
|
||||
icon_state = "welder-rods"
|
||||
item_state = "welder"
|
||||
var/obj/item/weapon/weldingtool/part1 = null
|
||||
var/obj/item/stack/rods/part2 = null
|
||||
var/status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
force = 3.0
|
||||
throwforce = 5.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
|
||||
/obj/item/assembly/w_r_ignite
|
||||
desc = "A welding torch and igniter connected by metal rods."
|
||||
name = "Welder/Rods/Igniter Assembly"
|
||||
icon_state = "welder-rods-igniter"
|
||||
item_state = "welder"
|
||||
var/obj/item/weapon/weldingtool/part1 = null
|
||||
var/obj/item/stack/rods/part2 = null
|
||||
var/obj/item/device/igniter/part3 = null
|
||||
var/status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
force = 3.0
|
||||
throwforce = 5.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
/obj/item/weapon/flamethrower/full/New(var/loc)
|
||||
..()
|
||||
weldtool = new/obj/item/weapon/weldingtool(src)
|
||||
weldtool.status = 0
|
||||
igniter = new/obj/item/device/igniter(src)
|
||||
igniter.secured = 0
|
||||
src.status = 1
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
|
||||
//TODO:Change this over to a slightly better build system
|
||||
/obj/item/weapon/flamethrower
|
||||
name = "flamethrower"
|
||||
icon_state = "flamethrower"
|
||||
icon = 'flamethrower.dmi'
|
||||
icon_state = "flamethrowerbase"
|
||||
item_state = "flamethrower_0"
|
||||
desc = "You are a firestarter!"
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
@@ -48,300 +22,195 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
var/processing = 0
|
||||
var/operating = 0
|
||||
var/throw_amount = 100
|
||||
var/lit = 0 //on or off
|
||||
var/turf/previousturf = null
|
||||
var/obj/item/weapon/weldingtool/part1 = null
|
||||
var/obj/item/stack/rods/part2 = null
|
||||
var/obj/item/device/igniter/part3 = null
|
||||
var/obj/item/weapon/tank/plasma/part4 = null
|
||||
m_amt = 500
|
||||
origin_tech = "combat=1;plasmatech=1"
|
||||
var
|
||||
status = 0
|
||||
throw_amount = 100
|
||||
lit = 0 //on or off
|
||||
operating = 0//cooldown
|
||||
turf/previousturf = null
|
||||
obj/item/weapon/weldingtool/weldtool = null
|
||||
obj/item/device/igniter/igniter = null
|
||||
obj/item/weapon/tank/plasma/ptank = null
|
||||
|
||||
|
||||
// PantsNote: Dumping this shit in here until I'm sure it works.
|
||||
|
||||
/obj/item/assembly/weld_rod/Del()
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/w_r_ignite/Del()
|
||||
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
//src.part3 = null
|
||||
del(src.part3)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/Del()
|
||||
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
//src.part3 = null
|
||||
del(src.part3)
|
||||
//src.part4 = null
|
||||
del(src.part4)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/weld_rod/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/wrench) )
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part2.loc = T
|
||||
src.part1.master = null
|
||||
src.part2.master = null
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
|
||||
del(src)
|
||||
|
||||
if (istype(W, /obj/item/device/igniter))
|
||||
var/obj/item/device/igniter/I = W
|
||||
if (!( I.secured ))
|
||||
return
|
||||
var/obj/item/assembly/weld_rod/S = src
|
||||
var/obj/item/assembly/w_r_ignite/R = new /obj/item/assembly/w_r_ignite( user )
|
||||
R.part1 = S.part1
|
||||
S.part1.loc = R
|
||||
S.part1.master = R
|
||||
R.part2 = S.part2
|
||||
S.part2.loc = R
|
||||
S.part2.master = R
|
||||
S.layer = initial(S.layer)
|
||||
if (user.client)
|
||||
user.client.screen -= S
|
||||
if (user.r_hand == S)
|
||||
user.u_equip(S)
|
||||
user.r_hand = R
|
||||
else
|
||||
user.u_equip(S)
|
||||
user.l_hand = R
|
||||
I.master = R
|
||||
I.layer = initial(I.layer)
|
||||
user.u_equip(I)
|
||||
if (user.client)
|
||||
user.client.screen -= I
|
||||
I.loc = R
|
||||
src.loc = R
|
||||
R.part3 = I
|
||||
R.layer = 20
|
||||
R.loc = user
|
||||
S.part1 = null
|
||||
S.part2 = null
|
||||
//S = null
|
||||
del(S)
|
||||
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/w_r_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part2.loc = T
|
||||
src.part3.loc = T
|
||||
src.part1.master = null
|
||||
src.part2.master = null
|
||||
src.part3.holder = null
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
src.part3 = null
|
||||
|
||||
del(src)
|
||||
return
|
||||
if (istype(W, /obj/item/weapon/screwdriver))
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The igniter is now secured!", 1)
|
||||
src.icon_state = "flamethrower"
|
||||
else
|
||||
user.show_message("\blue The igniter is now unsecured!", 1)
|
||||
src.icon_state = "flamethrower"
|
||||
src.add_fingerprint(user)
|
||||
Del()
|
||||
if(src.weldtool)
|
||||
del(src.weldtool)
|
||||
if(src.igniter)
|
||||
del(src.igniter)
|
||||
if(src.ptank)
|
||||
del(src.ptank)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/process()
|
||||
if(!lit)
|
||||
processing_items.Remove(src)
|
||||
return null
|
||||
|
||||
var/turf/location = src.loc
|
||||
if(istype(location, /mob/))
|
||||
var/mob/M = location
|
||||
if(M.l_hand == src || M.r_hand == src)
|
||||
location = M.loc
|
||||
|
||||
if(isturf(location)) //start a fire if possible
|
||||
location.hotspot_expose(700, 2)
|
||||
|
||||
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob)
|
||||
..()
|
||||
if(user.stat || user.restrained() || user.lying)
|
||||
process()
|
||||
if(!lit)
|
||||
processing_items.Remove(src)
|
||||
return null
|
||||
var/turf/location = src.loc
|
||||
if(istype(location, /mob/))
|
||||
var/mob/M = location
|
||||
if(M.l_hand == src || M.r_hand == src)
|
||||
location = M.loc
|
||||
if(isturf(location)) //start a fire if possible
|
||||
location.hotspot_expose(700, 2)
|
||||
return
|
||||
if (istype(W,/obj/item/weapon/tank/plasma))
|
||||
if(src.part4)
|
||||
user << "\red There appears to already be a plasma tank loaded in the flamethrower!"
|
||||
return
|
||||
src.part4 = W
|
||||
W.loc = src
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
user.u_equip(W)
|
||||
lit = 0
|
||||
force = 3
|
||||
damtype = "brute"
|
||||
icon_state = "flamethrower0"
|
||||
item_state = "flamethrower_0"
|
||||
else if (istype(W, /obj/item/device/analyzer) && get_dist(user, src) <= 1 && src.part4)
|
||||
var/obj/item/weapon/icon = src
|
||||
|
||||
for (var/mob/O in viewers(user, null))
|
||||
O << "\red [user] has used the analyzer on \icon[icon]"
|
||||
|
||||
var/pressure = src.part4.air_contents.return_pressure()
|
||||
|
||||
var/total_moles = src.part4.air_contents.total_moles()
|
||||
|
||||
user << "\blue Results of analysis of \icon[icon]"
|
||||
if (total_moles>0)
|
||||
var/o2_concentration = src.part4.air_contents.oxygen/total_moles
|
||||
var/n2_concentration = src.part4.air_contents.nitrogen/total_moles
|
||||
var/co2_concentration = src.part4.air_contents.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = src.part4.air_contents.toxins/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
|
||||
user << "\blue Pressure: [round(pressure,0.1)] kPa"
|
||||
user << "\blue Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(src.part4.air_contents.temperature-T0C)]°C"
|
||||
else
|
||||
user << "\blue Tank is empty!"
|
||||
|
||||
// PantsNote: Flamethrower disassmbly.
|
||||
else if (istype(W, /obj/item/weapon/screwdriver))
|
||||
var/obj/item/weapon/flamethrower/S = src
|
||||
if (( S.part4 ))
|
||||
return
|
||||
var/obj/item/assembly/w_r_ignite/R = new /obj/item/assembly/w_r_ignite( user )
|
||||
R.part1 = S.part1
|
||||
S.part1.loc = R
|
||||
S.part1.master = R
|
||||
R.part2 = S.part2
|
||||
S.part2.loc = R
|
||||
S.part2.master = R
|
||||
R.part3 = S.part3
|
||||
S.part3.loc = R
|
||||
S.part3.holder = R
|
||||
S.layer = initial(S.layer)
|
||||
if (user.client)
|
||||
user.client.screen -= S
|
||||
if (user.r_hand == S)
|
||||
user.u_equip(S)
|
||||
user.r_hand = R
|
||||
else
|
||||
user.u_equip(S)
|
||||
user.l_hand = R
|
||||
src.master = R
|
||||
src.layer = initial(src.layer)
|
||||
user.u_equip(src)
|
||||
if (user.client)
|
||||
user.client.screen -= src
|
||||
src.loc = R
|
||||
R.layer = 20
|
||||
R.loc = user
|
||||
S.part1 = null
|
||||
S.part2 = null
|
||||
S.part3 = null
|
||||
//S = null
|
||||
del(S)
|
||||
user << "\blue The igniter is now unsecured!"
|
||||
|
||||
|
||||
else return ..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/Topic(href,href_list[])
|
||||
if (href_list["close"])
|
||||
usr.machine = null
|
||||
usr << browse(null, "window=flamethrower")
|
||||
return
|
||||
if(usr.stat || usr.restrained() || usr.lying)
|
||||
return
|
||||
usr.machine = src
|
||||
if (href_list["light"])
|
||||
if(!src.part4) return
|
||||
if(src.part4.air_contents.toxins < 1) return
|
||||
lit = !(lit)
|
||||
update_icon()
|
||||
src.overlays = null
|
||||
if(igniter)
|
||||
src.overlays += "+igniter[src.status]"
|
||||
if(ptank)
|
||||
src.overlays += "+ptank"
|
||||
if(lit)
|
||||
icon_state = "flamethrower1"
|
||||
src.overlays += "+lit"
|
||||
item_state = "flamethrower_1"
|
||||
force = 17
|
||||
damtype = "fire"
|
||||
processing_items.Add(src)
|
||||
else
|
||||
icon_state = "flamethrower0"
|
||||
item_state = "flamethrower_0"
|
||||
return
|
||||
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(user.stat || user.restrained() || user.lying) return
|
||||
if(iswrench(W) && (!src.status))//Taking this apart
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
if(weldtool)
|
||||
src.weldtool.loc = T
|
||||
src.weldtool = null
|
||||
if(igniter)
|
||||
src.igniter.loc = T
|
||||
src.igniter = null
|
||||
if(ptank)
|
||||
src.ptank.loc = T
|
||||
src.ptank = null
|
||||
new/obj/item/stack/rods(T,1)
|
||||
spawn(0)
|
||||
del(src)
|
||||
return
|
||||
|
||||
if((isscrewdriver(W))&&(igniter)&&(!lit))
|
||||
src.status = (!src.status)
|
||||
if (src.status)
|
||||
user.show_message("\blue The igniter is now secured!", 1)
|
||||
else
|
||||
user.show_message("\blue The igniter is now unsecured!", 1)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/device/igniter))
|
||||
var/obj/item/device/igniter/I = W
|
||||
if(I.secured) return 0
|
||||
user.remove_from_mob(I)
|
||||
I.loc = src
|
||||
igniter = I
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(istype(W,/obj/item/weapon/tank/plasma))
|
||||
if(src.ptank)
|
||||
user << "\red There appears to already be a plasma tank loaded in the flamethrower!"
|
||||
return
|
||||
src.ptank = W
|
||||
W.loc = src
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
user.u_equip(W)
|
||||
lit = 0
|
||||
force = 3
|
||||
damtype = "brute"
|
||||
if (href_list["amount"])
|
||||
src.throw_amount = src.throw_amount + text2num(href_list["amount"])
|
||||
src.throw_amount = max(50,min(5000,src.throw_amount))
|
||||
if (href_list["remove"])
|
||||
if(!src.part4) return
|
||||
var/obj/item/weapon/tank/plasma/A = src.part4
|
||||
A.loc = get_turf(src)
|
||||
A.layer = initial(A.layer)
|
||||
src.part4 = null
|
||||
lit = 0
|
||||
force = 3
|
||||
damtype = "brute"
|
||||
icon_state = "flamethrower"
|
||||
item_state = "flamethrower_0"
|
||||
usr.machine = null
|
||||
usr << browse(null, "window=flamethrower")
|
||||
for(var/mob/M in viewers(1, src.loc))
|
||||
if ((M.client && M.machine == src))
|
||||
src.attack_self(M)
|
||||
return
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if((istype(W, /obj/item/device/analyzer)) && (get_dist(user, src) <= 1) && (src.ptank))
|
||||
var/obj/item/weapon/icon = src
|
||||
for (var/mob/O in viewers(user, null))
|
||||
O << "\red [user] has used the analyzer on \icon[icon]"
|
||||
var/pressure = src.ptank.air_contents.return_pressure()
|
||||
var/total_moles = src.ptank.air_contents.total_moles()
|
||||
|
||||
/obj/item/weapon/flamethrower/attack_self(mob/user as mob)
|
||||
if(user.stat || user.restrained() || user.lying)
|
||||
user << "\blue Results of analysis of \icon[icon]"
|
||||
if (total_moles>0)
|
||||
var/o2_concentration = src.ptank.air_contents.oxygen/total_moles
|
||||
var/n2_concentration = src.ptank.air_contents.nitrogen/total_moles
|
||||
var/co2_concentration = src.ptank.air_contents.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = src.ptank.air_contents.toxins/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
|
||||
user << "\blue Pressure: [round(pressure,0.1)] kPa"
|
||||
user << "\blue Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(src.ptank.air_contents.temperature-T0C)]°C"
|
||||
else
|
||||
user << "\blue Tank is empty!"
|
||||
return
|
||||
..()
|
||||
return
|
||||
user.machine = src
|
||||
if (!src.part4)
|
||||
user << "\red Attach a plasma tank first!"
|
||||
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
if(user.stat || user.restrained() || user.lying) return
|
||||
user.machine = src
|
||||
if (!src.ptank)
|
||||
user << "\red Attach a plasma tank first!"
|
||||
return
|
||||
var/dat = text("<TT><B>Flamethrower (<A HREF='?src=\ref[src];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [src.ptank.air_contents.return_pressure()]<BR>\nAmount to throw: <A HREF='?src=\ref[src];amount=-100'>-</A> <A HREF='?src=\ref[src];amount=-10'>-</A> <A HREF='?src=\ref[src];amount=-1'>-</A> [src.throw_amount] <A HREF='?src=\ref[src];amount=1'>+</A> <A HREF='?src=\ref[src];amount=10'>+</A> <A HREF='?src=\ref[src];amount=100'>+</A><BR>\n<A HREF='?src=\ref[src];remove=1'>Remove plasmatank</A> - <A HREF='?src=\ref[src];close=1'>Close</A></TT>")
|
||||
user << browse(dat, "window=flamethrower;size=600x300")
|
||||
onclose(user, "flamethrower")
|
||||
return
|
||||
var/dat = text("<TT><B>Flamethrower (<A HREF='?src=\ref[src];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [src.part4.air_contents.return_pressure()]<BR>\nAmount to throw: <A HREF='?src=\ref[src];amount=-100'>-</A> <A HREF='?src=\ref[src];amount=-10'>-</A> <A HREF='?src=\ref[src];amount=-1'>-</A> [src.throw_amount] <A HREF='?src=\ref[src];amount=1'>+</A> <A HREF='?src=\ref[src];amount=10'>+</A> <A HREF='?src=\ref[src];amount=100'>+</A><BR>\n<A HREF='?src=\ref[src];remove=1'>Remove plasmatank</A> - <A HREF='?src=\ref[src];close=1'>Close</A></TT>")
|
||||
user << browse(dat, "window=flamethrower;size=600x300")
|
||||
onclose(user, "flamethrower")
|
||||
return
|
||||
|
||||
|
||||
// gets this from turf.dm turf/dblclick
|
||||
Topic(href,href_list[])
|
||||
if (href_list["close"])
|
||||
usr.machine = null
|
||||
usr << browse(null, "window=flamethrower")
|
||||
return
|
||||
if(usr.stat || usr.restrained() || usr.lying) return
|
||||
usr.machine = src
|
||||
if (href_list["light"])
|
||||
if(!src.ptank) return
|
||||
if(src.ptank.air_contents.toxins < 1) return
|
||||
if(!src.status) return
|
||||
lit = !(lit)
|
||||
if(lit)
|
||||
force = 17
|
||||
damtype = "fire"
|
||||
processing_items.Add(src)
|
||||
else
|
||||
force = 3
|
||||
damtype = "brute"
|
||||
if (href_list["amount"])
|
||||
src.throw_amount = src.throw_amount + text2num(href_list["amount"])
|
||||
src.throw_amount = max(50,min(5000,src.throw_amount))
|
||||
if (href_list["remove"])
|
||||
if(!src.ptank) return
|
||||
var/obj/item/weapon/tank/plasma/A = src.ptank
|
||||
A.loc = get_turf(src)
|
||||
A.layer = initial(A.layer)
|
||||
src.ptank = null
|
||||
lit = 0
|
||||
force = 3
|
||||
damtype = "brute"
|
||||
usr.machine = null
|
||||
usr << browse(null, "window=flamethrower")
|
||||
for(var/mob/M in viewers(1, src.loc))
|
||||
if ((M.client && M.machine == src))
|
||||
src.attack_self(M)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
//Called from turf.dm turf/dblclick
|
||||
/obj/item/weapon/flamethrower/proc/flame_turf(turflist)
|
||||
if(!lit || operating) return
|
||||
operating = 1
|
||||
@@ -353,9 +222,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
|
||||
continue //so we don't burn the tile we be standin on
|
||||
if(previousturf && LinkBlocked(previousturf, T))
|
||||
break
|
||||
|
||||
ignite_turf(T)
|
||||
|
||||
sleep(1)
|
||||
previousturf = null
|
||||
operating = 0
|
||||
@@ -364,15 +231,15 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
|
||||
src.attack_self(M)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target)
|
||||
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
|
||||
|
||||
//Transfer 5% of current tank air contents to turf
|
||||
var/datum/gas_mixture/air_transfer = part4.air_contents.remove_ratio(0.05)
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.05)
|
||||
air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
|
||||
target.assume_air(air_transfer)
|
||||
|
||||
//Burn it based on transfered gas
|
||||
//target.hotspot_expose(part4.air_contents.temperature*2,300)
|
||||
target.hotspot_expose((part4.air_contents.temperature*2) + 380,500) // -- More of my "how do I shot fire?" dickery. -- TLE
|
||||
//location.hotspot_expose(1000,500,1)
|
||||
target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500) // -- More of my "how do I shot fire?" dickery. -- TLE
|
||||
//location.hotspot_expose(1000,500,1)
|
||||
return
|
||||
@@ -184,10 +184,12 @@
|
||||
nodamage = 1
|
||||
New()
|
||||
..()
|
||||
effects["radiation"] = 100
|
||||
effects["radiation"] = 20
|
||||
effectprob["radiation"] = 95
|
||||
effects["drowsyness"] = 5
|
||||
effectprob["drowsyness"] = 10
|
||||
effectmod["radiation"] = ADD
|
||||
effectmod["drowsyness"] = ADD
|
||||
effectmod["drowsyness"] = SET
|
||||
|
||||
largebolt
|
||||
name = "largebolt"
|
||||
@@ -197,10 +199,12 @@
|
||||
mobdamage = list(BRUTE = 10, BURN = 0, TOX = 10, OXY = 0, CLONE = 0)
|
||||
New()
|
||||
..()
|
||||
effects["radiation"] = 200
|
||||
effects["drowsyness"] = 15
|
||||
effects["radiation"] = 40
|
||||
effectprob["radiation"] = 95
|
||||
effects["drowsyness"] = 10
|
||||
effectprob["drowsyness"] = 25
|
||||
effectmod["radiation"] = ADD
|
||||
effectmod["drowsyness"] = ADD
|
||||
effectmod["drowsyness"] = SET
|
||||
|
||||
freeze
|
||||
name = "freeze beam"
|
||||
|
||||
@@ -52,7 +52,7 @@ WELDINGTOOOL
|
||||
origin_tech = "engineering=1"
|
||||
var
|
||||
welding = 0
|
||||
status = 0
|
||||
status = 1
|
||||
max_fuel = 20
|
||||
|
||||
|
||||
@@ -72,41 +72,41 @@ WELDINGTOOOL
|
||||
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if (istype(W,/obj/item/weapon/screwdriver))
|
||||
if(istype(W,/obj/item/weapon/screwdriver))
|
||||
if(welding)
|
||||
user << "\red Stop welding first!"
|
||||
return
|
||||
status = !status
|
||||
if (status)
|
||||
if(status)
|
||||
user << "\blue You resecure the welder."
|
||||
else
|
||||
user << "\blue The welder can now be attached and modified."
|
||||
src.add_fingerprint(user)
|
||||
else if (status == 1 && istype(W,/obj/item/stack/rods))
|
||||
return
|
||||
|
||||
if((!status) && (istype(W,/obj/item/stack/rods)))
|
||||
var/obj/item/stack/rods/R = W
|
||||
R.use(1)
|
||||
var/obj/item/assembly/weld_rod/F = new /obj/item/assembly/weld_rod( user )
|
||||
var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
|
||||
src.loc = F
|
||||
F.part1 = src
|
||||
F.weldtool = src
|
||||
if (user.client)
|
||||
user.client.screen -= src
|
||||
if (user.r_hand == src)
|
||||
user.u_equip(src)
|
||||
user.r_hand = F
|
||||
else
|
||||
user.u_equip(src)
|
||||
user.l_hand = F
|
||||
R.master = F
|
||||
src.master = F
|
||||
src.layer = initial(src.layer)
|
||||
user.u_equip(src)
|
||||
if (user.client)
|
||||
user.client.screen -= src
|
||||
src.loc = F
|
||||
F.part2 = W
|
||||
F.layer = 20
|
||||
R.layer = 20
|
||||
F.loc = user
|
||||
src.add_fingerprint(user)
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
process()
|
||||
@@ -196,7 +196,7 @@ WELDINGTOOOL
|
||||
|
||||
//toggles the welder off and on
|
||||
toggle(var/message = 0)
|
||||
if(status > 1) return
|
||||
if(!status) return
|
||||
src.welding = !( src.welding )
|
||||
if (src.welding)
|
||||
if (remove_fuel(1))
|
||||
|
||||
@@ -78,9 +78,11 @@
|
||||
if(isscrewdriver(W))
|
||||
if(src.secured)
|
||||
Unsecure()
|
||||
b_stat = 1
|
||||
user.show_message("\blue The [src.name] can now be attached!")
|
||||
else
|
||||
Secure()
|
||||
b_stat = 0
|
||||
user.show_message("\blue The [src.name] is ready!")
|
||||
return
|
||||
else
|
||||
|
||||
+101
-27
@@ -1,3 +1,98 @@
|
||||
|
||||
/obj/item/weapon/tank
|
||||
name = "tank"
|
||||
icon = 'tank.dmi'
|
||||
|
||||
var/datum/gas_mixture/air_contents = null
|
||||
var/distribute_pressure = ONE_ATMOSPHERE
|
||||
flags = FPRINT | TABLEPASS | CONDUCT | ONBACK
|
||||
|
||||
pressure_resistance = ONE_ATMOSPHERE*5
|
||||
|
||||
force = 5.0
|
||||
throwforce = 10.0
|
||||
throw_speed = 1
|
||||
throw_range = 4
|
||||
var/volume = 70
|
||||
|
||||
/obj/item/weapon/tank/anesthetic
|
||||
name = "Gas Tank (Sleeping Agent)"
|
||||
desc = "Seriously, who uses this anymore?"
|
||||
icon_state = "anesthetic"
|
||||
item_state = "an_tank"
|
||||
|
||||
/obj/item/weapon/tank/jetpack
|
||||
name = "Jetpack (Oxygen)"
|
||||
desc = "A pack of jets it appears."
|
||||
icon_state = "jetpack0"
|
||||
var/on = 0.0
|
||||
w_class = 4.0
|
||||
item_state = "jetpack"
|
||||
var/datum/effects/system/ion_trail_follow/ion_trail
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
//volume = 140 //jetpack sould be larger, but then it will never deplete -rastaf0
|
||||
|
||||
/obj/item/weapon/tank/jetpack/void_jetpack
|
||||
name = "Void Jetpack (oxygen)"
|
||||
desc = "It works well in a void."
|
||||
icon_state = "voidjetpack0"
|
||||
item_state = "jetpack"
|
||||
|
||||
/obj/item/weapon/tank/jetpack/black_jetpack
|
||||
name = "Black Jetpack (oxygen)"
|
||||
desc = "A black model of jetpacks."
|
||||
icon_state = "black_jetpack0"
|
||||
item_state = "black_jetpack"
|
||||
|
||||
/obj/item/weapon/tank/oxygen
|
||||
name = "Gas Tank (Oxygen)"
|
||||
desc = "A tank of oxygen"
|
||||
icon_state = "oxygen"
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
|
||||
/obj/item/weapon/tank/oxygen/yellow
|
||||
name = "Gas Tank (Oxygen)"
|
||||
desc = "A tank of oxygen meant for firefighters."
|
||||
icon_state = "oxygen_f"
|
||||
|
||||
/obj/item/weapon/tank/oxygen/red
|
||||
name = "Gas Tank (Oxygen)"
|
||||
desc = "A tank of oxygen meant for firefighters."
|
||||
icon_state = "oxygen_fr"
|
||||
|
||||
/obj/item/weapon/tank/air
|
||||
name = "Gas Tank (Air Mix)"
|
||||
desc = "Mixed anyone?"
|
||||
icon_state = "oxygen"
|
||||
|
||||
/obj/item/weapon/tank/plasma
|
||||
name = "Gas Tank (BIOHAZARD)"
|
||||
desc = "Contains dangerous plasma. Do not inhale."
|
||||
icon_state = "plasma"
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen
|
||||
name = "Emergency Oxygen Tank"
|
||||
desc = "Used for emergencies. Contains very little oxygen, so try to conserve it until you actualy need it."
|
||||
icon_state = "emergency"
|
||||
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT
|
||||
w_class = 2.0
|
||||
force = 4.0
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/engi
|
||||
icon_state = "emergency_engi"
|
||||
name = "Engineering Emergency Oxygen Tank"
|
||||
volume = 6 //Engineers are always superior. -errorage (dangercon 2011)
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/double
|
||||
icon_state = "emergency_double"
|
||||
name = "Double Emergency Oxygen Tank"
|
||||
volume = 10 //These have the same emoung of gas in them as air tanks, but can be worn on your belt -errorage (dangercon 2011)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/tank/blob_act()
|
||||
if(prob(50))
|
||||
var/turf/location = src.loc
|
||||
@@ -389,32 +484,11 @@
|
||||
|
||||
..()
|
||||
// PantsNote: More flamethrower assembly code. WOO!
|
||||
if (istype(W, /obj/item/assembly/w_r_ignite))
|
||||
var/obj/item/assembly/w_r_ignite/S = W
|
||||
if (!( S.status ))
|
||||
return
|
||||
var/obj/item/weapon/flamethrower/R = new
|
||||
R.part1 = S.part1
|
||||
S.part1.loc = R
|
||||
S.part1.master = R
|
||||
|
||||
R.part2 = S.part2
|
||||
S.part2.loc = R
|
||||
S.part2.master = R
|
||||
|
||||
R.part3 = S.part3
|
||||
S.part3.loc = R
|
||||
S.part3.master = R
|
||||
|
||||
src.master = R
|
||||
R.part4 = src
|
||||
|
||||
user.put_in_hand(R)
|
||||
if (istype(W, /obj/item/weapon/flamethrower))
|
||||
var/obj/item/weapon/flamethrower/F = W
|
||||
if ((!F.status)||(F.ptank)) return
|
||||
src.master = F
|
||||
F.ptank = src
|
||||
user.before_take_item(src)
|
||||
src.loc = R
|
||||
|
||||
S.part1 = null
|
||||
S.part2 = null
|
||||
S.part3 = null
|
||||
del(S)
|
||||
src.loc = F
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user