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
@@ -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",
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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(), \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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", " ", " ")]</font></a> "
|
||||
else
|
||||
jobs += "<BR><a href='?src=\ref[src];jobban3=Syndicate;jobban4=\ref[M]'>[dd_replacetext("Syndicate", " ", " ")]</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"
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>:
|
||||
|
||||
|
Before Width: | Height: | Size: 184 KiB After Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 859 B |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 16 KiB |
@@ -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"
|
||||
|
||||