", record2.fields["criminal"], record2.fields["mi_crim"], record2.fields["mi_crim_d"], record2.fields["ma_crim"], record2.fields["ma_crim_d"], record2.fields["notes"])
var/counter = 1
- while(active2.fields[text("com_[]", counter)])
- P.info += text("[] ", active2.fields[text("com_[]", counter)])
+ while(record2.fields[text("com_[]", counter)])
+ P.info += text("[] ", record2.fields[text("com_[]", counter)])
counter++
else
P.info += "Security Record Lost! "
P.info += ""
- P.name = "paper - 'Security Record'"
printing = null
updateUsrDialog()
//RECORD DELETE
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index bd2c66f42e..9232ff019b 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -212,7 +212,7 @@ to destroy them and players will be able to make replacements.
name = "Circuit Board (PACMAN-type Generator)"
build_path = "/obj/machinery/power/port_gen/pacman"
board_type = "machine"
- origin_tech = "programming=3:powerstorage=3;plasmatech=3;engineering=3"
+ origin_tech = "programming=3:powerstorage=3;phorontech=3;engineering=3"
frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor."
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 3168fe4e7d..39b5ec9a53 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -258,37 +258,37 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
L.apply_effect(15,IRRADIATE,0)
return
-/obj/machinery/door/airlock/plasma
- name = "Plasma Airlock"
+/obj/machinery/door/airlock/phoron
+ name = "Phoron Airlock"
desc = "No way this can end badly."
- icon = 'icons/obj/doors/Doorplasma.dmi'
- mineral = "plasma"
+ icon = 'icons/obj/doors/Doorphoron.dmi'
+ mineral = "phoron"
-/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/machinery/door/airlock/phoron/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
- PlasmaBurn(exposed_temperature)
+ PhoronBurn(exposed_temperature)
-/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature)
+/obj/machinery/door/airlock/phoron/proc/ignite(exposed_temperature)
if(exposed_temperature > 300)
- PlasmaBurn(exposed_temperature)
+ PhoronBurn(exposed_temperature)
-/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
+/obj/machinery/door/airlock/phoron/proc/PhoronBurn(temperature)
for(var/turf/simulated/floor/target_tile in range(2,loc))
// if(target_tile.parent && target_tile.parent.group_processing) // THESE PROBABLY DO SOMETHING IMPORTANT BUT I DON'T KNOW HOW TO FIX IT - Erthilo
// target_tile.parent.suspend_group_processing()
var/datum/gas_mixture/napalm = new
- var/toxinsToDeduce = 35
- napalm.toxins = toxinsToDeduce
+ var/phoronToDeduce = 35
+ napalm.phoron = phoronToDeduce
napalm.temperature = 400+T0C
target_tile.assume_air(napalm)
spawn (0) target_tile.hotspot_expose(temperature, 400)
- for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
+ for(var/obj/structure/falsewall/phoron/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
var/turf/T = get_turf(F)
- T.ChangeTurf(/turf/simulated/wall/mineral/plasma/)
+ T.ChangeTurf(/turf/simulated/wall/mineral/phoron/)
del (F)
- for(var/turf/simulated/wall/mineral/plasma/W in range(3,src))
+ for(var/turf/simulated/wall/mineral/phoron/W in range(3,src))
W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
- for(var/obj/machinery/door/airlock/plasma/D in range(3,src))
+ for(var/obj/machinery/door/airlock/phoron/D in range(3,src))
D.ignite(temperature/4)
new/obj/structure/door_assembly( src.loc )
del (src)
@@ -1248,7 +1248,7 @@ About the new airlock wires panel:
..()
return
-/obj/machinery/door/airlock/plasma/attackby(C as obj, mob/user as mob)
+/obj/machinery/door/airlock/phoron/attackby(C as obj, mob/user as mob)
if(C)
ignite(is_hot(C))
..()
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index 7f108d8d86..2f443fdac1 100755
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -1,6 +1,6 @@
/obj/machinery/igniter
name = "igniter"
- desc = "It's useful for igniting plasma."
+ desc = "It's useful for igniting flammable items."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "igniter1"
var/id = null
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index d3e494b2d7..c7829494aa 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -27,6 +27,9 @@ Buildable meters
#define PIPE_UP 21
#define PIPE_DOWN 22
///// Z-Level stuff
+#define PIPE_GAS_FILTER_M 23
+#define PIPE_GAS_MIXER_T 24
+#define PIPE_GAS_MIXER_M 25
/obj/item/pipe
name = "pipe"
@@ -71,6 +74,12 @@ Buildable meters
src.pipe_type = PIPE_MVALVE
else if(istype(make_from, /obj/machinery/atmospherics/binary/pump))
src.pipe_type = PIPE_PUMP
+ else if(istype(make_from, /obj/machinery/atmospherics/trinary/filter/m_filter))
+ src.pipe_type = PIPE_GAS_FILTER_M
+ else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer/t_mixer))
+ src.pipe_type = PIPE_GAS_MIXER_T
+ else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer/m_mixer))
+ src.pipe_type = PIPE_GAS_MIXER_M
else if(istype(make_from, /obj/machinery/atmospherics/trinary/filter))
src.pipe_type = PIPE_GAS_FILTER
else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer))
@@ -132,6 +141,9 @@ Buildable meters
"pipe up", \
"pipe down", \
///// Z-Level stuff
+ "gas filter m", \
+ "gas mixer t", \
+ "gas mixer m", \
)
name = nlist[pipe_type+1] + " fitting"
var/list/islist = list( \
@@ -160,6 +172,9 @@ Buildable meters
"cap", \
"cap", \
///// Z-Level stuff
+ "m_filter", \
+ "t_mixer", \
+ "m_mixer", \
)
icon_state = islist[pipe_type + 1]
@@ -230,6 +245,10 @@ Buildable meters
return flip|cw|acw
if(PIPE_GAS_FILTER, PIPE_GAS_MIXER,PIPE_MTVALVE)
return dir|flip|cw
+ if(PIPE_GAS_FILTER_M, PIPE_GAS_MIXER_M)
+ return dir|flip|acw
+ if(PIPE_GAS_MIXER_T)
+ return dir|cw|acw
if(PIPE_CAP)
return flip
///// Z-Level stuff
@@ -490,7 +509,7 @@ Buildable meters
P.node3.initialize()
P.node3.build_network()
- if(PIPE_GAS_MIXER) //gas filter
+ if(PIPE_GAS_MIXER) //gas mixer
var/obj/machinery/atmospherics/trinary/mixer/P = new(src.loc)
P.dir = dir
P.initialize_directions = pipe_dir
@@ -510,6 +529,66 @@ Buildable meters
P.node3.initialize()
P.node3.build_network()
+ if(PIPE_GAS_FILTER_M) //gas filter mirrored
+ var/obj/machinery/atmospherics/trinary/filter/m_filter/P = new(src.loc)
+ P.dir = dir
+ P.initialize_directions = pipe_dir
+ if (pipename)
+ P.name = pipename
+ var/turf/T = P.loc
+ P.level = T.intact ? 2 : 1
+ P.initialize()
+ P.build_network()
+ if (P.node1)
+ P.node1.initialize()
+ P.node1.build_network()
+ if (P.node2)
+ P.node2.initialize()
+ P.node2.build_network()
+ if (P.node3)
+ P.node3.initialize()
+ P.node3.build_network()
+
+ if(PIPE_GAS_MIXER_T) //gas mixer-t
+ var/obj/machinery/atmospherics/trinary/mixer/t_mixer/P = new(src.loc)
+ P.dir = dir
+ P.initialize_directions = pipe_dir
+ if (pipename)
+ P.name = pipename
+ var/turf/T = P.loc
+ P.level = T.intact ? 2 : 1
+ P.initialize()
+ P.build_network()
+ if (P.node1)
+ P.node1.initialize()
+ P.node1.build_network()
+ if (P.node2)
+ P.node2.initialize()
+ P.node2.build_network()
+ if (P.node3)
+ P.node3.initialize()
+ P.node3.build_network()
+
+ if(PIPE_GAS_MIXER_M) //gas mixer mirrored
+ var/obj/machinery/atmospherics/trinary/mixer/m_mixer/P = new(src.loc)
+ P.dir = dir
+ P.initialize_directions = pipe_dir
+ if (pipename)
+ P.name = pipename
+ var/turf/T = P.loc
+ P.level = T.intact ? 2 : 1
+ P.initialize()
+ P.build_network()
+ if (P.node1)
+ P.node1.initialize()
+ P.node1.build_network()
+ if (P.node2)
+ P.node2.initialize()
+ P.node2.build_network()
+ if (P.node3)
+ P.node3.initialize()
+ P.node3.build_network()
+
if(PIPE_SCRUBBER) //scrubber
var/obj/machinery/atmospherics/unary/vent_scrubber/S = new(src.loc)
S.dir = dir
@@ -709,4 +788,7 @@ Buildable meters
#undef PIPE_VOLUME_PUMP
#undef PIPE_OUTLET_INJECT
#undef PIPE_MTVALVE
+#undef PIPE_GAS_FILTER_M
+#undef PIPE_GAS_MIXER_T
+#undef PIPE_GAS_MIXER_M
//#undef PIPE_MANIFOLD4W
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index bf6233f4d4..558f54118c 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -34,7 +34,10 @@
Scrubber Meter Gas Filter
+Gas Filter-Mirrored Gas Mixer
+Gas Mixer-Mirrored
+Gas Mixer-T Heat exchange: Pipe Bent Pipe
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index bbf765544f..59e24ad3e9 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -65,7 +65,7 @@
if(1 to 50)
objective = "Steal [pick("a hand teleporter", "the Captain's antique laser gun", "a jetpack", "the Captain's ID", "the Captain's jumpsuit")]."
if(51 to 60)
- objective = "Destroy 70% or more of the station's plasma tanks."
+ objective = "Destroy 70% or more of the station's phoron tanks."
if(61 to 70)
objective = "Cut power to 80% or more of the station's tiles."
if(71 to 80)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 9dc9716e63..1c130d252b 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -53,6 +53,8 @@
var/const/WIRE_SHOOTINV = 4
var/check_accounts = 0 // 1 = requires PIN and checks accounts. 0 = You slide an ID, it vends, SPACE COMMUNISM!
+ var/obj/item/weapon/spacecash/ewallet/ewallet
+
/obj/machinery/vending/New()
..()
@@ -150,6 +152,11 @@
else if(istype(W, /obj/item/weapon/card) && currently_vending)
var/obj/item/weapon/card/I = W
scan_card(I)
+ else if (istype(W, /obj/item/weapon/spacecash/ewallet))
+ user.drop_item()
+ W.loc = src
+ ewallet = W
+ user << "\blue You insert the [W] into the [src]"
else if(src.panel_open)
@@ -243,7 +250,10 @@
dat += "Select an item:
" //the rest is just general spacing and bolding
if (premium.len > 0)
- dat += "Coin slot: [coin ? coin : "No coin inserted"] (Remove)
"
+ dat += "Coin slot: [coin ? coin : "No coin inserted"] (Remove) "
+
+ if (ewallet)
+ dat += "Charge card's credits: [ewallet ? ewallet.worth : "No charge card inserted"] (Remove)
"
if (src.product_records.len == 0)
dat += "No product loaded!"
@@ -317,6 +327,15 @@
usr << "\blue You remove the [coin] from the [src]"
coin = null
+ if(href_list["remove_ewallet"] && !istype(usr,/mob/living/silicon))
+ if (!ewallet)
+ usr << "There is no charge card in this machine."
+ return
+ ewallet.loc = src.loc
+ if(!usr.get_active_hand())
+ usr.put_in_hands(ewallet)
+ usr << "\blue You remove the [ewallet] from the [src]"
+ ewallet = null
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
usr.set_machine(src)
@@ -344,9 +363,17 @@
if(R.price == null)
src.vend(R, usr)
else
- src.currently_vending = R
- src.updateUsrDialog()
-
+ if (ewallet)
+ if (R.price <= ewallet.worth)
+ ewallet.worth -= R.price
+ src.vend(R, usr)
+ else
+ usr << "\red The ewallet doesn't have enough money to pay for that."
+ src.currently_vending = R
+ src.updateUsrDialog()
+ else
+ src.currently_vending = R
+ src.updateUsrDialog()
return
else if (href_list["cancel_buying"])
@@ -597,7 +624,7 @@
desc = "A vendor with a wide variety of masks and gas tanks."
icon = 'icons/obj/objects.dmi'
icon_state = "dispenser"
- product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/plasma;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
+ product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/phoron;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
product_amounts = "10;10;10;5;25"
vend_delay = 0
*/
@@ -686,7 +713,7 @@
icon_state = "cart"
icon_deny = "cart-deny"
products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10,
- /obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/toxins = 10,/obj/item/device/pda/heads = 10,
+ /obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/science = 10,/obj/item/device/pda/heads = 10,
/obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
@@ -719,7 +746,7 @@
//This one's from bay12
-/obj/machinery/vending/plasmaresearch
+/obj/machinery/vending/phoronresearch
name = "Toximate 3000"
desc = "All the fine parts you need in one vending machine!"
products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index 416e2ff6cb..9b5a691467 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -262,7 +262,7 @@
energy_drain = 250
range = MELEE|RANGED
construction_time = 1200
- construction_cost = list("metal"=30000,"plasma"=25000,"silver"=20000,"gold"=20000)
+ construction_cost = list("metal"=30000,"phoron"=25000,"silver"=20000,"gold"=20000)
var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock.
var/disabled = 0 //malf
@@ -830,10 +830,10 @@
/obj/item/mecha_parts/mecha_equipment/generator
- name = "Plasma Converter"
- desc = "Generates power using solid plasma as fuel. Pollutes the environment."
+ name = "Phoron Generator"
+ desc = "Generates power using solid phoron as fuel. Pollutes the environment."
icon_state = "tesla"
- origin_tech = "plasmatech=2;powerstorage=2;engineering=1"
+ origin_tech = "phorontech=2;powerstorage=2;engineering=1"
equip_cooldown = 10
energy_drain = 0
range = MELEE
@@ -853,7 +853,7 @@
return
proc/init()
- fuel = new /obj/item/stack/sheet/mineral/plasma(src)
+ fuel = new /obj/item/stack/sheet/mineral/phoron(src)
fuel.amount = 0
pr_mech_generator = new /datum/global_iterator/mecha_generator(list(src),0)
pr_mech_generator.set_delay(equip_cooldown)
@@ -926,14 +926,14 @@
return
var/datum/gas_mixture/GM = new
if(prob(10))
- GM.toxins += 100
+ GM.phoron += 100
GM.temperature = 1500+T0C //should be enough to start a fire
- T.visible_message("The [src] suddenly disgorges a cloud of heated plasma.")
+ T.visible_message("The [src] suddenly disgorges a cloud of heated phoron.")
destroy()
else
- GM.toxins += 5
+ GM.phoron += 5
GM.temperature = istype(T) ? T.air.temperature : T20C
- T.visible_message("The [src] suddenly disgorges a cloud of plasma.")
+ T.visible_message("The [src] suddenly disgorges a cloud of phoron.")
T.assume_air(GM)
return
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index f15ae7eb48..de3884923a 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -21,7 +21,7 @@
"gold"=0,
"silver"=0,
"diamond"=0,
- "plasma"=0,
+ "phoron"=0,
"uranium"=0,
//"bananium"=0 No need to state what it can no longer hold
)
@@ -684,8 +684,8 @@
type = /obj/item/stack/sheet/mineral/silver
if("diamond")
type = /obj/item/stack/sheet/mineral/diamond
- if("plasma")
- type = /obj/item/stack/sheet/mineral/plasma
+ if("phoron")
+ type = /obj/item/stack/sheet/mineral/phoron
if("uranium")
type = /obj/item/stack/sheet/mineral/uranium
/*if("bananium")
@@ -732,9 +732,9 @@
if(src.resources["glass"] >= 3750)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(src.resources["glass"] / G.perunit)
- if(src.resources["plasma"] >= 2000)
- var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma(src.loc)
- G.amount = round(src.resources["plasma"] / G.perunit)
+ if(src.resources["phoron"] >= 2000)
+ var/obj/item/stack/sheet/mineral/phoron/G = new /obj/item/stack/sheet/mineral/phoron(src.loc)
+ G.amount = round(src.resources["phoron"] / G.perunit)
if(src.resources["silver"] >= 2000)
var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver(src.loc)
G.amount = round(src.resources["silver"] / G.perunit)
@@ -767,8 +767,8 @@
material = "silver"
if(/obj/item/stack/sheet/mineral/diamond)
material = "diamond"
- if(/obj/item/stack/sheet/mineral/plasma)
- material = "plasma"
+ if(/obj/item/stack/sheet/mineral/phoron)
+ material = "phoron"
if(/obj/item/stack/sheet/metal)
material = "metal"
if(/obj/item/stack/sheet/glass)
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index 2db25119fb..5a8972ee4a 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -292,42 +292,42 @@
name="Phazon Torso"
icon_state = "phazon_harness"
construction_time = 300
- construction_cost = list("metal"=35000,"glass"=10000,"plasma"=20000)
+ construction_cost = list("metal"=35000,"glass"=10000,"phoron"=20000)
origin_tech = "programming=5;materials=7;bluespace=6;powerstorage=6"
/obj/item/mecha_parts/part/phazon_head
name="Phazon Head"
icon_state = "phazon_head"
construction_time = 200
- construction_cost = list("metal"=15000,"glass"=5000,"plasma"=10000)
+ construction_cost = list("metal"=15000,"glass"=5000,"phoron"=10000)
origin_tech = "programming=4;materials=5;magnets=6"
/obj/item/mecha_parts/part/phazon_left_arm
name="Phazon Left Arm"
icon_state = "phazon_l_arm"
construction_time = 200
- construction_cost = list("metal"=20000,"plasma"=10000)
+ construction_cost = list("metal"=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=2;magnets=2"
/obj/item/mecha_parts/part/phazon_right_arm
name="Phazon Right Arm"
icon_state = "phazon_r_arm"
construction_time = 200
- construction_cost = list("metal"=20000,"plasma"=10000)
+ construction_cost = list("metal"=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=2;magnets=2"
/obj/item/mecha_parts/part/phazon_left_leg
name="Phazon Left Leg"
icon_state = "phazon_l_leg"
construction_time = 200
- construction_cost = list("metal"=20000,"plasma"=10000)
+ construction_cost = list("metal"=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=3;magnets=3"
/obj/item/mecha_parts/part/phazon_right_leg
name="Phazon Right Leg"
icon_state = "phazon_r_leg"
construction_time = 200
- construction_cost = list("metal"=20000,"plasma"=10000)
+ construction_cost = list("metal"=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=3;magnets=3"
///////// Odysseus
diff --git a/code/game/objects/closets/secure/research.dm b/code/game/objects/closets/secure/research.dm
index 46b645723e..dc4081a3d0 100755
--- a/code/game/objects/closets/secure/research.dm
+++ b/code/game/objects/closets/secure/research.dm
@@ -16,7 +16,7 @@
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B)
- new /obj/item/device/pda/toxins(src)
+ new /obj/item/device/pda/science(src)
new /obj/item/weapon/tank/oxygen(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/device/radio/headset/headset_sci(src)
diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm
index 5cc3ebd3fe..0b8fd7a69c 100644
--- a/code/game/objects/effects/decals/Cleanable/fuel.dm
+++ b/code/game/objects/effects/decals/Cleanable/fuel.dm
@@ -1,5 +1,5 @@
obj/effect/decal/cleanable/liquid_fuel
- //Liquid fuel is used for things that used to rely on volatile fuels or plasma being contained to a couple tiles.
+ //Liquid fuel is used for things that used to rely on volatile fuels or phoron being contained to a couple tiles.
icon = 'icons/effects/effects.dmi'
icon_state = "fuel"
layer = TURF_LAYER+0.2
@@ -21,7 +21,7 @@ obj/effect/decal/cleanable/liquid_fuel
proc/Spread()
//Allows liquid fuels to sometimes flow into other tiles.
- if(amount < 0.5) return
+ if(amount < 5.0) return
var/turf/simulated/S = loc
if(!istype(S)) return
for(var/d in cardinal)
diff --git a/code/game/objects/effects/decals/posters/bs12.dm b/code/game/objects/effects/decals/posters/bs12.dm
index 3d6261fb9a..b21fcc3ee3 100644
--- a/code/game/objects/effects/decals/posters/bs12.dm
+++ b/code/game/objects/effects/decals/posters/bs12.dm
@@ -52,7 +52,7 @@
/datum/poster/bay_11
icon_state="bsposter11"
name = "Underwater Laboratory"
- desc = "This particular one is of the fabled last crew of Nanotrasen's previous project before going big on plasma research."
+ desc = "This particular one is of the fabled last crew of Nanotrasen's previous project before going big on phoron research."
/datum/poster/bay_12
icon_state="bsposter12"
@@ -143,3 +143,104 @@
icon_state="bsposter29"
name = "Winter Is Coming"
desc = "On the poster is a frighteningly large wolf, he warns: \"Only YOU can keep the station from freezing during planetary occultation!\""
+
+/datum/poster/bay_30
+ icon_state="bsposter30"
+ name = "Ambrosia Vulgaris"
+ desc = "Just looking at this poster makes you feel a little bit dizzy."
+
+/datum/poster/bay_31
+ icon_state="bsposter31"
+ name = "Donut Corp"
+ desc = "This is an advertisement for Donut Corp, the new innovation in donut technology!"
+
+/datum/poster/bay_32
+ icon_state="bsposter32"
+ name = "Eat!"
+ desc = "A poster depicting a hamburger. The poster orders you to consume the hamburger."
+
+/datum/poster/bay_33
+ icon_state="bsposter33"
+ name = "Tools, tools, tools"
+ desc = "You can never have enough tools, thats for sure!"
+
+/datum/poster/bay_34
+ icon_state="bsposter34"
+ name = "Power Up!"
+ desc = "High reward, higher risk!"
+
+/datum/poster/bay_35
+ icon_state="bsposter35"
+ name = "Lamarr"
+ desc = "This is a poster depicting the pet and mascot of the NSS Exodus science department."
+
+/datum/poster/bay_36
+ icon_state="bsposter36"
+ name = "Fancy Borg"
+ desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it."
+
+/datum/poster/bay_37
+ icon_state="bsposter37"
+ name = "Fancier Borg"
+ desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it. This is even fancier than the first poster."
+
+/datum/poster/bay_38
+ icon_state="bsposter38"
+ name = "Toaster Love"
+ desc = "This is a poster of a toaster containing two slices of bread. The word LOVE is written in big pink letters underneath."
+
+/datum/poster/bay_39
+ icon_state="bsposter39"
+ name = "Responsible medbay habits, No #91"
+ desc = "A safety poster with a chemist holding a vial. \"Always wear safety gear while handling dangerous chemicals, even if it concerns only small amounts.\""
+
+/datum/poster/bay_40
+ icon_state="bsposter40"
+ name = "Agreeable work environment"
+ desc = "This poster depicts a young woman in a stylish dress. \"Try to aim for a pleasant atmosphere in the workspace. A friendly word can do more than forms in triplicate.\""
+
+/datum/poster/bay_41
+ icon_state="bsposter41"
+ name = "Professional work environment"
+ desc = "A safety poster featuring a green haired woman in a shimmering blue dress. \"As an Internal Affairs Agent, your job is to create a fair and agreeable work environment for the crewmembers, as discreetly and professionally as possible.\""
+
+/datum/poster/bay_42
+ icon_state="bsposter42"
+ name = "Engineering pinup"
+ desc = "This is pin-up poster. A half-naked girl with white hair, toned muscles and stunning blue eyes looks back at you from the poster. Her welding helmet, tattoos and grey jumpsuit hanging around her waist gives a bit of a rugged feel."
+
+/datum/poster/bay_43
+ icon_state="bsposter43"
+ name = "Responsible medbay habits, No #3"
+ desc = "A safety poster with a purple-haired surgeon. She looks a bit cross. \"Let the surgeons do their work. NEVER replace or remove a surgery tool from where the surgeon put it.\""
+
+/datum/poster/bay_44
+ icon_state="bsposter44"
+ name = "Time for a drink?"
+ desc = "This poster depicts a friendly-looking Tajara holding a tray of drinks."
+
+/datum/poster/bay_45
+ icon_state="bsposter45"
+ name = "Responsible engineering habits, No #1"
+ desc = "A safety poster featuring a blue haired engineer. \"When repairing a machine or construction, always aim for long-term solutions.\""
+
+/datum/poster/bay_46
+ icon_state="bsposter46"
+ name = "Inspirational lawyer"
+ desc = "An inspirational poster depicting a Skrellian lawyer. He seems to be shouting something, while pointing fiercely to the right."
+
+/datum/poster/bay_47
+ icon_state="bsposter47"
+ name = "Security pinup"
+ desc = "This is a pin-up poster. A dark skinned white haired girl poses in the sunlight wearing a tank top with her stomach exposed. The text on the poster states \"M, Succubus of Security.\" and a lipstick mark stains the top right corner, as if kissed by the model herself."
+
+ /datum/poster/bay_48
+ icon_state="bsposter48"
+ name = "Borg pinup?"
+ desc = "This is a.. pin-up poster? It is a diagram on an old model of cyborg with a note scribbled in marker on the bottom, on the top there is a large XO written in red marker."
+
+ /datum/poster/bay_49
+ icon_state="bsposter49"
+ name = "Engineering recruitment"
+ desc = "This is a poster showing an engineer relaxing by a computer, the text states \"Living the life! Join Engineering today!\""
+
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index b9a2e57daf..2571149851 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -63,13 +63,13 @@
spawn(0)
del(src)
-/obj/effect/mine/proc/triggerplasma(obj)
+/obj/effect/mine/proc/triggerphoron(obj)
for (var/turf/simulated/floor/target in range(1,src))
if(!target.blocks_air)
var/datum/gas_mixture/payload = new
- payload.toxins = 30
+ payload.phoron = 30
target.zone.air.merge(payload)
@@ -96,10 +96,10 @@
icon_state = "uglymine"
triggerproc = "triggerrad"
-/obj/effect/mine/plasma
- name = "Plasma Mine"
+/obj/effect/mine/phoron
+ name = "Phoron Mine"
icon_state = "uglymine"
- triggerproc = "triggerplasma"
+ triggerproc = "triggerphoron"
/obj/effect/mine/kick
name = "Kick Mine"
diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm
index 1d59701bb7..3747ef9ba6 100644
--- a/code/game/objects/effects/spawners/bombspawner.dm
+++ b/code/game/objects/effects/spawners/bombspawner.dm
@@ -30,7 +30,7 @@
// radio
if (0)
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank(src.loc)
- var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
+ var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/device/radio/signaler/p1 = new /obj/item/device/radio/signaler(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1
@@ -47,7 +47,7 @@
// proximity
if (1)
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank(src.loc)
- var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
+ var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/device/prox_sensor/p1 = new /obj/item/device/prox_sensor(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1
@@ -69,7 +69,7 @@
// timer
if (2)
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank(src.loc)
- var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
+ var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/device/timer/p1 = new /obj/item/device/timer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1
@@ -85,7 +85,7 @@
//bombvest
if(3)
var/obj/item/clothing/suit/armor/a_i_a_ptank/R = new /obj/item/clothing/suit/armor/a_i_a_ptank(src.loc)
- var/obj/item/weapon/tank/plasma/p4 = new /obj/item/weapon/tank/plasma(R)
+ var/obj/item/weapon/tank/phoron/p4 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/device/healthanalyzer/p1 = new /obj/item/device/healthanalyzer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
var/obj/item/clothing/suit/armor/vest/p3 = new /obj/item/clothing/suit/armor/vest(R)
@@ -127,7 +127,7 @@
..()
var/obj/item/device/transfer_valve/V = new(src.loc)
- var/obj/item/weapon/tank/plasma/PT = new(V)
+ var/obj/item/weapon/tank/phoron/PT = new(V)
var/obj/item/weapon/tank/oxygen/OT = new(V)
V.tank_one = PT
@@ -136,12 +136,12 @@
PT.master = V
OT.master = V
- PT.air_contents.temperature = PLASMA_FLASHPOINT
- PT.air_contents.toxins = 3
+ PT.air_contents.temperature = PHORON_FLASHPOINT
+ PT.air_contents.phoron = 3
PT.air_contents.carbon_dioxide = 17
PT.air_contents.update_values()
- OT.air_contents.temperature = PLASMA_FLASHPOINT
+ OT.air_contents.temperature = PHORON_FLASHPOINT
OT.air_contents.oxygen = 20
OT.air_contents.update_values()
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index a16e70bbb9..1b10ee72b9 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -238,18 +238,6 @@
/obj/item/proc/equipped(var/mob/user, var/slot)
return
-//returns 1 if the item is equipped by a mob, 0 otherwise.
-//This might need some error trapping, not sure if get_equipped_items() is safe for non-human mobs.
-/obj/item/proc/is_equipped()
- if(!ismob(loc))
- return 0
-
- var/mob/M = loc
- if(src in M.get_equipped_items())
- return 1
- else
- return 0
-
//the mob M is attempting to equip this item into the slot passed through as 'slot'. Return 1 if it can do this and 0 if it can't.
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
//Set disable_warning to 1 if you wish it to not give you outputs.
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 3a10e94f3c..25d52122ce 100755
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -83,8 +83,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon_state = "pda-j"
ttone = "slip"
-/obj/item/device/pda/toxins
- default_cartridge = /obj/item/weapon/cartridge/signal/toxins
+/obj/item/device/pda/science
+ default_cartridge = /obj/item/weapon/cartridge/signal/science
icon_state = "pda-tox"
ttone = "boom"
@@ -446,14 +446,14 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/o2_level = environment.oxygen/total_moles
var/n2_level = environment.nitrogen/total_moles
var/co2_level = environment.carbon_dioxide/total_moles
- var/plasma_level = environment.toxins/total_moles
- var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level)
+ var/phoron_level = environment.phoron/total_moles
+ var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
data["aircontents"] = list(\
"pressure" = "[round(pressure,0.1)]",\
"nitrogen" = "[round(n2_level*100,0.1)]",\
"oxygen" = "[round(o2_level*100,0.1)]",\
"carbon_dioxide" = "[round(co2_level*100,0.1)]",\
- "plasma" = "[round(plasma_level*100,0.01)]",\
+ "phoron" = "[round(phoron_level*100,0.01)]",\
"other" = "[round(unknown_level, 0.01)]",\
"temp" = "[round(environment.temperature-T0C,0.1)]",\
"reading" = 1\
@@ -556,7 +556,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
mode = 1
if("2")//Messenger
mode = 2
- if("21")//Read messeges
+ if("21")//Read messages
mode = 21
if("3")//Atmos scan
mode = 3
@@ -818,7 +818,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
message += "You feel a searing heat! Your [P] is burning!"
if(i>=20 && i<=25) //EMP
empulse(P.loc, 3, 6, 1)
- message += "Your [P] emits a wave of electomagnetic energy!"
+ message += "Your [P] emits a wave of electromagnetic energy!"
if(i>=25 && i<=40) //Smoke
var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
S.attach(P.loc)
@@ -895,7 +895,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/obj/machinery/message_server/useMS = null
if(message_servers)
for (var/obj/machinery/message_server/MS in message_servers)
- //PDAs are now dependant on the Message Server.
+ //PDAs are now dependent on the Message Server.
if(MS.active)
useMS = MS
break
@@ -914,7 +914,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
t = Gibberish(t, signal.data["compression"] + 50)
if(useMS && useTC) // only send the message if it's stable
- if(useTC != 2) // Does our recepient have a broadcaster on their level?
+ if(useTC != 2) // Does our recipient have a broadcaster on their level?
U << "ERROR: Cannot reach recipient."
return
useMS.send_pda_message("[P.owner]","[owner]","[t]")
@@ -957,7 +957,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(L)
L << "\icon[P] Message from [src.owner] ([ownjob]), \"[t]\" (Reply)"
- nanomanager.update_user_uis(L, P) // Update the recieving user's PDA UI so that they can see the new message
+ nanomanager.update_user_uis(L, P) // Update the receiving user's PDA UI so that they can see the new message
nanomanager.update_user_uis(U, P) // Update the sending user's PDA UI so that they can see the new message
@@ -1165,15 +1165,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/o2_concentration = A:air_contents.oxygen/total_moles
var/n2_concentration = A:air_contents.nitrogen/total_moles
var/co2_concentration = A:air_contents.carbon_dioxide/total_moles
- var/plasma_concentration = A:air_contents.toxins/total_moles
+ var/phoron_concentration = A:air_contents.phoron/total_moles
- var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_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)]%"
+ user << "\blue Phoron: [round(phoron_concentration*100)]%"
if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(A:air_contents.temperature-T0C)]°C"
@@ -1194,15 +1194,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/o2_concentration = T.parent.air.oxygen/total_moles
var/n2_concentration = T.parent.air.nitrogen/total_moles
var/co2_concentration = T.parent.air.carbon_dioxide/total_moles
- var/plasma_concentration = T.parent.air.toxins/total_moles
+ var/phoron_concentration = T.parent.air.phoron/total_moles
- var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_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)]%"
+ user << "\blue Phoron: [round(phoron_concentration*100)]%"
if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(T.parent.air.temperature-T0C)]°C"
@@ -1293,7 +1293,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/newcart = pick( /obj/item/weapon/cartridge/engineering,
/obj/item/weapon/cartridge/security,
/obj/item/weapon/cartridge/medical,
- /obj/item/weapon/cartridge/signal/toxins,
+ /obj/item/weapon/cartridge/signal/science,
/obj/item/weapon/cartridge/quartermaster)
new newcart(src)
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 3efab41307..499bbef25f 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -103,7 +103,7 @@
name = "generic signaler cartridge"
desc = "A data cartridge with an integrated radio signaler module."
-/obj/item/weapon/cartridge/signal/toxins
+/obj/item/weapon/cartridge/signal/science
name = "Signal Ace 2"
desc = "Complete with integrated radio signaler!"
icon_state = "cart-tox"
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index d0bc6a4533..274f8f7ed7 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -25,33 +25,200 @@
if (!in_range(src, user))
return
user.set_machine(src)
- var/dat = "Personal AI Device "
- if(pai && (!pai.master_dna || !pai.master))
- dat += "Imprint Master DNA "
+ var/dat = {"
+
+
+
+
+
+
+ "}
+
if(pai)
- dat += "Installed Personality: [pai.name] "
- dat += "Prime directive: [pai.pai_law0] "
- dat += "Additional directives: [pai.pai_laws] "
- dat += "Configure Directives "
+ dat += {"
+ Personal AI Device
+
+ "}
else
dat += "Radio Uplink "
dat += "Radio firmware not loaded. Please install a pAI personality to load firmware. "
- dat += "\[Wipe current pAI personality\] "
+ dat += {"
+
+ "}
else
if(looking_for_personality)
- dat += "Searching for a personality..."
- dat += "\[View available personalities\] "
+ dat += {"
+ pAI Request Module
+
Requesting AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.
+ "}
else
- dat += "No personality is installed. "
- dat += "\[Request personal AI personality\] "
- dat += "Each time this button is pressed, a request will be sent out to any available personalities. Check back often and alot time for personalities to respond. This process could take anywhere from 15 seconds to several minutes, depending on the available personalities' timeliness."
+ dat += {"
+ pAI Request Module
Each time this button is pressed, a request will be sent out to any available personalities. Check back often give plenty of time for personalities to respond. This process could take anywhere from 15 seconds to several minutes, depending on the available personalities' timeliness.
+ "}
user << browse(dat, "window=paicard")
onclose(user, "paicard")
return
@@ -96,7 +263,7 @@
if(newlaws)
pai.pai_laws = newlaws
pai << "Your supplemental directives have been updated. Your new directives are:"
- pai << "Prime Directive : [pai.pai_law0]"
+ pai << "Prime Directive: [pai.pai_law0]"
pai << "Supplemental Directives: [pai.pai_laws]"
attack_self(usr)
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index e066a0b168..3a062adca4 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -7,9 +7,15 @@
var/mode = "grey"
/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob)
- if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated))
+ if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated) || !in_range(user, A))
return
var/obj/machinery/atmospherics/pipe/P = A
+
+ var/turf/T = P.loc
+ if (P.level < 2 && T.level==1 && isturf(T) && T.intact)
+ user << "\red You must remove the plating first."
+ return
+
P.pipe_color = mode
user.visible_message("[user] paints \the [P] [mode].","You paint \the [P] [mode].")
P.update_icon()
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index d3f7523988..9105c0bc9a 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -238,9 +238,9 @@ REAGENT SCANNER
var/o2_concentration = environment.oxygen/total_moles
var/n2_concentration = environment.nitrogen/total_moles
var/co2_concentration = environment.carbon_dioxide/total_moles
- var/plasma_concentration = environment.toxins/total_moles
+ var/phoron_concentration = environment.phoron/total_moles
- var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
if(abs(n2_concentration - N2STANDARD) < 20)
user.show_message("\blue Nitrogen: [round(n2_concentration*100)]%", 1)
else
@@ -256,8 +256,8 @@ REAGENT SCANNER
else
user.show_message("\blue CO2: [round(co2_concentration*100)]%", 1)
- if(plasma_concentration > 0.01)
- user.show_message("\red Plasma: [round(plasma_concentration*100)]%", 1)
+ if(phoron_concentration > 0.01)
+ user.show_message("\red Phoron: [round(phoron_concentration*100)]%", 1)
if(unknown_concentration > 0.01)
user.show_message("\red Unknown: [round(unknown_concentration*100)]%", 1)
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 219a7c5af6..b68b76a7fe 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -213,7 +213,7 @@
for(var/i=1,storedinfo.len >= i,i++)
t1 += "[storedinfo[i]] "
P.info = t1
- P.name = "paper- 'Transcript'"
+ P.name = "Transcript"
canprint = 0
sleep(300)
canprint = 1
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 4c142b841f..c2aca6807e 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -133,7 +133,7 @@
/obj/item/borg/upgrade/jetpack
name = "mining robot jetpack"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
- construction_cost = list("metal"=10000,"plasma"=15000,"uranium" = 20000)
+ construction_cost = list("metal"=10000,"phoron"=15000,"uranium" = 20000)
icon_state = "cyborg_upgrade3"
require_module = 1
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 297651b3f0..07da1ba585 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -2,8 +2,8 @@
* Contains:
* Glass sheets
* Reinforced glass sheets
- * Plasma Glass Sheets
- * Reinforced Plasma Glass Sheets (AKA Holy fuck strong windows)
+ * Phoron Glass Sheets
+ * Reinforced Phoron Glass Sheets (AKA Holy fuck strong windows)
* Glass shards - TODO: Move this into code/game/object/item/weapons
*/
@@ -310,25 +310,25 @@
/*
- * Plasma Glass sheets
+ * Phoron Glass sheets
*/
-/obj/item/stack/sheet/glass/plasmaglass
- name = "plasma glass"
- desc = "A very strong and very resistant sheet of a plasma-glass alloy."
- singular_name = "plasma glass sheet"
- icon_state = "sheet-plasmaglass"
+/obj/item/stack/sheet/glass/phoronglass
+ name = "phoron glass"
+ desc = "A very strong and very resistant sheet of a phoron-glass alloy."
+ singular_name = "phoron glass sheet"
+ icon_state = "sheet-phoronglass"
g_amt = 7500
- origin_tech = "materials=3;plasma=2"
- created_window = /obj/structure/window/plasmabasic
+ origin_tech = "materials=3;phoron=2"
+ created_window = /obj/structure/window/phoronbasic
-/obj/item/stack/sheet/glass/plasmaglass/attack_self(mob/user as mob)
+/obj/item/stack/sheet/glass/phoronglass/attack_self(mob/user as mob)
construct_window(user)
-/obj/item/stack/sheet/glass/plasmaglass/attackby(obj/item/W, mob/user)
+/obj/item/stack/sheet/glass/phoronglass/attackby(obj/item/W, mob/user)
..()
if( istype(W, /obj/item/stack/rods) )
var/obj/item/stack/rods/V = W
- var/obj/item/stack/sheet/glass/plasmarglass/RG = new (user.loc)
+ var/obj/item/stack/sheet/glass/phoronrglass/RG = new (user.loc)
RG.add_fingerprint(user)
RG.add_to_stacks(user)
V.use(1)
@@ -342,17 +342,17 @@
return ..()
/*
- * Reinforced plasma glass sheets
+ * Reinforced phoron glass sheets
*/
-/obj/item/stack/sheet/glass/plasmarglass
- name = "reinforced plasma glass"
- desc = "Plasma glass which seems to have rods or something stuck in them."
- singular_name = "reinforced plasma glass sheet"
- icon_state = "sheet-plasmarglass"
+/obj/item/stack/sheet/glass/phoronrglass
+ name = "reinforced phoron glass"
+ desc = "Phoron glass which seems to have rods or something stuck in them."
+ singular_name = "reinforced phoron glass sheet"
+ icon_state = "sheet-phoronrglass"
g_amt = 7500
m_amt = 1875
- origin_tech = "materials=4;plasma=2"
- created_window = /obj/structure/window/plasmareinforced
+ origin_tech = "materials=4;phoron=2"
+ created_window = /obj/structure/window/phoronreinforced
-/obj/item/stack/sheet/glass/plasmarglass/attack_self(mob/user as mob)
+/obj/item/stack/sheet/glass/phoronrglass/attack_self(mob/user as mob)
construct_window(user)
\ No newline at end of file
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index 3185436306..006ab3bedc 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -4,7 +4,7 @@ Mineral Sheets
- Sandstone
- Diamond
- Uranium
- - Plasma
+ - Phoron
- Gold
- Silver
- Clown
@@ -90,26 +90,26 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \
..()
/*
- * Plasma
+ * Phoron
*/
-/obj/item/stack/sheet/mineral/plasma
- name = "solid plasma"
- icon_state = "sheet-plasma"
+/obj/item/stack/sheet/mineral/phoron
+ name = "solid phoron"
+ icon_state = "sheet-phoron"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
- origin_tech = "plasmatech=2;materials=2"
+ origin_tech = "phorontech=2;materials=2"
perunit = 2000
- sheettype = "plasma"
+ sheettype = "phoron"
-var/global/list/datum/stack_recipe/plasma_recipes = list ( \
- new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
+var/global/list/datum/stack_recipe/phoron_recipes = list ( \
+ new/datum/stack_recipe("phoron door", /obj/structure/mineral_door/transparent/phoron, 10, one_per_turf = 1, on_floor = 1), \
)
-/obj/item/stack/sheet/mineral/plasma/New(var/loc, var/amount=null)
- recipes = plasma_recipes
+/obj/item/stack/sheet/mineral/phoron/New(var/loc, var/amount=null)
+ recipes = phoron_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 0effe7c061..ac53e05150 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -108,7 +108,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
/obj/item/stack/sheet/plasteel
name = "plasteel"
singular_name = "plasteel sheet"
- desc = "This sheet is an alloy of iron and plasma."
+ desc = "This sheet is an alloy of iron and phoron."
icon_state = "sheet-plasteel"
item_state = "sheet-metal"
m_amt = 7500
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index f9e0d48bca..8a097eaaa8 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -136,9 +136,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(!src.lit)
src.lit = 1
damtype = "fire"
- if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire
+ if(reagents.get_reagent_amount("phoron")) // the phoron explodes when exposed to fire
var/datum/effect/effect/system/reagents_explosion/e = new()
- e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
+ e.set_up(round(reagents.get_reagent_amount("phoron") / 2.5, 1), get_turf(src), 0, 0)
e.start()
del(src)
return
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index b9321ec9b4..c81d3afb73 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -11,7 +11,7 @@
throw_range = 5
w_class = 3.0
m_amt = 500
- origin_tech = "combat=1;plasmatech=1"
+ origin_tech = "combat=1;phorontech=1"
var/status = 0
var/throw_amount = 100
var/lit = 0 //on or off
@@ -19,7 +19,7 @@
var/turf/previousturf = null
var/obj/item/weapon/weldingtool/weldtool = null
var/obj/item/device/assembly/igniter/igniter = null
- var/obj/item/weapon/tank/plasma/ptank = null
+ var/obj/item/weapon/tank/phoron/ptank = null
/obj/item/weapon/flamethrower/Del()
@@ -102,9 +102,9 @@
update_icon()
return
- if(istype(W,/obj/item/weapon/tank/plasma))
+ if(istype(W,/obj/item/weapon/tank/phoron))
if(ptank)
- user << "There appears to already be a plasma tank loaded in [src]!"
+ user << "There appears to already be a phoron tank loaded in [src]!"
return
user.drop_item()
ptank = W
@@ -123,15 +123,15 @@
var/o2_concentration = ptank.air_contents.oxygen/total_moles
var/n2_concentration = ptank.air_contents.nitrogen/total_moles
var/co2_concentration = ptank.air_contents.carbon_dioxide/total_moles
- var/plasma_concentration = ptank.air_contents.toxins/total_moles
+ var/phoron_concentration = ptank.air_contents.phoron/total_moles
- var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_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)]%"
+ user << "\blue Phoron: [round(phoron_concentration*100)]%"
if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(ptank.air_contents.temperature-T0C)]°C"
@@ -146,9 +146,9 @@
if(user.stat || user.restrained() || user.lying) return
user.set_machine(src)
if(!ptank)
- user << "Attach a plasma tank first!"
+ user << "Attach a phoron tank first!"
return
- var/dat = text("Flamethrower ([lit ? "Lit" : "Unlit"]) \n Tank Pressure: [ptank.air_contents.return_pressure()] \nAmount to throw: --- [throw_amount] +++ \nRemove plasmatank - Close")
+ var/dat = text("Flamethrower ([lit ? "Lit" : "Unlit"]) \n Tank Pressure: [ptank.air_contents.return_pressure()] \nAmount to throw: --- [throw_amount] +++ \nRemove phorontank - Close")
user << browse(dat, "window=flamethrower;size=600x300")
onclose(user, "flamethrower")
return
@@ -163,7 +163,7 @@
usr.set_machine(src)
if(href_list["light"])
if(!ptank) return
- if(ptank.air_contents.toxins < 1) return
+ if(ptank.air_contents.phoron < 1) return
if(!status) return
lit = !lit
if(lit)
@@ -212,8 +212,8 @@
//Transfer 5% of current tank air contents to turf
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.02*(throw_amount/100))
//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
- new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.toxins,get_dir(loc,target))
- air_transfer.toxins = 0
+ new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.phoron,get_dir(loc,target))
+ air_transfer.phoron = 0
target.assume_air(air_transfer)
//Burn it based on transfered gas
//target.hotspot_expose(part4.air_contents.temperature*2,300)
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 2f24667049..ffc49ac899 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -213,7 +213,7 @@
B1.reagents.add_reagent("aluminum", 15)
B1.reagents.add_reagent("fuel",20)
- B2.reagents.add_reagent("plasma", 15)
+ B2.reagents.add_reagent("phoron", 15)
B2.reagents.add_reagent("sacid", 15)
B1.reagents.add_reagent("fuel",20)
diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index ed51855f21..60de17fef2 100644
--- a/code/game/objects/items/weapons/manuals.dm
+++ b/code/game/objects/items/weapons/manuals.dm
@@ -512,7 +512,7 @@
This machine, along with the Protolathe, is used to actually produce new devices. The Circuit Imprinter takes glass and various chemicals (depends on the design) to produce new circuit boards to build new machines or computers. It can even be used to print AI modules.
Protolathe
- This machine is an advanced form of the Autolathe that produce non-circuit designs. Unlike the Autolathe, it can use processed metal, glass, solid plasma, silver, gold, and diamonds along with a variety of chemicals to produce devices.
+ This machine is an advanced form of the Autolathe that produce non-circuit designs. Unlike the Autolathe, it can use processed metal, glass, solid phoron, silver, gold, and diamonds along with a variety of chemicals to produce devices.
The downside is that, again, not all devices you make are 100% reliable when you first discover them.
Reliability and You
diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm
index 1ee12faf0f..9fb8610413 100644
--- a/code/game/objects/items/weapons/power_cells.dm
+++ b/code/game/objects/items/weapons/power_cells.dm
@@ -104,7 +104,7 @@
/obj/item/weapon/cell/slime
name = "charged slime core"
- desc = "A yellow slime core infused with plasma, it crackles with power."
+ desc = "A yellow slime core infused with phoron, it crackles with power."
origin_tech = "powerstorage=2;biotech=4"
icon = 'icons/mob/slimes.dmi' //'icons/obj/harvest.dmi'
icon_state = "yellow slime extract" //"potato_battery"
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index acfde88e2b..60a1845f18 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -15,9 +15,22 @@
max_combined_w_class = 21
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
+ if (src.use_sound)
+ playsound(src.loc, src.use_sound, 50, 1, -5)
..()
+/obj/item/weapon/storage/backpack/equipped(var/mob/user, var/slot)
+ if (slot == slot_back && src.use_sound)
+ playsound(src.loc, src.use_sound, 50, 1, -5)
+ ..(user, slot)
+
+/*
+/obj/item/weapon/storage/backpack/dropped(mob/user as mob)
+ if (loc == user && src.use_sound)
+ playsound(src.loc, src.use_sound, 50, 1, -5)
+ ..(user)
+*/
+
/*
* Backpack Types
*/
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 8bdae5d853..2c1a9977fd 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -8,29 +8,6 @@
slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed", "disciplined")
-
-/obj/item/weapon/storage/belt/proc/can_use()
- return is_equipped()
-
-
-/obj/item/weapon/storage/belt/MouseDrop(obj/over_object as obj, src_location, over_location)
- var/mob/M = usr
- if(!istype(over_object, /obj/screen))
- return ..()
- playsound(src.loc, "rustle", 50, 1, -5)
- if (!M.restrained() && !M.stat && can_use())
- switch(over_object.name)
- if("r_hand")
- M.u_equip(src)
- M.put_in_r_hand(src)
- if("l_hand")
- M.u_equip(src)
- M.put_in_l_hand(src)
- src.add_fingerprint(usr)
- return
-
-
-
/obj/item/weapon/storage/belt/utility
name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
desc = "Can hold various tools."
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index 0e3642b4aa..0545f85d21 100644
--- a/code/game/objects/items/weapons/storage/bible.dm
+++ b/code/game/objects/items/weapons/storage/bible.dm
@@ -102,5 +102,6 @@
A.reagents.add_reagent("holywater",water2holy)
/obj/item/weapon/storage/bible/attackby(obj/item/weapon/W as obj, mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
+ if (src.use_sound)
+ playsound(src.loc, src.use_sound, 50, 1, -5)
..()
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 83189aafd6..18ece30794 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -132,7 +132,19 @@
new /obj/item/ammo_casing/shotgun/blank(src)
new /obj/item/ammo_casing/shotgun/blank(src)
+/obj/item/weapon/storage/box/beanbags
+ name = "box of beanbag shells"
+ desc = "It has a picture of a gun and several warning symbols on the front. WARNING: Live ammunition. Misuse may result in serious injury or death."
+ New()
+ ..()
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/shotgun/beanbag(src)
/obj/item/weapon/storage/box/flashbangs
name = "box of flashbangs (WARNING)"
@@ -410,7 +422,7 @@
/obj/item/weapon/storage/box/matches
name = "matchbox"
- desc = "A small box of Almost But Not Quite Plasma Premium Matches."
+ desc = "A small box of 'Space-Proof' premium matches."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "matchbox"
item_state = "zippo"
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index 40e6e17e80..48a6462651 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -2,7 +2,6 @@
* Contains:
* First Aid Kits
* Pill Bottles
- * Dice Pack (in a pill bottle)
*/
/*
@@ -124,29 +123,7 @@
allow_quick_gather = 1
use_to_pickup = 1
storage_slots = 14
-
-/obj/item/weapon/storage/pill_bottle/MouseDrop(obj/over_object as obj) //Quick pillbottle fix. -Agouri
-
- if (ishuman(usr) || ismonkey(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~
- var/mob/M = usr
- if (!( istype(over_object, /obj/screen) ))
- return ..()
- if ((!( M.restrained() ) && !( M.stat ) /*&& M.pocket == src*/))
- switch(over_object.name)
- if("r_hand")
- M.u_equip(src)
- M.put_in_r_hand(src)
- if("l_hand")
- M.u_equip(src)
- M.put_in_l_hand(src)
- src.add_fingerprint(usr)
- return
- if(over_object == usr && in_range(src, usr) || usr.contents.Find(src))
- if (usr.s_active)
- usr.s_active.close(usr)
- src.show_to(usr)
- return
- return
+ use_sound = null
/obj/item/weapon/storage/pill_bottle/kelotane
name = "bottle of kelotane pills"
@@ -204,12 +181,3 @@
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
-/obj/item/weapon/storage/pill_bottle/dice
- name = "pack of dice"
- desc = "It's a small container with dice inside."
-
- New()
- ..()
- new /obj/item/weapon/dice( src )
- new /obj/item/weapon/dice/d20( src )
-
diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm
new file mode 100644
index 0000000000..11058f0dc5
--- /dev/null
+++ b/code/game/objects/items/weapons/storage/internal.dm
@@ -0,0 +1,87 @@
+//A storage item intended to be used by other items to provide storage functionality.
+//Types that use this should consider overriding emp_act() and hear_talk(), unless they shield their contents somehow.
+/obj/item/weapon/storage/internal
+ var/obj/item/master_item
+
+/obj/item/weapon/storage/internal/New(obj/item/MI)
+ master_item = MI
+ loc = master_item
+ name = master_item.name
+ verbs -= /obj/item/verb/verb_pickup //make sure this is never picked up.
+ ..()
+
+/obj/item/weapon/storage/internal/attack_hand()
+ return //make sure this is never picked up
+
+/obj/item/weapon/storage/internal/mob_can_equip()
+ return 0 //make sure this is never picked up
+
+//Helper procs to cleanly implement internal storages - storage items that provide inventory slots for other items.
+//These procs are completely optional, it is up to the master item to decide when it's storage get's opened by calling open()
+//However they are helpful for allowing the master item to pretend it is a storage item itself.
+//If you are using these you will probably want to override attackby() as well.
+//See /obj/item/clothing/suit/storage for an example.
+
+//items that use internal storage have the option of calling this to emulate default storage MouseDrop behaviour.
+//returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of
+//doing it without the ability to call another proc's parent, really.
+/obj/item/weapon/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj)
+ if (ishuman(user) || ismonkey(user)) //so monkeys can take off their backpacks -- Urist
+
+ if (istype(user.loc,/obj/mecha)) // stops inventory actions in a mech
+ return 0
+
+ if(over_object == user && Adjacent(user)) // this must come before the screen objects only block
+ src.open(user)
+ return 0
+
+ if (!( istype(over_object, /obj/screen) ))
+ return 1
+
+ //makes sure master_item is equipped before putting it in hand, so that we can't drag it into our hand from miles away.
+ //there's got to be a better way of doing this...
+ if (!(master_item.loc == user) || (master_item.loc && master_item.loc.loc == user))
+ return 0
+
+ if (!( user.restrained() ) && !( user.stat ))
+ switch(over_object.name)
+ if("r_hand")
+ user.u_equip(master_item)
+ user.put_in_r_hand(master_item)
+ if("l_hand")
+ user.u_equip(master_item)
+ user.put_in_l_hand(master_item)
+ master_item.add_fingerprint(user)
+ return 0
+ return 0
+
+//items that use internal storage have the option of calling this to emulate default storage attack_hand behaviour.
+//returns 1 if the master item's parent's attack_hand() should be called, 0 otherwise.
+//It's strange, but no other way of doing it without the ability to call another proc's parent, really.
+/obj/item/weapon/storage/internal/proc/handle_attack_hand(mob/user as mob)
+
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(H.l_store == master_item && !H.get_active_hand()) //Prevents opening if it's in a pocket.
+ H.put_in_hands(master_item)
+ H.l_store = null
+ return 0
+ if(H.r_store == master_item && !H.get_active_hand())
+ H.put_in_hands(master_item)
+ H.r_store = null
+ return 0
+
+ src.add_fingerprint(user)
+ if (master_item.loc == user)
+ src.open(user)
+ return 0
+
+ for(var/mob/M in range(1, master_item.loc))
+ if (M.s_active == src)
+ src.close(M)
+ return 1
+
+
+
+
+
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm
new file mode 100644
index 0000000000..1e798304bd
--- /dev/null
+++ b/code/game/objects/items/weapons/storage/misc.dm
@@ -0,0 +1,9 @@
+
+/obj/item/weapon/storage/pill_bottle/dice
+ name = "pack of dice"
+ desc = "It's a small container with dice inside."
+
+ New()
+ ..()
+ new /obj/item/weapon/dice( src )
+ new /obj/item/weapon/dice/d20( src )
diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm
index 8fa93d9f6a..a30168479a 100644
--- a/code/game/objects/items/weapons/storage/secure.dm
+++ b/code/game/objects/items/weapons/storage/secure.dm
@@ -167,16 +167,12 @@
if ((src.loc == user) && (src.locked == 1))
usr << "\red [src] is locked and cannot be opened!"
else if ((src.loc == user) && (!src.locked))
- playsound(src.loc, "rustle", 50, 1, -5)
- if (user.s_active)
- user.s_active.close(user) //Close and re-open
- src.show_to(user)
+ src.open(usr)
else
..()
for(var/mob/M in range(1))
if (M.s_active == src)
src.close(M)
- src.orient2hud(user)
src.add_fingerprint(user)
return
@@ -245,4 +241,4 @@
/obj/item/weapon/storage/secure/safe/HoS/New()
..()
- //new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool)
\ No newline at end of file
+ //new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool)
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 1831309b97..a4c5644598 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -22,41 +22,36 @@
var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile.
var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile
var/foldable = null // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
+ var/use_sound = "rustle" //sound played when used. null for no sound.
/obj/item/weapon/storage/MouseDrop(obj/over_object as obj)
if (ishuman(usr) || ismonkey(usr)) //so monkeys can take off their backpacks -- Urist
- var/mob/M = usr
if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
return
- if(over_object == M && Adjacent(M)) // this must come before the screen objects only block
- orient2hud(M) // dunno why it wasn't before
- if(M.s_active)
- M.s_active.close(M)
- show_to(M)
+ if(over_object == usr && Adjacent(usr)) // this must come before the screen objects only block
+ src.open(usr)
return
if (!( istype(over_object, /obj/screen) ))
return ..()
+
+ //makes sure that the storage is equipped, so that we can't drag it into our hand from miles away.
+ //there's got to be a better way of doing this.
if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
return
- playsound(src.loc, "rustle", 50, 1, -5)
- if (!( M.restrained() ) && !( M.stat ))
+
+ if (!( usr.restrained() ) && !( usr.stat ))
switch(over_object.name)
if("r_hand")
- M.u_equip(src)
- M.put_in_r_hand(src)
+ usr.u_equip(src)
+ usr.put_in_r_hand(src)
if("l_hand")
- M.u_equip(src)
- M.put_in_l_hand(src)
+ usr.u_equip(src)
+ usr.put_in_l_hand(src)
src.add_fingerprint(usr)
return
- if(over_object == usr && in_range(src, usr) || usr.contents.Find(src))
- if (usr.s_active)
- usr.s_active.close(usr)
- src.show_to(usr)
- return
return
@@ -101,6 +96,15 @@
user.s_active = null
return
+/obj/item/weapon/storage/proc/open(mob/user as mob)
+ if (src.use_sound)
+ playsound(src.loc, src.use_sound, 50, 1, -5)
+
+ orient2hud(user)
+ if (user.s_active)
+ user.s_active.close(user)
+ show_to(user)
+
/obj/item/weapon/storage/proc/close(mob/user as mob)
src.hide_from(user)
@@ -313,17 +317,17 @@
if(isrobot(user))
user << "\blue You're a robot. No."
- return 1 //Robots can't interact with storage items.
+ return //Robots can't interact with storage items.
if(!can_be_inserted(W))
- return 0
+ return
if(istype(W, /obj/item/weapon/tray))
var/obj/item/weapon/tray/T = W
if(T.calc_carry() > 0)
if(prob(85))
user << "\red The tray won't fit in [src]."
- return 1
+ return
else
W.loc = user.loc
if ((user.client && user.s_active != src))
@@ -331,15 +335,14 @@
W.dropped(user)
user << "\red God damnit!"
+ W.add_fingerprint(user)
handle_item_insertion(W)
- return 1
+ return
/obj/item/weapon/storage/dropped(mob/user as mob)
return
/obj/item/weapon/storage/attack_hand(mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
-
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.l_store == src && !H.get_active_hand()) //Prevents opening if it's in a pocket.
@@ -350,12 +353,9 @@
H.put_in_hands(src)
H.r_store = null
return
-
- src.orient2hud(user)
+
if (src.loc == user)
- if (user.s_active)
- user.s_active.close(user)
- src.show_to(user)
+ src.open(user)
else
..()
for(var/mob/M in range(1))
@@ -455,4 +455,20 @@
var/obj/O = A
O.hear_talk(M, text)
-
+//Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area).
+//Returns -1 if the atom was not found on user.
+/atom/proc/storage_depth(mob/user)
+ var/depth = 0
+ var/atom/cur_atom = src
+
+ while (cur_atom && !(cur_atom in user.contents))
+ if (isarea(cur_atom))
+ return -1
+ if (istype(cur_atom.loc, /obj/item/weapon/storage))
+ depth++
+ cur_atom = cur_atom.loc
+
+ if (!cur_atom)
+ return -1 //inside something with a null loc.
+
+ return depth
diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
index cdff7937b1..3c63ac3327 100644
--- a/code/game/objects/items/weapons/tanks/jetpack.dm
+++ b/code/game/objects/items/weapons/tanks/jetpack.dm
@@ -61,7 +61,7 @@
var/datum/gas_mixture/G = src.air_contents.remove(num)
- var/allgases = G.carbon_dioxide + G.nitrogen + G.oxygen + G.toxins //fuck trace gases -Pete
+ var/allgases = G.carbon_dioxide + G.nitrogen + G.oxygen + G.phoron //fuck trace gases -Pete
if(allgases >= 0.005)
return 1
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 5e82cddbdf..cfbe34c1a8 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -3,7 +3,7 @@
* Oxygen
* Anesthetic
* Air
- * Plasma
+ * Phoron
* Emergency Oxygen
*/
@@ -92,25 +92,25 @@
/*
- * Plasma
+ * Phoron
*/
-/obj/item/weapon/tank/plasma
- name = "plasma tank"
- desc = "Contains dangerous plasma. Do not inhale. Warning: extremely flammable."
- icon_state = "plasma"
+/obj/item/weapon/tank/phoron
+ name = "phoron tank"
+ desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable."
+ icon_state = "phoron"
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = null //they have no straps!
-/obj/item/weapon/tank/plasma/New()
+/obj/item/weapon/tank/phoron/New()
..()
- src.air_contents.toxins = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
+ src.air_contents.phoron = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
//
src.air_contents.update_values()
return
-/obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
+/obj/item/weapon/tank/phoron/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/flamethrower))
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 6cc4467882..6623c99cb3 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -97,15 +97,15 @@
var/o2_concentration = air_contents.oxygen/total_moles
var/n2_concentration = air_contents.nitrogen/total_moles
var/co2_concentration = air_contents.carbon_dioxide/total_moles
- var/plasma_concentration = air_contents.toxins/total_moles
+ var/phoron_concentration = air_contents.phoron/total_moles
- var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_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)]%"
+ user << "\blue Phoron: [round(phoron_concentration*100)]%"
if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(air_contents.temperature-T0C)]°C"
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index e434913aee..b88550a0b5 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -413,7 +413,7 @@
w_class = 3.0
m_amt = 70
g_amt = 120
- origin_tech = "engineering=4;plasma=3"
+ origin_tech = "engineering=4;phoron=3"
var/last_gen = 0
diff --git a/code/game/objects/storage/coat.dm b/code/game/objects/storage/coat.dm
deleted file mode 100644
index e7457e2497..0000000000
--- a/code/game/objects/storage/coat.dm
+++ /dev/null
@@ -1,228 +0,0 @@
-/obj/item/clothing/suit/storage
- var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else)
- var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set)
- var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set)
- var/max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item.
- var/storage_slots = 2 //The number of storage slots in this container.
- var/obj/screen/storage/boxes = null
- var/obj/screen/close/closer = null
-
-/obj/item/clothing/suit/storage/proc/return_inv()
-
- var/list/L = list( )
-
- L += src.contents
-
- for(var/obj/item/weapon/storage/S in src)
- L += S.return_inv()
- for(var/obj/item/weapon/gift/G in src)
- L += G.gift
- if (istype(G.gift, /obj/item/weapon/storage))
- L += G.gift:return_inv()
- return L
-
-/obj/item/clothing/suit/storage/proc/show_to(mob/user as mob)
- user.client.screen -= src.boxes
- user.client.screen -= src.closer
- user.client.screen -= src.contents
- user.client.screen += src.boxes
- user.client.screen += src.closer
- user.client.screen += src.contents
- user.s_active = src
- return
-
-/obj/item/clothing/suit/storage/proc/hide_from(mob/user as mob)
-
- if(!user.client)
- return
- user.client.screen -= src.boxes
- user.client.screen -= src.closer
- user.client.screen -= src.contents
- return
-
-/obj/item/clothing/suit/storage/proc/close(mob/user as mob)
-
- src.hide_from(user)
- user.s_active = null
- return
-
-//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right.
-//The numbers are calculated from the bottom-left The bottom-left slot being 1,1.
-/obj/item/clothing/suit/storage/proc/orient_objs(tx, ty, mx, my)
- var/cx = tx
- var/cy = ty
- src.boxes.screen_loc = text("[tx]:,[ty] to [mx],[my]")
- for(var/obj/O in src.contents)
- O.screen_loc = text("[cx],[cy]")
- O.layer = 20
- cx++
- if (cx > mx)
- cx = tx
- cy--
- src.closer.screen_loc = text("[mx+1],[my]")
- return
-
-//This proc draws out the inventory and places the items on it. It uses the standard position.
-/obj/item/clothing/suit/storage/proc/standard_orient_objs(var/rows,var/cols)
- var/cx = 4
- var/cy = 2+rows
- src.boxes.screen_loc = text("4:16,2:16 to [4+cols]:16,[2+rows]:16")
- for(var/obj/O in src.contents)
- O.screen_loc = text("[cx]:16,[cy]:16")
- O.layer = 20
- cx++
- if (cx > (4+cols))
- cx = 4
- cy--
- src.closer.screen_loc = text("[4+cols+1]:16,2:16")
- return
-
-//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing.
-/obj/item/clothing/suit/storage/proc/orient2hud(mob/user as mob)
- //var/mob/living/carbon/human/H = user
- var/row_num = 0
- var/col_count = min(7,storage_slots) -1
- if (contents.len > 7)
- row_num = round((contents.len-1) / 7) // 7 is the maximum allowed width.
- src.standard_orient_objs(row_num,col_count)
- return
-
-//This proc is called when you want to place an item into the storage item.
-/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user)
- return
-
- ..()
- if(isrobot(user))
- user << "\blue You're a robot. No."
- return //Robots can't interact with storage items.
-
- if(src.loc == W)
- return //Means the item is already in the storage item
-
- if(contents.len >= storage_slots)
- user << "\red \The [src] is full, make some space."
- return //Storage item is full
-
- if(can_hold.len)
- var/ok = 0
- for(var/A in can_hold)
- if(istype(W, text2path(A) ))
- ok = 1
- break
- if(!ok)
- user << "\red \The [src] cannot hold \the [W]."
- return
-
- for(var/A in cant_hold) //Check for specific items which this container can't hold.
- if(istype(W, text2path(A) ))
- user << "\red \The [src] cannot hold \the [W]."
- return
-
- if (W.w_class > max_w_class)
- user << "\red \The [W] is too big for \the [src]"
- return
-
- var/sum_w_class = W.w_class
- for(var/obj/item/I in contents)
- sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it.
-
- if(sum_w_class > max_combined_w_class)
- user << "\red \The [src] is full, make some space."
- return
-
- if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
- if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm.
- user << "\red \The [src] cannot hold \the [W] as it's a storage item of the same size."
- return //To prevent the stacking of the same sized items.
-
- user.u_equip(W)
- playsound(src.loc, "rustle", 50, 1, -5)
- W.loc = src
- if ((user.client && user.s_active != src))
- user.client.screen -= W
- src.orient2hud(user)
- W.dropped(user)
- add_fingerprint(user)
- show_to(user)
-
-
-/obj/item/weapon/storage/dropped(mob/user as mob)
- return
-
-/obj/item/clothing/suit/storage/MouseDrop(atom/over_object)
- if(ishuman(usr))
- var/mob/living/carbon/human/M = usr
- if (!( istype(over_object, /obj/screen) ))
- return ..()
- playsound(src.loc, "rustle", 50, 1, -5)
- if ((!( M.restrained() ) && !( M.stat ) && M.wear_suit == src))
- if (over_object.name == "r_hand")
- M.u_equip(src)
- M.put_in_r_hand(src)
- // if (!( M.r_hand ))
- // M.u_equip(src)
- // M.r_hand = src
- else if (over_object.name == "l_hand")
- M.u_equip(src)
- M.put_in_l_hand(src)
- // if (!( M.l_hand ))
- // M.u_equip(src)
- // M.l_hand = src
- M.update_inv_wear_suit()
- src.add_fingerprint(usr)
- return
- if( (over_object == usr && in_range(src, usr) || usr.contents.Find(src)) && usr.s_active)
- usr.s_active.close(usr)
- src.show_to(usr)
- return
-
-/obj/item/clothing/suit/storage/attack_paw(mob/user as mob)
- //playsound(src.loc, "rustle", 50, 1, -5) // what
- return src.attack_hand(user)
-
-/obj/item/clothing/suit/storage/attack_hand(mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
- src.orient2hud(user)
- if (src.loc == user)
- if (user.s_active)
- user.s_active.close(user)
- src.show_to(user)
- else
- ..()
- for(var/mob/M in range(1))
- if (M.s_active == src)
- src.close(M)
- src.add_fingerprint(user)
- return
-
-/obj/item/clothing/suit/storage/New()
-
- src.boxes = new /obj/screen/storage( )
- src.boxes.name = "storage"
- src.boxes.master = src
- src.boxes.icon_state = "block"
- src.boxes.screen_loc = "7,7 to 10,8"
- src.boxes.layer = 19
- src.closer = new /obj/screen/close( )
- src.closer.master = src
- src.closer.icon_state = "x"
- src.closer.layer = 20
- orient2hud()
- return
-
-/obj/item/clothing/suit/emp_act(severity)
- if(!istype(src.loc, /mob/living))
- for(var/obj/O in contents)
- O.emp_act(severity)
- ..()
-
-/*
-
-/obj/item/clothing/suit/hear_talk(mob/M, var/msg)
- for (var/atom/A in src)
- if(istype(A,/obj/))
- var/obj/O = A
- O.hear_talk(M, msg)
-
-*/
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 7dc173e33b..f5f69ab367 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -15,7 +15,7 @@
//new /obj/item/clothing/suit/labcoat/science(src)
new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/clothing/shoes/white(src)
-// new /obj/item/weapon/cartridge/signal/toxins(src)
+// new /obj/item/weapon/cartridge/signal/science(src)
new /obj/item/device/radio/headset/headset_sci(src)
new /obj/item/weapon/tank/air(src)
new /obj/item/clothing/mask/gas(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
index 5ee7383b65..6c92f3c2df 100644
--- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
@@ -82,13 +82,13 @@
if(pickednum >= 5)
new /obj/item/stack/sheet/glass(src, rand(common_min, common_max))
- //Plasteel (common ore) Because it has a million more uses then plasma
+ //Plasteel (common ore) Because it has a million more uses then phoron
if(pickednum >= 10)
new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max))
- //Plasma (rare ore)
+ //Phoron (rare ore)
if(pickednum >= 15)
- new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max))
+ new /obj/item/stack/sheet/mineral/phoron(src, rand(rare_min, rare_max))
//Silver (rare ore)
if(pickednum >= 20)
@@ -121,7 +121,7 @@
/obj/item/stack/sheet/glass,
/obj/item/stack/sheet/mineral/gold,
/obj/item/stack/sheet/mineral/silver,
- /obj/item/stack/sheet/mineral/plasma,
+ /obj/item/stack/sheet/mineral/phoron,
/obj/item/stack/sheet/mineral/uranium,
/obj/item/stack/sheet/mineral/diamond,
/obj/item/stack/sheet/mineral/clown,
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index e53374c5c1..a6f4dd97d0 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -227,8 +227,8 @@
return
-/obj/structure/closet/wardrobe/toxins_white
- name = "toxins wardrobe"
+/obj/structure/closet/wardrobe/science_white
+ name = "science wardrobe"
icon_state = "white"
icon_closed = "white"
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 4c4df81ae0..6ad94282f1 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -322,7 +322,7 @@
newgas.oxygen = gas.oxygen
newgas.carbon_dioxide = gas.carbon_dioxide
newgas.nitrogen = gas.nitrogen
- newgas.toxins = gas.toxins
+ newgas.phoron = gas.phoron
newgas.volume = gas.volume
newgas.temperature = gas.temperature
if(newgas.temperature <= target_temp) return
@@ -375,12 +375,12 @@
icon_opened = "weaponcrateopen"
icon_closed = "weaponcrate"
-/obj/structure/closet/crate/secure/plasma
- desc = "A secure plasma crate."
- name = "Plasma crate"
- icon_state = "plasmacrate"
- icon_opened = "plasmacrateopen"
- icon_closed = "plasmacrate"
+/obj/structure/closet/crate/secure/phoron
+ desc = "A secure phoron crate."
+ name = "Phoron crate"
+ icon_state = "phoroncrate"
+ icon_opened = "phoroncrateopen"
+ icon_closed = "phoroncrate"
/obj/structure/closet/crate/secure/gear
desc = "A secure gear crate."
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index b49820dc54..0d496b47cd 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -107,7 +107,7 @@
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
- if(mineral != "plasma")//Stupid shit keeps me from pushing the attackby() to plasma walls -Sieve
+ if(mineral != "phoron")//Stupid shit keeps me from pushing the attackby() to phoron walls -Sieve
T = get_turf(src)
T.attackby(W,user)
del(src)
@@ -120,7 +120,7 @@
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
- if(mineral != "plasma")
+ if(mineral != "phoron")
T = get_turf(src)
T.attackby(W,user)
del(src)
@@ -142,7 +142,7 @@
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
- if(mineral != "plasma")
+ if(mineral != "phoron")
T = get_turf(src)
T.attackby(W,user)
del(src)
@@ -320,11 +320,11 @@
icon_state = ""
mineral = "diamond"
-/obj/structure/falsewall/plasma
- name = "plasma wall"
- desc = "A wall with plasma plating. This is definately a bad idea."
+/obj/structure/falsewall/phoron
+ name = "phoron wall"
+ desc = "A wall with phoron plating. This is definately a bad idea."
icon_state = ""
- mineral = "plasma"
+ mineral = "phoron"
//-----------wtf?-----------start
/obj/structure/falsewall/clown
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index 3cdc4765e6..38f0563897 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -188,8 +188,8 @@
..()
opacity = 0
-/obj/structure/mineral_door/transparent/plasma
- mineralType = "plasma"
+/obj/structure/mineral_door/transparent/phoron
+ mineralType = "phoron"
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/weldingtool))
@@ -207,15 +207,15 @@
var/datum/gas_mixture/napalm = new
- var/toxinsToDeduce = temperature/10
+ var/phoronToDeduce = temperature/10
- napalm.toxins = toxinsToDeduce
+ napalm.phoron = phoronToDeduce
napalm.temperature = 200+T0C
target_tile.assume_air(napalm)
spawn (0) target_tile.hotspot_expose(temperature, 400)
- hardness -= toxinsToDeduce/100
+ hardness -= phoronToDeduce/100
CheckHardness()
/obj/structure/mineral_door/transparent/diamond
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index 37e019963f..f22735bf15 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -1,20 +1,20 @@
/obj/structure/dispenser
name = "tank storage unit"
- desc = "A simple yet bulky storage device for gas tanks. Has room for up to ten oxygen tanks, and ten plasma tanks."
+ desc = "A simple yet bulky storage device for gas tanks. Has room for up to ten oxygen tanks, and ten phoron tanks."
icon = 'icons/obj/objects.dmi'
icon_state = "dispenser"
density = 1
anchored = 1.0
var/oxygentanks = 10
- var/plasmatanks = 10
+ var/phorontanks = 10
var/list/oxytanks = list() //sorry for the similar var names
var/list/platanks = list()
/obj/structure/dispenser/oxygen
- plasmatanks = 0
+ phorontanks = 0
-/obj/structure/dispenser/plasma
+/obj/structure/dispenser/phoron
oxygentanks = 0
@@ -27,16 +27,16 @@
switch(oxygentanks)
if(1 to 3) overlays += "oxygen-[oxygentanks]"
if(4 to INFINITY) overlays += "oxygen-4"
- switch(plasmatanks)
- if(1 to 4) overlays += "plasma-[plasmatanks]"
- if(5 to INFINITY) overlays += "plasma-5"
+ switch(phorontanks)
+ if(1 to 4) overlays += "phoron-[phorontanks]"
+ if(5 to INFINITY) overlays += "phoron-5"
/obj/structure/dispenser/attack_hand(mob/user as mob)
user.set_machine(src)
var/dat = "[src]
"
dat += "Oxygen tanks: [oxygentanks] - [oxygentanks ? "Dispense" : "empty"] "
- dat += "Plasma tanks: [plasmatanks] - [plasmatanks ? "Dispense" : "empty"]"
+ dat += "Phoron tanks: [phorontanks] - [phorontanks ? "Dispense" : "empty"]"
user << browse(dat, "window=dispenser")
onclose(user, "dispenser")
return
@@ -54,12 +54,12 @@
user << "[src] is full."
updateUsrDialog()
return
- if(istype(I, /obj/item/weapon/tank/plasma))
- if(plasmatanks < 10)
+ if(istype(I, /obj/item/weapon/tank/phoron))
+ if(phorontanks < 10)
user.drop_item()
I.loc = src
platanks.Add(I)
- plasmatanks++
+ phorontanks++
user << "You put [I] in [src]."
else
user << "[src] is full."
@@ -91,17 +91,17 @@
usr << "You take [O] out of [src]."
oxygentanks--
update_icon()
- if(href_list["plasma"])
- if(plasmatanks > 0)
- var/obj/item/weapon/tank/plasma/P
- if(platanks.len == plasmatanks)
+ if(href_list["phoron"])
+ if(phorontanks > 0)
+ var/obj/item/weapon/tank/phoron/P
+ if(platanks.len == phorontanks)
P = platanks[1]
platanks.Remove(P)
else
- P = new /obj/item/weapon/tank/plasma(loc)
+ P = new /obj/item/weapon/tank/phoron(loc)
P.loc = loc
usr << "You take [P] out of [src]."
- plasmatanks--
+ phorontanks--
update_icon()
add_fingerprint(usr)
updateUsrDialog()
diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm
index 29bbed2e9c..2dcc270bdb 100644
--- a/code/game/objects/structures/transit_tubes.dm
+++ b/code/game/objects/structures/transit_tubes.dm
@@ -362,7 +362,7 @@ obj/structure/ex_act(severity)
GM.oxygen = air_contents.oxygen
GM.carbon_dioxide = air_contents.carbon_dioxide
GM.nitrogen = air_contents.nitrogen
- GM.toxins = air_contents.toxins
+ GM.phoron = air_contents.phoron
GM.temperature = air_contents.temperature
return GM
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 843ab7dd37..0cf0f5ec93 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -368,29 +368,29 @@
icon_state = "window"
basestate = "window"
-/obj/structure/window/plasmabasic
- name = "plasma window"
- desc = "A plasma-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through."
- basestate = "plasmawindow"
- icon_state = "plasmawindow"
- shardtype = /obj/item/weapon/shard/plasma
+/obj/structure/window/phoronbasic
+ name = "phoron window"
+ desc = "A phoron-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through."
+ basestate = "phoronwindow"
+ icon_state = "phoronwindow"
+ shardtype = /obj/item/weapon/shard/phoron
health = 120
-/obj/structure/window/plasmabasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/window/phoronbasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 32000)
hit(round(exposed_volume / 1000), 0)
..()
-/obj/structure/window/plasmareinforced
- name = "reinforced plasma window"
- desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof."
- basestate = "plasmarwindow"
- icon_state = "plasmarwindow"
- shardtype = /obj/item/weapon/shard/plasma
+/obj/structure/window/phoronreinforced
+ name = "reinforced phoron window"
+ desc = "A phoron-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic phoron windows are insanely fireproof."
+ basestate = "phoronrwindow"
+ icon_state = "phoronrwindow"
+ shardtype = /obj/item/weapon/shard/phoron
reinf = 1
health = 160
-/obj/structure/window/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/window/phoronreinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
return
/obj/structure/window/reinforced
@@ -413,4 +413,17 @@
desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window."
icon_state = "fwindow"
basestate = "fwindow"
- health = 30
\ No newline at end of file
+ health = 30
+
+/obj/structure/window/shuttle
+ name = "shuttle window"
+ desc = "It looks rather strong. Might take a few good hits to shatter it."
+ icon = 'icons/obj/podwindows.dmi'
+ icon_state = "window"
+ basestate = "window"
+ health = 40
+ reinf = 1
+ dir = 5
+
+ update_icon() //icon_state has to be set manually
+ return
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index 7b5327addc..037956d5fd 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -134,7 +134,7 @@ var/list/mechtoys = list(
var/points_per_process = 1
var/points_per_slip = 2
var/points_per_crate = 5
- var/plasma_per_point = 2 // 2 plasma for 1 point
+ var/phoron_per_point = 2 // 2 phoron for 1 point
//control
var/ordernum
var/list/shoppinglist = list()
@@ -234,7 +234,7 @@ var/list/mechtoys = list(
var/area/shuttle = locate(shuttle_at)
if(!shuttle) return
- var/plasma_count = 0
+ var/phoron_count = 0
for(var/atom/movable/MA in shuttle)
if(MA.anchored) continue
@@ -254,14 +254,14 @@ var/list/mechtoys = list(
find_slip = 0
continue
- // Sell plasma
- if(istype(A, /obj/item/stack/sheet/mineral/plasma))
- var/obj/item/stack/sheet/mineral/plasma/P = A
- plasma_count += P.amount
+ // Sell phoron
+ if(istype(A, /obj/item/stack/sheet/mineral/phoron))
+ var/obj/item/stack/sheet/mineral/phoron/P = A
+ phoron_count += P.amount
del(MA)
- if(plasma_count)
- points += Floor(plasma_count / plasma_per_point)
+ if(phoron_count)
+ points += Floor(phoron_count / phoron_per_point)
//Buyin
proc/buy()
diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm
index e1ec717d30..2d08a1dd65 100644
--- a/code/game/turfs/simulated/walls_mineral.dm
+++ b/code/game/turfs/simulated/walls_mineral.dm
@@ -76,20 +76,20 @@
radiate()
..()
-/turf/simulated/wall/mineral/plasma
- name = "plasma wall"
- desc = "A wall with plasma plating. This is definately a bad idea."
- icon_state = "plasma0"
- walltype = "plasma"
- mineral = "plasma"
+/turf/simulated/wall/mineral/phoron
+ name = "phoron wall"
+ desc = "A wall with phoron plating. This is definately a bad idea."
+ icon_state = "phoron0"
+ walltype = "phoron"
+ mineral = "phoron"
-/turf/simulated/wall/mineral/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
+/turf/simulated/wall/mineral/phoron/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
ignite(is_hot(W))
return
..()
-/turf/simulated/wall/mineral/plasma/proc/PlasmaBurn(temperature)
+/turf/simulated/wall/mineral/phoron/proc/PhoronBurn(temperature)
spawn(2)
new /obj/structure/girder(src)
src.ChangeTurf(/turf/simulated/floor)
@@ -97,33 +97,33 @@
/*if(target_tile.parent && target_tile.parent.group_processing)
target_tile.parent.suspend_group_processing()*/
var/datum/gas_mixture/napalm = new
- var/toxinsToDeduce = 20
- napalm.toxins = toxinsToDeduce
+ var/phoronToDeduce = 20
+ napalm.phoron = phoronToDeduce
napalm.temperature = 400+T0C
target_tile.assume_air(napalm)
spawn (0) target_tile.hotspot_expose(temperature, 400)
- for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
+ for(var/obj/structure/falsewall/phoron/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
var/turf/T = get_turf(F)
- T.ChangeTurf(/turf/simulated/wall/mineral/plasma/)
+ T.ChangeTurf(/turf/simulated/wall/mineral/phoron/)
del (F)
- for(var/turf/simulated/wall/mineral/plasma/W in range(3,src))
+ for(var/turf/simulated/wall/mineral/phoron/W in range(3,src))
W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
- for(var/obj/machinery/door/airlock/plasma/D in range(3,src))
+ for(var/obj/machinery/door/airlock/phoron/D in range(3,src))
D.ignite(temperature/4)
-/turf/simulated/wall/mineral/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :(
+/turf/simulated/wall/mineral/phoron/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :(
if(exposed_temperature > 300)
- PlasmaBurn(exposed_temperature)
+ PhoronBurn(exposed_temperature)
-/turf/simulated/wall/mineral/plasma/proc/ignite(exposed_temperature)
+/turf/simulated/wall/mineral/phoron/proc/ignite(exposed_temperature)
if(exposed_temperature > 300)
- PlasmaBurn(exposed_temperature)
+ PhoronBurn(exposed_temperature)
-/turf/simulated/wall/mineral/plasma/bullet_act(var/obj/item/projectile/Proj)
+/turf/simulated/wall/mineral/phoron/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj,/obj/item/projectile/beam))
- PlasmaBurn(2500)
+ PhoronBurn(2500)
else if(istype(Proj,/obj/item/projectile/ion))
- PlasmaBurn(500)
+ PhoronBurn(500)
..()
/*
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 57e9aab94c..fb0a165eb5 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -9,7 +9,7 @@
var/oxygen = 0
var/carbon_dioxide = 0
var/nitrogen = 0
- var/toxins = 0
+ var/phoron = 0
//Properties for airtight tiles (/wall)
var/thermal_conductivity = 0.05
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 4170c82b5c..54b4c2c2fb 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -563,7 +563,7 @@ var/global/floorIsLava = 0
Create Turf Create Mob
Edit Airflow Settings
- Edit Plasma Settings
+ Edit Phoron Settings Choose a default ZAS setting
"}
@@ -961,7 +961,7 @@ var/global/floorIsLava = 0
/datum/admins/proc/get_sab_desc(var/target)
switch(target)
if(1)
- return "Destroy at least 70% of the plasma canisters on the station"
+ return "Destroy at least 70% of the phoron canisters on the station"
if(2)
return "Destroy the AI"
if(3)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 17a7b03e91..25cf3065d0 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -682,6 +682,12 @@ var/list/admin_verbs_mentor = list(
M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
+ var/new_skin = input("Please select body color. This is for Tajaran, Unathi, and Skrell only!", "Character Generation") as color
+ if(new_skin)
+ M.r_skin = hex2num(copytext(new_skin, 2, 4))
+ M.g_skin = hex2num(copytext(new_skin, 4, 6))
+ M.b_skin = hex2num(copytext(new_skin, 6, 8))
+
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
if (new_tone)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 0754c39fc9..87588e97e8 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2599,7 +2599,7 @@
if(check_rights(R_ADMIN|R_SERVER))
if(href_list["vsc"] == "airflow")
vsc.ChangeSettingsDialog(usr,vsc.settings)
- if(href_list["vsc"] == "plasma")
+ if(href_list["vsc"] == "phoron")
vsc.ChangeSettingsDialog(usr,vsc.plc.settings)
if(href_list["vsc"] == "default")
vsc.SetDefault(usr)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 72bf9cfb6e..d2a53f0aff 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -144,7 +144,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
var/t = ""
t+= "Nitrogen : [env.nitrogen]\n"
t+= "Oxygen : [env.oxygen]\n"
- t+= "Plasma : [env.toxins]\n"
+ t+= "Phoron : [env.phoron]\n"
t+= "CO2: [env.carbon_dioxide]\n"
usr.show_message(t, 1)
@@ -955,11 +955,11 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
for(var/obj/machinery/power/rad_collector/Rad in world)
if(Rad.anchored)
if(!Rad.P)
- var/obj/item/weapon/tank/plasma/Plasma = new/obj/item/weapon/tank/plasma(Rad)
- Plasma.air_contents.toxins = 70
+ var/obj/item/weapon/tank/phoron/Phoron = new/obj/item/weapon/tank/phoron(Rad)
+ Phoron.air_contents.phoron = 70
Rad.drainratio = 0
- Rad.P = Plasma
- Plasma.loc = Rad
+ Rad.P = Phoron
+ Phoron.loc = Rad
if(!Rad.active)
Rad.toggle_power()
@@ -997,12 +997,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
Rad.anchored = 1
Rad.connect_to_network()
- var/obj/item/weapon/tank/plasma/Plasma = new/obj/item/weapon/tank/plasma(Rad)
+ var/obj/item/weapon/tank/phoron/Phoron = new/obj/item/weapon/tank/phoron(Rad)
- Plasma.air_contents.toxins = 29.1154 //This is a full tank if you filled it from a canister
- Rad.P = Plasma
+ Phoron.air_contents.phoron = 29.1154 //This is a full tank if you filled it from a canister
+ Rad.P = Phoron
- Plasma.loc = Rad
+ Phoron.loc = Rad
if(!Rad.active)
Rad.toggle_power()
@@ -1043,13 +1043,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
T.zone.air.nitrogen += 450
T.zone.air.temperature = 50
T.zone.air.update_values()
-
-
+
+
log_admin("[key_name(usr)] setup the supermatter engine [response == "Setup except coolant" ? "without coolant" : ""]")
message_admins("\blue [key_name_admin(usr)] setup the supermatter engine [response == "Setup except coolant" ? "without coolant": ""]", 1)
return
-
-
+
+
/client/proc/cmd_debug_mob_lists()
set category = "Debug"
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index bbf74c9dbb..a602a2eb71 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -56,7 +56,7 @@
if(T.active_hotspot)
burning = 1
- usr << "\blue @[target.x],[target.y] ([GM.group_multiplier]): O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]"
+ usr << "\blue @[target.x],[target.y] ([GM.group_multiplier]): O:[GM.oxygen] T:[GM.phoron] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]"
for(var/datum/gas/trace_gas in GM.trace_gases)
usr << "[trace_gas.type]: [trace_gas.moles]"
feedback_add_details("admin_verb","DAST") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 6f4ee9340c..9d25643468 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -73,11 +73,11 @@ client/proc/one_click_antag()
candidates += applicant
if(candidates.len)
- var/numTratiors = min(candidates.len, 3)
+ var/numTraitors = min(candidates.len, 3)
- for(var/i = 0, i[f_style] "
dat += " Eyes "
- dat += "Change Color
"
+ for(var/datum/transaction/T in authenticated_account.transaction_log)
+ R.info += "
"
+ R.info += "
[T.date]
"
+ R.info += "
[T.time]
"
+ R.info += "
[T.target_name]
"
+ R.info += "
[T.purpose]
"
+ R.info += "
$[T.amount]
"
+ R.info += "
[T.source_terminal]
"
+ R.info += "
"
+ R.info += "
"
+
+ //stamp the paper
+ var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
+ stampoverlay.icon_state = "paper_stamp-cent"
+ if(!R.stamped)
+ R.stamped = new
+ R.stamped += /obj/item/weapon/stamp
+ R.overlays += stampoverlay
+ R.stamps += "This paper has been stamped by the Automatic Teller Machine."
+
+ if(prob(50))
+ playsound(loc, 'sound/items/polaroid1.ogg', 50, 1)
+ else
+ playsound(loc, 'sound/items/polaroid2.ogg', 50, 1)
+
if("insert_card")
if(!held_card)
//this might happen if the user had the browser window open when somebody emagged it
@@ -402,3 +448,9 @@ log transactions
if(ishuman(human_user) && !human_user.get_active_hand())
human_user.put_in_hands(held_card)
held_card = null
+
+
+/obj/machinery/atm/proc/spawn_ewallet(var/sum, loc)
+ var/obj/item/weapon/spacecash/ewallet/E = new /obj/item/weapon/spacecash/ewallet(loc)
+ E.worth = sum
+ E.owner_name = authenticated_account.owner_name
diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm
index 12f941bd1c..3812ab70c6 100644
--- a/code/modules/economy/EFTPOS.dm
+++ b/code/modules/economy/EFTPOS.dm
@@ -22,6 +22,7 @@
//create a short manual as well
var/obj/item/weapon/paper/R = new(src.loc)
R.name = "Steps to success: Correct EFTPOS Usage"
+ /*
R.info += "When first setting up your EFTPOS device:"
R.info += "1. Memorise your EFTPOS command code (provided with all EFTPOS devices). "
R.info += "2. Confirm that your EFTPOS device is connected to your local accounts database. For additional assistance with this step, contact NanoTrasen IT Support "
@@ -33,6 +34,17 @@
R.info += "4. If at this stage you wish to modify or cancel your transaction, you may simply reset (unlock) your EFTPOS device. "
R.info += "5. Give your EFTPOS device to the customer, they must authenticate the transaction by swiping their ID card and entering their PIN number. "
R.info += "6. If done correctly, the transaction will be logged to both accounts with the reference you have entered, the terminal ID of your EFTPOS device and the money transferred across accounts. "
+ */
+ //Temptative new manual:
+ R.info += "First EFTPOS setup: "
+ R.info += "1. Memorise your EFTPOS command code (provided with all EFTPOS devices). "
+ R.info += "2. Connect the EFTPOS to the account in which you want to receive the funds.
"
+ R.info += "When starting a new transaction: "
+ R.info += "1. Enter the amount of money you want to charge and a purpose message for the new transaction. "
+ R.info += "2. Lock the new transaction. If you want to modify or cancel the transaction, you simply have to reset your EFTPOS device. "
+ R.info += "3. Give the EFTPOS device to your customer, he/she must finish the transaction by swiping their ID card or a charge card with enough funds. "
+ R.info += "4. If everything is done correctly, the money will be transferred. To unlock the device you will have to reset the EFTPOS device. "
+
//stamp the paper
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
@@ -72,7 +84,7 @@
var/dat = "[eftpos_name] "
dat += "This terminal is [machine_id]. Report this code when contacting NanoTrasen IT Support "
if(transaction_locked)
- dat += "Reset[transaction_paid ? "" : " (authentication required)"]
"
dat += "Transaction purpose: [transaction_purpose] "
dat += "Value: $[transaction_amount] "
@@ -102,6 +114,36 @@
scan_card(I)
else
usr << "\icon[src]Unable to connect to linked account."
+ else if (istype(O, /obj/item/weapon/spacecash/ewallet))
+ var/obj/item/weapon/spacecash/ewallet/E = O
+ if (linked_account)
+ if(!linked_account.suspended)
+ if(transaction_locked && !transaction_paid)
+ if(transaction_amount <= E.worth)
+ playsound(src, 'sound/machines/chime.ogg', 50, 1)
+ src.visible_message("\icon[src] The [src] chimes.")
+ transaction_paid = 1
+
+ //transfer the money
+ E.worth -= transaction_amount
+ linked_account.money += transaction_amount
+
+ //create entry in the EFTPOS linked account transaction log
+ var/datum/transaction/T = new()
+ T.target_name = E.owner_name //D.owner_name
+ T.purpose = transaction_purpose
+ T.amount = transaction_amount
+ T.source_terminal = machine_id
+ T.date = current_date_string
+ T.time = worldtime2text()
+ linked_account.transaction_log.Add(T)
+ else
+ usr << "\icon[src]The charge card doesn't have that much money!"
+ else
+ usr << "\icon[src]Connected account has been suspended."
+ else
+ usr << "\icon[src]EFTPOS is not connected to an account."
+
else
..()
@@ -143,10 +185,14 @@
transaction_amount = try_num
if("toggle_lock")
if(transaction_locked)
- var/attempt_code = input("Enter EFTPOS access code", "Reset Transaction") as num
- if(attempt_code == access_code)
+ if (transaction_paid)
transaction_locked = 0
transaction_paid = 0
+ else
+ var/attempt_code = input("Enter EFTPOS access code", "Reset Transaction") as num
+ if(attempt_code == access_code)
+ transaction_locked = 0
+ transaction_paid = 0
else if(linked_account)
transaction_locked = 1
else
diff --git a/code/modules/economy/Events_Mundane.dm b/code/modules/economy/Events_Mundane.dm
index 60f9f3bb99..97f8718d8c 100644
--- a/code/modules/economy/Events_Mundane.dm
+++ b/code/modules/economy/Events_Mundane.dm
@@ -22,7 +22,7 @@
newMsg.body = ""
switch(event_type)
if(RESEARCH_BREAKTHROUGH)
- newMsg.body = "A major breakthough in the field of [pick("plasma research","super-compressed materials","nano-augmentation","bluespace research","volatile power manipulation")] \
+ newMsg.body = "A major breakthough in the field of [pick("phoron research","super-compressed materials","nano-augmentation","bluespace research","volatile power manipulation")] \
was announced [pick("yesterday","a few days ago","last week","earlier this month")] by a private firm on [affected_dest.name]. \
NanoTrasen declined to comment as to whether this could impinge on profits."
diff --git a/code/modules/economy/TradeDestinations.dm b/code/modules/economy/TradeDestinations.dm
index 6778a1b6b1..596276006d 100644
--- a/code/modules/economy/TradeDestinations.dm
+++ b/code/modules/economy/TradeDestinations.dm
@@ -61,7 +61,7 @@ var/list/weighted_mundaneevent_locations = list()
/datum/trade_destination/redolant/get_custom_eventstring(var/event_type)
if(event_type == RESEARCH_BREAKTHROUGH)
return "Thanks to research conducted on the OAV Redolant, Osiris Atmospherics wishes to announce a major breakthough in the field of \
- [pick("plasma research","high energy flux capacitance","super-compressed materials","theoretical particle physics")]. NanoTrasen is expected to announce a co-exploitation deal within the fortnight."
+ [pick("phoron research","high energy flux capacitance","super-compressed materials","theoretical particle physics")]. NanoTrasen is expected to announce a co-exploitation deal within the fortnight."
return null
/datum/trade_destination/beltway
diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm
index 481f9f8b42..8067120695 100644
--- a/code/modules/economy/cash.dm
+++ b/code/modules/economy/cash.dm
@@ -71,4 +71,16 @@ proc/spawn_money(var/sum, spawnloc)
while(sum >= i)
sum -= i
new cash_type(spawnloc)
- return
\ No newline at end of file
+ return
+
+/obj/item/weapon/spacecash/ewallet
+ name = "Charge card"
+ icon_state = "efundcard"
+ desc = "A card that holds an amount of money."
+ var/owner_name = "" //So the ATM can set it so the EFTPOS can put a valid name on transactions.
+
+/obj/item/weapon/spacecash/ewallet/examine()
+ set src in view()
+ ..()
+ if (!(usr in view(2)) && usr!=src.loc) return
+ usr << "\blue Charge card's owner: [src.owner_name]. Credits remaining: [src.worth]."
\ No newline at end of file
diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm
index b236c2905d..e860cca95f 100644
--- a/code/modules/economy/economy_misc.dm
+++ b/code/modules/economy/economy_misc.dm
@@ -47,7 +47,7 @@
#define GEAR_EVA 15
//---- The following corporations are friendly with NanoTrasen and loosely enable trade and travel:
-//Corporation NanoTrasen - Generalised / high tech research and plasma exploitation.
+//Corporation NanoTrasen - Generalised / high tech research and phoron exploitation.
//Corporation Vessel Contracting - Ship and station construction, materials research.
//Corporation Osiris Atmospherics - Atmospherics machinery construction and chemical research.
//Corporation Second Red Cross Society - 26th century Red Cross reborn as a dominating economic force in biomedical science (research and materials).
diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm
index 31f4ecdc19..96a2fcc263 100644
--- a/code/modules/events/infestation.dm
+++ b/code/modules/events/infestation.dm
@@ -7,7 +7,7 @@
#define LOC_VAULT 6
#define LOC_CONSTR 7
#define LOC_TECH 8
-#define LOC_ASSEMBLY 9
+#define LOC_TACTICAL 9
#define VERM_MICE 0
#define VERM_LIZARDS 1
@@ -54,9 +54,9 @@
if(LOC_TECH)
spawn_area_type = /area/storage/tech
locstring = "technical storage"
- if(LOC_ASSEMBLY)
- spawn_area_type = /area/assembly/assembly_line
- locstring = "the unused assembly line"
+ if(LOC_TACTICAL)
+ spawn_area_type = /area/security/tactical
+ locstring = "tactical equipment storage"
//world << "looking for [spawn_area_type]"
for(var/areapath in typesof(spawn_area_type))
@@ -83,6 +83,7 @@
vermstring = "lizards"
if(VERM_SPIDERS)
spawn_types = list(/obj/effect/spider/spiderling)
+ max_number = 3
vermstring = "spiders"
spawn(0)
@@ -92,7 +93,6 @@
turfs.Remove(T)
num--
-
if(vermin == VERM_SPIDERS)
var/obj/effect/spider/spiderling/S = new(T)
S.amount_grown = -1
@@ -112,7 +112,7 @@
#undef LOC_HYDRO
#undef LOC_VAULT
#undef LOC_TECH
-#undef LOC_ASSEMBLY
+#undef LOC_TACTICAL
#undef VERM_MICE
#undef VERM_LIZARDS
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index d466ca2471..f48846c590 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -4,7 +4,7 @@ mob/living/carbon/proc/dream()
"an ID card","a bottle","a familiar face","a crewmember","a toolbox","a security officer","the captain",
"voices from all around","deep space","a doctor","the engine","a traitor","an ally","darkness",
"light","a scientist","a monkey","a catastrophe","a loved one","a gun","warmth","freezing","the sun",
- "a hat","the Luna","a ruined station","a planet","plasma","air","the medical bay","the bridge","blinking lights",
+ "a hat","the Luna","a ruined station","a planet","phoron","air","the medical bay","the bridge","blinking lights",
"a blue light","an abandoned laboratory","Nanotrasen","The Syndicate","blood","healing","power","respect",
"riches","space","a crash","happiness","pride","a fall","water","flames","ice","melons","flying","the eggs","money",
"the head of personnel","the head of security","a chief engineer","a research director","a chief medical officer",
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 18e4f2916a..89a1cfa610 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -1,7 +1,7 @@
/*
Ideas for the subtle effects of hallucination:
-Light up oxygen/plasma indicators (done)
+Light up oxygen/phoron indicators (done)
Cause health to look critical/dead, even when standing (done)
Characters silently watching you
Brief flashes of fire/space/bombs/c4/dangerous shit (done)
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 26de93122b..ffb4915d78 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -237,6 +237,12 @@
else
..()
+/obj/item/weapon/book/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ if(user.zone_sel.selecting == "eyes")
+ user.visible_message("You open up the book and show it to [M]. ", \
+ " [user] opens up a book and shows it to [M]. ")
+ M << browse("Penned by [author]. " + "[dat]", "window=book")
+
/*
* Barcode Scanner
diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm
index 01e009232d..b41ff4ab16 100644
--- a/code/modules/mining/machine_processing.dm
+++ b/code/modules/mining/machine_processing.dm
@@ -2,7 +2,7 @@
#define ORE_PROC_SILVER 2
#define ORE_PROC_DIAMOND 4
#define ORE_PROC_GLASS 8
-#define ORE_PROC_PLASMA 16
+#define ORE_PROC_PHORON 16
#define ORE_PROC_URANIUM 32
#define ORE_PROC_IRON 64
#define ORE_PROC_CLOWN 128
@@ -39,7 +39,7 @@
var/dat = "Smelter control console
"
//iron
- if(machine.ore_iron || machine.ore_glass || machine.ore_plasma || machine.ore_uranium || machine.ore_gold || machine.ore_silver || machine.ore_diamond || machine.ore_clown || machine.ore_adamantine)
+ if(machine.ore_iron || machine.ore_glass || machine.ore_phoron || machine.ore_uranium || machine.ore_gold || machine.ore_silver || machine.ore_diamond || machine.ore_clown || machine.ore_adamantine)
if(machine.ore_iron)
if (machine.selected & ORE_PROC_IRON)
dat += text("Smelting ")
@@ -59,15 +59,15 @@
else
machine.selected &= ~ORE_PROC_GLASS
- //plasma
- if(machine.ore_plasma)
- if (machine.selected & ORE_PROC_PLASMA)
- dat += text("Smelting ")
+ //phoron
+ if(machine.ore_phoron)
+ if (machine.selected & ORE_PROC_PHORON)
+ dat += text("Smelting ")
else
- dat += text("Not smelting ")
- dat += text("Plasma: [machine.ore_plasma] ")
+ dat += text("Not smelting ")
+ dat += text("Phoron: [machine.ore_phoron] ")
else
- machine.selected &= ~ORE_PROC_PLASMA
+ machine.selected &= ~ORE_PROC_PHORON
//uranium
if(machine.ore_uranium)
@@ -148,11 +148,11 @@
machine.selected |= ORE_PROC_GLASS
else
machine.selected &= ~ORE_PROC_GLASS
- if(href_list["sel_plasma"])
- if (href_list["sel_plasma"] == "yes")
- machine.selected |= ORE_PROC_PLASMA
+ if(href_list["sel_phoron"])
+ if (href_list["sel_phoron"] == "yes")
+ machine.selected |= ORE_PROC_PHORON
else
- machine.selected &= ~ORE_PROC_PLASMA
+ machine.selected &= ~ORE_PROC_PHORON
if(href_list["sel_uranium"])
if (href_list["sel_uranium"] == "yes")
machine.selected |= ORE_PROC_URANIUM
@@ -204,7 +204,7 @@
var/ore_silver = 0;
var/ore_diamond = 0;
var/ore_glass = 0;
- var/ore_plasma = 0;
+ var/ore_phoron = 0;
var/ore_uranium = 0;
var/ore_iron = 0;
var/ore_clown = 0;
@@ -280,10 +280,10 @@
else
on = 0
continue
- if (selected == ORE_PROC_PLASMA)
- if (ore_plasma > 0)
- ore_plasma--;
- new /obj/item/stack/sheet/mineral/plasma(output.loc)
+ if (selected == ORE_PROC_PHORON)
+ if (ore_phoron > 0)
+ ore_phoron--;
+ new /obj/item/stack/sheet/mineral/phoron(output.loc)
else
on = 0
continue
@@ -301,10 +301,10 @@
else
on = 0
continue
- if (selected == ORE_PROC_IRON + ORE_PROC_PLASMA)
- if (ore_iron > 0 && ore_plasma > 0)
+ if (selected == ORE_PROC_IRON + ORE_PROC_PHORON)
+ if (ore_iron > 0 && ore_phoron > 0)
ore_iron--;
- ore_plasma--;
+ ore_phoron--;
new /obj/item/stack/sheet/plasteel(output.loc)
else
on = 0
@@ -317,7 +317,7 @@
on = 0
continue
/*
- if (selected == ORE_PROC_GLASS + ORE_PROC_PLASMA)
+ if (selected == ORE_PROC_GLASS + ORE_PROC_PHORON)
if (ore_glass > 0 && ore_plasma > 0)
ore_glass--;
ore_plasma--;
@@ -325,7 +325,7 @@
else
on = 0
continue
- if (selected == ORE_PROC_GLASS + ORE_PROC_IRON + ORE_PROC_PLASMA)
+ if (selected == ORE_PROC_GLASS + ORE_PROC_IRON + ORE_PROC_PHORON)
if (ore_glass > 0 && ore_plasma > 0 && ore_iron > 0)
ore_glass--;
ore_iron--;
@@ -345,10 +345,10 @@
else
on = 0
continue
- if (selected == ORE_PROC_SILVER + ORE_PROC_PLASMA)
- if (ore_silver >= 1 && ore_plasma >= 3)
+ if (selected == ORE_PROC_SILVER + ORE_PROC_PHORON)
+ if (ore_silver >= 1 && ore_phoron >= 3)
ore_silver -= 1
- ore_plasma -= 3
+ ore_phoron -= 3
new /obj/item/stack/sheet/mineral/mythril(output.loc)
else
on = 0
@@ -375,8 +375,8 @@
if (selected & ORE_PROC_URANIUM)
if (ore_uranium <= 0)
b = 0
- if (selected & ORE_PROC_PLASMA)
- if (ore_plasma <= 0)
+ if (selected & ORE_PROC_PHORON)
+ if (ore_phoron <= 0)
b = 0
if (selected & ORE_PROC_IRON)
if (ore_iron <= 0)
@@ -397,8 +397,8 @@
ore_diamond--
if (selected & ORE_PROC_URANIUM)
ore_uranium--
- if (selected & ORE_PROC_PLASMA)
- ore_plasma--
+ if (selected & ORE_PROC_PHORON)
+ ore_phoron--
if (selected & ORE_PROC_IRON)
ore_iron--
if (selected & ORE_PROC_CLOWN)
@@ -430,8 +430,8 @@
O.loc = null
//del(O)
continue
- if (istype(O,/obj/item/weapon/ore/plasma))
- ore_plasma++
+ if (istype(O,/obj/item/weapon/ore/phoron))
+ ore_phoron++
O.loc = null
//del(O)
continue
diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm
index 138a42aaaa..13f3e0290d 100644
--- a/code/modules/mining/machine_stacking.dm
+++ b/code/modules/mining/machine_stacking.dm
@@ -40,12 +40,12 @@
dat += text("Glass: [machine.ore_glass] Release ")
if(machine.ore_rglass)
dat += text("Reinforced Glass: [machine.ore_rglass] Release ")
- if(machine.ore_plasma)
- dat += text("Plasma: [machine.ore_plasma] Release ")
- if(machine.ore_plasmaglass)
- dat += text("Plasma Glass: [machine.ore_plasmaglass] Release ")
- if(machine.ore_plasmarglass)
- dat += text("Reinforced Plasma Glass: [machine.ore_plasmarglass] Release ")
+ if(machine.ore_phoron)
+ dat += text("Phoron: [machine.ore_phoron] Release ")
+ if(machine.ore_phoronglass)
+ dat += text("Phoron Glass: [machine.ore_phoronglass] Release ")
+ if(machine.ore_phoronrglass)
+ dat += text("Reinforced Phoron Glass: [machine.ore_phoronrglass] Release ")
if(machine.ore_gold)
dat += text("Gold: [machine.ore_gold] Release ")
if(machine.ore_silver)
@@ -81,24 +81,24 @@
src.add_fingerprint(usr)
if(href_list["release"])
switch(href_list["release"])
- if ("plasma")
- if (machine.ore_plasma > 0)
- var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma
- G.amount = machine.ore_plasma
+ if ("phoron")
+ if (machine.ore_phoron > 0)
+ var/obj/item/stack/sheet/mineral/phoron/G = new /obj/item/stack/sheet/mineral/phoron
+ G.amount = machine.ore_phoron
G.loc = machine.output.loc
- machine.ore_plasma = 0
- if ("plasmaglass")
- if (machine.ore_plasmaglass > 0)
- var/obj/item/stack/sheet/glass/plasmaglass/G = new /obj/item/stack/sheet/glass/plasmaglass
- G.amount = machine.ore_plasmaglass
+ machine.ore_phoron = 0
+ if ("phoronglass")
+ if (machine.ore_phoronglass > 0)
+ var/obj/item/stack/sheet/glass/phoronglass/G = new /obj/item/stack/sheet/glass/phoronglass
+ G.amount = machine.ore_phoronglass
G.loc = machine.output.loc
- machine.ore_plasmaglass = 0
- if ("plasmarglass")
- if (machine.ore_plasmarglass > 0)
- var/obj/item/stack/sheet/glass/plasmarglass/G = new /obj/item/stack/sheet/glass/plasmarglass
- G.amount = machine.ore_plasmarglass
+ machine.ore_phoronglass = 0
+ if ("phoronrglass")
+ if (machine.ore_phoronrglass > 0)
+ var/obj/item/stack/sheet/glass/phoronrglass/G = new /obj/item/stack/sheet/glass/phoronrglass
+ G.amount = machine.ore_phoronrglass
G.loc = machine.output.loc
- machine.ore_plasmarglass = 0
+ machine.ore_phoronrglass = 0
if ("uranium")
if (machine.ore_uranium > 0)
var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium
@@ -210,9 +210,9 @@
var/ore_gold = 0;
var/ore_silver = 0;
var/ore_diamond = 0;
- var/ore_plasma = 0;
- var/ore_plasmaglass = 0;
- var/ore_plasmarglass = 0;
+ var/ore_phoron = 0;
+ var/ore_phoronglass = 0;
+ var/ore_phoronrglass = 0;
var/ore_iron = 0;
var/ore_uranium = 0;
var/ore_clown = 0;
@@ -262,8 +262,8 @@
O.loc = null
//del(O)
continue
- if (istype(O,/obj/item/stack/sheet/mineral/plasma))
- ore_plasma+= O.amount
+ if (istype(O,/obj/item/stack/sheet/mineral/phoron))
+ ore_phoron+= O.amount
O.loc = null
//del(O)
continue
@@ -287,13 +287,13 @@
O.loc = null
//del(O)
continue
- if (istype(O,/obj/item/stack/sheet/glass/plasmaglass))
- ore_plasmaglass+= O.amount
+ if (istype(O,/obj/item/stack/sheet/glass/phoronglass))
+ ore_phoronglass+= O.amount
O.loc = null
//del(O)
continue
- if (istype(O,/obj/item/stack/sheet/glass/plasmarglass))
- ore_plasmarglass+= O.amount
+ if (istype(O,/obj/item/stack/sheet/glass/phoronrglass))
+ ore_phoronrglass+= O.amount
O.loc = null
//del(O)
continue
@@ -362,11 +362,11 @@
G.loc = output.loc
ore_diamond -= stack_amt
return
- if (ore_plasma >= stack_amt)
- var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma
+ if (ore_phoron >= stack_amt)
+ var/obj/item/stack/sheet/mineral/phoron/G = new /obj/item/stack/sheet/mineral/phoron
G.amount = stack_amt
G.loc = output.loc
- ore_plasma -= stack_amt
+ ore_phoron -= stack_amt
return
if (ore_iron >= stack_amt)
var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal
@@ -398,17 +398,17 @@
G.loc = output.loc
ore_rglass -= stack_amt
return
- if (ore_plasmaglass >= stack_amt)
- var/obj/item/stack/sheet/glass/plasmaglass/G = new /obj/item/stack/sheet/glass/plasmaglass
+ if (ore_phoronglass >= stack_amt)
+ var/obj/item/stack/sheet/glass/phoronglass/G = new /obj/item/stack/sheet/glass/phoronglass
G.amount = stack_amt
G.loc = output.loc
- ore_plasmaglass -= stack_amt
+ ore_phoronglass -= stack_amt
return
- if (ore_plasmarglass >= stack_amt)
- var/obj/item/stack/sheet/glass/plasmarglass/G = new /obj/item/stack/sheet/glass/plasmarglass
+ if (ore_phoronrglass >= stack_amt)
+ var/obj/item/stack/sheet/glass/phoronrglass/G = new /obj/item/stack/sheet/glass/phoronrglass
G.amount = stack_amt
G.loc = output.loc
- ore_plasmarglass -= stack_amt
+ ore_phoronrglass -= stack_amt
return
if (ore_plasteel >= stack_amt)
var/obj/item/stack/sheet/plasteel/G = new /obj/item/stack/sheet/plasteel
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 14e07c3f8c..c200d2ff53 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -259,7 +259,7 @@ proc/move_mining_shuttle()
w_class = 3.0 //it is smaller than the pickaxe
damtype = "fire"
digspeed = 20 //Can slice though normal walls, all girders, or be used in reinforced wall deconstruction/ light thermite on fire
- origin_tech = "materials=4;plasmatech=3;engineering=3"
+ origin_tech = "materials=4;phorontech=3;engineering=3"
desc = "A rock cutter that uses bursts of hot plasma. You could use it to cut limbs off of xenos! Or, you know, mine stuff."
drill_verb = "cutting"
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 749de26f33..7a1b6d6acf 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -349,7 +349,7 @@ var/list/artifact_spawn = list() // Runtime fix for geometry loading before cont
if(6)
var/quantity = rand(1,3)
for(var/i=0, iChoose")
- dat += text(" Plasma inserted: [amt_plasma] ")
- if (chosen == "plasma")
+ dat += text(" Phoron inserted: [amt_phoron] ")
+ if (chosen == "phoron")
dat += text("chosen")
else
- dat += text("Choose")
+ dat += text("Choose")
dat += text(" uranium inserted: [amt_uranium] ")
if (chosen == "uranium")
dat += text("chosen")
@@ -202,14 +202,14 @@
newCoins++
src.updateUsrDialog()
sleep(5);
- if("plasma")
- while(amt_plasma > 0 && coinsToProduce > 0)
+ if("phoron")
+ while(amt_phoron > 0 && coinsToProduce > 0)
if (locate(/obj/item/weapon/moneybag,output.loc))
M = locate(/obj/item/weapon/moneybag,output.loc)
else
M = new/obj/item/weapon/moneybag(output.loc)
- new /obj/item/weapon/coin/plasma(M)
- amt_plasma -= 20
+ new /obj/item/weapon/coin/phoron(M)
+ amt_phoron -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm
index bb1db7a86d..0635c261bf 100644
--- a/code/modules/mining/money_bag.dm
+++ b/code/modules/mining/money_bag.dm
@@ -14,7 +14,7 @@
var/amt_silver = 0
var/amt_diamond = 0
var/amt_iron = 0
- var/amt_plasma = 0
+ var/amt_phoron = 0
var/amt_uranium = 0
var/amt_clown = 0
var/amt_adamantine = 0
@@ -22,8 +22,8 @@
for (var/obj/item/weapon/coin/C in contents)
if (istype(C,/obj/item/weapon/coin/diamond))
amt_diamond++;
- if (istype(C,/obj/item/weapon/coin/plasma))
- amt_plasma++;
+ if (istype(C,/obj/item/weapon/coin/phoron))
+ amt_phoron++;
if (istype(C,/obj/item/weapon/coin/iron))
amt_iron++;
if (istype(C,/obj/item/weapon/coin/silver))
@@ -46,8 +46,8 @@
dat += text("Metal coins: [amt_iron] Remove one ")
if (amt_diamond)
dat += text("Diamond coins: [amt_diamond] Remove one ")
- if (amt_plasma)
- dat += text("Plasma coins: [amt_plasma] Remove one ")
+ if (amt_phoron)
+ dat += text("Phoron coins: [amt_phoron] Remove one ")
if (amt_uranium)
dat += text("Uranium coins: [amt_uranium] Remove one ")
if (amt_clown)
@@ -86,8 +86,8 @@
COIN = locate(/obj/item/weapon/coin/iron,src.contents)
if("diamond")
COIN = locate(/obj/item/weapon/coin/diamond,src.contents)
- if("plasma")
- COIN = locate(/obj/item/weapon/coin/plasma,src.contents)
+ if("phoron")
+ COIN = locate(/obj/item/weapon/coin/phoron,src.contents)
if("uranium")
COIN = locate(/obj/item/weapon/coin/uranium,src.contents)
if("clown")
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 1c3be4e602..3c65c78dd5 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -29,9 +29,9 @@
new /obj/item/stack/sheet/mineral/sandstone(location)
del(src)
-/obj/item/weapon/ore/plasma
- name = "Plasma ore"
- icon_state = "Plasma ore"
+/obj/item/weapon/ore/phoron
+ name = "Phoron ore"
+ icon_state = "Phoron ore"
origin_tech = "materials=2"
/obj/item/weapon/ore/silver
@@ -103,9 +103,9 @@
name = "iron coin"
icon_state = "coin_iron"
-/obj/item/weapon/coin/plasma
- name = "solid plasma coin"
- icon_state = "coin_plasma"
+/obj/item/weapon/coin/phoron
+ name = "solid phoron coin"
+ icon_state = "coin_phoron"
/obj/item/weapon/coin/uranium
name = "uranium coin"
diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm
index 4a0c9a6103..b215e23629 100644
--- a/code/modules/mining/satchel_ore_boxdm.dm
+++ b/code/modules/mining/satchel_ore_boxdm.dm
@@ -25,7 +25,7 @@
var/amt_diamond = 0
var/amt_glass = 0
var/amt_iron = 0
- var/amt_plasma = 0
+ var/amt_phoron = 0
var/amt_uranium = 0
var/amt_clown = 0
var/amt_strange = 0
@@ -36,8 +36,8 @@
amt_diamond++;
if (istype(C,/obj/item/weapon/ore/glass))
amt_glass++;
- if (istype(C,/obj/item/weapon/ore/plasma))
- amt_plasma++;
+ if (istype(C,/obj/item/weapon/ore/phoron))
+ amt_phoron++;
if (istype(C,/obj/item/weapon/ore/iron))
amt_iron++;
if (istype(C,/obj/item/weapon/ore/silver))
@@ -62,8 +62,8 @@
dat += text("Sand: [amt_glass] ")
if (amt_diamond)
dat += text("Diamond ore: [amt_diamond] ")
- if (amt_plasma)
- dat += text("Plasma ore: [amt_plasma] ")
+ if (amt_phoron)
+ dat += text("Phoron ore: [amt_phoron] ")
if (amt_uranium)
dat += text("Uranium ore: [amt_uranium] ")
if (amt_clown)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index dcd7e6a261..3eacd36e32 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -407,9 +407,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/o2_concentration = environment.oxygen/total_moles
var/n2_concentration = environment.nitrogen/total_moles
var/co2_concentration = environment.carbon_dioxide/total_moles
- var/plasma_concentration = environment.toxins/total_moles
+ var/phoron_concentration = environment.phoron/total_moles
- var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
if(abs(n2_concentration - N2STANDARD) < 20)
src << "\blue Nitrogen: [round(n2_concentration*100)]% ([round(environment.nitrogen,0.01)] moles)"
else
@@ -425,8 +425,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
else
src << "\blue CO2: [round(co2_concentration*100)]% ([round(environment.carbon_dioxide,0.01)] moles)"
- if(plasma_concentration > 0.01)
- src << "\red Plasma: [round(plasma_concentration*100)]% ([round(environment.toxins,0.01)] moles)"
+ if(phoron_concentration > 0.01)
+ src << "\red Phoron: [round(phoron_concentration*100)]% ([round(environment.phoron,0.01)] moles)"
if(unknown_concentration > 0.01)
src << "\red Unknown: [round(unknown_concentration*100)]% ([round(unknown_concentration*total_moles,0.01)] moles)"
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 8f888806b8..c0214abd9f 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -25,7 +25,7 @@
var/plasma_rate = 5
var/oxygen_alert = 0
- var/toxins_alert = 0
+ var/phoron_alert = 0
var/fire_alert = 0
var/heat_protection = 0.5
@@ -58,7 +58,7 @@
/mob/living/carbon/alien/proc/handle_environment(var/datum/gas_mixture/environment)
- //If there are alien weeds on the ground then heal if needed or give some toxins
+ //If there are alien weeds on the ground then heal if needed or give some plasma
if(locate(/obj/effect/alien/weeds) in loc)
if(health >= maxHealth - getCloneLoss())
adjustToxLoss(plasma_rate)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index 943e7d9ac9..cd62ff9b2c 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -2,7 +2,7 @@
/mob/living/carbon/alien/humanoid
oxygen_alert = 0
- toxins_alert = 0
+ phoron_alert = 0
fire_alert = 0
var/temperature_alert = 0
@@ -171,25 +171,25 @@
//Aliens breathe in vaccuum
return 0
- var/toxins_used = 0
+ var/phoron_used = 0
var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME
- //Partial pressure of the toxins in our breath
- var/Toxins_pp = (breath.toxins/breath.total_moles())*breath_pressure
+ //Partial pressure of the phoron in our breath
+ var/Toxins_pp = (breath.phoron/breath.total_moles())*breath_pressure
- if(Toxins_pp) // Detect toxins in air
+ if(Toxins_pp) // Detect phoron in air
- adjustToxLoss(breath.toxins*250)
- toxins_alert = max(toxins_alert, 1)
+ adjustToxLoss(breath.phoron*250)
+ phoron_alert = max(phoron_alert, 1)
- toxins_used = breath.toxins
+ phoron_used = breath.phoron
else
- toxins_alert = 0
+ phoron_alert = 0
- //Breathe in toxins and out oxygen
- breath.toxins -= toxins_used
- breath.oxygen += toxins_used
+ //Breathe in phoron and out oxygen
+ breath.phoron -= phoron_used
+ breath.oxygen += phoron_used
if(breath.temperature > (T0C+66) && !(COLD_RESISTANCE in mutations)) // Hot air hurts :(
if(prob(20))
@@ -412,7 +412,7 @@
if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]"
- if (toxin) toxin.icon_state = "tox[toxins_alert ? 1 : 0]"
+ if (toxin) toxin.icon_state = "tox[phoron_alert ? 1 : 0]"
if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]"
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index b820e0f51a..975dd29dc8 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -146,25 +146,25 @@
//Aliens breathe in vaccuum
return 0
- var/toxins_used = 0
+ var/phoron_used = 0
var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME
- //Partial pressure of the toxins in our breath
- var/Toxins_pp = (breath.toxins/breath.total_moles())*breath_pressure
+ //Partial pressure of the phoron in our breath
+ var/Toxins_pp = (breath.phoron/breath.total_moles())*breath_pressure
- if(Toxins_pp) // Detect toxins in air
+ if(Toxins_pp) // Detect phoron in air
- adjustToxLoss(breath.toxins*250)
- toxins_alert = max(toxins_alert, 1)
+ adjustToxLoss(breath.phoron*250)
+ phoron_alert = max(phoron_alert, 1)
- toxins_used = breath.toxins
+ phoron_used = breath.phoron
else
- toxins_alert = 0
+ phoron_alert = 0
- //Breathe in toxins and out oxygen
- breath.toxins -= toxins_used
- breath.oxygen += toxins_used
+ //Breathe in phoron and out oxygen
+ breath.phoron -= phoron_used
+ breath.oxygen += phoron_used
if(breath.temperature > (T0C+66) && !(COLD_RESISTANCE in mutations)) // Hot air hurts :(
if(prob(20))
@@ -327,7 +327,7 @@ FUCK YOU MORE FAT CODE -Hawk*/
if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]"
- if (toxin) toxin.icon_state = "tox[toxins_alert ? 1 : 0]"
+ if (toxin) toxin.icon_state = "tox[phoron_alert ? 1 : 0]"
if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]"
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm
index 41b6e86c05..e76bed96d7 100644
--- a/code/modules/mob/living/carbon/brain/posibrain.dm
+++ b/code/modules/mob/living/carbon/brain/posibrain.dm
@@ -6,7 +6,7 @@
w_class = 3
origin_tech = "engineering=4;materials=4;bluespace=2;programming=4"
- construction_cost = list("metal"=500,"glass"=500,"silver"=200,"gold"=200,"plasma"=100,"diamond"=10)
+ construction_cost = list("metal"=500,"glass"=500,"silver"=200,"gold"=200,"phoron"=100,"diamond"=10)
construction_time = 75
var/searching = 0
var/askDelay = 10 * 60 * 1
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 89f3b8eccc..30e494d03a 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -12,39 +12,36 @@
real_name = "Test Dummy"
status_flags = GODMODE|CANPUSH
-/mob/living/carbon/human/skrell/New()
+/mob/living/carbon/human/skrell/New(var/new_loc)
h_style = "Skrell Male Tentacles"
- set_species("Skrell")
- ..()
+ ..(new_loc, "Skrell")
-/mob/living/carbon/human/tajaran/New()
+/mob/living/carbon/human/tajaran/New(var/new_loc)
h_style = "Tajaran Ears"
- set_species("Tajaran")
- ..()
+ ..(new_loc, "Tajaran")
-/mob/living/carbon/human/unathi/New()
+/mob/living/carbon/human/unathi/New(var/new_loc)
h_style = "Unathi Horns"
- set_species("Unathi")
- ..()
+ ..(new_loc, "Unathi")
-/mob/living/carbon/human/vox/New()
+/mob/living/carbon/human/vox/New(var/new_loc)
h_style = "Short Vox Quills"
- set_species("Vox")
- ..()
+ ..(new_loc, "Vox")
-/mob/living/carbon/human/diona/New()
- species = new /datum/species/diona(src)
- ..()
+/mob/living/carbon/human/diona/New(var/new_loc)
+ ..(new_loc, "Diona")
-/mob/living/carbon/human/machine/New()
+/mob/living/carbon/human/machine/New(var/new_loc)
h_style = "blue IPC screen"
- set_species("Machine")
- ..()
+ ..(new_loc, "Machine")
-/mob/living/carbon/human/New()
+/mob/living/carbon/human/New(var/new_loc, var/new_species = null)
if(!species)
- set_species()
+ if(new_species)
+ set_species(new_species)
+ else
+ set_species()
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
@@ -71,7 +68,6 @@
dna.real_name = real_name
prev_gender = gender // Debug for plural genders
- make_organs()
make_blood()
/mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes)
@@ -1206,7 +1202,7 @@
else
usr << "\blue [self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)]."
-/mob/living/carbon/human/proc/set_species(var/new_species)
+/mob/living/carbon/human/proc/set_species(var/new_species, var/force_organs)
if(!dna)
if(!new_species)
@@ -1225,6 +1221,9 @@
species = all_species[new_species]
+ if(force_organs || !organs || !organs.len)
+ species.create_organs(src)
+
if(species.language)
add_language(species.language)
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index f22eb0db41..edc21f439f 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -18,6 +18,11 @@
var/s_tone = 0 //Skin tone
+ //Skin colour
+ var/r_skin = 0
+ var/g_skin = 0
+ var/b_skin = 0
+
var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup
var/age = 30 //Player's age (pure fluff)
@@ -48,7 +53,7 @@
var/icon/stand_icon = null
var/icon/lying_icon = null
-
+
var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life()
var/speech_problem_flag = 0
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index fe535fc897..ef73710df1 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -23,7 +23,7 @@
/mob/living/carbon/human
var/oxygen_alert = 0
- var/toxins_alert = 0
+ var/phoron_alert = 0
var/fire_alert = 0
var/pressure_alert = 0
var/prev_gender = null // Debug for plural genders
@@ -344,13 +344,13 @@
var/datum/gas_mixture/filtered = new
filtered.copy_from(breath)
- filtered.toxins *= G.gas_filter_strength
+ filtered.phoron *= G.gas_filter_strength
for(var/datum/gas/gas in filtered.trace_gases)
gas.moles *= G.gas_filter_strength
filtered.update_values()
loc.assume_air(filtered)
- breath.toxins *= 1 - G.gas_filter_strength
+ breath.phoron *= 1 - G.gas_filter_strength
for(var/datum/gas/gas in breath.trace_gases)
gas.moles *= 1 - G.gas_filter_strength
breath.update_values()
@@ -439,7 +439,7 @@
var/safe_oxygen_min = 16 // Minimum safe partial pressure of O2, in kPa
//var/safe_oxygen_max = 140 // Maximum safe partial pressure of O2, in kPa (Not used for now)
var/safe_co2_max = 10 // Yes it's an arbitrary value who cares?
- var/safe_toxins_max = 0.005
+ var/safe_phoron_max = 0.005
var/SA_para_min = 1
var/SA_sleep_min = 5
var/oxygen_used = 0
@@ -449,8 +449,8 @@
//Partial pressure of the O2 in our breath
var/O2_pp = (breath.oxygen/breath.total_moles())*breath_pressure
- // Same, but for the toxins
- var/Toxins_pp = (breath.toxins/breath.total_moles())*breath_pressure
+ // Same, but for the phoron
+ var/Toxins_pp = (breath.phoron/breath.total_moles())*breath_pressure
// And CO2, lets say a PP of more than 10 will be bad (It's a little less really, but eh, being passed out all round aint no fun)
var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*breath_pressure // Tweaking to fit the hacky bullshit I've done with atmo -- TLE
//var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*0.5 // The default pressure value
@@ -514,18 +514,18 @@
else
co2overloadtime = 0
- if(Toxins_pp > safe_toxins_max) // Too much toxins
- var/ratio = (breath.toxins/safe_toxins_max) * 10
- //adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) //Limit amount of damage toxin exposure can do per second
+ if(Toxins_pp > safe_phoron_max) // Too much phoron
+ var/ratio = (breath.phoron/safe_phoron_max) * 10
+ //adjustToxLoss(Clamp(ratio, MIN_PHORON_DAMAGE, MAX_PHORON_DAMAGE)) //Limit amount of damage toxin exposure can do per second
if(reagents)
- reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE))
- toxins_alert = max(toxins_alert, 1)
+ reagents.add_reagent("phoron", Clamp(ratio, MIN_PHORON_DAMAGE, MAX_PHORON_DAMAGE))
+ phoron_alert = max(phoron_alert, 1)
else if(O2_pp > vox_oxygen_max && species.name == "Vox") //Oxygen is toxic to vox.
var/ratio = (breath.oxygen/vox_oxygen_max) * 1000
- adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE))
- toxins_alert = max(toxins_alert, 1)
+ adjustToxLoss(Clamp(ratio, MIN_PHORON_DAMAGE, MAX_PHORON_DAMAGE))
+ phoron_alert = max(phoron_alert, 1)
else
- toxins_alert = 0
+ phoron_alert = 0
if(breath.trace_gases.len) // If there's some other shit in the air lets deal with it here.
for(var/datum/gas/sleeping_agent/SA in breath.trace_gases)
@@ -586,7 +586,7 @@
else
loc_temp = environment.temperature
- if(abs(loc_temp - 293.15) < 20 && abs(bodytemperature - 310.14) < 0.5 && environment.toxins < MOLES_PLASMA_VISIBLE)
+ if(abs(loc_temp - 293.15) < 20 && abs(bodytemperature - 310.14) < 0.5 && environment.phoron < MOLES_PHORON_VISIBLE)
return // Temperatures are within normal ranges, fuck all this processing. ~Ccomp
//Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit.
@@ -667,7 +667,7 @@
else
pressure_alert = -1
- if(environment.toxins > MOLES_PLASMA_VISIBLE)
+ if(environment.phoron > MOLES_PHORON_VISIBLE)
pl_effects()
return
@@ -896,12 +896,12 @@
alien = 2
reagents.metabolize(src,alien)
- var/total_plasmaloss = 0
+ var/total_phoronloss = 0
for(var/obj/item/I in src)
if(I.contaminated)
- total_plasmaloss += vsc.plc.CONTAMINATION_LOSS
+ total_phoronloss += vsc.plc.CONTAMINATION_LOSS
if(status_flags & GODMODE) return 0 //godmode
- adjustToxLoss(total_plasmaloss)
+ adjustToxLoss(total_phoronloss)
if(species.flags & REQUIRE_LIGHT)
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
@@ -1354,7 +1354,7 @@
// if(resting || lying || sleeping) rest.icon_state = "rest1"
// else rest.icon_state = "rest0"
if(toxin)
- if(hal_screwyhud == 4 || toxins_alert) toxin.icon_state = "tox1"
+ if(hal_screwyhud == 4 || phoron_alert) toxin.icon_state = "tox1"
else toxin.icon_state = "tox0"
if(oxygen)
if(hal_screwyhud == 3 || oxygen_alert) oxygen.icon_state = "oxy1"
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 0c7d03781c..2c4a381d6e 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -97,26 +97,26 @@ Please contact me on #coderbus IRC. ~Carn x
*/
//Human Overlays Indexes/////////
-#define MUTANTRACE_LAYER 1 //TODO: make part of body?
+#define MUTANTRACE_LAYER 1
#define MUTATIONS_LAYER 2
#define DAMAGE_LAYER 3
#define UNIFORM_LAYER 4
-#define ID_LAYER 5
-#define SHOES_LAYER 6
-#define GLOVES_LAYER 7
-#define EARS_LAYER 8
-#define SUIT_LAYER 9
-#define GLASSES_LAYER 10
-#define BELT_LAYER 11 //Possible make this an overlay of somethign required to wear a belt?
-#define SUIT_STORE_LAYER 12
-#define BACK_LAYER 13
-#define HAIR_LAYER 14 //TODO: make part of head layer?
-#define FACEMASK_LAYER 15
-#define HEAD_LAYER 16
-#define COLLAR_LAYER 17
-#define HANDCUFF_LAYER 18
-#define LEGCUFF_LAYER 19
-#define TAIL_LAYER 20 //bs12 specific. this hack is probably gonna come back to haunt me
+#define TAIL_LAYER 5 //bs12 specific. this hack is probably gonna come back to haunt me
+#define ID_LAYER 6
+#define SHOES_LAYER 7
+#define GLOVES_LAYER 8
+#define EARS_LAYER 9
+#define SUIT_LAYER 10
+#define GLASSES_LAYER 11
+#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
+#define SUIT_STORE_LAYER 13
+#define BACK_LAYER 14
+#define HAIR_LAYER 15 //TODO: make part of head layer?
+#define FACEMASK_LAYER 16
+#define HEAD_LAYER 17
+#define COLLAR_LAYER 18
+#define HANDCUFF_LAYER 19
+#define LEGCUFF_LAYER 20
#define L_HAND_LAYER 21
#define R_HAND_LAYER 22
#define TARGETED_LAYER 23 //BS12: Layer for the target overlay from weapon targeting system
@@ -287,6 +287,10 @@ proc/get_damage_icon_part(damage_state, body_part)
else
stand_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
+ //Skin color
+ if(!skeleton && !husk && !hulk && (species.flags & HAS_SKIN_COLOR))
+ stand_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+
if(husk)
var/icon/mask = new(stand_icon)
var/icon/husk_over = new(race_icon,"overlay_husk")
@@ -733,9 +737,12 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/proc/update_tail_showing(var/update_icons=1)
overlays_standing[TAIL_LAYER] = null
- if(species.tail && species.flags & HAS_TAIL)
- if(!wear_suit || !(wear_suit.flags_inv & HIDEJUMPSUIT) && !istype(wear_suit, /obj/item/clothing/suit/space))
- overlays_standing[TAIL_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
+ if(species.tail && species.flags & HAS_TAIL)
+ if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space))
+ var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
+ tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+
+ overlays_standing[TAIL_LAYER] = image(tail_s)
if(update_icons)
update_icons()
@@ -796,6 +803,7 @@ proc/get_damage_icon_part(damage_state, body_part)
#undef MUTATIONS_LAYER
#undef DAMAGE_LAYER
#undef UNIFORM_LAYER
+#undef TAIL_LAYER
#undef ID_LAYER
#undef SHOES_LAYER
#undef GLOVES_LAYER
@@ -813,6 +821,5 @@ proc/get_damage_icon_part(damage_state, body_part)
#undef LEGCUFF_LAYER
#undef L_HAND_LAYER
#undef R_HAND_LAYER
-#undef TAIL_LAYER
#undef TARGETED_LAYER
#undef TOTAL_LAYERS
diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm
index 87404b7a21..0f4d205156 100644
--- a/code/modules/mob/living/carbon/metroid/metroid.dm
+++ b/code/modules/mob/living/carbon/metroid/metroid.dm
@@ -1027,7 +1027,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/process()
var/turf/location = get_turf(src)
var/datum/gas_mixture/environment = location.return_air()
- if (environment.toxins > MOLES_PLASMA_VISIBLE)//plasma exposure causes the egg to hatch
+ if (environment.phoron > MOLES_PHORON_VISIBLE)//phoron exposure causes the egg to hatch
src.Hatch()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/attackby(obj/item/weapon/W as obj, mob/user as mob)
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 7e2d73abe4..5ea5eb25a2 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -2,7 +2,7 @@
/mob/living/carbon/monkey
var/oxygen_alert = 0
- var/toxins_alert = 0
+ var/phoron_alert = 0
var/fire_alert = 0
var/pressure_alert = 0
@@ -243,13 +243,13 @@
var/datum/gas_mixture/filtered = new
filtered.copy_from(breath)
- filtered.toxins *= G.gas_filter_strength
+ filtered.phoron *= G.gas_filter_strength
for(var/datum/gas/gas in filtered.trace_gases)
gas.moles *= G.gas_filter_strength
filtered.update_values()
loc.assume_air(filtered)
- breath.toxins *= 1 - G.gas_filter_strength
+ breath.phoron *= 1 - G.gas_filter_strength
for(var/datum/gas/gas in breath.trace_gases)
gas.moles *= 1 - G.gas_filter_strength
breath.update_values()
@@ -310,7 +310,7 @@
var/safe_oxygen_min = 16 // Minimum safe partial pressure of O2, in kPa
//var/safe_oxygen_max = 140 // Maximum safe partial pressure of O2, in kPa (Not used for now)
var/safe_co2_max = 10 // Yes it's an arbitrary value who cares?
- var/safe_toxins_max = 0.5
+ var/safe_phoron_max = 0.5
var/SA_para_min = 0.5
var/SA_sleep_min = 5
var/oxygen_used = 0
@@ -318,8 +318,8 @@
//Partial pressure of the O2 in our breath
var/O2_pp = (breath.oxygen/breath.total_moles())*breath_pressure
- // Same, but for the toxins
- var/Toxins_pp = (breath.toxins/breath.total_moles())*breath_pressure
+ // Same, but for the phoron
+ var/Toxins_pp = (breath.phoron/breath.total_moles())*breath_pressure
// And CO2, lets say a PP of more than 10 will be bad (It's a little less really, but eh, being passed out all round aint no fun)
var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*breath_pressure
@@ -360,14 +360,14 @@
else
co2overloadtime = 0
- if(Toxins_pp > safe_toxins_max) // Too much toxins
- var/ratio = (breath.toxins/safe_toxins_max) * 10
+ if(Toxins_pp > safe_phoron_max) // Too much phoron
+ var/ratio = (breath.phoron/safe_phoron_max) * 10
//adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) //Limit amount of damage toxin exposure can do per second
if(reagents)
- reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE))
- toxins_alert = max(toxins_alert, 1)
+ reagents.add_reagent("phoron", Clamp(ratio, MIN_PHORON_DAMAGE, MAX_PHORON_DAMAGE))
+ phoron_alert = max(phoron_alert, 1)
else
- toxins_alert = 0
+ phoron_alert = 0
if(breath.trace_gases.len) // If there's some other shit in the air lets deal with it here.
for(var/datum/gas/sleeping_agent/SA in breath.trace_gases)
@@ -397,7 +397,7 @@
if(!environment)
return
- if(abs(environment.temperature - 293.15) < 20 && abs(bodytemperature - 310.14) < 0.5 && environment.toxins < MOLES_PLASMA_VISIBLE)
+ if(abs(environment.temperature - 293.15) < 20 && abs(bodytemperature - 310.14) < 0.5 && environment.phoron < MOLES_PHORON_VISIBLE)
return // Temperatures are within normal ranges, fuck all this processing. ~Ccomp
var/environment_heat_capacity = environment.heat_capacity()
@@ -618,7 +618,7 @@
if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]"
- if (toxin) toxin.icon_state = "tox[toxins_alert ? 1 : 0]"
+ if (toxin) toxin.icon_state = "tox[phoron_alert ? 1 : 0]"
if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]"
if (fire) fire.icon_state = "fire[fire_alert ? 2 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm
index 384774f14f..2c65f88090 100644
--- a/code/modules/mob/living/carbon/species.dm
+++ b/code/modules/mob/living/carbon/species.dm
@@ -42,14 +42,45 @@
var/blood_color = "#A10808" //Red.
var/flesh_color = "#FFC896" //Pink.
-/datum/species/proc/handle_post_spawn(var/mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment.
+/datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs.
+ //This is a basic humanoid limb setup.
+ H.organs = list()
+ H.organs_by_name["chest"] = new/datum/organ/external/chest()
+ H.organs_by_name["groin"] = new/datum/organ/external/groin(H.organs_by_name["chest"])
+ H.organs_by_name["head"] = new/datum/organ/external/head(H.organs_by_name["chest"])
+ H.organs_by_name["l_arm"] = new/datum/organ/external/l_arm(H.organs_by_name["chest"])
+ H.organs_by_name["r_arm"] = new/datum/organ/external/r_arm(H.organs_by_name["chest"])
+ H.organs_by_name["r_leg"] = new/datum/organ/external/r_leg(H.organs_by_name["groin"])
+ H.organs_by_name["l_leg"] = new/datum/organ/external/l_leg(H.organs_by_name["groin"])
+ H.organs_by_name["l_hand"] = new/datum/organ/external/l_hand(H.organs_by_name["l_arm"])
+ H.organs_by_name["r_hand"] = new/datum/organ/external/r_hand(H.organs_by_name["r_arm"])
+ H.organs_by_name["l_foot"] = new/datum/organ/external/l_foot(H.organs_by_name["l_leg"])
+ H.organs_by_name["r_foot"] = new/datum/organ/external/r_foot(H.organs_by_name["r_leg"])
+
+ H.internal_organs = list()
+ H.internal_organs_by_name["heart"] = new/datum/organ/internal/heart(H)
+ H.internal_organs_by_name["lungs"] = new/datum/organ/internal/lungs(H)
+ H.internal_organs_by_name["liver"] = new/datum/organ/internal/liver(H)
+ H.internal_organs_by_name["kidney"] = new/datum/organ/internal/kidney(H)
+ H.internal_organs_by_name["brain"] = new/datum/organ/internal/brain(H)
+ H.internal_organs_by_name["eyes"] = new/datum/organ/internal/eyes(H)
+
+ for(var/name in H.organs_by_name)
+ H.organs += H.organs_by_name[name]
+
+ for(var/datum/organ/external/O in H.organs)
+ O.owner = H
if(flags & IS_SYNTHETIC)
for(var/datum/organ/external/E in H.organs)
if(E.status & ORGAN_CUT_AWAY || E.status & ORGAN_DESTROYED) continue
E.status |= ORGAN_ROBOT
for(var/datum/organ/internal/I in H.internal_organs)
- I.robotic = 2
+ I.mechanize()
+
+ return
+
+/datum/species/proc/handle_post_spawn(var/mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment.
return
/datum/species/proc/handle_death(var/mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns).
@@ -91,7 +122,7 @@
heat_level_2 = 480 //Default 400
heat_level_3 = 1100 //Default 1000
- flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL
+ flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL | HAS_SKIN_COLOR
flesh_color = "#34AF10"
@@ -115,7 +146,7 @@
primitive = /mob/living/carbon/monkey/tajara
- flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL
+ flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL | HAS_SKIN_COLOR
flesh_color = "#AFA59E"
@@ -126,7 +157,7 @@
language = "Skrellian"
primitive = /mob/living/carbon/monkey/skrell
- flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR
+ flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR
flesh_color = "#8CD7A3"
@@ -152,7 +183,6 @@
flesh_color = "#808D11"
/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H)
-
var/datum/organ/external/affected = H.get_organ("head")
//To avoid duplicates.
@@ -199,9 +229,10 @@
flesh_color = "#907E4A"
/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H)
-
H.gender = NEUTER
+ return ..()
+
/datum/species/diona/handle_death(var/mob/living/carbon/human/H)
var/mob/living/carbon/monkey/diona/S = new(get_turf(H))
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index a93bfd2d19..312bccff0f 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -26,7 +26,7 @@
//Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects.
var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas.
- var/t_plasma = null
+ var/t_phoron = null
var/t_oxygen = null
var/t_sl_gas = null
var/t_n2 = null
diff --git a/code/modules/mob/living/silicon/pai/examine.dm b/code/modules/mob/living/silicon/pai/examine.dm
index 26010d6353..14c3240c08 100644
--- a/code/modules/mob/living/silicon/pai/examine.dm
+++ b/code/modules/mob/living/silicon/pai/examine.dm
@@ -1,5 +1,5 @@
/mob/living/silicon/pai/examine() //removed as it was pointless...moved to the pai-card instead.
- /* This is totaly pointless because this mob is contained inside a card!
+ /* This is totally pointless because this mob is contained inside a card!
set src in oview()
var/msg = "*---------*\nThis is \icon[src] \a [src]!\n"
diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm
index aaa3f87f3f..2ed190fc06 100644
--- a/code/modules/mob/living/silicon/pai/life.dm
+++ b/code/modules/mob/living/silicon/pai/life.dm
@@ -5,7 +5,7 @@
if(get_dist(src, src.cable) > 1)
var/turf/T = get_turf_or_move(src.loc)
for (var/mob/M in viewers(T))
- M.show_message("\red [src.cable] rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2)
+ M.show_message("\red The data cable rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2)
del(src.cable)
regular_hud_updates()
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 02c8ea0422..2e366adbf8 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -252,7 +252,7 @@
if(!C.status)
continue
else
- if(C.network != "CREED" && C.network != "thunder" && C.network != "RD" && C.network != "toxins" && C.network != "Prison") COMPILE ERROR! This will have to be updated as camera.network is no longer a string, but a list instead
+ if(C.network != "CREED" && C.network != "thunder" && C.network != "RD" && C.network != "phoron" && C.network != "Prison") COMPILE ERROR! This will have to be updated as camera.network is no longer a string, but a list instead
cameralist[C.network] = C.network
src.network = input(usr, "Which network would you like to view?") as null|anything in cameralist
diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm
index 399a94c039..89812a15f4 100644
--- a/code/modules/mob/living/silicon/pai/recruit.dm
+++ b/code/modules/mob/living/silicon/pai/recruit.dm
@@ -110,42 +110,118 @@ var/datum/paiController/paiController // Global handler for pAI candidates
var/dat = ""
dat += {"
"}
- dat += {"
Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!
What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.
+ dat += {"
+
+ pAI Personality Configuration
+
Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!
Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
- Save Personality
- Load Personality "}
-
- M << browse(dat, "window=paiRecruit")
+ M << browse(dat, "window=paiRecruit;size=580x580;")
proc/findPAI(var/obj/item/device/paicard/p, var/mob/user)
requestRecruits()
@@ -161,35 +237,105 @@ var/datum/paiController/paiController // Global handler for pAI candidates
var/dat = ""
dat += {"
-
- "}
- dat += "
Requesting AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.
"
-
- dat += "
"
+
+
+
+
+
+
+ pAI Availability List
+ "}
+ dat += "
Displaying available AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.
"
for(var/datum/paiCandidate/c in available)
- dat += {"
"
+ dat += {"
+
+
+ "}
user << browse(dat, "window=findPai")
diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm
index fb43bd9af9..e1cb9f0f80 100644
--- a/code/modules/mob/living/silicon/pai/say.dm
+++ b/code/modules/mob/living/silicon/pai/say.dm
@@ -1,5 +1,5 @@
/mob/living/silicon/pai/say(var/msg)
if(silence_time)
- src << "Communication circuits remain unitialized."
+ src << "Communication circuits remain uninitialized."
else
..(msg)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index 6e688c2bdc..dce96a8685 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -33,7 +33,7 @@
if(temp)
left_part = temp
else if(src.stat == 2) // Show some flavor text if the pAI is dead
- left_part = "ÈRrÖR Ða†Ä ÇÖRrÚþ†Ìoñ"
+ left_part = "ÈRrÖR Ða†Ä ÇÖRrÚþ†Ìoñ" //This file has to be saved as ANSI or this will not display correctly
right_part = "
Program index hash not found
"
else
@@ -66,31 +66,34 @@
left_part = src.softwareCamera()
if("signaller")
left_part = src.softwareSignal()
+ if("radio")
+ left_part = src.softwareRadio()
//usr << browse_rsc('windowbak.png') // This has been moved to the mob's Login() proc
- // Declaring a doctype is necessary to enable BYOND's crappy browser's more advanced CSS functionality
+ // Declaring a doctype is necessary to enable BYOND's crappy browser's more advanced CSS functionality
dat = {"
-
-
-
-
-
-
@@ -76,26 +77,26 @@ should be listed in the changelog upon commit though. Thanks. -->
-
-
11 April 2014
-
Jarcolr updated:
-
You can now flip coins like a D2
-
Miscellaneous cargo crates got a tiny buff, Standard Costume crate is now Costume Crate
-
Grammar patch,telekinesis/amputated arm exploit fixes,more in the future
-
Grille kicking now does less damage
-
TELESCOPIC baton no longer knocks anybody down,still got a lot of force though
-
Other small-ish changes and fixes that aren't worth mentioning
-
-
-
-
-
6 April 2014
-
RavingManiac updated:
-
-
Tape recorders and station-bounced radios now work inside containers and closets.
-
-
-
+
+
11 April 2014
+
Jarcolr updated:
+
You can now flip coins like a D2
+
Miscellaneous cargo crates got a tiny buff, Standard Costume crate is now Costume Crate
+
Grammar patch,telekinesis/amputated arm exploit fixes,more in the future
+
Grille kicking now does less damage
+
TELESCOPIC baton no longer knocks anybody down,still got a lot of force though
+
Other small-ish changes and fixes that aren't worth mentioning
+
+
+
+
+
6 April 2014
+
RavingManiac updated:
+
+
Tape recorders and station-bounced radios now work inside containers and closets.
+
+
+
30 March 2014
RavingManiac updated:
@@ -104,1095 +105,1095 @@ should be listed in the changelog upon commit though. Thanks. -->
-
-
10 March 2014
-
Chinsky updated:
-
-
Viruses now affect certain range of species, different for each virus
-
Spaceacilline now prevents infection, and has a small chance to cure viruses at Stage 1. It does not give them antibodies though, so they can get sick again!
-
Biosuits and spacesuits now offer more protection against viruses. Full biosuit competely prevents airborne infection, when coupled with gloves they both protect quite well from contact ones
-
Sneezing now spreads viruses in front of mob. Sometimes he gets a warning beforehand though
-
-
-
-
-
5 March 2014
-
RavingManiac updated:
-
-
Smartfridges added to the bar, chemistry and virology. No more clutter!
-
A certain musical instrument has returned to the bar.
-
There is now a ten second delay between ingesting a pill/donut/milkshake and regretting it.
-
-
-
-
-
1 March 2014
-
Various updated:
-
-
Paint Mixing, red and blue makes purple!
-
New posters to tell you to respect those darned cat people
-
NanoUI for APC's, Canisters, Tank Transfer Valves and the heaters / coolers
-
PDA bombs are now less annoying, and won't always blow up / cause internal bleeding
-
Blob made less deadly
-
Objectiveless Antags now a configuration option, choose your own adventure!
-
Engineering redesign, now with better monitoring of the explodium supermatter!
-
Security EOD
-
New playable race, IPC's, go beep boop boop all over the station!
-
Gamemode autovoting, now players don't have to call for gamemode votes, it's automatic!
-
-
-
-
-
19 February 2014
-
Aryn updated:
-
-
New air model. Nothing should change to a great degree, but temperature flow might be affected due to closed connections not sticking around.
-
-
-
-
-
1 February 2014
-
Various updated:
-
-
NanoUI for PDA
-
Write in blood while a ghost in cult rounds with enough cultists
-
Cookies, absurd sandwiches, and even cookable dioanae nymphs!
-
A bunch of new guns and other weapons
-
Species specific blood
-
-
-
-
-
1 January 2014
-
Various updated:
-
-
AntagHUD and MedicalHUD for ghosts, see who the baddies are, check for new configuration options.
-
Ghosts will now have bold text if they are in the same room as the person making conversations easier to follow.
-
New hairstyles! Now you can use something other then hotpink floor length braid.
-
DNA rework, tell us how you were cloned and became albino!
-
Dirty floors, so now you know exactly how lazy the janitors are!
-
A new UI system, feel free to color it yourself, don't set it to completely clear or you will have a bad time.
-
Cryogenic storage, for all your SSD needs.
-
New hardsuits for those syndicate tajaran
-
-
-
-
-
18 December 2013
-
RavingManiac updated:
-
-
Mousetraps can now be "hidden" through the right-click menu. This makes them go under tables, clutter and the like. The filthy rodents will never see it coming!
-
Monkeys will no longer move randomly while being pulled.
-
-
-
-
-
1 December 2013
-
Various Developers banged their keyboards together:
-
-
New Engine, the supermatter, figure out what a cooling loop is, or don't and blow up engineering!
-
Each department will have it's own fax, make a copy of your butt and fax it to the admins!
-
Booze and soda dispensers, they are like chemmasters, only with booze and soda!
-
Bluespace and Cryostasis beakers, how do they work? Fuggin bluespace how do they work?
-
You can now shove things into vending machines, impress your friends on how things magically disappear out of your hands into the machine!
-
Robots and Androids (And gynoids too!) can now use custom job titles
-
Various bugfixes
-
-
-
-
-
24 November 2013
-
Yinadele updated:
-
-
Supermatter engine added! Please treat your new engine gently, and report any strangeness!
-
Rebalanced events so people don't explode into appendicitis or have their organs constantly explode.
-
Vending machines have had bottled water, iced tea, and grape soda added.
-
Head reattachment surgery added! Sew heads back on proper rather than monkey madness.
Cyborg alt titles: Robot, and Android added! These will make you spawn as a posibrained robot. Please enjoy!
-
Fixed the sprite on the modified welding goggles, added a pair to the CE's office where they'll be used.
-
Fixed atmos computers- They are once again responsive!
-
Added in functionality proper for explosive implants- You can now set their level of detonation, and their effects are more responsively concrete depending on setting.
-
Hemostats re-added to autolathe!
-
Added two manuals on atmosia and EVA, by MagmaRam! Found in engineering and the engineering bookcase.
-
Fixed areas in medbay to have fully functional APC sectors.
-
Girders are now lasable.
-
Please wait warmly, new features planned for next merge!
-
-
-
-
-
23 November 2013
-
Ccomp5950 updated:
-
-
Players are now no longer able to commit suicide with a lasertag gun, and will feel silly for doing so.
-
Ghosts hit with the cult book shall now actually become visible.
-
The powercells spawned with Exosuits will now properly be named to not confuse bearded roboticists.
-
Blindfolded players will now no longer require eye surgery to repair their sight, removing the blindfold will be sufficient.
-
Atmospheric Technicians will now have access to Exterior airlocks.
-
-
-
-
-
1 November 2013
-
Various updated:
-
-
Autovoting, Get off the station when your 15 hour workweek is done, thanks unions!
-
Some beach props that Chinsky finds useless.
-
Updated NanoUI
-
Dialysis while in sleepers - removes reagents from mobs, like the chemist, toss him in there!
-
Pipe Dispensers can now be ordered by Cargo
-
Fancy G-G-G-G-Ghosts!
-
-
-
-
-
29 October 2013
-
Cael_Aislinn updated:
-
-
Xenoarchaeology's chemical analysis and six analysis machines are gone, replaced by a single one which can be beaten in a minigame.
-
Sneaky traitors will find new challenges to overcome at the research outpost, but may also find new opportunities (transit tubes can now be traversed).
-
Finding active alien machinery should now be made significantly easier with the Alden-Saraspova counter.
-
-
-
-
-
-
06 October 2013
-
Chinsky updated:
-
-
Added contact-spread viruses. Spread if infected guy touches someone with bare hands, or if someone touches bare infected guy. Biosuits/gloves help.
-
Changed way airborne viruses spread a bit. Now 20% of breaths will carry viruses to adjacent tiles. Wearing sterile mask cuts down it to 5%. Masks, bio/space suits (only when worn with matching helmet) protect, internals protect completely.
-
Raised infection chances considerably. They were so low people reported that infection does not work. Now it's 50-90% chance for unprotected folks.
-
Blood puddles and mucus now spread the fun again
-
-
-
-
-
-
06 October 2013
-
Chinsky updated:
-
-
Return of dreaded side effects. They now manifest well after their cause disappears, so curing them should be possible without them reappearing immediately. They also lost last stage damaging effects.
-
-
-
-
-
September 24th, 2013
-
Snapshot updated:
-
-
Removed hidden vote counts.
-
Removed hiding of vote results.
-
Removed OOC muting during votes.
-
Crew transfers are no longer callable during Red and Delta alert.
-
Started work on Auto transfer framework.
-
-
-
-
-
18 September 2013
-
Kilakk updated:
-
-
Fax machines! The Captain and IA agents can use the fax machine to send properly formatted messages to Central Command.
-
Gave the fax machine a fancy animated sprite. Thanks Cajoes!
-
-
-
-
-
August 8th, 2013
-
Erthilo updated:
-
-
Raise Dead rune now properly heals and revives dead corpse.
-
Admin-only rejuvenate verb now heals all organs, limbs, and diseases.
-
Cyborg sprites now correctly reset with reset boards. This means cyborg appearances can now be changed without admin intervention.
-
-
-
-
-
2013/08/4
-
Chinsky updated:
-
-
Health HUD indicator replaced with Pain indicator. Now health indicator shows pain level instead of actual vitals level. Some types of damage contribute more to pain, some less, usually feeling worse than they really are.
-
-
-
-
-
-
2013/08/01
-
Chinsky updated:
-
-
Old new medical features:
-
Autoinjectors! They come preloaded with 5u of inapro, can be used instantly, and are one-use. You can replace chems inside using a syringe. Box of them is added to Medicine closet and medical supplies crate.
-
Splints! Target broken liimb and click on person to apply. Can be taken off in inventory menu, like handcuffs. Splinted limbs have less negative effects.
-
Advanced medikit! Red and mean, all doctors spawn with one. Contains better stuff - advanced versions of bandaids and aloe heal 12 damage on the first use.
-
Wounds with damage above 50 won't heal by themselves even if bandaged/salved. Would have to seek advanced medical attention for those.
-
-
-
-
-
July 30th, 2013
-
Erthilo updated:
-
-
EFTPOS and ATM machines should now connect to databases.
-
Gravitational Catapults can now be removed from mechs.
-
Ghost manifest rune paper naming now works correctly.
-
Fix for newscaster special characters. Still not recommended.
-
-
-
-
-
30.07.2013
-
Kilakk updated:
-
-
Added colored department radio channels.
-
-
-
-
-
28.07.2013
-
Segrain updated:
-
-
Camera console circuits can be adjusted for different networks.
-
Nuclear operatives and ERT members have built-in cameras in their helmets. Activate helmet to initialize it.
-
-
-
-
-
26.07.2013
-
Kilakk updated:
-
-
Brig cell timers will no longer start counting down automatically.
-
Separated the actual countdown timer from the timer controls. Pressing "Set" while the timer is counting down will reset the countdown timer to the time selected.
-
-
-
-
2013-11-07
-
Chinsky updated:
-
-
Gun delays. All guns now have delays between shots. Most have less than second, lasercannons and pulse rifles have around 2 seconds delay. Automatics have zero, click-speed.
-
-
-
-
2013/07/06
-
Chinsky updated:
-
-
Humans now can be infected with more than one virus at once.
-
All analyzed viruses are put into virus DB. You can view it and edit their name and description on medical record consoles.
-
Only known viruses (ones in DB) will be detected by the machinery and HUDs.
-
Viruses cause fever, body temperature rising the more stage is.
-
Humans' body temperature does not drift towards room one unless there's big difference in them.
-
Virus incubators now can transmit viuses from dishes to blood sample.
-
New machine - centrifuge. It can isolate antibodies or viruses (spawning virus dish) from a blood sample in vials. Accepts vials only.
-
Fancy vial boxes in virology, one of them is locked by ID with MD access.
-
Engineered viruses are now ariborne too.
-
-
-
-
05.07.2013
-
Spamcat updated:
-
-
Pulse! Humans now have hearbeat rate, which can be measured by right-clicking someone - Check pulse or by health analyzer. Medical machinery also has heartbeat monitors. Certain meds and conditions can influence it.
-
-
-
-
03.07.2013
-
Segrain updated:
-
-
Security and medical cyborgs can use their HUDs to access records.
-
-
-
-
June 28th, 2013
-
Segrain updated:
-
-
AIs are now able to examine what they see.
-
-
-
-
June 27th, 2013
-
Segrain updated:
-
-
ID cards properly setup bloodtype, DNA and fingerprints again.
-
-
-
-
June 26th, 2013
-
Whitellama updated:
-
-
One-antag rounds (like wizard/ninja) no longer end automatically upon death
-
Space ninja has been implemented as a voteable gamemode
-
Space ninja spawn landmarks have been implemented (but not yet placed on the map), still spawn at carps-pawns instead. (The code will warn you about this and ask you to report it, it's a known issue.)
-
Five new space ninja directives have been added, old directives have been reworded to be less harsh
-
Space ninjas have been given their own list as antagonists, and are no longer bundled up with traitors
-
Space ninjas with a "steal a functional AI" objective will now succeed by downloading one into their suits
-
Space ninja suits' exploding on death has been nerfed, so as not to cause breaches
-
A few space ninja titles/names have been added and removed to be slightly more believable
-
The antagonist selector no longer chooses jobbanned players when it runs out of willing options
-
-
-
-
June 26th, 2013
-
Segrain updated:
-
-
Autopsy scanner properly displays time of wound infliction and death.
-
Autopsy scanner properly displays wounds by projectile weapons.
-
-
-
-
June 23rd, 2013
-
Segrain updated:
-
-
Airlocks of various models can be constructed again.
-
-
-
-
-
June 23rd, 2013
-
faux updated:
-
-
There has been a complete medbay renovation spearheaded by Vetinarix. http://baystation12.net/forums/viewtopic.php?f=20&t=7847 <-- Please put any commentary good or bad, here.
-
Some maintenance doors within RnD and Medbay have had their accesses changed. Maintenance doors in the joint areas (leading to the research shuttle, virology, and xenobiology) are now zero access. Which means anyone in those joints can enter the maintenance tunnels. This was done to add additional evacuation locations during radiation storms. Additional maintenance doors were added to the tunnels in these areas to prevent docs and scientists from running about.
-
Starboard emergency storage isn't gone now, it's simply located in the escape wing.
-
An engineering training room has been added to engineering. This location was previously where surgery was located. If you are new to engineering or need to brush up on your skills, please use this area for testing.
-
-
-
-
-
June 22nd 2013
-
Cael_Aislinn updated:
-
-
The xenoarchaeology depth scanner will now tell you what energy field is required to safely extract a find.
-
Excavation picks will now dig faster, and xenoarchaeology as a whole should be easier to do.
-
-
-
-
-
21.06.2013
-
Jupotter updated:
-
-
Fix the robotiscist preview in the char setupe screen
-
-
-
-
-
18.06.2013
-
Segrain updated:
-
-
Fixed some bugs in windoor construction.
-
Secure windoors are made with rods again.
-
Windoors drop their electronics when broken. Emagged windoors can have theirs removed by crowbar.
-
Airlock electronics can be configured to make door open for any single access on it instead of all of them.
-
Cyborgs can preview their icons before choosing.
-
-
-
-
-
13.06.2013
-
Kilakk updated:
-
-
Added the Xenobiologist job. Has access to the research hallway and to xenobiology.
-
Removed Xenobiology access from Scientists.
-
Removed the Xenobiologist alternate title from Scientists.
-
Added "Xenoarchaeology" to the RD, Scientists, and to the ID computer.
-
Changed the Research Outpost doors to use "Xenoarchaeology" access.
-
-
-
-
-
6-13-13
-
Asanadas updated:
-
-
Added a whimsical suit to the head of personnel's secret clothing locker.
-
-
-
-
-
12/06/2013
-
Zuhayr updated:
-
-
Added pneumatic cannon and harpoons.
-
Added embedded projectiles. Bullets and thrown weapons may stick in targets. Throwing them by hand won't make them stick, firing them from a cannon might. Implant removal surgery will get rid of shrapnel and stuck items.
-
-
-
-
-
-
6/11/13
-
Meyar updated:
-
-
Fixes a security door with a firedoor ontop of it.
-
Fixed a typo relating to the admin Select Equipment Verb. (It's RESPONSE team not RESCUE team)
-
ERT are now automated, from their spawn to their shuttle. Admin intervention no longer required! (Getting to the mechs still requires admin permission generally)
-
Added flashlights to compensate for the weakened PDA lights
-
ERT Uniforms updated to be in line with Centcom uniforms. No more turtlenecks, no sir.
-
-
-
-
-
-
09.06.2013
-
Segrain updated:
-
-
Emagged supply console can order SpecOp crates again.
-
-
-
-
-
Meyar
-
6/6/13 updated:
-
-
Adds missing disposal pipes in chemistry
-
-
-
-
-
05.06.2013
-
Segrain updated:
-
-
Exosuits now can open firelocks by walking into them.
-
-
-
-
-
6/5/13
-
Meyar updated:
-
-
Departments SHOULD have access to adjacent maintinence tunnels incase of radstorm or nafarious dealings.
-
Fixed the northern EVA maintinence door.
-
Hand full of mapbugs.
-
MULES should be able to get to security now.
-
Nerfed PDA lights to a 3x3 area, makes the flashlight actually worthwhile.
-
-
-
-
-
-
6/4/13
-
Meyar updated:
-
-
Disposal's mail routing fixed. Missing pipes replaced.
-
Chemistry is once again a part of the disposals delivery circuit.
-
Added missing sorting junctions to Security and HoS office.
-
Fixed a duplicate sorting junction.
-
-
-
-
-
-
5.06.2013
-
Chinsky updated:
-
-
Load bearing equipment - webbings and vests for engineers and sec. Attach to jumpsuit, use 'Look in storage' verb (object tab) to open.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1.06.2013
-
Chinsky updated:
-
-
Bloody footprints! Now stepping in the puddle will dirty your shoes/feet and make you leave bloody footprints for a bit.
-
Blood now dries up after some time. Puddles take ~30 minutes, small things 5 minutes.
-
Untreated wounds now heal. No more toe stubs spamming you with pain messages for the rest of the shift.
-
On the other side, everything is healed slowly. Maximum you cna squeeze out of first aid is 0.5 health per tick per organ. Lying down makes it faster too, by 1.5x factor.
-
Lids! Click beaker/bottle in hand to put them on/off. Prevent spilling
-
Added 'hailer' to security lockers. If used in hand, says "Halt! Security!". For those who can't run and type.
-
-
-
-
-
-
31.05.2013
-
Segrain updated:
-
-
Portable canisters now properly connect to ports beneath them on map load.
-
Fixed unfastening gas meters.
-
-
-
-
-
30th May 2013
-
proliberate updated:
-
-
Station time is now displayed in the status tab for new players and AIs.
-
-
-
-
-
30.05.2013
-
Segrain updated:
-
-
Meteor showers actually spawn meteors now.
-
Engineering tape fits into toolbelt and can be placed on doors.
-
Pill bottles can hold paper.
-
-
-
-
-
May 28th, 2013
-
VitrescentTortoise updated:
-
-
Wizard's forcewall now works.
-
-
-
Xenoarchaeology picksets can now hold everything they started with.
-
-
-
-
28th May 2013
-
Erthilo updated:
-
-
Fixes everyone being able to understand alien languages. HERE IS YOUR TOWER OF BABEL
-
-
-
-
-
26th May 2013
-
Chinsky updated:
-
-
Tentacles! Now clone damage will make you horribly malformed like examine text says.
-
-
VitrescentTortoise updated:
-
-
Added a third option for not getting any job preferences. It allows you to return to the lobby instead of joining.
-
-
-
-
-
5/26/2013
-
Meyar updated:
-
-
The syndicate shuttle now has a cycling airlock during Nuke rounds.
-
Restored the ability for the syndicate Agent ID to change the name on the card (reforge it) more than once.
-
ERT Radio now functional again.
-
Research blast doors now actually lock down the entirety of station-side Research.
Fixes alien races appearing an unknown when speaking their language.
-
Fixes alien races losing their language when cloned.
-
Fixes UI getting randomly reset when trying to change it in Genetics Scanners.
-
-
-
-
-
21 May 2013
-
SkyMarshal updated:
-
-
ZAS will now speed air movement into/out of a zone when unsimulated tiles (e.g. space) are involved, in relation to the number of tiles.
-
Portable Canisters will now automatically connect to any portable connecter beneath them on map load.
-
Bug involving mis-mapped disposal junction fixed
-
Air alarms now work for atmos techs (whoops!)
-
The Master Controller now properly stops atmos when it runtimes.
-
Backpacks can no longer be contaminated
-
ZAS no longer logs air statistics.
-
ZAS now rebuilds as soon as it detects a semi-complex change in geometry. (It was doing this already, but in a convoluted way which was actually less efficient)
-
General code cleanup/commenting of ZAS
-
Jungle now initializes after the random Z-level loads and atmos initializes.
-
-
-
-
-
May 18th, 2013
-
CIB updated:
-
-
A new event type: Wallrot. Use welder or plantbgone on infected walls.
-
Newscasters now can deliver preset news stories over the course of a round. See http://baystation12.net/forums/viewtopic.php?f=14&t=7619 to add your own!
-
-
-
-
-
April 24, 2013
-
Jediluke69 updated:
-
-
Added 5 new drinks (Kira Special, Lemonade, Brown Star, Milkshakes, Rewriter)
-
Nanopaste now heals about half of what it used to
-
Ballistic crates should now come with shotguns loaded with actual shells no more beanbags
-
Iced tea no longer makes a glass of .what?
-
-
-
-
-
April 24, 2013
-
faux updated:
-
-
Mixed Wardrobe Closet now has colored shoes and plaid skirts.
-
Dress uniforms added to the Captain, RD, and HoP wardrobe closets. A uniform jacket has also been added to the Captain's closet. HoS' hat has been re-added to their closet. I do not love the CMO and CE enough to give them anything.
-
Atheletic closet now has five different swimsuits *for the ladies* in them. If you are a guy, be prepared to be yelled at if you run around like a moron in one of these. Same goes for ladies who run around in shorts with their titties swaying in the space winds.
-
A set of dispatcher uniforms will spawn in the security closet. These are for playtesting the dispatcher role.
-
New suit spawns in the laundry room. It's for geezer's only. You're welcome, Book.
-
Nurse outfit variant, orderly uniform, and first responder jacket will now spawn in the medical wardrobe closet.
-
A white wedding dress will spawn in the chaplain's closet. There are also several dresses currently only adminspawnable. Admins: Look either under "bride" or "dress." The bride one leads to the colored wedding dresses, and there are some other kinds of dresses under dress.
-
No more luchador masks or boxing gloves or boxing ring. You guys have a swimming pool now, dip in and enjoy it.
-
he meeting hall has been replaced with an awkwardly placed security office meant for prisoner processing.
-
Added a couple more welding goggles to engineering since you guys liked those a lot.
-
Flasks spawn behind the bar. Only three. Don't fight over them. I don't know how to add them to the bar vending machine otherwise I would have done that instead. Detective, you have your own flask in your office, it's underneath the cigarettes on your desk.
-
Added two canes to the medical storage, for people who have leg injuries and can't walk good and stuff. I do not want to see doctors pretending to be House. These are for patients. Do not make me delete this addition and declare you guys not being able to have nice things.
-
Secondary entance to EVA now directly leads into the medbay hardsuit section. Sorry for any inconviences this will cause. The CMO can now fetch the hardsuits whenever they want.
-
Secondary security hardsuit has been added to the armory. Security members please stop stealing engineer's hardsuits when you guys want to pair up for space travel.
-
Firelocks have been moved around in the main hallways to form really ghetto versions of airlocks.
-
Violin spawns in theatre storage now. I didn't put the piano there though, that was someone else.
-
Psych office in medbay has been made better looking.
-
-
-
-
-
24th April 2013
-
NerdyBoy1104 updated:
-
-
New Botany additions: Rice and Plastellium. New sheet material: Plastic.
-
Plastellium is refined into plastic by first grinding the produce to get plasticide. 20 plasticide + 10 polytrinic acid makes 10 sheets of plastic which can be used to make crates, forks, spoons, knives, ashtrays or plastic bags from.
-
Rice seeds grows into rice stalks that you grind to get rice. 10 Rice + 5 Water makes boiled rice, 10 rice + 5 milk makes rice pudding, 10 rice + 5 universal enzyme (in beaker) makes Sake.
-
-
-
-
-
Spamcat
-
04.05.2013 updated:
-
-
Blood type is now saved in character creation menu, no need to edit it manually every round.
-
-
-
-
-
17 April 2013
-
SkyMarshal updated:
-
-
ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
-
World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
-
Zones will now equalize air more rapidly.
-
ZAS now respects active magboots when airflow occurs.
-
Airflow will no longer throw you into doors and open them.
-
Race condition in zone construction has been fixed, so zones connect properly at round start.
-
Plasma effects readded.
-
Fixed runtime involving away mission.
-
-
-
-
-
17 April 2013
-
SkyMarshal updated:
-
-
ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
-
World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
-
Zones will now equalize air more rapidly.
-
ZAS now respects active magboots when airflow occurs.
-
Airflow will no longer throw you into doors and open them.
-
Race condition in zone construction has been fixed, so zones connect properly at round start.
-
Plasma effects readded.
-
Fixed runtime involving away mission.
-
-
-
-
-
30.04.2013
-
Spamcat updated:
-
-
Pill bottle capacity increased to 14 items.
-
Fixed Lamarr (it now spawns properly)
-
-
-
-
-
15.04.2013
-
Spamcat updated:
-
-
Added telescopic batons to HoS's and captain's lockers. These are quite robust and easily concealable.
-
-
-
-
-
May 14th 2013
-
Cael_Aislinn updated:
-
-
Depth scanners can now be used to determine what material archaeological deposits are made of, meaning lab analysis is no longer required.
-
Some useability issues with xenoarchaeology tools have been resolved, and the transit pods cycle automatically now.
-
-
-
-
-
11 April 2013
-
SkyMarshal updated:
-
-
Fire has been reworked.
-
In-game variable editor is both readded and expanded with fire controlling capability.
-
-
-
-
-
9 April 2013
-
SkyMarshal updated:
-
-
Fire Issues (Firedoors, Flamethrowers, Incendiary Grenades) fixed.
-
Fixed a bad line of code that was preventing autoignition of flammable gas mixes.
-
Volatile fuel is burned up after a point.
-
Partial-tile firedoors removed. This is due to ZAS breaking when interacting with them.
-
-
-
-
-
4 April 2013
-
SkyMarshal updated:
-
-
Fixed ZAS
-
Fixed Fire
-
-
-
-
-
March 27th 2013
-
Asanadas updated:
-
-
The Null Rod has recovered its de-culting ability, for balance reasons. Metagaming with it is a big no-no!
-
Holy Water as a liquid is able to de-cult. Less effective, but less bloody. May be changed over the course of time for balance.
-
-
-
-
-
26.03.2013
-
Spamcat updated:
-
-
Chemmaster now puts pills in pill bottles (if one is inserted).
-
Stabbing someone with a syringe now deals 3 damage instead of 7 because 7 is like, a crowbar punch.
-
Lizards can now join mid-round again.
-
Chemicals in bloodstream will transfer with blood now, so don't get drunk before your blood donation. Viruses and antibodies transfer through blood too.
-
Virology is working again.
-
-
-
-
-
March 15th 2013
-
Cael_Aislinn updated:
-
-
Mapped a compact research base on the mining asteroid, with multiple labs and testing rooms. It's reachable through a new (old) shuttle dock that leaves from the research wing on the main station.
-
-
-
-
-
14.03.2013
-
Spamcat updated:
-
-
Figured I should make one of these. Syringestabbing now produces a broken syringe complete with fingerprints of attacker and blood of a victim, so dispose your evidence carefully. Maximum transfer amount per stab is lowered to 10.
-
-
-
-
-
11/03/2013
-
Chinsky updated:
-
-
Sec HUDs now can see short versions of sec records.on examine. Med HUDs do same for medical records, and can set medical status of patient.
-
Damage to the head can now cause brain damage.
-
-
-
-
-
March 11th 2013
-
CIB updated:
-
-
Cloning now requires you to put slabs of meat into the cloning pod to replenish biomass.
-
-
-
-
-
March 11th 2013
-
Cael Aislinn updated:
-
-
The xenoarchaeology update is here. This includes a major content overhaul and a bunch of new features for xenoarchaeology.
-
Digsites (strange rock deposits) are now much more nuanced and interesting, and a huge number of minor (non-artifact) finds have been added.
-
Excavation is now a complex process that involves digging into the rock to the right depth.
-
Chemical analysis is required for safe excavation of the digsites, in order to determine how best to extract the finds.
-
Anomalous artifacts have been overhauled and many longstanding bugs with existing effects have been fixed - the anomaly utiliser should now work much more often.
-
Numerous new artifact effects have been added and some new artifact types can be dug up from the asteroid.
-
New tools and equipment have been added, including normal and spaceworthy versions of the anomaly suits, excavation tools and other neat gadgets.
-
Five books have been written by subject matter experts from around the galaxy to help the crew of the Exodus come to grips with this exacting new science (over 3000 words of tutorials!).
-
-
-
-
-
March 9th 2013
-
Cael Aislinn updated:
-
-
Beekeeping is now possible. Construct an apiary of out wood and embed it into a hydroponics tray, then get a queen bee and bottle of BeezEez from cargo bay.
- Hives produce honey and honeycomb, but be wary if the bees start swarming.
-
-
-
-
-
March 6th 2013
-
Cael Aislinn updated:
-
-
Type 1 thermoelectric generators and the associated binary circulators are now moveable (wrench to secure/unsecure) and orderable via Quartermaster.
-
code/maps/rust_test.dmm contains an example setup for a functional RUST reactor. Maximum output is in the range of 12 to 20MW (12 to 20 million watts).
-
Removed double announcement for gridchecks, reduced duration of gridchecks.
-
-
RavingManiac updated:
-
-
You can now stab people with syringes using the "harm" intent. This destroys the syringe and transfers a random percentage of its contents into the target. Armor has a 50% chance of blocking the syringe.
All RUST components except for TEGs (which generate the power) are now obtainable ingame, bored engineers should get hold of them and setup an experimental reactor for testing purposes.
-
-
CIB updated:
-
-
Added internal organs. They're currently all located in the chest. Use advanced scanner to detect damage. Use the same surgery as for ruptured lungs to fix them.
-
-
-
-
-
February 27th 2013
-
Gamerofthegame updated:
-
-
Added the (base gear) ERT preset for the debug command.
-
Map fixes, Virology hole fixed. Atmospheric fixes for mining and, to a less extent, the science outpost. (No, not cycling airlocks)
-
Fiddled with the ERT set up location on Centcom. Radmins will now have a even easier time equiping a team of any real pratical size, especially coupled with the above debug command.
New random events: multiple new system wide-events have been have been added to the newscaster feeds, some not quite as respectable as others.
-
New random event: some lucky winners will win the TC Daily Grand Slam Lotto, while others may be the target of malicious hackers.
-
-
-
-
-
February 23rd 2013
-
Cael Aislinn updated:
-
-
Finances! Players spawn with an account, and money can be transferred between accounts, withdrawn/deposited at ATMs and charged to accounts via EFTPOS scanners.
- All players start with 500-5000 credits, credits can no longer be merged and only credits can be deposited into ATMs - so shelter your illegitimately gotten gains in physical assets and remember that fraud is frowned upon!
-
Turrets are no longer noiseless as the grave. Listen for the sound of machinery in their proximity.
-
-
-
-
-
February 23rd 2013
-
Cael Aislinn updated:
-
-
RUST machinery components should now be researchable (with high requirements) and orderable through QM (with high cost).
-
Shield machinery should now be researchable (with high requirements) and orderable through QM (with high cost). This one is reportedly buggy.
-
Rogue vending machines should revert back to normal at the end of the event.
-
New Unathi hair styles.
-
-
-
-
-
22/02/2013
-
Chinsky updated:
-
-
Change to body cavity surgery. Can only put items in chest, groind and head. Max size for item - 3 (chest), 2 (groin), 1 (head). For chest surgery ribs should be bent open, (lung surgery until second scalpel step). Surgery step needs preparation step, with drill. After that you can place item inside, or seal it with cautery to do other step instead.
-
-
-
-
-
February 18th 2013
-
Cael Aislinn updated:
-
-
All RUST components are now buildable/orderable, with very high requirements (except for the TEGs). Emitters have replaced gyrotrons, for now.
-
Fixed up shield generators and made them buildable, with circuits obtainable through RnD. Hull shield gens project along space tiles adjacent to the hull (must be adjacent to a space tile to work).
-
-
-
-
-
20/02/2013
-
Chinsky updated:
-
-
Added new surgery: putting items inside people. After you use retractor to keep incision open, just click with any item to put it inside. But be wary, if you try to fit something too big, you might rip the veins. To remove items, use implant removal surgery.
-
Crowbar can be used as alternative to retractor.
-
Can now unload guns by clicking them in hand.
-
Fixed distance calculation in bullet missing chance computation, it was always assuming 1 or 0 tiles. Now distace REALLY matters when you shoot.
-
To add more FUN to previous thing, bullets missed to not disappear but keep going until they hit something else.
-
Compressed Matter and Explosive implants spawn properly now.
-
Tweaks to medical effects: removed itch caused by bandages. Chemical effects now have non-100 chance of appearing, the stronger medicine, the more probality it'll have side effects.
-
-
-
-
-
February 18th 2013
-
Cael Aislinn updated:
-
-
Security bots will now target hostile mobs, and vice versa.
-
Carp should actually emigrate now, instead of just immigrating then squatting around the outer hull.
-
Admins and moderators have been split up into separate 'who' verbs (adminwho and modwho respectively).
-
-
-
-
-
February 14th 2013
-
CIB updated:
-
-
Medical side-effects(patients are going to come back for secondary treatment)
-
NT loyalty setting(affects command reports and gives antags hints who might collaborate with them)
-
Simple animal balance fixes(They're slower now)
-
-
CaelAislinn updated:
-
-
Re-added old ion storm laws, re-added grid check event.
-
Added Rogue Drone and Vermin Infestation random events.
-
Added/fixed space vines random event.
-
Updates to the virus events.
-
Spider infestation and alien infestation events turned off by default.
-
Soghun, taj and skrell all have unique language text colours.
-
Moderators will no longer be listed in adminwho, instead use modwho.
-
-
-
Gamerofthegame updated:
-
-
Miscellaneous mapfixes.
-
-
-
-
-
February 13th 2013
-
Erthilo updated:
-
-
Fixed SSD (logged-out) players not staying asleep.
-
Fixed set-pose verb and mice emotes having extra periods.
-
Fixed virus crate not appearing and breaking supply shuttle.
Chilis and cold chilis no longer kill in small amounts
-
Chloral now again needs around 5 units to start killing somebody
-
-
-
-
-
January 21st
-
Cael_Aislinn updated:
-
-
Satchels and ore boxes can now hold strange rocks.
-
Closets and crates can now be built out of 5 and 10 plasteel respectively.
-
Observers can become mice once more.
-
-
-
-
-
13/01/2013
-
Chinsky updated:
-
-
If you get enough (6) blood drips on one tile, it'll turn into a blood puddle. Should make bleeding out more visible.
-
Security belt now able to hold taser, baton and tape roll.
-
Added alternative security uniform to Security wardrobes.
-
Ported Urist cult runes. Down with the crayon drawings! Example: http://dl.dropbox.com/u/26846767/images/SS13/255_symbols.PNG
-
Engineering tape now require engineer OR atmos access instead of both.
-
Implants now will react to EMP, possibly in !!FUN!! ways
-
-
-
-
1/13/2013
-
GauHelldragon updated:
-
-
Servicebots now have RoboTray and Printing Pen. Robotray can be used to pick up and drop food/drinks. Printing pen can alternate between writing mode and rename paper mode by clicking it.
-
Farmbots. A new type of robot that weeds, waters and fertilizes. Use robot arm on water tank. Then use plant analyzer, mini-hoe, bucket and finally proximity sensor.
-
Chefs can clang their serving trays with a rolling pin. Just like a riot shield!
Implants: Explosvie implant, exploding when victim hears the codephrase you set.
-
Implants: Compressed Matter implat, scan item (making it disappear), inject yourself and recall that item on will!
-
Implant removal surgery, with !!FUN!! results if you mess up it.
-
Coats now have pockets again.
-
Bash people on tabetops. an windows, or with stools. Grab people to bash them on tables or windows (better grab for better hit on windows). Drag stool sprite on you to pick it up, click on it in hand to make it usual stool again.
-
Surgical caps, and new sprites for bloodbags and fixovein.
-
Now some surgery steps will bloody your hands, Full-body blood coat in case youy mess up spectacualry.
-
Ported some crates (Art, Surgery, Sterile equiplemnt).
-
Changed contraband crates. Posters moved to Art Crate, cigs and lipstick ot party crate. Now contraband crate has illegal booze and illicit drugs.
-
Finally got evac party lights
-
Now disfigurment,now it WILL happen when damage is bad enough.
-
Now if you speak in depressurized area (less than 10 kPa) only people next to you can hear you. Radios still work though.
-
-
-
-
-
-/tg/ station 13 Development Team
-
-
-
- Coders: TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie
- Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut
- Sounds: Skie, Lasty/Vinyl
- Thanks to: CDK Station devs, GoonStation devs, the original SpaceStation developers and Invisty for the title image
-
-
-
-
-Daedalus Development Team
-
-
-
- Coders: DopeGhoti, Sunfall, ThVortex
- Artwork: Captain Hammer
- Spriters: ((TODO.))
- Sounds: Peter J, due, Erik Satie
- Thanks to: All the dev teams that came before: BS12, /tg/station13, the Goons, and the original SS13 folks.
-
-
-
-
-GoonStation 13 Development Team
-
- Coders: Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion
- Spriters: Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No
-
Viruses now affect certain range of species, different for each virus
+
Spaceacilline now prevents infection, and has a small chance to cure viruses at Stage 1. It does not give them antibodies though, so they can get sick again!
+
Biosuits and spacesuits now offer more protection against viruses. Full biosuit competely prevents airborne infection, when coupled with gloves they both protect quite well from contact ones
+
Sneezing now spreads viruses in front of mob. Sometimes he gets a warning beforehand though
+
+
+
+
+
5 March 2014
+
RavingManiac updated:
+
+
Smartfridges added to the bar, chemistry and virology. No more clutter!
+
A certain musical instrument has returned to the bar.
+
There is now a ten second delay between ingesting a pill/donut/milkshake and regretting it.
+
+
+
+
+
1 March 2014
+
Various updated:
+
+
Paint Mixing, red and blue makes purple!
+
New posters to tell you to respect those darned cat people
+
NanoUI for APC's, Canisters, Tank Transfer Valves and the heaters / coolers
+
PDA bombs are now less annoying, and won't always blow up / cause internal bleeding
+
Blob made less deadly
+
Objectiveless Antags now a configuration option, choose your own adventure!
+
Engineering redesign, now with better monitoring of the explodium supermatter!
+
Security EOD
+
New playable race, IPC's, go beep boop boop all over the station!
+
Gamemode autovoting, now players don't have to call for gamemode votes, it's automatic!
+
+
+
+
+
19 February 2014
+
Aryn updated:
+
+
New air model. Nothing should change to a great degree, but temperature flow might be affected due to closed connections not sticking around.
+
+
+
+
+
1 February 2014
+
Various updated:
+
+
NanoUI for PDA
+
Write in blood while a ghost in cult rounds with enough cultists
+
Cookies, absurd sandwiches, and even cookable dioanae nymphs!
+
A bunch of new guns and other weapons
+
Species specific blood
+
+
+
+
+
1 January 2014
+
Various updated:
+
+
AntagHUD and MedicalHUD for ghosts, see who the baddies are, check for new configuration options.
+
Ghosts will now have bold text if they are in the same room as the person making conversations easier to follow.
+
New hairstyles! Now you can use something other then hotpink floor length braid.
+
DNA rework, tell us how you were cloned and became albino!
+
Dirty floors, so now you know exactly how lazy the janitors are!
+
A new UI system, feel free to color it yourself, don't set it to completely clear or you will have a bad time.
+
Cryogenic storage, for all your SSD needs.
+
New hardsuits for those syndicate tajaran
+
+
+
+
+
18 December 2013
+
RavingManiac updated:
+
+
Mousetraps can now be "hidden" through the right-click menu. This makes them go under tables, clutter and the like. The filthy rodents will never see it coming!
+
Monkeys will no longer move randomly while being pulled.
+
+
+
+
+
1 December 2013
+
Various Developers banged their keyboards together:
+
+
New Engine, the supermatter, figure out what a cooling loop is, or don't and blow up engineering!
+
Each department will have it's own fax, make a copy of your butt and fax it to the admins!
+
Booze and soda dispensers, they are like chemmasters, only with booze and soda!
+
Bluespace and Cryostasis beakers, how do they work? Fuggin bluespace how do they work?
+
You can now shove things into vending machines, impress your friends on how things magically disappear out of your hands into the machine!
+
Robots and Androids (And gynoids too!) can now use custom job titles
+
Various bugfixes
+
+
+
+
+
24 November 2013
+
Yinadele updated:
+
+
Supermatter engine added! Please treat your new engine gently, and report any strangeness!
+
Rebalanced events so people don't explode into appendicitis or have their organs constantly explode.
+
Vending machines have had bottled water, iced tea, and grape soda added.
+
Head reattachment surgery added! Sew heads back on proper rather than monkey madness.
Cyborg alt titles: Robot, and Android added! These will make you spawn as a posibrained robot. Please enjoy!
+
Fixed the sprite on the modified welding goggles, added a pair to the CE's office where they'll be used.
+
Fixed atmos computers- They are once again responsive!
+
Added in functionality proper for explosive implants- You can now set their level of detonation, and their effects are more responsively concrete depending on setting.
+
Hemostats re-added to autolathe!
+
Added two manuals on atmosia and EVA, by MagmaRam! Found in engineering and the engineering bookcase.
+
Fixed areas in medbay to have fully functional APC sectors.
+
Girders are now lasable.
+
Please wait warmly, new features planned for next merge!
+
+
+
+
+
23 November 2013
+
Ccomp5950 updated:
+
+
Players are now no longer able to commit suicide with a lasertag gun, and will feel silly for doing so.
+
Ghosts hit with the cult book shall now actually become visible.
+
The powercells spawned with Exosuits will now properly be named to not confuse bearded roboticists.
+
Blindfolded players will now no longer require eye surgery to repair their sight, removing the blindfold will be sufficient.
+
Atmospheric Technicians will now have access to Exterior airlocks.
+
+
+
+
+
1 November 2013
+
Various updated:
+
+
Autovoting, Get off the station when your 15 hour workweek is done, thanks unions!
+
Some beach props that Chinsky finds useless.
+
Updated NanoUI
+
Dialysis while in sleepers - removes reagents from mobs, like the chemist, toss him in there!
+
Pipe Dispensers can now be ordered by Cargo
+
Fancy G-G-G-G-Ghosts!
+
+
+
+
+
29 October 2013
+
Cael_Aislinn updated:
+
+
Xenoarchaeology's chemical analysis and six analysis machines are gone, replaced by a single one which can be beaten in a minigame.
+
Sneaky traitors will find new challenges to overcome at the research outpost, but may also find new opportunities (transit tubes can now be traversed).
+
Finding active alien machinery should now be made significantly easier with the Alden-Saraspova counter.
+
+
+
+
+
+
06 October 2013
+
Chinsky updated:
+
+
Added contact-spread viruses. Spread if infected guy touches someone with bare hands, or if someone touches bare infected guy. Biosuits/gloves help.
+
Changed way airborne viruses spread a bit. Now 20% of breaths will carry viruses to adjacent tiles. Wearing sterile mask cuts down it to 5%. Masks, bio/space suits (only when worn with matching helmet) protect, internals protect completely.
+
Raised infection chances considerably. They were so low people reported that infection does not work. Now it's 50-90% chance for unprotected folks.
+
Blood puddles and mucus now spread the fun again
+
+
+
+
+
+
06 October 2013
+
Chinsky updated:
+
+
Return of dreaded side effects. They now manifest well after their cause disappears, so curing them should be possible without them reappearing immediately. They also lost last stage damaging effects.
+
+
+
+
+
September 24th, 2013
+
Snapshot updated:
+
+
Removed hidden vote counts.
+
Removed hiding of vote results.
+
Removed OOC muting during votes.
+
Crew transfers are no longer callable during Red and Delta alert.
+
Started work on Auto transfer framework.
+
+
+
+
+
18 September 2013
+
Kilakk updated:
+
+
Fax machines! The Captain and IA agents can use the fax machine to send properly formatted messages to Central Command.
+
Gave the fax machine a fancy animated sprite. Thanks Cajoes!
+
+
+
+
+
August 8th, 2013
+
Erthilo updated:
+
+
Raise Dead rune now properly heals and revives dead corpse.
+
Admin-only rejuvenate verb now heals all organs, limbs, and diseases.
+
Cyborg sprites now correctly reset with reset boards. This means cyborg appearances can now be changed without admin intervention.
+
+
+
+
+
2013/08/4
+
Chinsky updated:
+
+
Health HUD indicator replaced with Pain indicator. Now health indicator shows pain level instead of actual vitals level. Some types of damage contribute more to pain, some less, usually feeling worse than they really are.
+
+
+
+
+
+
2013/08/01
+
Chinsky updated:
+
+
Old new medical features:
+
Autoinjectors! They come preloaded with 5u of inapro, can be used instantly, and are one-use. You can replace chems inside using a syringe. Box of them is added to Medicine closet and medical supplies crate.
+
Splints! Target broken liimb and click on person to apply. Can be taken off in inventory menu, like handcuffs. Splinted limbs have less negative effects.
+
Advanced medikit! Red and mean, all doctors spawn with one. Contains better stuff - advanced versions of bandaids and aloe heal 12 damage on the first use.
+
Wounds with damage above 50 won't heal by themselves even if bandaged/salved. Would have to seek advanced medical attention for those.
+
+
+
+
+
July 30th, 2013
+
Erthilo updated:
+
+
EFTPOS and ATM machines should now connect to databases.
+
Gravitational Catapults can now be removed from mechs.
+
Ghost manifest rune paper naming now works correctly.
+
Fix for newscaster special characters. Still not recommended.
+
+
+
+
+
30.07.2013
+
Kilakk updated:
+
+
Added colored department radio channels.
+
+
+
+
+
28.07.2013
+
Segrain updated:
+
+
Camera console circuits can be adjusted for different networks.
+
Nuclear operatives and ERT members have built-in cameras in their helmets. Activate helmet to initialize it.
+
+
+
+
+
26.07.2013
+
Kilakk updated:
+
+
Brig cell timers will no longer start counting down automatically.
+
Separated the actual countdown timer from the timer controls. Pressing "Set" while the timer is counting down will reset the countdown timer to the time selected.
+
+
+
+
2013-11-07
+
Chinsky updated:
+
+
Gun delays. All guns now have delays between shots. Most have less than second, lasercannons and pulse rifles have around 2 seconds delay. Automatics have zero, click-speed.
+
+
+
+
2013/07/06
+
Chinsky updated:
+
+
Humans now can be infected with more than one virus at once.
+
All analyzed viruses are put into virus DB. You can view it and edit their name and description on medical record consoles.
+
Only known viruses (ones in DB) will be detected by the machinery and HUDs.
+
Viruses cause fever, body temperature rising the more stage is.
+
Humans' body temperature does not drift towards room one unless there's big difference in them.
+
Virus incubators now can transmit viuses from dishes to blood sample.
+
New machine - centrifuge. It can isolate antibodies or viruses (spawning virus dish) from a blood sample in vials. Accepts vials only.
+
Fancy vial boxes in virology, one of them is locked by ID with MD access.
+
Engineered viruses are now ariborne too.
+
+
+
+
05.07.2013
+
Spamcat updated:
+
+
Pulse! Humans now have hearbeat rate, which can be measured by right-clicking someone - Check pulse or by health analyzer. Medical machinery also has heartbeat monitors. Certain meds and conditions can influence it.
+
+
+
+
03.07.2013
+
Segrain updated:
+
+
Security and medical cyborgs can use their HUDs to access records.
+
+
+
+
June 28th, 2013
+
Segrain updated:
+
+
AIs are now able to examine what they see.
+
+
+
+
June 27th, 2013
+
Segrain updated:
+
+
ID cards properly setup bloodtype, DNA and fingerprints again.
+
+
+
+
June 26th, 2013
+
Whitellama updated:
+
+
One-antag rounds (like wizard/ninja) no longer end automatically upon death
+
Space ninja has been implemented as a voteable gamemode
+
Space ninja spawn landmarks have been implemented (but not yet placed on the map), still spawn at carps-pawns instead. (The code will warn you about this and ask you to report it, it's a known issue.)
+
Five new space ninja directives have been added, old directives have been reworded to be less harsh
+
Space ninjas have been given their own list as antagonists, and are no longer bundled up with traitors
+
Space ninjas with a "steal a functional AI" objective will now succeed by downloading one into their suits
+
Space ninja suits' exploding on death has been nerfed, so as not to cause breaches
+
A few space ninja titles/names have been added and removed to be slightly more believable
+
The antagonist selector no longer chooses jobbanned players when it runs out of willing options
+
+
+
+
June 26th, 2013
+
Segrain updated:
+
+
Autopsy scanner properly displays time of wound infliction and death.
+
Autopsy scanner properly displays wounds by projectile weapons.
+
+
+
+
June 23rd, 2013
+
Segrain updated:
+
+
Airlocks of various models can be constructed again.
+
+
+
+
+
June 23rd, 2013
+
faux updated:
+
+
There has been a complete medbay renovation spearheaded by Vetinarix. http://baystation12.net/forums/viewtopic.php?f=20&t=7847 <-- Please put any commentary good or bad, here.
+
Some maintenance doors within RnD and Medbay have had their accesses changed. Maintenance doors in the joint areas (leading to the research shuttle, virology, and xenobiology) are now zero access. Which means anyone in those joints can enter the maintenance tunnels. This was done to add additional evacuation locations during radiation storms. Additional maintenance doors were added to the tunnels in these areas to prevent docs and scientists from running about.
+
Starboard emergency storage isn't gone now, it's simply located in the escape wing.
+
An engineering training room has been added to engineering. This location was previously where surgery was located. If you are new to engineering or need to brush up on your skills, please use this area for testing.
+
+
+
+
+
June 22nd 2013
+
Cael_Aislinn updated:
+
+
The xenoarchaeology depth scanner will now tell you what energy field is required to safely extract a find.
+
Excavation picks will now dig faster, and xenoarchaeology as a whole should be easier to do.
+
+
+
+
+
21.06.2013
+
Jupotter updated:
+
+
Fix the robotiscist preview in the char setupe screen
+
+
+
+
+
18.06.2013
+
Segrain updated:
+
+
Fixed some bugs in windoor construction.
+
Secure windoors are made with rods again.
+
Windoors drop their electronics when broken. Emagged windoors can have theirs removed by crowbar.
+
Airlock electronics can be configured to make door open for any single access on it instead of all of them.
+
Cyborgs can preview their icons before choosing.
+
+
+
+
+
13.06.2013
+
Kilakk updated:
+
+
Added the Xenobiologist job. Has access to the research hallway and to xenobiology.
+
Removed Xenobiology access from Scientists.
+
Removed the Xenobiologist alternate title from Scientists.
+
Added "Xenoarchaeology" to the RD, Scientists, and to the ID computer.
+
Changed the Research Outpost doors to use "Xenoarchaeology" access.
+
+
+
+
+
6-13-13
+
Asanadas updated:
+
+
Added a whimsical suit to the head of personnel's secret clothing locker.
+
+
+
+
+
12/06/2013
+
Zuhayr updated:
+
+
Added pneumatic cannon and harpoons.
+
Added embedded projectiles. Bullets and thrown weapons may stick in targets. Throwing them by hand won't make them stick, firing them from a cannon might. Implant removal surgery will get rid of shrapnel and stuck items.
+
+
+
+
+
+
6/11/13
+
Meyar updated:
+
+
Fixes a security door with a firedoor ontop of it.
+
Fixed a typo relating to the admin Select Equipment Verb. (It's RESPONSE team not RESCUE team)
+
ERT are now automated, from their spawn to their shuttle. Admin intervention no longer required! (Getting to the mechs still requires admin permission generally)
+
Added flashlights to compensate for the weakened PDA lights
+
ERT Uniforms updated to be in line with Centcom uniforms. No more turtlenecks, no sir.
+
+
+
+
+
+
09.06.2013
+
Segrain updated:
+
+
Emagged supply console can order SpecOp crates again.
+
+
+
+
+
Meyar
+
6/6/13 updated:
+
+
Adds missing disposal pipes in chemistry
+
+
+
+
+
05.06.2013
+
Segrain updated:
+
+
Exosuits now can open firelocks by walking into them.
+
+
+
+
+
6/5/13
+
Meyar updated:
+
+
Departments SHOULD have access to adjacent maintinence tunnels incase of radstorm or nafarious dealings.
+
Fixed the northern EVA maintinence door.
+
Hand full of mapbugs.
+
MULES should be able to get to security now.
+
Nerfed PDA lights to a 3x3 area, makes the flashlight actually worthwhile.
+
+
+
+
+
+
6/4/13
+
Meyar updated:
+
+
Disposal's mail routing fixed. Missing pipes replaced.
+
Chemistry is once again a part of the disposals delivery circuit.
+
Added missing sorting junctions to Security and HoS office.
+
Fixed a duplicate sorting junction.
+
+
+
+
+
+
5.06.2013
+
Chinsky updated:
+
+
Load bearing equipment - webbings and vests for engineers and sec. Attach to jumpsuit, use 'Look in storage' verb (object tab) to open.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1.06.2013
+
Chinsky updated:
+
+
Bloody footprints! Now stepping in the puddle will dirty your shoes/feet and make you leave bloody footprints for a bit.
+
Blood now dries up after some time. Puddles take ~30 minutes, small things 5 minutes.
+
Untreated wounds now heal. No more toe stubs spamming you with pain messages for the rest of the shift.
+
On the other side, everything is healed slowly. Maximum you cna squeeze out of first aid is 0.5 health per tick per organ. Lying down makes it faster too, by 1.5x factor.
+
Lids! Click beaker/bottle in hand to put them on/off. Prevent spilling
+
Added 'hailer' to security lockers. If used in hand, says "Halt! Security!". For those who can't run and type.
+
+
+
+
+
+
31.05.2013
+
Segrain updated:
+
+
Portable canisters now properly connect to ports beneath them on map load.
+
Fixed unfastening gas meters.
+
+
+
+
+
30th May 2013
+
proliberate updated:
+
+
Station time is now displayed in the status tab for new players and AIs.
+
+
+
+
+
30.05.2013
+
Segrain updated:
+
+
Meteor showers actually spawn meteors now.
+
Engineering tape fits into toolbelt and can be placed on doors.
+
Pill bottles can hold paper.
+
+
+
+
+
May 28th, 2013
+
VitrescentTortoise updated:
+
+
Wizard's forcewall now works.
+
+
+
Xenoarchaeology picksets can now hold everything they started with.
+
+
+
+
28th May 2013
+
Erthilo updated:
+
+
Fixes everyone being able to understand alien languages. HERE IS YOUR TOWER OF BABEL
+
+
+
+
+
26th May 2013
+
Chinsky updated:
+
+
Tentacles! Now clone damage will make you horribly malformed like examine text says.
+
+
VitrescentTortoise updated:
+
+
Added a third option for not getting any job preferences. It allows you to return to the lobby instead of joining.
+
+
+
+
+
5/26/2013
+
Meyar updated:
+
+
The syndicate shuttle now has a cycling airlock during Nuke rounds.
+
Restored the ability for the syndicate Agent ID to change the name on the card (reforge it) more than once.
+
ERT Radio now functional again.
+
Research blast doors now actually lock down the entirety of station-side Research.
Fixes alien races appearing an unknown when speaking their language.
+
Fixes alien races losing their language when cloned.
+
Fixes UI getting randomly reset when trying to change it in Genetics Scanners.
+
+
+
+
+
21 May 2013
+
SkyMarshal updated:
+
+
ZAS will now speed air movement into/out of a zone when unsimulated tiles (e.g. space) are involved, in relation to the number of tiles.
+
Portable Canisters will now automatically connect to any portable connecter beneath them on map load.
+
Bug involving mis-mapped disposal junction fixed
+
Air alarms now work for atmos techs (whoops!)
+
The Master Controller now properly stops atmos when it runtimes.
+
Backpacks can no longer be contaminated
+
ZAS no longer logs air statistics.
+
ZAS now rebuilds as soon as it detects a semi-complex change in geometry. (It was doing this already, but in a convoluted way which was actually less efficient)
+
General code cleanup/commenting of ZAS
+
Jungle now initializes after the random Z-level loads and atmos initializes.
+
+
+
+
+
May 18th, 2013
+
CIB updated:
+
+
A new event type: Wallrot. Use welder or plantbgone on infected walls.
+
Newscasters now can deliver preset news stories over the course of a round. See http://baystation12.net/forums/viewtopic.php?f=14&t=7619 to add your own!
+
+
+
+
+
April 24, 2013
+
Jediluke69 updated:
+
+
Added 5 new drinks (Kira Special, Lemonade, Brown Star, Milkshakes, Rewriter)
+
Nanopaste now heals about half of what it used to
+
Ballistic crates should now come with shotguns loaded with actual shells no more beanbags
+
Iced tea no longer makes a glass of .what?
+
+
+
+
+
April 24, 2013
+
faux updated:
+
+
Mixed Wardrobe Closet now has colored shoes and plaid skirts.
+
Dress uniforms added to the Captain, RD, and HoP wardrobe closets. A uniform jacket has also been added to the Captain's closet. HoS' hat has been re-added to their closet. I do not love the CMO and CE enough to give them anything.
+
Atheletic closet now has five different swimsuits *for the ladies* in them. If you are a guy, be prepared to be yelled at if you run around like a moron in one of these. Same goes for ladies who run around in shorts with their titties swaying in the space winds.
+
A set of dispatcher uniforms will spawn in the security closet. These are for playtesting the dispatcher role.
+
New suit spawns in the laundry room. It's for geezer's only. You're welcome, Book.
+
Nurse outfit variant, orderly uniform, and first responder jacket will now spawn in the medical wardrobe closet.
+
A white wedding dress will spawn in the chaplain's closet. There are also several dresses currently only adminspawnable. Admins: Look either under "bride" or "dress." The bride one leads to the colored wedding dresses, and there are some other kinds of dresses under dress.
+
No more luchador masks or boxing gloves or boxing ring. You guys have a swimming pool now, dip in and enjoy it.
+
he meeting hall has been replaced with an awkwardly placed security office meant for prisoner processing.
+
Added a couple more welding goggles to engineering since you guys liked those a lot.
+
Flasks spawn behind the bar. Only three. Don't fight over them. I don't know how to add them to the bar vending machine otherwise I would have done that instead. Detective, you have your own flask in your office, it's underneath the cigarettes on your desk.
+
Added two canes to the medical storage, for people who have leg injuries and can't walk good and stuff. I do not want to see doctors pretending to be House. These are for patients. Do not make me delete this addition and declare you guys not being able to have nice things.
+
Secondary entance to EVA now directly leads into the medbay hardsuit section. Sorry for any inconviences this will cause. The CMO can now fetch the hardsuits whenever they want.
+
Secondary security hardsuit has been added to the armory. Security members please stop stealing engineer's hardsuits when you guys want to pair up for space travel.
+
Firelocks have been moved around in the main hallways to form really ghetto versions of airlocks.
+
Violin spawns in theatre storage now. I didn't put the piano there though, that was someone else.
+
Psych office in medbay has been made better looking.
+
+
+
+
+
24th April 2013
+
NerdyBoy1104 updated:
+
+
New Botany additions: Rice and Plastellium. New sheet material: Plastic.
+
Plastellium is refined into plastic by first grinding the produce to get plasticide. 20 plasticide + 10 polytrinic acid makes 10 sheets of plastic which can be used to make crates, forks, spoons, knives, ashtrays or plastic bags from.
+
Rice seeds grows into rice stalks that you grind to get rice. 10 Rice + 5 Water makes boiled rice, 10 rice + 5 milk makes rice pudding, 10 rice + 5 universal enzyme (in beaker) makes Sake.
+
+
+
+
+
Spamcat
+
04.05.2013 updated:
+
+
Blood type is now saved in character creation menu, no need to edit it manually every round.
+
+
+
+
+
17 April 2013
+
SkyMarshal updated:
+
+
ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
+
World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
+
Zones will now equalize air more rapidly.
+
ZAS now respects active magboots when airflow occurs.
+
Airflow will no longer throw you into doors and open them.
+
Race condition in zone construction has been fixed, so zones connect properly at round start.
+
Plasma effects readded.
+
Fixed runtime involving away mission.
+
+
+
+
+
17 April 2013
+
SkyMarshal updated:
+
+
ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
+
World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
+
Zones will now equalize air more rapidly.
+
ZAS now respects active magboots when airflow occurs.
+
Airflow will no longer throw you into doors and open them.
+
Race condition in zone construction has been fixed, so zones connect properly at round start.
+
Plasma effects readded.
+
Fixed runtime involving away mission.
+
+
+
+
+
30.04.2013
+
Spamcat updated:
+
+
Pill bottle capacity increased to 14 items.
+
Fixed Lamarr (it now spawns properly)
+
+
+
+
+
15.04.2013
+
Spamcat updated:
+
+
Added telescopic batons to HoS's and captain's lockers. These are quite robust and easily concealable.
+
+
+
+
+
May 14th 2013
+
Cael_Aislinn updated:
+
+
Depth scanners can now be used to determine what material archaeological deposits are made of, meaning lab analysis is no longer required.
+
Some useability issues with xenoarchaeology tools have been resolved, and the transit pods cycle automatically now.
+
+
+
+
+
11 April 2013
+
SkyMarshal updated:
+
+
Fire has been reworked.
+
In-game variable editor is both readded and expanded with fire controlling capability.
+
+
+
+
+
9 April 2013
+
SkyMarshal updated:
+
+
Fire Issues (Firedoors, Flamethrowers, Incendiary Grenades) fixed.
+
Fixed a bad line of code that was preventing autoignition of flammable gas mixes.
+
Volatile fuel is burned up after a point.
+
Partial-tile firedoors removed. This is due to ZAS breaking when interacting with them.
+
+
+
+
+
4 April 2013
+
SkyMarshal updated:
+
+
Fixed ZAS
+
Fixed Fire
+
+
+
+
+
March 27th 2013
+
Asanadas updated:
+
+
The Null Rod has recovered its de-culting ability, for balance reasons. Metagaming with it is a big no-no!
+
Holy Water as a liquid is able to de-cult. Less effective, but less bloody. May be changed over the course of time for balance.
+
+
+
+
+
26.03.2013
+
Spamcat updated:
+
+
Chemmaster now puts pills in pill bottles (if one is inserted).
+
Stabbing someone with a syringe now deals 3 damage instead of 7 because 7 is like, a crowbar punch.
+
Lizards can now join mid-round again.
+
Chemicals in bloodstream will transfer with blood now, so don't get drunk before your blood donation. Viruses and antibodies transfer through blood too.
+
Virology is working again.
+
+
+
+
+
March 15th 2013
+
Cael_Aislinn updated:
+
+
Mapped a compact research base on the mining asteroid, with multiple labs and testing rooms. It's reachable through a new (old) shuttle dock that leaves from the research wing on the main station.
+
+
+
+
+
14.03.2013
+
Spamcat updated:
+
+
Figured I should make one of these. Syringestabbing now produces a broken syringe complete with fingerprints of attacker and blood of a victim, so dispose your evidence carefully. Maximum transfer amount per stab is lowered to 10.
+
+
+
+
+
11/03/2013
+
Chinsky updated:
+
+
Sec HUDs now can see short versions of sec records.on examine. Med HUDs do same for medical records, and can set medical status of patient.
+
Damage to the head can now cause brain damage.
+
+
+
+
+
March 11th 2013
+
CIB updated:
+
+
Cloning now requires you to put slabs of meat into the cloning pod to replenish biomass.
+
+
+
+
+
March 11th 2013
+
Cael Aislinn updated:
+
+
The xenoarchaeology update is here. This includes a major content overhaul and a bunch of new features for xenoarchaeology.
+
Digsites (strange rock deposits) are now much more nuanced and interesting, and a huge number of minor (non-artifact) finds have been added.
+
Excavation is now a complex process that involves digging into the rock to the right depth.
+
Chemical analysis is required for safe excavation of the digsites, in order to determine how best to extract the finds.
+
Anomalous artifacts have been overhauled and many longstanding bugs with existing effects have been fixed - the anomaly utiliser should now work much more often.
+
Numerous new artifact effects have been added and some new artifact types can be dug up from the asteroid.
+
New tools and equipment have been added, including normal and spaceworthy versions of the anomaly suits, excavation tools and other neat gadgets.
+
Five books have been written by subject matter experts from around the galaxy to help the crew of the Exodus come to grips with this exacting new science (over 3000 words of tutorials!).
+
+
+
+
+
March 9th 2013
+
Cael Aislinn updated:
+
+
Beekeeping is now possible. Construct an apiary of out wood and embed it into a hydroponics tray, then get a queen bee and bottle of BeezEez from cargo bay.
+ Hives produce honey and honeycomb, but be wary if the bees start swarming.
+
+
+
+
+
March 6th 2013
+
Cael Aislinn updated:
+
+
Type 1 thermoelectric generators and the associated binary circulators are now moveable (wrench to secure/unsecure) and orderable via Quartermaster.
+
code/maps/rust_test.dmm contains an example setup for a functional RUST reactor. Maximum output is in the range of 12 to 20MW (12 to 20 million watts).
+
Removed double announcement for gridchecks, reduced duration of gridchecks.
+
+
RavingManiac updated:
+
+
You can now stab people with syringes using the "harm" intent. This destroys the syringe and transfers a random percentage of its contents into the target. Armor has a 50% chance of blocking the syringe.
All RUST components except for TEGs (which generate the power) are now obtainable ingame, bored engineers should get hold of them and setup an experimental reactor for testing purposes.
+
+
CIB updated:
+
+
Added internal organs. They're currently all located in the chest. Use advanced scanner to detect damage. Use the same surgery as for ruptured lungs to fix them.
+
+
+
+
+
February 27th 2013
+
Gamerofthegame updated:
+
+
Added the (base gear) ERT preset for the debug command.
+
Map fixes, Virology hole fixed. Atmospheric fixes for mining and, to a less extent, the science outpost. (No, not cycling airlocks)
+
Fiddled with the ERT set up location on Centcom. Radmins will now have a even easier time equiping a team of any real pratical size, especially coupled with the above debug command.
New random events: multiple new system wide-events have been have been added to the newscaster feeds, some not quite as respectable as others.
+
New random event: some lucky winners will win the TC Daily Grand Slam Lotto, while others may be the target of malicious hackers.
+
+
+
+
+
February 23rd 2013
+
Cael Aislinn updated:
+
+
Finances! Players spawn with an account, and money can be transferred between accounts, withdrawn/deposited at ATMs and charged to accounts via EFTPOS scanners.
+ All players start with 500-5000 credits, credits can no longer be merged and only credits can be deposited into ATMs - so shelter your illegitimately gotten gains in physical assets and remember that fraud is frowned upon!
+
Turrets are no longer noiseless as the grave. Listen for the sound of machinery in their proximity.
+
+
+
+
+
February 23rd 2013
+
Cael Aislinn updated:
+
+
RUST machinery components should now be researchable (with high requirements) and orderable through QM (with high cost).
+
Shield machinery should now be researchable (with high requirements) and orderable through QM (with high cost). This one is reportedly buggy.
+
Rogue vending machines should revert back to normal at the end of the event.
+
New Unathi hair styles.
+
+
+
+
+
22/02/2013
+
Chinsky updated:
+
+
Change to body cavity surgery. Can only put items in chest, groind and head. Max size for item - 3 (chest), 2 (groin), 1 (head). For chest surgery ribs should be bent open, (lung surgery until second scalpel step). Surgery step needs preparation step, with drill. After that you can place item inside, or seal it with cautery to do other step instead.
+
+
+
+
+
February 18th 2013
+
Cael Aislinn updated:
+
+
All RUST components are now buildable/orderable, with very high requirements (except for the TEGs). Emitters have replaced gyrotrons, for now.
+
Fixed up shield generators and made them buildable, with circuits obtainable through RnD. Hull shield gens project along space tiles adjacent to the hull (must be adjacent to a space tile to work).
+
+
+
+
+
20/02/2013
+
Chinsky updated:
+
+
Added new surgery: putting items inside people. After you use retractor to keep incision open, just click with any item to put it inside. But be wary, if you try to fit something too big, you might rip the veins. To remove items, use implant removal surgery.
+
Crowbar can be used as alternative to retractor.
+
Can now unload guns by clicking them in hand.
+
Fixed distance calculation in bullet missing chance computation, it was always assuming 1 or 0 tiles. Now distace REALLY matters when you shoot.
+
To add more FUN to previous thing, bullets missed to not disappear but keep going until they hit something else.
+
Compressed Matter and Explosive implants spawn properly now.
+
Tweaks to medical effects: removed itch caused by bandages. Chemical effects now have non-100 chance of appearing, the stronger medicine, the more probality it'll have side effects.
+
+
+
+
+
February 18th 2013
+
Cael Aislinn updated:
+
+
Security bots will now target hostile mobs, and vice versa.
+
Carp should actually emigrate now, instead of just immigrating then squatting around the outer hull.
+
Admins and moderators have been split up into separate 'who' verbs (adminwho and modwho respectively).
+
+
+
+
+
February 14th 2013
+
CIB updated:
+
+
Medical side-effects(patients are going to come back for secondary treatment)
+
NT loyalty setting(affects command reports and gives antags hints who might collaborate with them)
+
Simple animal balance fixes(They're slower now)
+
+
CaelAislinn updated:
+
+
Re-added old ion storm laws, re-added grid check event.
+
Added Rogue Drone and Vermin Infestation random events.
+
Added/fixed space vines random event.
+
Updates to the virus events.
+
Spider infestation and alien infestation events turned off by default.
+
Soghun, taj and skrell all have unique language text colours.
+
Moderators will no longer be listed in adminwho, instead use modwho.
+
+
+
Gamerofthegame updated:
+
+
Miscellaneous mapfixes.
+
+
+
+
+
February 13th 2013
+
Erthilo updated:
+
+
Fixed SSD (logged-out) players not staying asleep.
+
Fixed set-pose verb and mice emotes having extra periods.
+
Fixed virus crate not appearing and breaking supply shuttle.
Chilis and cold chilis no longer kill in small amounts
+
Chloral now again needs around 5 units to start killing somebody
+
+
+
+
+
January 21st
+
Cael_Aislinn updated:
+
+
Satchels and ore boxes can now hold strange rocks.
+
Closets and crates can now be built out of 5 and 10 plasteel respectively.
+
Observers can become mice once more.
+
+
+
+
+
13/01/2013
+
Chinsky updated:
+
+
If you get enough (6) blood drips on one tile, it'll turn into a blood puddle. Should make bleeding out more visible.
+
Security belt now able to hold taser, baton and tape roll.
+
Added alternative security uniform to Security wardrobes.
+
Ported Urist cult runes. Down with the crayon drawings! Example: http://dl.dropbox.com/u/26846767/images/SS13/255_symbols.PNG
+
Engineering tape now require engineer OR atmos access instead of both.
+
Implants now will react to EMP, possibly in !!FUN!! ways
+
+
+
+
1/13/2013
+
GauHelldragon updated:
+
+
Servicebots now have RoboTray and Printing Pen. Robotray can be used to pick up and drop food/drinks. Printing pen can alternate between writing mode and rename paper mode by clicking it.
+
Farmbots. A new type of robot that weeds, waters and fertilizes. Use robot arm on water tank. Then use plant analyzer, mini-hoe, bucket and finally proximity sensor.
+
Chefs can clang their serving trays with a rolling pin. Just like a riot shield!
Implants: Explosvie implant, exploding when victim hears the codephrase you set.
+
Implants: Compressed Matter implat, scan item (making it disappear), inject yourself and recall that item on will!
+
Implant removal surgery, with !!FUN!! results if you mess up it.
+
Coats now have pockets again.
+
Bash people on tabetops. an windows, or with stools. Grab people to bash them on tables or windows (better grab for better hit on windows). Drag stool sprite on you to pick it up, click on it in hand to make it usual stool again.
+
Surgical caps, and new sprites for bloodbags and fixovein.
+
Now some surgery steps will bloody your hands, Full-body blood coat in case youy mess up spectacualry.
+
Ported some crates (Art, Surgery, Sterile equiplemnt).
+
Changed contraband crates. Posters moved to Art Crate, cigs and lipstick ot party crate. Now contraband crate has illegal booze and illicit drugs.
+
Finally got evac party lights
+
Now disfigurment,now it WILL happen when damage is bad enough.
+
Now if you speak in depressurized area (less than 10 kPa) only people next to you can hear you. Radios still work though.
+
+
+
+
+
+/tg/ station 13 Development Team
+
+
+
+ Coders: TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie
+ Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut
+ Sounds: Skie, Lasty/Vinyl
+ Thanks to: CDK Station devs, GoonStation devs, the original SpaceStation developers and Invisty for the title image
+
+
+
+
+Daedalus Development Team
+
+
+
+ Coders: DopeGhoti, Sunfall, ThVortex
+ Artwork: Captain Hammer
+ Spriters: ((TODO.))
+ Sounds: Peter J, due, Erik Satie
+ Thanks to: All the dev teams that came before: BS12, /tg/station13, the Goons, and the original SS13 folks.
+
+
+
+
+GoonStation 13 Development Team
+
+ Coders: Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion
+ Spriters: Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No
+
The Medical Emergency Red Phone system has proven itself well. Take care to keep the phones in their designated places as they have been optimised for broadcast. The two handheld green radios (I have left one in this office, and one near the Emergency Entrance) are free to be used. The system has proven effective at alerting Medbay of important details, especially during power outages.
I think I may have left the toilet cubicle doors shut. It might be a good idea to open them so the staff and patients know they are not engaged.
The new syringe gun has been stored in secondary storage. I tend to prefer it stored in my office, but 'guidelines' are 'guidelines'.
Also in secondary storage is the grenade equipment crate. I've just realised I've left it open - you may wish to shut it.
There were a few problems with their installation, but the Medbay Quarantine shutters should now be working again - they lock down the Emergency and Main entrances to prevent travel in and out. Pray you shan't have to use them.
The new version of the Medical Diagnostics Manual arrived. I distributed them to the shelf in the staff break room, and one on the table in the corner of this room.
The exam/triage room has the walking canes in it. I'm not sure why we'd need them - but there you have it.
Emergency Cryo bags are beside the emergency entrance, along with a kit.
Spare paper cups for the reception are on the left side of the reception desk.