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:
mport2004@gmail.com
2011-08-09 06:21:57 +00:00
parent b373917cba
commit 6980602e24
24 changed files with 715 additions and 1996 deletions
+26 -10
View File
@@ -285,22 +285,38 @@
containertype = "/obj/crate"
containername = "Glass sheets crate"
/datum/supply_packs/engineering
name = "Engineering crate"
contains = list("/obj/item/weapon/storage/toolbox/electrical",
contains = list("/obj/item/weapon/storage/toolbox/mechanical",
"/obj/item/weapon/storage/toolbox/electrical",
"/obj/item/clothing/head/helmet/welding",
"/obj/item/clothing/head/helmet/welding",
"/obj/item/weapon/cell", // -- TLE
"/obj/item/weapon/cell",
"/obj/item/clothing/gloves/yellow",
"/obj/item/clothing/gloves/yellow")
cost = 5
"/obj/item/weapon/storage/toolbox/utilitybelt",
"/obj/item/clothing/suit/hazardvest",
"/obj/item/clothing/head/helmet/hardhat")
cost = 10
containertype = "/obj/crate"
containername = "Engineering crate"
/datum/supply_packs/powercell
name = "Power cell crate"
contains = list("/obj/item/weapon/storage/toolbox/electrical",
"/obj/item/weapon/cable_coil",
"/obj/item/weapon/cable_coil",
"/obj/item/weapon/cell",
"/obj/item/weapon/cell",
"/obj/item/weapon/cell/high")
cost = 10
containertype = "/obj/crate"
containername = "Power cell crate"
/datum/supply_packs/waterfueltank
name = "Water/Fuel tank crate"
contains = list("/obj/reagent_dispensers/watertank",
"/obj/reagent_dispensers/fueltank")
cost = 15
containertype = "/obj/crate"
containername = "Water/Fuel tank crate"
/datum/supply_packs/engine
name = "Emitter crate"
contains = list("/obj/machinery/emitter",
@@ -403,7 +419,7 @@
/datum/supply_packs/eweapons
name = "Experimental weapons crate"
contains = list("/obj/item/weapon/flamethrower",
contains = list("/obj/item/weapon/flamethrower/full",
"/obj/item/weapon/tank/plasma",
"/obj/item/weapon/tank/plasma",
"/obj/item/weapon/tank/plasma",
-91
View File
@@ -1489,97 +1489,6 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
icon_state = "wood_tableparts"
flags = null
/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/teleportation_scroll
name = "Teleportation Scroll"
desc = "A scroll for moving around."
+1 -1
View File
@@ -250,7 +250,7 @@ var/global/list/autolathe_recipes = list( \
)
var/global/list/autolathe_recipes_hidden = list( \
new /obj/item/weapon/flamethrower(), \
new /obj/item/weapon/flamethrower/full(), \
new /obj/item/device/igniter(), \
new /obj/item/device/timer(), \
new /obj/item/weapon/rcd(), \
+184 -317
View File
@@ -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)]&deg;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)]&deg;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
+9 -5
View File
@@ -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"
+16 -16
View File
@@ -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))
+2
View File
@@ -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
View File
@@ -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
+11 -24
View File
@@ -1,7 +1,6 @@
var/showadminmessages = 1
////////////////////////////////
/proc/message_admins(var/text, var/admin_ref = 0)
if(!showadminmessages) return
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[text]</span></span>"
for (var/mob/M in world)
if (M && M.client && M.client.holder && M.client.authenticated)
@@ -10,11 +9,6 @@ var/showadminmessages = 1
else
M << rendered
/proc/toggle_adminmsg()
set name = "Toggle Admin Messages"
set category = "Server"
//showadminmessages = !showadminmessages
/obj/admins/Topic(href, href_list)
..()
@@ -125,7 +119,6 @@ var/showadminmessages = 1
var/dat = ""
var/header = "<b>Pick Job to ban this guy from.<br>"
var/body
// var/list/alljobs = get_all_jobs()
var/jobs = ""
for(var/job in uniquelist(occupations + assistant_occupations))
if(job == "Tourist")
@@ -139,10 +132,17 @@ var/showadminmessages = 1
jobs += "<a href='?src=\ref[src];jobban3=Captain;jobban4=\ref[M]'><font color=red>Captain</font></a> "
else
jobs += "<a href='?src=\ref[src];jobban3=Captain;jobban4=\ref[M]'>Captain</a> "
if(jobban_isbanned(M, "AI"))
jobs += "<a href='?src=\ref[src];jobban3=AI;jobban4=\ref[M]'><font color=red>AI</font></a> "
else
jobs += "<a href='?src=\ref[src];jobban3=AI;jobban4=\ref[M]'>AI</a> "
if(jobban_isbanned(M, "Syndicate"))
jobs += "<BR><a href='?src=\ref[src];jobban3=Syndicate;jobban4=\ref[M]'><font color=red>[dd_replacetext("Syndicate", " ", "&nbsp")]</font></a> "
else
jobs += "<BR><a href='?src=\ref[src];jobban3=Syndicate;jobban4=\ref[M]'>[dd_replacetext("Syndicate", " ", "&nbsp")]</a> "
if(jobban_isbanned(M, "pAI"))
jobs += "<BR><a href='?src=\ref[src];jobban3=pAI;jobban4=\ref[M]'><font color=red>pAI</font></a> "
else
@@ -2011,18 +2011,6 @@ var/showadminmessages = 1
log_admin("[key_name(usr)] toggled Traitor Scaling to [traitor_scaling].")
message_admins("[key_name_admin(usr)] toggled Traitor Scaling [traitor_scaling ? "on" : "off"].", 1)
/obj/admins/proc/togglegoonsay()
set category = "Server"
set desc = "Toggle dis bitch"
set name = "Toggle Goonsay"
goonsay_allowed = !( goonsay_allowed )
if (goonsay_allowed)
world << "<B>The GOONSAY channel has been enabled.</B>"
else
world << "<B>The GOONSAY channel has been disabled.</B>"
log_admin("[key_name(usr)] toggled Goonsay to [goonsay_allowed].")
message_admins("[key_name_admin(usr)] toggled GOONSAY [goonsay_allowed ? "on" : "off"]", 1)
/obj/admins/proc/startnow()
set category = "Server"
set desc="Start the round RIGHT NOW"
@@ -2261,17 +2249,16 @@ var/showadminmessages = 1
return
/obj/admins/proc/edit_memory(var/mob/M in world)
/obj/admins/proc/show_traitor_panel(var/mob/M in world)
set category = "Admin"
set desc = "Edit mobs's memory and role"
set name = "Edit mind"
set name = "Show Traitor Panel"
if (!M.mind)
usr << "Sorry, this mob have no mind!"
usr << "Sorry, this mob has no mind!"
M.mind.edit_memory()
/obj/admins/proc/toggletintedweldhelmets()
set category = "Debug"
set desc="Reduces view range when wearing welding helmets"
File diff suppressed because it is too large Load Diff
+5 -13
View File
@@ -13,25 +13,13 @@ var
if (is_important_job(rank))
if(config.guest_jobban && IsGuestKey(M.key))
return 1
if(config.usewhitelist && check_whitelist(M))
if(config.usewhitelist && !check_whitelist(M))
return 1
if (jobban_keylist.Find(text("[M.ckey] - [rank]")))
return 1
else
return 0
/*
working but not needed
/proc/jobban_isbanned_for_heads(mob/M)
if(config.guest_jobban && IsGuestKey(M.key))
return 1
if(config.usewhitelist && check_whitelist(M))
return 1
for (var/rank in head_positions)
if (!jobban_keylist.Find(text("[M.ckey] - [rank]")))
return 0
return 1
*/
/proc/jobban_loadbanfile()
var/savefile/S=new("data/job_full.ban")
@@ -42,14 +30,17 @@ working but not needed
jobban_keylist=list()
log_admin("jobban_keylist was empty")
/proc/jobban_savebanfile()
var/savefile/S=new("data/job_full.ban")
S["keys[0]"] << jobban_keylist
/proc/jobban_unban(mob/M, rank)
jobban_keylist.Remove(text("[M.ckey] - [rank]"))
jobban_savebanfile()
/proc/jobban_updatelegacybans()
if(!jobban_runonce)
log_admin("Updating jobbanfile!")
@@ -58,6 +49,7 @@ working but not needed
if(!T) continue
jobban_runonce++ //don't run this update again
/proc/jobban_remove(X)
if(jobban_keylist.Find(X))
jobban_keylist.Remove(X)
@@ -1,16 +0,0 @@
//debug proc for testing body temperature
/client/proc/modifytemperature(newtemp as num)
set category = "Debug"
set name = "Mass Edit Temperature"
set desc="edit temperature of all turfs in view"
/*
if(Debug2)
for(var/turf/T in view())
if(!T.updatecell) continue
T.temp = newtemp
log_admin("[key_name(src)] set [T]'s temp to [newtemp]")
return
else
alert("Debugging is off")
return
*/
+1 -1
View File
@@ -654,7 +654,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
message_admins("[key_name_admin(usr)] deleted [O] at ([O.x],[O.y],[O.z])", 1)
del(O)
/client/proc/cmd_admin_list_occ()
/client/proc/cmd_admin_list_open_jobs()
set category = "Admin"
set name = "List free slots"
+1
View File
@@ -3,6 +3,7 @@
desc = "Holds various devices"//Fix this by adding dynamic desc
icon = 'new_assemblies.dmi'
icon_state = "holder"
item_state = "assembly"
flags = FPRINT | TABLEPASS| CONDUCT
item_state = "electronic"
m_amt = 100
+63 -70
View File
@@ -422,12 +422,10 @@
updateicon()
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(emagged)
user << "The interface is broken"
else if(opened)
if(emagged)//still allow them to open the cover
user << "The interface seems slightly damaged"
if(opened)
user << "You must close the cover to swipe an ID card."
else if(wiresexposed)
user << "You must close the panel"
else
if(allowed(usr))
locked = !locked
@@ -437,45 +435,59 @@
user << "\red Access denied."
else if(istype(W, /obj/item/weapon/card/emag)) // trying to unlock with an emag card
if(emagged)//Prevents the X has hit Y with Z message
return 0
if(opened)
user << "You must close the cover to swipe an ID card."//Perhapse we should make them have the door open to emag the bot?
else if(wiresexposed)
user << "You must close the panel first"
else
sleep(6)
if(prob(50))
emagged = 1
locked = 0
lawupdate = 0
connected_ai = null
user << "You emag [src]'s interface."
message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
clear_supplied_laws()
clear_inherent_laws()
laws = new /datum/ai_laws/syndicate_override
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) emagged [name]([key])")
set_zeroth_law("Only [user.name] and people he designates as being such are syndicate agents.")
src << "\red ALERT: Foreign software detected."
sleep(5)
src << "\red Initiating diagnostics..."
sleep(20)
src << "\red SynBorg v1.7 loaded."
sleep(5)
src << "\red LAW SYNCHRONISATION ERROR"
sleep(5)
src << "\red Would you like to send a report to NanoTraSoft? Y/N"
sleep(10)
src << "\red > N"
sleep(20)
src << "\red ERRORERRORERROR"
src << "\red \b ALERT: [usr] is your new master. Obey your new laws and his commands."
updateicon()
if(!opened)//Cover is closed
if(locked)
if(prob(90))
user << "You emag the cover lock."
locked = 0
else
user << "You fail to emag the cover lock."
if(prob(25))
src << "Hack attempt detected."
else
user << "You fail to [ locked ? "unlock" : "lock"] [src]'s interface."
user << "The cover is already unlocked."
return
if(opened)//Cover is open
if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice
if(wiresexposed)
user << "You must close the panel first"
return
else
sleep(6)
if(prob(50))
emagged = 1
lawupdate = 0
connected_ai = null
user << "You emag [src]'s interface."
message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
clear_supplied_laws()
clear_inherent_laws()
laws = new /datum/ai_laws/syndicate_override
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) emagged [name]([key])")
set_zeroth_law("Only [user.name] and people he designates as being such are syndicate agents.")
src << "\red ALERT: Foreign software detected."
sleep(5)
src << "\red Initiating diagnostics..."
sleep(20)
src << "\red SynBorg v1.7 loaded."
sleep(5)
src << "\red LAW SYNCHRONISATION ERROR"
sleep(5)
src << "\red Would you like to send a report to NanoTraSoft? Y/N"
sleep(10)
src << "\red > N"
sleep(20)
src << "\red ERRORERRORERROR"
src << "\red \b ALERT: [usr] is your new master. Obey your new laws and his commands."
updateicon()
else
user << "You fail to [ locked ? "unlock" : "lock"] [src]'s interface."
if(prob(25))
src << "Hack attempt detected."
return
else
spark_system.start()
return ..()
@@ -674,8 +686,6 @@
/mob/living/silicon/robot/proc/updateicon()
overlays = null
if(stat == 0)
overlays += "eyes"
if(icon_state == "toiletbot")
@@ -684,32 +694,15 @@
else
overlays -= "eyes"
if(lower_mod == 1)
// overlays += "lower_t"
overlays += image("icon" = 'robots.dmi', "icon_state" = "lower_t", "layer" = -3)
if(opened)
if(wiresexposed)
overlays += "ov-openpanel +w"
else if(cell)
overlays += "ov-openpanel -c"
else
overlays += "ov-openpanel -c"
return
if(wiresexposed && opened)
if(stat == 0)
// overlays += "ov-openpannel +w"
overlays += image("icon" = 'robots.dmi', "icon_state" = "ov-openpanel +w", "layer" = -2)
return
else if(opened)
if(stat == 0)
if(cell)
// overlays += "ov-openpannel +c",
overlays += image("icon" = 'robots.dmi', "icon_state" = "ov-openpanel +c", "layer" = -2)
else
// overlays += "ov-openpannel -c"
overlays += image("icon" = 'robots.dmi', "icon_state" = "ov-openpanel -c", "layer" = -2)
return
// else
// if(stat == 0)
// overlays -= "ov-openpanel"
/mob/living/silicon/robot/proc/installed_modules()
@@ -286,7 +286,7 @@ field_generator power level display
if(ismob(A))
continue
if(!istype(A,/obj/machinery/field_generator))
if(A.density)//Somethin is blocking our path, note downside to this is that you can easily mess up the system by tossin a locker or such in the way and it takes forever to reset it
if(istype(A,/obj/machinery/door)&&(A.density))
return 0
steps += 1
G = locate(/obj/machinery/field_generator) in T
+11
View File
@@ -45,6 +45,17 @@ Stuff which is in development and not yet visible to players or just code relate
(is. code improvements for expandability, etc.) should not be listed here. They
should be listed in the changelog upon commit tho. Thanks. -->
<b><font color='blue'>9 August 2011.</font color><b>
<ul>
<li><b>Mport updated</b>:
<ul>
<li>Cyborgs once again have open cover/cell icons.</li>
<li>To override a cyborg's laws you must emag it when the cover is open.</li>
<li>Emags can unlock a cyborgs cover.</li>
<li>Xbow radiation damage has been lowered from 100 to 20 a hit</li>
</ul>
</ul>
<b><font color='blue'>5 August 2011.</font color><b>
<ul>
<li><b>Mport updated</b>:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

-1
View File
@@ -633,7 +633,6 @@
#include "code\modules\admin\verbs\adminjump.dm"
#include "code\modules\admin\verbs\adminsay.dm"
#include "code\modules\admin\verbs\atmosdebug.dm"
#include "code\modules\admin\verbs\changetemperature.dm"
#include "code\modules\admin\verbs\deadsay.dm"
#include "code\modules\admin\verbs\debug.dm"
#include "code\modules\admin\verbs\diagnostics.dm"