This commit is contained in:
Zuhayr
2014-05-10 01:56:57 +09:30
286 changed files with 5924 additions and 4820 deletions

View File

@@ -52,6 +52,7 @@
#include "code\ATMOSPHERICS\datum_pipe_network.dm" #include "code\ATMOSPHERICS\datum_pipe_network.dm"
#include "code\ATMOSPHERICS\datum_pipeline.dm" #include "code\ATMOSPHERICS\datum_pipeline.dm"
#include "code\ATMOSPHERICS\he_pipes.dm" #include "code\ATMOSPHERICS\he_pipes.dm"
#include "code\ATMOSPHERICS\mainspipe.dm"
#include "code\ATMOSPHERICS\pipes.dm" #include "code\ATMOSPHERICS\pipes.dm"
#include "code\ATMOSPHERICS\components\portables_connector.dm" #include "code\ATMOSPHERICS\components\portables_connector.dm"
#include "code\ATMOSPHERICS\components\tvalve.dm" #include "code\ATMOSPHERICS\components\tvalve.dm"
@@ -320,6 +321,7 @@
#include "code\game\machinery\bots\bots.dm" #include "code\game\machinery\bots\bots.dm"
#include "code\game\machinery\bots\cleanbot.dm" #include "code\game\machinery\bots\cleanbot.dm"
#include "code\game\machinery\bots\ed209bot.dm" #include "code\game\machinery\bots\ed209bot.dm"
#include "code\game\machinery\bots\farmbot.dm"
#include "code\game\machinery\bots\floorbot.dm" #include "code\game\machinery\bots\floorbot.dm"
#include "code\game\machinery\bots\medbot.dm" #include "code\game\machinery\bots\medbot.dm"
#include "code\game\machinery\bots\mulebot.dm" #include "code\game\machinery\bots\mulebot.dm"
@@ -559,7 +561,9 @@
#include "code\game\objects\items\weapons\storage\briefcase.dm" #include "code\game\objects\items\weapons\storage\briefcase.dm"
#include "code\game\objects\items\weapons\storage\fancy.dm" #include "code\game\objects\items\weapons\storage\fancy.dm"
#include "code\game\objects\items\weapons\storage\firstaid.dm" #include "code\game\objects\items\weapons\storage\firstaid.dm"
#include "code\game\objects\items\weapons\storage\internal.dm"
#include "code\game\objects\items\weapons\storage\lockbox.dm" #include "code\game\objects\items\weapons\storage\lockbox.dm"
#include "code\game\objects\items\weapons\storage\misc.dm"
#include "code\game\objects\items\weapons\storage\secure.dm" #include "code\game\objects\items\weapons\storage\secure.dm"
#include "code\game\objects\items\weapons\storage\storage.dm" #include "code\game\objects\items\weapons\storage\storage.dm"
#include "code\game\objects\items\weapons\storage\toolbox.dm" #include "code\game\objects\items\weapons\storage\toolbox.dm"
@@ -569,7 +573,6 @@
#include "code\game\objects\items\weapons\tanks\tank_types.dm" #include "code\game\objects\items\weapons\tanks\tank_types.dm"
#include "code\game\objects\items\weapons\tanks\tanks.dm" #include "code\game\objects\items\weapons\tanks\tanks.dm"
#include "code\game\objects\random\random.dm" #include "code\game\objects\random\random.dm"
#include "code\game\objects\storage\coat.dm"
#include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\barsign.dm"
#include "code\game\objects\structures\bedsheet_bin.dm" #include "code\game\objects\structures\bedsheet_bin.dm"
#include "code\game\objects\structures\coathanger.dm" #include "code\game\objects\structures\coathanger.dm"
@@ -759,6 +762,7 @@
#include "code\modules\clothing\suits\jobs.dm" #include "code\modules\clothing\suits\jobs.dm"
#include "code\modules\clothing\suits\labcoat.dm" #include "code\modules\clothing\suits\labcoat.dm"
#include "code\modules\clothing\suits\miscellaneous.dm" #include "code\modules\clothing\suits\miscellaneous.dm"
#include "code\modules\clothing\suits\storage.dm"
#include "code\modules\clothing\suits\utility.dm" #include "code\modules\clothing\suits\utility.dm"
#include "code\modules\clothing\suits\wiz_robe.dm" #include "code\modules\clothing\suits\wiz_robe.dm"
#include "code\modules\clothing\under\chameleon.dm" #include "code\modules\clothing\under\chameleon.dm"
@@ -1342,7 +1346,7 @@
#include "code\ZAS\Debug.dm" #include "code\ZAS\Debug.dm"
#include "code\ZAS\Diagnostic.dm" #include "code\ZAS\Diagnostic.dm"
#include "code\ZAS\Fire.dm" #include "code\ZAS\Fire.dm"
#include "code\ZAS\Plasma.dm" #include "code\ZAS\Phoron.dm"
#include "code\ZAS\Turf.dm" #include "code\ZAS\Turf.dm"
#include "code\ZAS\Variable Settings.dm" #include "code\ZAS\Variable Settings.dm"
#include "code\ZAS\Zone.dm" #include "code\ZAS\Zone.dm"

View File

@@ -14,7 +14,7 @@ obj/machinery/atmospherics/trinary/filter
/* /*
Filter types: Filter types:
-1: Nothing -1: Nothing
0: Carbon Molecules: Plasma Toxin, Oxygen Agent B 0: Phoron: Phoron, Oxygen Agent B
1: Oxygen: Oxygen ONLY 1: Oxygen: Oxygen ONLY
2: Nitrogen: Nitrogen ONLY 2: Nitrogen: Nitrogen ONLY
3: Carbon Dioxide: Carbon Dioxide ONLY 3: Carbon Dioxide: Carbon Dioxide ONLY
@@ -84,8 +84,8 @@ Filter types:
switch(filter_type) switch(filter_type)
if(0) //removing hydrocarbons if(0) //removing hydrocarbons
filtered_out.toxins = removed.toxins filtered_out.phoron = removed.phoron
removed.toxins = 0 removed.phoron = 0
if(removed.trace_gases.len>0) if(removed.trace_gases.len>0)
for(var/datum/gas/trace_gas in removed.trace_gases) for(var/datum/gas/trace_gas in removed.trace_gases)
@@ -170,7 +170,7 @@ obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE
var/current_filter_type var/current_filter_type
switch(filter_type) switch(filter_type)
if(0) if(0)
current_filter_type = "Carbon Molecules" current_filter_type = "Phoron"
if(1) if(1)
current_filter_type = "Oxygen" current_filter_type = "Oxygen"
if(2) if(2)
@@ -188,7 +188,7 @@ obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE
<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br> <b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
<b>Filtering: </b>[current_filter_type]<br><HR> <b>Filtering: </b>[current_filter_type]<br><HR>
<h4>Set Filter Type:</h4> <h4>Set Filter Type:</h4>
<A href='?src=\ref[src];filterset=0'>Carbon Molecules</A><BR> <A href='?src=\ref[src];filterset=0'>Phoron</A><BR>
<A href='?src=\ref[src];filterset=1'>Oxygen</A><BR> <A href='?src=\ref[src];filterset=1'>Oxygen</A><BR>
<A href='?src=\ref[src];filterset=2'>Nitrogen</A><BR> <A href='?src=\ref[src];filterset=2'>Nitrogen</A><BR>
<A href='?src=\ref[src];filterset=3'>Carbon Dioxide</A><BR> <A href='?src=\ref[src];filterset=3'>Carbon Dioxide</A><BR>
@@ -234,4 +234,45 @@ obj/machinery/atmospherics/trinary/filter/Topic(href, href_list) // -- TLE
*/ */
return return
obj/machinery/atmospherics/trinary/filter/m_filter
icon = 'icons/obj/atmospherics/m_filter.dmi'
icon_state = "intact_off"
dir = SOUTH
initialize_directions = SOUTH|NORTH|EAST
obj/machinery/atmospherics/trinary/filter/m_filter/New()
..()
switch(dir)
if(NORTH)
initialize_directions = WEST|NORTH|SOUTH
if(SOUTH)
initialize_directions = SOUTH|EAST|NORTH
if(EAST)
initialize_directions = EAST|WEST|NORTH
if(WEST)
initialize_directions = WEST|SOUTH|EAST
obj/machinery/atmospherics/trinary/filter/m_filter/initialize()
if(node1 && node2 && node3) return
var/node1_connect = turn(dir, -180)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
if(target.initialize_directions & get_dir(target,src))
node1 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
if(target.initialize_directions & get_dir(target,src))
node2 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
if(target.initialize_directions & get_dir(target,src))
node3 = target
break
update_icon()

View File

@@ -160,3 +160,93 @@ obj/machinery/atmospherics/trinary/mixer
src.update_icon() src.update_icon()
src.updateUsrDialog() src.updateUsrDialog()
return return
obj/machinery/atmospherics/trinary/mixer/t_mixer
icon = 'icons/obj/atmospherics/t_mixer.dmi'
icon_state = "intact_off"
dir = SOUTH
initialize_directions = SOUTH|EAST|WEST
//node 3 is the outlet, nodes 1 & 2 are intakes
obj/machinery/atmospherics/trinary/mixer/t_mixer/New()
..()
switch(dir)
if(NORTH)
initialize_directions = EAST|NORTH|WEST
if(SOUTH)
initialize_directions = SOUTH|WEST|EAST
if(EAST)
initialize_directions = EAST|NORTH|SOUTH
if(WEST)
initialize_directions = WEST|NORTH|SOUTH
obj/machinery/atmospherics/trinary/mixer/t_mixer/initialize()
if(node1 && node2 && node3) return
var/node1_connect = turn(dir, -90)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
if(target.initialize_directions & get_dir(target,src))
node1 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
if(target.initialize_directions & get_dir(target,src))
node2 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
if(target.initialize_directions & get_dir(target,src))
node3 = target
break
update_icon()
obj/machinery/atmospherics/trinary/mixer/m_mixer
icon = 'icons/obj/atmospherics/m_mixer.dmi'
icon_state = "intact_off"
dir = SOUTH
initialize_directions = SOUTH|NORTH|EAST
//node 3 is the outlet, nodes 1 & 2 are intakes
obj/machinery/atmospherics/trinary/mixer/m_mixer/New()
..()
switch(dir)
if(NORTH)
initialize_directions = WEST|NORTH|SOUTH
if(SOUTH)
initialize_directions = SOUTH|EAST|NORTH
if(EAST)
initialize_directions = EAST|WEST|NORTH
if(WEST)
initialize_directions = WEST|SOUTH|EAST
obj/machinery/atmospherics/trinary/mixer/m_mixer/initialize()
if(node1 && node2 && node3) return
var/node1_connect = turn(dir, -180)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
if(target.initialize_directions & get_dir(target,src))
node1 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
if(target.initialize_directions & get_dir(target,src))
node2 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
if(target.initialize_directions & get_dir(target,src))
node3 = target
break
update_icon()

View File

@@ -70,7 +70,7 @@
"scrubbing" = scrubbing, "scrubbing" = scrubbing,
"panic" = panic, "panic" = panic,
"filter_co2" = scrub_CO2, "filter_co2" = scrub_CO2,
"filter_toxins" = scrub_Toxins, "filter_phoron" = scrub_Toxins,
"filter_n2o" = scrub_N2O, "filter_n2o" = scrub_N2O,
"sigtype" = "status" "sigtype" = "status"
) )
@@ -104,7 +104,7 @@
var/datum/gas_mixture/environment = loc.return_air() var/datum/gas_mixture/environment = loc.return_air()
if(scrubbing) if(scrubbing)
if((environment.toxins>0.001) || (environment.carbon_dioxide>0.001) || (environment.trace_gases.len>0)) if((environment.phoron>0.001) || (environment.carbon_dioxide>0.001) || (environment.trace_gases.len>0))
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles() var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles()
//Take a gas sample //Take a gas sample
@@ -116,8 +116,8 @@
var/datum/gas_mixture/filtered_out = new var/datum/gas_mixture/filtered_out = new
filtered_out.temperature = removed.temperature filtered_out.temperature = removed.temperature
if(scrub_Toxins) if(scrub_Toxins)
filtered_out.toxins = removed.toxins filtered_out.phoron = removed.phoron
removed.toxins = 0 removed.phoron = 0
if(scrub_CO2) if(scrub_CO2)
filtered_out.carbon_dioxide = removed.carbon_dioxide filtered_out.carbon_dioxide = removed.carbon_dioxide
removed.carbon_dioxide = 0 removed.carbon_dioxide = 0

View File

@@ -80,7 +80,7 @@ datum/pipe_network
air_transient.oxygen = 0 air_transient.oxygen = 0
air_transient.nitrogen = 0 air_transient.nitrogen = 0
air_transient.toxins = 0 air_transient.phoron = 0
air_transient.carbon_dioxide = 0 air_transient.carbon_dioxide = 0
@@ -94,7 +94,7 @@ datum/pipe_network
air_transient.oxygen += gas.oxygen air_transient.oxygen += gas.oxygen
air_transient.nitrogen += gas.nitrogen air_transient.nitrogen += gas.nitrogen
air_transient.toxins += gas.toxins air_transient.phoron += gas.phoron
air_transient.carbon_dioxide += gas.carbon_dioxide air_transient.carbon_dioxide += gas.carbon_dioxide
if(gas.trace_gases.len) if(gas.trace_gases.len)
@@ -122,7 +122,7 @@ datum/pipe_network
for(var/datum/gas_mixture/gas in gases) for(var/datum/gas_mixture/gas in gases)
gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume
gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume
gas.toxins = air_transient.toxins*gas.volume/air_transient.volume gas.phoron = air_transient.phoron*gas.volume/air_transient.volume
gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume
gas.temperature = air_transient.temperature gas.temperature = air_transient.temperature
@@ -149,7 +149,7 @@ proc/equalize_gases(datum/gas_mixture/list/gases)
var/total_oxygen = 0 var/total_oxygen = 0
var/total_nitrogen = 0 var/total_nitrogen = 0
var/total_toxins = 0 var/total_phoron = 0
var/total_carbon_dioxide = 0 var/total_carbon_dioxide = 0
var/list/total_trace_gases = list() var/list/total_trace_gases = list()
@@ -162,7 +162,7 @@ proc/equalize_gases(datum/gas_mixture/list/gases)
total_oxygen += gas.oxygen total_oxygen += gas.oxygen
total_nitrogen += gas.nitrogen total_nitrogen += gas.nitrogen
total_toxins += gas.toxins total_phoron += gas.phoron
total_carbon_dioxide += gas.carbon_dioxide total_carbon_dioxide += gas.carbon_dioxide
if(gas.trace_gases.len) if(gas.trace_gases.len)
@@ -186,7 +186,7 @@ proc/equalize_gases(datum/gas_mixture/list/gases)
for(var/datum/gas_mixture/gas in gases) for(var/datum/gas_mixture/gas in gases)
gas.oxygen = total_oxygen*gas.volume/total_volume gas.oxygen = total_oxygen*gas.volume/total_volume
gas.nitrogen = total_nitrogen*gas.volume/total_volume gas.nitrogen = total_nitrogen*gas.volume/total_volume
gas.toxins = total_toxins*gas.volume/total_volume gas.phoron = total_phoron*gas.volume/total_volume
gas.carbon_dioxide = total_carbon_dioxide*gas.volume/total_volume gas.carbon_dioxide = total_carbon_dioxide*gas.volume/total_volume
gas.temperature = temperature gas.temperature = temperature

View File

@@ -39,7 +39,7 @@ datum/pipeline
member.air_temporary.oxygen = air.oxygen*member.volume/air.volume member.air_temporary.oxygen = air.oxygen*member.volume/air.volume
member.air_temporary.nitrogen = air.nitrogen*member.volume/air.volume member.air_temporary.nitrogen = air.nitrogen*member.volume/air.volume
member.air_temporary.toxins = air.toxins*member.volume/air.volume member.air_temporary.phoron = air.phoron*member.volume/air.volume
member.air_temporary.carbon_dioxide = air.carbon_dioxide*member.volume/air.volume member.air_temporary.carbon_dioxide = air.carbon_dioxide*member.volume/air.volume
member.air_temporary.temperature = air.temperature member.air_temporary.temperature = air.temperature

View File

@@ -36,8 +36,9 @@ obj/machinery/atmospherics/mains_pipe
icon = 'icons/obj/atmospherics/mainspipe.dmi' icon = 'icons/obj/atmospherics/mainspipe.dmi'
layer = 2.4 //under wires with their 2.5 layer = 2.4 //under wires with their 2.5
force = 20
var/volume = 0 var/volume = 0
var/force = 20
var/alert_pressure = 80*ONE_ATMOSPHERE var/alert_pressure = 80*ONE_ATMOSPHERE
@@ -535,6 +536,8 @@ obj/machinery/atmospherics/mains_pipe/cap
level = 2 level = 2
icon_state = "cap" icon_state = "cap"
//TODO: Get Mains valves working!
/*
obj/machinery/atmospherics/mains_pipe/valve obj/machinery/atmospherics/mains_pipe/valve
icon_state = "mvalve0" icon_state = "mvalve0"
@@ -701,3 +704,4 @@ obj/machinery/atmospherics/mains_pipe/valve
close() close()
else else
open() open()
*/

View File

@@ -884,22 +884,22 @@ obj/machinery/atmospherics/pipe/tank/carbon_dioxide
..() ..()
obj/machinery/atmospherics/pipe/tank/toxins obj/machinery/atmospherics/pipe/tank/phoron
icon = 'icons/obj/atmospherics/orange_pipe_tank.dmi' icon = 'icons/obj/atmospherics/orange_pipe_tank.dmi'
name = "Pressure Tank (Plasma)" name = "Pressure Tank (Phoron)"
New() New()
air_temporary = new air_temporary = new
air_temporary.volume = volume air_temporary.volume = volume
air_temporary.temperature = T20C air_temporary.temperature = T20C
air_temporary.toxins = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) air_temporary.phoron = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
..() ..()
obj/machinery/atmospherics/pipe/tank/oxygen_agent_b obj/machinery/atmospherics/pipe/tank/oxygen_agent_b
icon = 'icons/obj/atmospherics/red_orange_pipe_tank.dmi' icon = 'icons/obj/atmospherics/red_orange_pipe_tank.dmi'
name = "Pressure Tank (Oxygen + Plasma)" name = "Pressure Tank (Oxygen + Phoron)"
New() New()
air_temporary = new air_temporary = new
@@ -1005,15 +1005,15 @@ obj/machinery/atmospherics/pipe/tank/attackby(var/obj/item/weapon/W as obj, var/
var/o2_concentration = parent.air.oxygen/total_moles var/o2_concentration = parent.air.oxygen/total_moles
var/n2_concentration = parent.air.nitrogen/total_moles var/n2_concentration = parent.air.nitrogen/total_moles
var/co2_concentration = parent.air.carbon_dioxide/total_moles var/co2_concentration = parent.air.carbon_dioxide/total_moles
var/plasma_concentration = parent.air.toxins/total_moles var/phoron_concentration = 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 Pressure: [round(pressure,0.1)] kPa"
user << "\blue Nitrogen: [round(n2_concentration*100)]%" user << "\blue Nitrogen: [round(n2_concentration*100)]%"
user << "\blue Oxygen: [round(o2_concentration*100)]%" user << "\blue Oxygen: [round(o2_concentration*100)]%"
user << "\blue CO2: [round(co2_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) if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%" user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(parent.air.temperature-T0C)]&deg;C" user << "\blue Temperature: [round(parent.air.temperature-T0C)]&deg;C"

View File

@@ -7,11 +7,11 @@
name = "wall" name = "wall"
anchored = 1 anchored = 1
icon = 'icons/turf/walls.dmi' icon = 'icons/turf/walls.dmi'
icon_state = "plasma0" icon_state = "phoron0"
opacity = 1 opacity = 1
var/closed_wall_dir = 0 var/closed_wall_dir = 0
var/opening = 0 var/opening = 0
var/mineral = "plasma" var/mineral = "phoron"
var/is_metal = 0 var/is_metal = 0
/obj/structure/temple_falsewall/New() /obj/structure/temple_falsewall/New()

View File

@@ -60,9 +60,9 @@
my_ladder.id = rand(999) my_ladder.id = rand(999)
my_ladder.height = -1 my_ladder.height = -1
//loop over the walls in the temple and make them a random pre-chosen mineral (null is a stand in for plasma, which the walls already are) //loop over the walls in the temple and make them a random pre-chosen mineral (null is a stand in for phoron, which the walls already are)
//treat plasma slightly differently because it's the default wall type //treat phoron slightly differently because it's the default wall type
var/mineral = pick("uranium","sandstone","gold","iron","silver","diamond","clown","plasma") var/mineral = pick("uranium","sandstone","gold","iron","silver","diamond","clown","phoron")
//world << "init [mineral]" //world << "init [mineral]"
var/area/my_area = get_area(src) var/area/my_area = get_area(src)
var/list/temple_turfs = get_area_turfs(my_area.type) var/list/temple_turfs = get_area_turfs(my_area.type)
@@ -86,8 +86,8 @@
del(D) del(D)
for(var/turf/unsimulated/wall/T in temple_turfs) for(var/turf/unsimulated/wall/T in temple_turfs)
if(mineral != "plasma") if(mineral != "phoron")
T.icon_state = replacetext(T.icon_state, "plasma", mineral) T.icon_state = replacetext(T.icon_state, "phoron", mineral)
/*for(var/obj/effect/landmark/falsewall_spawner/F in T.contents) /*for(var/obj/effect/landmark/falsewall_spawner/F in T.contents)
//world << "falsewall_spawner found in wall" //world << "falsewall_spawner found in wall"

View File

@@ -289,8 +289,8 @@
var/trap_type var/trap_type
New() New()
trap_type = pick(50;"thrower","sawburst","poison_dart","flame_burst",10;"plasma_gas",5;"n2_gas") trap_type = pick(50;"thrower","sawburst","poison_dart","flame_burst",10;"phoron_gas",5;"n2_gas")
if( (trap_type == "plasma_gas" || trap_type == "n2_gas") && prob(10)) if( (trap_type == "phoron_gas" || trap_type == "n2_gas") && prob(10))
new /obj/effect/glowshroom(src.loc) new /obj/effect/glowshroom(src.loc)
//hint that this tile is dangerous //hint that this tile is dangerous
@@ -337,8 +337,8 @@
myloc.overlays -= flicker myloc.overlays -= flicker
del flicker del flicker
//flick("flameburst",src) //flick("flameburst",src)
if("plasma_gas") if("phoron_gas")
//spawn a bunch of plasma //spawn a bunch of phoron
if("n2_gas") if("n2_gas")
//spawn a bunch of sleeping gas //spawn a bunch of sleeping gas
if("thrower") if("thrower")

View File

@@ -174,5 +174,5 @@
desc = "" desc = ""
density = 1 density = 1
icon = 'icons/turf/walls.dmi' icon = 'icons/turf/walls.dmi'
icon_state = "plasma0" icon_state = "phoron0"
var/mineral = "plasma" var/mineral = "phoron"

View File

@@ -56,15 +56,15 @@ datum/design/rust_fuel_port
/obj/item/weapon/module/rust_fuel_compressor /obj/item/weapon/module/rust_fuel_compressor
name = "Internal circuitry (RUST fuel compressor)" name = "Internal circuitry (RUST fuel compressor)"
icon_state = "card_mod" icon_state = "card_mod"
origin_tech = "materials=6;plasmatech=4" origin_tech = "materials=6;phorontech=4"
datum/design/rust_fuel_compressor datum/design/rust_fuel_compressor
name = "Circuit Design (RUST fuel compressor)" name = "Circuit Design (RUST fuel compressor)"
desc = "Allows for the construction of circuit boards used to build a fuel compressor of the RUST fusion engine." desc = "Allows for the construction of circuit boards used to build a fuel compressor of the RUST fusion engine."
id = "rust_fuel_compressor" id = "rust_fuel_compressor"
req_tech = list("materials" = 6, "plasmatech" = 4) req_tech = list("materials" = 6, "phorontech" = 4)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 3000, "$diamond" = 1000) materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 3000, "$diamond" = 1000)
build_path = "/obj/item/weapon/module/rust_fuel_compressor" build_path = "/obj/item/weapon/module/rust_fuel_compressor"
////////////////////////////////////// //////////////////////////////////////
@@ -74,7 +74,7 @@ datum/design/rust_fuel_compressor
name = "Internal circuitry (RUST tokamak core)" name = "Internal circuitry (RUST tokamak core)"
build_path = "/obj/machinery/power/rust_core" build_path = "/obj/machinery/power/rust_core"
board_type = "machine" board_type = "machine"
origin_tech = "bluespace=3;plasmatech=4;magnets=5;powerstorage=6" origin_tech = "bluespace=3;phorontech=4;magnets=5;powerstorage=6"
frame_desc = "Requires 2 Pico Manipulators, 1 Ultra Micro-Laser, 5 Pieces of Cable, 1 Subspace Crystal and 1 Console Screen." frame_desc = "Requires 2 Pico Manipulators, 1 Ultra Micro-Laser, 5 Pieces of Cable, 1 Subspace Crystal and 1 Console Screen."
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2, "/obj/item/weapon/stock_parts/manipulator/pico" = 2,
@@ -87,10 +87,10 @@ datum/design/rust_core
name = "Internal circuitry (RUST tokamak core)" name = "Internal circuitry (RUST tokamak core)"
desc = "The circuit board that for a RUST-pattern tokamak fusion core." desc = "The circuit board that for a RUST-pattern tokamak fusion core."
id = "pacman" id = "pacman"
req_tech = list(bluespace = 3, plasmatech = 4, magnets = 5, powerstorage = 6) req_tech = list(bluespace = 3, phorontech = 4, magnets = 5, powerstorage = 6)
build_type = IMPRINTER build_type = IMPRINTER
reliability_base = 79 reliability_base = 79
materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 3000, "$diamond" = 2000) materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 3000, "$diamond" = 2000)
build_path = "/obj/item/weapon/circuitboard/rust_core" build_path = "/obj/item/weapon/circuitboard/rust_core"
////////////////////////////////////// //////////////////////////////////////
@@ -100,7 +100,7 @@ datum/design/rust_core
name = "Internal circuitry (RUST fuel injector)" name = "Internal circuitry (RUST fuel injector)"
build_path = "/obj/machinery/power/rust_fuel_injector" build_path = "/obj/machinery/power/rust_fuel_injector"
board_type = "machine" board_type = "machine"
origin_tech = "powerstorage=3;engineering=4;plasmatech=4;materials=6" origin_tech = "powerstorage=3;engineering=4;phorontech=4;materials=6"
frame_desc = "Requires 2 Pico Manipulators, 1 Phasic Scanning Module, 1 Super Matter Bin, 1 Console Screen and 5 Pieces of Cable." frame_desc = "Requires 2 Pico Manipulators, 1 Phasic Scanning Module, 1 Super Matter Bin, 1 Console Screen and 5 Pieces of Cable."
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2, "/obj/item/weapon/stock_parts/manipulator/pico" = 2,
@@ -113,8 +113,8 @@ datum/design/rust_injector
name = "Internal circuitry (RUST tokamak core)" name = "Internal circuitry (RUST tokamak core)"
desc = "The circuit board that for a RUST-pattern particle accelerator." desc = "The circuit board that for a RUST-pattern particle accelerator."
id = "pacman" id = "pacman"
req_tech = list(powerstorage = 3, engineering = 4, plasmatech = 4, materials = 6) req_tech = list(powerstorage = 3, engineering = 4, phorontech = 4, materials = 6)
build_type = IMPRINTER build_type = IMPRINTER
reliability_base = 79 reliability_base = 79
materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 3000, "$uranium" = 2000) materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 3000, "$uranium" = 2000)
build_path = "/obj/item/weapon/circuitboard/rust_core" build_path = "/obj/item/weapon/circuitboard/rust_core"

View File

@@ -4,7 +4,7 @@ Deuterium-deuterium fusion : 40 x 10^7 K
Deuterium-tritium fusion: 4.5 x 10^7 K Deuterium-tritium fusion: 4.5 x 10^7 K
*/ */
//#DEFINE MAX_STORED_ENERGY (held_plasma.toxins * held_plasma.toxins * SPECIFIC_HEAT_TOXIN) //#DEFINE MAX_STORED_ENERGY (held_phoron.phoron * held_phoron.phoron * SPECIFIC_HEAT_TOXIN)
/obj/effect/rust_em_field /obj/effect/rust_em_field
name = "EM Field" name = "EM Field"
@@ -29,7 +29,7 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
var/field_strength = 0.01 //in teslas, max is 50T var/field_strength = 0.01 //in teslas, max is 50T
var/obj/machinery/rust/rad_source/radiator var/obj/machinery/rust/rad_source/radiator
var/datum/gas_mixture/held_plasma = new var/datum/gas_mixture/held_phoron = new
var/particle_catchers[13] var/particle_catchers[13]
var/emp_overload = 0 var/emp_overload = 0
@@ -128,34 +128,34 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
radiation = 0 radiation = 0
//update values //update values
var/transfer_ratio = field_strength / 50 //higher field strength will result in faster plasma aggregation var/transfer_ratio = field_strength / 50 //higher field strength will result in faster phoron aggregation
major_radius = field_strength * 0.21875// max = 8.75m major_radius = field_strength * 0.21875// max = 8.75m
minor_radius = field_strength * 0.2125// max = 8.625m minor_radius = field_strength * 0.2125// max = 8.625m
volume_covered = PI * major_radius * minor_radius * 2.5 * 2.5 * 2.5 * 7 * 7 * transfer_ratio //one tile = 2.5m*2.5m*2.5m volume_covered = PI * major_radius * minor_radius * 2.5 * 2.5 * 2.5 * 7 * 7 * transfer_ratio //one tile = 2.5m*2.5m*2.5m
//add plasma from the surrounding environment //add phoron from the surrounding environment
var/datum/gas_mixture/environment = loc.return_air() var/datum/gas_mixture/environment = loc.return_air()
//hack in some stuff to remove plasma from the air because SCIENCE //hack in some stuff to remove phoron from the air because SCIENCE
//the amount of plasma pulled in each update is relative to the field strength, with 50T (max field strength) = 100% of area covered by the field //the amount of phoron pulled in each update is relative to the field strength, with 50T (max field strength) = 100% of area covered by the field
//at minimum strength, 0.25% of the field volume is pulled in per update (?) //at minimum strength, 0.25% of the field volume is pulled in per update (?)
//have a max of 1000 moles suspended //have a max of 1000 moles suspended
if(held_plasma.toxins < transfer_ratio * 1000) if(held_phoron.phoron < transfer_ratio * 1000)
var/moles_covered = environment.return_pressure()*volume_covered/(environment.temperature * R_IDEAL_GAS_EQUATION) var/moles_covered = environment.return_pressure()*volume_covered/(environment.temperature * R_IDEAL_GAS_EQUATION)
//world << "\blue moles_covered: [moles_covered]" //world << "\blue moles_covered: [moles_covered]"
// //
var/datum/gas_mixture/gas_covered = environment.remove(moles_covered) var/datum/gas_mixture/gas_covered = environment.remove(moles_covered)
var/datum/gas_mixture/plasma_captured = new /datum/gas_mixture() var/datum/gas_mixture/phoron_captured = new /datum/gas_mixture()
// //
plasma_captured.toxins = round(gas_covered.toxins * transfer_ratio) phoron_captured.phoron = round(gas_covered.phoron * transfer_ratio)
//world << "\blue[plasma_captured.toxins] moles of plasma captured" //world << "\blue[phoron_captured.phoron] moles of phoron captured"
plasma_captured.temperature = gas_covered.temperature phoron_captured.temperature = gas_covered.temperature
plasma_captured.update_values() phoron_captured.update_values()
// //
gas_covered.toxins -= plasma_captured.toxins gas_covered.phoron -= phoron_captured.phoron
gas_covered.update_values() gas_covered.update_values()
// //
held_plasma.merge(plasma_captured) held_phoron.merge(phoron_captured)
// //
environment.merge(gas_covered) environment.merge(gas_covered)
@@ -169,35 +169,35 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
mega_energy -= energy_lost mega_energy -= energy_lost
radiation += energy_lost*/ radiation += energy_lost*/
//change held plasma temp according to energy levels //change held phoron temp according to energy levels
//SPECIFIC_HEAT_TOXIN //SPECIFIC_HEAT_TOXIN
if(mega_energy > 0 && held_plasma.toxins) if(mega_energy > 0 && held_phoron.phoron)
var/heat_capacity = held_plasma.heat_capacity()//200 * number of plasma moles var/heat_capacity = held_phoron.heat_capacity()//200 * number of phoron moles
if(heat_capacity > 0.0003) //formerly MINIMUM_HEAT_CAPACITY if(heat_capacity > 0.0003) //formerly MINIMUM_HEAT_CAPACITY
held_plasma.temperature = (heat_capacity + mega_energy * 35000)/heat_capacity held_phoron.temperature = (heat_capacity + mega_energy * 35000)/heat_capacity
//if there is too much plasma in the field, lose some //if there is too much phoron in the field, lose some
/*if( held_plasma.toxins > (MOLES_CELLSTANDARD * 7) * (50 / field_strength) ) /*if( held_phoron.phoron > (MOLES_CELLSTANDARD * 7) * (50 / field_strength) )
LosePlasma()*/ LosePhoron()*/
if(held_plasma.toxins > 1) if(held_phoron.phoron > 1)
//lose a random amount of plasma back into the air, increased by the field strength (want to switch this over to frequency eventually) //lose a random amount of phoron back into the air, increased by the field strength (want to switch this over to frequency eventually)
var/loss_ratio = rand() * (0.05 + (0.05 * 50 / field_strength)) var/loss_ratio = rand() * (0.05 + (0.05 * 50 / field_strength))
//world << "lost [loss_ratio*100]% of held plasma" //world << "lost [loss_ratio*100]% of held phoron"
// //
var/datum/gas_mixture/plasma_lost = new var/datum/gas_mixture/phoron_lost = new
plasma_lost.temperature = held_plasma.temperature phoron_lost.temperature = held_phoron.temperature
// //
plasma_lost.toxins = held_plasma.toxins * loss_ratio phoron_lost.phoron = held_phoron.phoron * loss_ratio
//plasma_lost.update_values() //phoron_lost.update_values()
held_plasma.toxins -= held_plasma.toxins * loss_ratio held_phoron.phoron -= held_phoron.phoron * loss_ratio
//held_plasma.update_values() //held_phoron.update_values()
// //
environment.merge(plasma_lost) environment.merge(phoron_lost)
radiation += loss_ratio * mega_energy * 0.1 radiation += loss_ratio * mega_energy * 0.1
mega_energy -= loss_ratio * mega_energy * 0.1 mega_energy -= loss_ratio * mega_energy * 0.1
else else
held_plasma.toxins = 0 held_phoron.phoron = 0
//held_plasma.update_values() //held_phoron.update_values()
//handle some reactants formatting //handle some reactants formatting
for(var/reactant in dormant_reactant_quantities) for(var/reactant in dormant_reactant_quantities)
@@ -256,9 +256,9 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
radiation += mega_energy radiation += mega_energy
mega_energy = 0 mega_energy = 0
//lose all held plasma back into the air //lose all held phoron back into the air
var/datum/gas_mixture/environment = loc.return_air() var/datum/gas_mixture/environment = loc.return_air()
environment.merge(held_plasma) environment.merge(held_phoron)
/obj/effect/rust_em_field/proc/change_size(var/newsize = 1) /obj/effect/rust_em_field/proc/change_size(var/newsize = 1)
// //

View File

@@ -2,7 +2,7 @@
/* /*
when the core is turned on, it generates [creates] an electromagnetic field when the core is turned on, it generates [creates] an electromagnetic field
the em field attracts plasma, and suspends it in a controlled torus (doughnut) shape, oscillating around the core the em field attracts phoron, and suspends it in a controlled torus (doughnut) shape, oscillating around the core
the field strength is directly controllable by the user the field strength is directly controllable by the user
field strength = sqrt(energy used by the field generator) field strength = sqrt(energy used by the field generator)
@@ -16,27 +16,27 @@ the size of the EM field = field strength / k
7 tilewidth = between 20T and 50T 7 tilewidth = between 20T and 50T
(can't go higher than 40T) (can't go higher than 40T)
energy is added by a gyrotron, and lost when plasma escapes energy is added by a gyrotron, and lost when phoron escapes
energy transferred from the gyrotron beams is reduced by how different the frequencies are (closer frequencies = more energy transferred) energy transferred from the gyrotron beams is reduced by how different the frequencies are (closer frequencies = more energy transferred)
frequency = field strength * (stored energy / stored moles of plasma) * x frequency = field strength * (stored energy / stored moles of phoron) * x
(where x is an arbitrary constant to make the frequency something realistic) (where x is an arbitrary constant to make the frequency something realistic)
the gyrotron beams' frequency and energy are hardcapped low enough that they won't heat the plasma much the gyrotron beams' frequency and energy are hardcapped low enough that they won't heat the phoron much
energy is generated in considerable amounts by fusion reactions from injected particles energy is generated in considerable amounts by fusion reactions from injected particles
fusion reactions only occur when the existing energy is above a certain level, and it's near the max operating level of the gyrotron. higher energy reactions only occur at higher energy levels fusion reactions only occur when the existing energy is above a certain level, and it's near the max operating level of the gyrotron. higher energy reactions only occur at higher energy levels
a small amount of energy constantly bleeds off in the form of radiation a small amount of energy constantly bleeds off in the form of radiation
the field is constantly pulling in plasma from the surrounding [local] atmosphere the field is constantly pulling in phoron from the surrounding [local] atmosphere
at random intervals, the field releases a random percentage of stored plasma in addition to a percentage of energy as intense radiation at random intervals, the field releases a random percentage of stored phoron in addition to a percentage of energy as intense radiation
the amount of plasma is a percentage of the field strength, increased by frequency the amount of phoron is a percentage of the field strength, increased by frequency
*/ */
/* /*
- VALUES - - VALUES -
max volume of plasma storeable by the field = the total volume of a number of tiles equal to the (field tilewidth)^2 max volume of phoron storeable by the field = the total volume of a number of tiles equal to the (field tilewidth)^2
*/ */

View File

@@ -3,10 +3,10 @@
// External Shield Generator // External Shield Generator
/obj/item/weapon/circuitboard/shield_gen_ex /obj/item/weapon/circuitboard/shield_gen_ex
name = "Circuit board (Experimental hull shield generator)" name = "Circuit board (Hull shield generator)"
board_type = "machine" board_type = "machine"
build_path = "/obj/machinery/shield_gen/external" build_path = "/obj/machinery/shield_gen/external"
origin_tech = "bluespace=4;plasmatech=3" origin_tech = "bluespace=4;phorontech=3"
frame_desc = "Requires 2 Pico Manipulators, 1 Subspace Transmitter, 5 Pieces of cable, 1 Subspace Crystal, 1 Subspace Amplifier and 1 Console Screen." frame_desc = "Requires 2 Pico Manipulators, 1 Subspace Transmitter, 5 Pieces of cable, 1 Subspace Crystal, 1 Subspace Amplifier and 1 Console Screen."
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2, "/obj/item/weapon/stock_parts/manipulator/pico" = 2,
@@ -20,19 +20,19 @@ datum/design/shield_gen_ex
name = "Circuit Design (Experimental hull shield generator)" name = "Circuit Design (Experimental hull shield generator)"
desc = "Allows for the construction of circuit boards used to build an experimental hull shield generator." desc = "Allows for the construction of circuit boards used to build an experimental hull shield generator."
id = "shield_gen" id = "shield_gen"
req_tech = list("bluespace" = 4, "plasmatech" = 3) req_tech = list("bluespace" = 4, "phorontech" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 10000, "$diamond" = 5000, "$gold" = 10000) materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 10000, "$diamond" = 5000, "$gold" = 10000)
build_path = "/obj/machinery/shield_gen/external" build_path = "/obj/machinery/shield_gen/external"
//////////////////////////////////////// ////////////////////////////////////////
// Shield Generator // Shield Generator
/obj/item/weapon/circuitboard/shield_gen /obj/item/weapon/circuitboard/shield_gen
name = "Circuit board (Experimental shield generator)" name = "Circuit board (Bubble shield generator)"
board_type = "machine" board_type = "machine"
build_path = "/obj/machinery/shield_gen/external" build_path = "/obj/machinery/shield_gen/external"
origin_tech = "bluespace=4;plasmatech=3" origin_tech = "bluespace=4;phorontech=3"
frame_desc = "Requires 2 Pico Manipulators, 1 Subspace Transmitter, 5 Pieces of cable, 1 Subspace Crystal, 1 Subspace Amplifier and 1 Console Screen." frame_desc = "Requires 2 Pico Manipulators, 1 Subspace Transmitter, 5 Pieces of cable, 1 Subspace Crystal, 1 Subspace Amplifier and 1 Console Screen."
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2, "/obj/item/weapon/stock_parts/manipulator/pico" = 2,
@@ -43,19 +43,19 @@ datum/design/shield_gen_ex
"/obj/item/weapon/cable_coil" = 5) "/obj/item/weapon/cable_coil" = 5)
datum/design/shield_gen datum/design/shield_gen
name = "Circuit Design (Experimental shield generator)" name = "Circuit Design (Bubble shield generator)"
desc = "Allows for the construction of circuit boards used to build an experimental shield generator." desc = "Allows for the construction of circuit boards used to build an experimental shield generator."
id = "shield_gen" id = "shield_gen"
req_tech = list("bluespace" = 4, "plasmatech" = 3) req_tech = list("bluespace" = 4, "phorontech" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 10000, "$diamond" = 5000, "$gold" = 10000) materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 10000, "$diamond" = 5000, "$gold" = 10000)
build_path = "/obj/machinery/shield_gen/external" build_path = "/obj/machinery/shield_gen/external"
//////////////////////////////////////// ////////////////////////////////////////
// Shield Capacitor // Shield Capacitor
/obj/item/weapon/circuitboard/shield_cap /obj/item/weapon/circuitboard/shield_cap
name = "Circuit board (Experimental shield capacitor)" name = "Circuit board (Shield capacitor)"
board_type = "machine" board_type = "machine"
build_path = "/obj/machinery/shield_capacitor" build_path = "/obj/machinery/shield_capacitor"
origin_tech = "magnets=3;powerstorage=4" origin_tech = "magnets=3;powerstorage=4"
@@ -69,10 +69,10 @@ datum/design/shield_gen
"/obj/item/weapon/cable_coil" = 5) "/obj/item/weapon/cable_coil" = 5)
datum/design/shield_cap datum/design/shield_cap
name = "Circuit Design (Experimental shield capacitor)" name = "Circuit Design (Shield capacitor)"
desc = "Allows for the construction of circuit boards used to build an experimental shielding capacitor." desc = "Allows for the construction of circuit boards used to build an experimental shielding capacitor."
id = "shield_cap" id = "shield_cap"
req_tech = list("magnets" = 3, "powerstorage" = 4) req_tech = list("magnets" = 3, "powerstorage" = 4)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 10000, "$diamond" = 5000, "$silver" = 10000) materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 10000, "$diamond" = 5000, "$silver" = 10000)
build_path = "/obj/machinery/shield_gen/external" build_path = "/obj/machinery/shield_gen/external"

View File

@@ -11,6 +11,7 @@
density = 0 density = 0
invisibility = 101 invisibility = 101
var/strength = 0 var/strength = 0
var/ticks_recovering = 10
/obj/effect/energy_field/ex_act(var/severity) /obj/effect/energy_field/ex_act(var/severity)
Stress(0.5 + severity) Stress(0.5 + severity)
@@ -27,9 +28,12 @@
strength -= severity strength -= severity
//if we take too much damage, drop out - the generator will bring us back up if we have enough power //if we take too much damage, drop out - the generator will bring us back up if we have enough power
ticks_recovering = min(ticks_recovering + 2, 10)
if(strength < 1) if(strength < 1)
invisibility = 101 invisibility = 101
density = 0 density = 0
ticks_recovering = 10
strength = 0
else if(strength >= 1) else if(strength >= 1)
invisibility = 0 invisibility = 0
density = 1 density = 1

View File

@@ -9,12 +9,10 @@
icon_state = "capacitor" icon_state = "capacitor"
var/active = 1 var/active = 1
density = 1 density = 1
anchored = 1
var/stored_charge = 0 var/stored_charge = 0
var/time_since_fail = 100 var/time_since_fail = 100
var/max_charge = 1000000 var/max_charge = 5e6
var/max_charge_rate = 100000 var/charge_limit = 200000
var/min_charge_rate = 0
var/locked = 0 var/locked = 0
// //
use_power = 1 //0 use nothing use_power = 1 //0 use nothing
@@ -23,6 +21,7 @@
idle_power_usage = 10 idle_power_usage = 10
active_power_usage = 100 active_power_usage = 100
var/charge_rate = 100 var/charge_rate = 100
var/obj/machinery/shield_gen/owned_gen
/obj/machinery/shield_capacitor/New() /obj/machinery/shield_capacitor/New()
spawn(10) spawn(10)
@@ -55,17 +54,17 @@
src.anchored = !src.anchored src.anchored = !src.anchored
src.visible_message("\blue \icon[src] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].") src.visible_message("\blue \icon[src] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].")
if(anchored)
spawn(0) spawn(0)
for(var/obj/machinery/shield_gen/gen in range(1, src)) for(var/obj/machinery/shield_gen/gen in range(1, src))
if(get_dir(src, gen) == src.dir) if(get_dir(src, gen) == src.dir && !gen.owned_capacitor)
if(!src.anchored && gen.owned_capacitor == src) owned_gen = gen
gen.owned_capacitor = null owned_gen.owned_capacitor = src
break owned_gen.updateDialog()
else if(src.anchored && !gen.owned_capacitor) else
gen.owned_capacitor = src if(owned_gen && owned_gen.owned_capacitor == src)
break owned_gen.owned_capacitor = null
gen.updateDialog() owned_gen = null
updateDialog()
else else
..() ..()
@@ -94,17 +93,19 @@
t += "[time_since_fail > 2 ? "<font color=green>Charging stable.</font>" : "<font color=red>Warning, low charge!</font>"]<br>" t += "[time_since_fail > 2 ? "<font color=green>Charging stable.</font>" : "<font color=red>Warning, low charge!</font>"]<br>"
t += "Charge: [stored_charge] Watts ([100 * stored_charge/max_charge]%)<br>" t += "Charge: [stored_charge] Watts ([100 * stored_charge/max_charge]%)<br>"
t += "Charge rate: \ t += "Charge rate: \
<a href='?src=\ref[src];charge_rate=[-max_charge_rate]'>\[min\]</a> \ <a href='?src=\ref[src];charge_rate=-100000'>\[----\]</a> \
<a href='?src=\ref[src];charge_rate=-10000'>\[---\]</a> \
<a href='?src=\ref[src];charge_rate=-1000'>\[--\]</a> \ <a href='?src=\ref[src];charge_rate=-1000'>\[--\]</a> \
<a href='?src=\ref[src];charge_rate=-100'>\[-\]</a>[charge_rate] Watts/sec \ <a href='?src=\ref[src];charge_rate=-100'>\[-\]</a>[charge_rate] Watts/sec \
<a href='?src=\ref[src];charge_rate=100'>\[+\]</a> \ <a href='?src=\ref[src];charge_rate=100'>\[+\]</a> \
<a href='?src=\ref[src];charge_rate=1000'>\[++\]</a> \ <a href='?src=\ref[src];charge_rate=1000'>\[++\]</a> \
<a href='?src=\ref[src];charge_rate=[max_charge_rate]'>\[max\]</a><br>" <a href='?src=\ref[src];charge_rate=10000'>\[+++\]</a> \
<a href='?src=\ref[src];charge_rate=100000'>\[+++\]</a><br>"
t += "<hr>" t += "<hr>"
t += "<A href='?src=\ref[src]'>Refresh</A> " t += "<A href='?src=\ref[src]'>Refresh</A> "
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>" t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
user << browse(t, "window=shield_capacitor;size=500x800") user << browse(t, "window=shield_capacitor;size=500x400")
user.set_machine(src) user.set_machine(src)
/obj/machinery/shield_capacitor/process() /obj/machinery/shield_capacitor/process()
@@ -137,10 +138,10 @@
use_power = 1 use_power = 1
if( href_list["charge_rate"] ) if( href_list["charge_rate"] )
charge_rate += text2num(href_list["charge_rate"]) charge_rate += text2num(href_list["charge_rate"])
if(charge_rate > max_charge_rate) if(charge_rate > charge_limit)
charge_rate = max_charge_rate charge_rate = charge_limit
else if(charge_rate < min_charge_rate) else if(charge_rate < 0)
charge_rate = min_charge_rate charge_rate = 0
// //
updateDialog() updateDialog()

View File

@@ -14,7 +14,6 @@
var/field_radius = 3 var/field_radius = 3
var/list/field var/list/field
density = 1 density = 1
anchored = 1
var/locked = 0 var/locked = 0
var/average_field_strength = 0 var/average_field_strength = 0
var/strengthen_rate = 0.2 var/strengthen_rate = 0.2
@@ -22,7 +21,7 @@
var/powered = 0 var/powered = 0
var/check_powered = 1 var/check_powered = 1
var/obj/machinery/shield_capacitor/owned_capacitor var/obj/machinery/shield_capacitor/owned_capacitor
var/max_field_strength = 10 var/target_field_strength = 10
var/time_since_fail = 100 var/time_since_fail = 100
var/energy_conversion_rate = 0.01 //how many renwicks per watt? var/energy_conversion_rate = 0.01 //how many renwicks per watt?
// //
@@ -63,17 +62,22 @@
src.anchored = !src.anchored src.anchored = !src.anchored
src.visible_message("\blue \icon[src] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].") src.visible_message("\blue \icon[src] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].")
if(active)
toggle()
if(anchored)
spawn(0) spawn(0)
for(var/obj/machinery/shield_gen/gen in range(1, src)) for(var/obj/machinery/shield_capacitor/cap in range(1, src))
if(get_dir(src, gen) == src.dir) if(cap.owned_gen)
if(!src.anchored && gen.owned_capacitor == src) continue
gen.owned_capacitor = null if(get_dir(cap, src) == cap.dir && src.anchored)
break owned_capacitor = cap
else if(src.anchored && !gen.owned_capacitor) owned_capacitor.owned_gen = src
gen.owned_capacitor = src
break
gen.updateDialog()
updateDialog() updateDialog()
break
else
if(owned_capacitor && owned_capacitor.owned_gen == src)
owned_capacitor.owned_gen = null
owned_capacitor = null
else else
..() ..()
@@ -102,67 +106,65 @@
t += "This generator is: [active ? "<font color=green>Online</font>" : "<font color=red>Offline</font>" ] <a href='?src=\ref[src];toggle=1'>[active ? "\[Deactivate\]" : "\[Activate\]"]</a><br>" t += "This generator is: [active ? "<font color=green>Online</font>" : "<font color=red>Offline</font>" ] <a href='?src=\ref[src];toggle=1'>[active ? "\[Deactivate\]" : "\[Activate\]"]</a><br>"
t += "[time_since_fail > 2 ? "<font color=green>Field is stable.</font>" : "<font color=red>Warning, field is unstable!</font>"]<br>" t += "[time_since_fail > 2 ? "<font color=green>Field is stable.</font>" : "<font color=red>Warning, field is unstable!</font>"]<br>"
t += "Coverage radius (restart required): \ t += "Coverage radius (restart required): \
<a href='?src=\ref[src];change_radius=-50'>---</a> \
<a href='?src=\ref[src];change_radius=-5'>--</a> \ <a href='?src=\ref[src];change_radius=-5'>--</a> \
<a href='?src=\ref[src];change_radius=-1'>-</a> \ <a href='?src=\ref[src];change_radius=-1'>-</a> \
[field_radius * 2]m \ [field_radius * 2]m \
<a href='?src=\ref[src];change_radius=1'>+</a> \ <a href='?src=\ref[src];change_radius=1'>+</a> \
<a href='?src=\ref[src];change_radius=5'>++</a><br>" <a href='?src=\ref[src];change_radius=5'>++</a> \
t += "Overall field strength: [average_field_strength] Renwicks ([max_field_strength ? 100 * average_field_strength / max_field_strength : "NA"]%)<br>" <a href='?src=\ref[src];change_radius=50'>+++</a><br>"
t += "Charge rate: <a href='?src=\ref[src];strengthen_rate=-0.1'>--</a> \ t += "Overall field strength: [average_field_strength] Renwicks ([target_field_strength ? 100 * average_field_strength / target_field_strength : "NA"]%)<br>"
<a href='?src=\ref[src];strengthen_rate=-0.01'>-</a> \
[strengthen_rate] Renwicks/sec \
<a href='?src=\ref[src];strengthen_rate=0.01'>+</a> \
<a href='?src=\ref[src];strengthen_rate=0.1'>++</a><br>"
t += "Upkeep energy: [field.len * average_field_strength / energy_conversion_rate] Watts/sec<br>" t += "Upkeep energy: [field.len * average_field_strength / energy_conversion_rate] Watts/sec<br>"
t += "Charge rate: <a href='?src=\ref[src];strengthen_rate=-0.1'>--</a> \
[strengthen_rate] Renwicks/sec \
<a href='?src=\ref[src];strengthen_rate=0.1'>++</a><br>"
t += "Additional energy required to charge: [field.len * strengthen_rate / energy_conversion_rate] Watts/sec<br>" t += "Additional energy required to charge: [field.len * strengthen_rate / energy_conversion_rate] Watts/sec<br>"
t += "Maximum field strength: \ t += "Maximum field strength: \
<a href='?src=\ref[src];max_field_strength=-100'>\[min\]</a> \ <a href='?src=\ref[src];target_field_strength=-100'>\[min\]</a> \
<a href='?src=\ref[src];max_field_strength=-10'>--</a> \ <a href='?src=\ref[src];target_field_strength=-10'>--</a> \
<a href='?src=\ref[src];max_field_strength=-1'>-</a> \ <a href='?src=\ref[src];target_field_strength=-1'>-</a> \
[max_field_strength] Renwicks \ [target_field_strength] Renwicks \
<a href='?src=\ref[src];max_field_strength=1'>+</a> \ <a href='?src=\ref[src];target_field_strength=1'>+</a> \
<a href='?src=\ref[src];max_field_strength=10'>++</a> \ <a href='?src=\ref[src];target_field_strength=10'>++</a> \
<a href='?src=\ref[src];max_field_strength=100'>\[max\]</a><br>" <a href='?src=\ref[src];target_field_strength=100'>\[max\]</a><br>"
t += "<hr>" t += "<hr>"
t += "<A href='?src=\ref[src]'>Refresh</A> " t += "<A href='?src=\ref[src]'>Refresh</A> "
t += "<A href='?src=\ref[src];close=1'>Close</A><BR>" t += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
user << browse(t, "window=shield_generator;size=500x800") user << browse(t, "window=shield_generator;size=500x400")
user.set_machine(src) user.set_machine(src)
/obj/machinery/shield_gen/process() /obj/machinery/shield_gen/process()
if(active && field.len) if(field.len)
time_since_fail++
var/stored_renwicks = 0 var/stored_renwicks = 0
var/target_field_strength = min(strengthen_rate + max(average_field_strength, 0), max_field_strength) var/target_strength_this_update = min(strengthen_rate + max(average_field_strength, 0), target_field_strength)
if(owned_capacitor)
var/required_energy = field.len * target_field_strength / energy_conversion_rate if(active && owned_capacitor)
var/required_energy = field.len * target_strength_this_update / energy_conversion_rate
var/assumed_charge = min(owned_capacitor.stored_charge, required_energy) var/assumed_charge = min(owned_capacitor.stored_charge, required_energy)
stored_renwicks = assumed_charge * energy_conversion_rate stored_renwicks = assumed_charge * energy_conversion_rate
owned_capacitor.stored_charge -= assumed_charge owned_capacitor.stored_charge -= assumed_charge
time_since_fail++
average_field_strength = 0 average_field_strength = 0
target_field_strength = stored_renwicks / field.len var/renwicks_per_field = 0
if(stored_renwicks != 0)
renwicks_per_field = stored_renwicks / field.len
for(var/obj/effect/energy_field/E in field) for(var/obj/effect/energy_field/E in field)
if(stored_renwicks) if(active && renwicks_per_field > 0)
var/strength_change = target_field_strength - E.strength var/amount_to_strengthen = min(renwicks_per_field - E.strength, strengthen_rate)
if(strength_change > stored_renwicks) if(E.ticks_recovering > 0 && amount_to_strengthen > 0)
strength_change = stored_renwicks E.Strengthen( min(amount_to_strengthen / 10, 0.1) )
if(E.strength < 0) E.ticks_recovering -= 1
E.strength = 0
else else
E.Strengthen(strength_change) E.Strengthen(amount_to_strengthen)
stored_renwicks -= strength_change
average_field_strength += E.strength average_field_strength += E.strength
else else
E.Strengthen(-E.strength) E.Strengthen(-E.strength)
average_field_strength /= field.len average_field_strength /= field.len
if(average_field_strength < 0) if(average_field_strength < 1)
time_since_fail = 0 time_since_fail = 0
else else
average_field_strength = 0 average_field_strength = 0
@@ -187,12 +189,12 @@
strengthen_rate = 1 strengthen_rate = 1
else if(strengthen_rate < 0) else if(strengthen_rate < 0)
strengthen_rate = 0 strengthen_rate = 0
else if( href_list["max_field_strength"] ) else if( href_list["target_field_strength"] )
max_field_strength += text2num(href_list["max_field_strength"]) target_field_strength += text2num(href_list["target_field_strength"])
if(max_field_strength > 1000) if(target_field_strength > 1000)
max_field_strength = 1000 target_field_strength = 1000
else if(max_field_strength < 0) else if(target_field_strength < 0)
max_field_strength = 0 target_field_strength = 0
// //
updateDialog() updateDialog()
@@ -252,6 +254,7 @@
*/ */
/obj/machinery/shield_gen/proc/toggle() /obj/machinery/shield_gen/proc/toggle()
set background = 1
active = !active active = !active
power_change() power_change()
if(active) if(active)
@@ -269,7 +272,7 @@
else else
for(var/obj/effect/energy_field/D in field) for(var/obj/effect/energy_field/D in field)
field.Remove(D) field.Remove(D)
del D D.loc = null
for(var/mob/M in view(5,src)) for(var/mob/M in view(5,src))
M << "\icon[src] You hear heavy droning fade out." M << "\icon[src] You hear heavy droning fade out."
@@ -278,6 +281,8 @@
/obj/machinery/shield_gen/proc/get_shielded_turfs() /obj/machinery/shield_gen/proc/get_shielded_turfs()
var/list/out = list() var/list/out = list()
for(var/turf/T in range(field_radius, src)) for(var/turf/T in range(field_radius, src))
world << "turf dist:[get_dist(src,T)]"
if(get_dist(src,T) == field_radius) if(get_dist(src,T) == field_radius)
out.Add(T) out.Add(T)
world << " added"
return out return out

View File

@@ -1,7 +1,9 @@
//---------- external shield generator //---------- external shield generator
//generates an energy field that loops around any built up area in space (is useless inside) halts movement and airflow, is blocked by walls, windows, airlocks etc //generates an energy field that loops around any built up area in space (is useless inside) halts movement and airflow, is blocked by walls, windows, airlocks etc
/obj/machinery/shield_gen/external
name = "hull shield generator"
/obj/machinery/shield_gen/external/New() /obj/machinery/shield_gen/external/New()
..() ..()

View File

@@ -2,7 +2,7 @@
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/oxygen_alert = 0 var/oxygen_alert = 0
var/toxins_alert = 0 var/phoron_alert = 0
var/fire_alert = 0 var/fire_alert = 0
var/temperature_alert = 0 var/temperature_alert = 0
@@ -455,7 +455,7 @@
if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]" if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]"
if (src.toxin) src.toxin.icon_state = "tox[src.toxins_alert ? 1 : 0]" if (src.toxin) src.toxin.icon_state = "tox[src.phoron_alert ? 1 : 0]"
if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]" if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]"
if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]" if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me, //NOTE: the alerts dont reset when youre out of danger. dont blame me,

View File

@@ -282,7 +282,7 @@ siphoning
Carbon Dioxide Carbon Dioxide
<A href='?src=\ref[src];alarm=\ref[current];id_tag=[id_tag];command=co2_scrub;val=[!data["filter_co2"]]'>[data["filter_co2"]?"on":"off"]</A>; <A href='?src=\ref[src];alarm=\ref[current];id_tag=[id_tag];command=co2_scrub;val=[!data["filter_co2"]]'>[data["filter_co2"]?"on":"off"]</A>;
Toxins Toxins
<A href='?src=\ref[src];alarm=\ref[current];id_tag=[id_tag];command=tox_scrub;val=[!data["filter_toxins"]]'>[data["filter_toxins"]?"on":"off"]</A>; <A href='?src=\ref[src];alarm=\ref[current];id_tag=[id_tag];command=tox_scrub;val=[!data["filter_phoron"]]'>[data["filter_phoron"]?"on":"off"]</A>;
Nitrous Oxide Nitrous Oxide
<A href='?src=\ref[src];alarm=\ref[current];id_tag=[id_tag];command=n2o_scrub;val=[!data["filter_n2o"]]'>[data["filter_n2o"]?"on":"off"]</A> <A href='?src=\ref[src];alarm=\ref[current];id_tag=[id_tag];command=n2o_scrub;val=[!data["filter_n2o"]]'>[data["filter_n2o"]?"on":"off"]</A>
<BR> <BR>
@@ -332,7 +332,7 @@ table tr:first-child th:first-child { border: none;}
var/list/gases = list( var/list/gases = list(
"oxygen" = "O<sub>2</sub>", "oxygen" = "O<sub>2</sub>",
"carbon dioxide" = "CO<sub>2</sub>", "carbon dioxide" = "CO<sub>2</sub>",
"plasma" = "Toxin", "phoron" = "Toxin",
"other" = "Other", "other" = "Other",
) )
var/list/tlv var/list/tlv

View File

@@ -57,7 +57,7 @@
// radio // radio
if (0) if (0)
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank(src.loc) 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/radio/signaler/p1 = new /obj/item/device/radio/signaler(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R) var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1 R.part1 = p1
@@ -74,7 +74,7 @@
// proximity // proximity
if (1) if (1)
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank(src.loc) 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/prox_sensor/p1 = new /obj/item/device/prox_sensor(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R) var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1 R.part1 = p1
@@ -96,7 +96,7 @@
// timer // timer
if (2) if (2)
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank(src.loc) 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/timer/p1 = new /obj/item/device/timer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R) var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1 R.part1 = p1
@@ -112,7 +112,7 @@
//bombvest //bombvest
if(3) 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/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/healthanalyzer/p1 = new /obj/item/device/healthanalyzer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(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) var/obj/item/clothing/suit/armor/vest/p3 = new /obj/item/clothing/suit/armor/vest(R)
@@ -140,7 +140,7 @@
if (0) if (0)
var/obj/item/device/transfer_valve/V = new(src.loc) 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) var/obj/item/weapon/tank/oxygen/OT = new(V)
var/obj/item/device/radio/signaler/S = new(V) var/obj/item/device/radio/signaler/S = new(V)
@@ -164,7 +164,7 @@
if (1) if (1)
var/obj/item/device/transfer_valve/V = new(src.loc) 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) var/obj/item/weapon/tank/oxygen/OT = new(V)
var/obj/item/device/prox_sensor/P = new(V) var/obj/item/device/prox_sensor/P = new(V)
@@ -187,7 +187,7 @@
// timer // timer
if (2) if (2)
var/obj/item/device/transfer_valve/V = new(src.loc) 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) var/obj/item/weapon/tank/oxygen/OT = new(V)
var/obj/item/device/timer/T = new(V) var/obj/item/device/timer/T = new(V)

View File

@@ -193,12 +193,12 @@
return return
/obj/structure/closet/wardrobe/toxins_white /obj/structure/closet/wardrobe/science_white
name = "toxins wardrobe" name = "science wardrobe"
icon_state = "white" icon_state = "white"
icon_closed = "white" icon_closed = "white"
/obj/structure/closet/wardrobe/toxins_white/New() /obj/structure/closet/wardrobe/science_white/New()
new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src)

View File

@@ -340,7 +340,7 @@
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src) var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
new /obj/item/weapon/storage/box(BPK) new /obj/item/weapon/storage/box(BPK)
new /obj/item/weapon/pen(src) new /obj/item/weapon/pen(src)
new /obj/item/device/pda/toxins(src) new /obj/item/device/pda/science(src)
new /obj/item/weapon/tank/oxygen(src) new /obj/item/weapon/tank/oxygen(src)
new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/suit/storage/labcoat/science(src) new /obj/item/clothing/suit/storage/labcoat/science(src)
@@ -360,7 +360,7 @@
new /obj/item/device/radio/headset/headset_medsci(src) new /obj/item/device/radio/headset/headset_medsci(src)
new /obj/item/clothing/under/rank/chemist(src) new /obj/item/clothing/under/rank/chemist(src)
new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src)
new /obj/item/device/pda/toxins(src) new /obj/item/device/pda/science(src)
new /obj/item/clothing/suit/storage/labcoat/chemist(src) new /obj/item/clothing/suit/storage/labcoat/chemist(src)
/obj/item/wardrobe/hos /obj/item/wardrobe/hos

View File

@@ -243,11 +243,11 @@
"Do you think that caused a trauma with you?", "Do you think that caused a trauma with you?",
"Have you ever previously spoken to anybody about this?")), "Have you ever previously spoken to anybody about this?")),
new/datum/text_parser/keyword( new/datum/text_parser/keyword(
list("bomb", "explosive", "toxin", "plasma"), list("bomb", "explosive", "toxin", "phoron"),
list( list(
"Do you worry about bombs often?", "Do you worry about bombs often?",
"Do you work in toxins?", "Do you work in science?",
"Do you find it odd to worry about bombs on a toxins research vessel?")), "Do you find it odd to worry about bombs on a science research vessel?")),
new/datum/text_parser/keyword( new/datum/text_parser/keyword(
list("work", "job", "head", "staff", "transen"), list("work", "job", "head", "staff", "transen"),
list( list(

View File

@@ -49,7 +49,7 @@ log transactions
A.loc = src A.loc = src
inserted += 50 inserted += 50
return return
if(istype(A,/obj/item/weapon/coin/plasma)) if(istype(A,/obj/item/weapon/coin/phoron))
cashes += A cashes += A
user.drop_item() user.drop_item()
A.loc = src A.loc = src

View File

@@ -107,7 +107,7 @@
message = {"More on the Refuge food riots: The Refuge Council has condemned NanoTrasen's withdrawal from message = {"More on the Refuge food riots: The Refuge Council has condemned NanoTrasen's withdrawal from
the colony, claiming \"there has been no increase in anti-NanoTrasen activity\", and \"\[the only] reason the colony, claiming \"there has been no increase in anti-NanoTrasen activity\", and \"\[the only] reason
NanoTrasen withdrew was because the \[Tenebrae Lupus] system's Plasma deposits have been completely mined out. NanoTrasen withdrew was because the \[Tenebrae Lupus] system's Phoron deposits have been completely mined out.
We have little to trade with them now\". NanoTrasen officials have denied these allegations, calling them We have little to trade with them now\". NanoTrasen officials have denied these allegations, calling them
\"further proof\" of the colony's anti-NanoTrasen stance. Meanwhile, Refuge Security has been unable to quell \"further proof\" of the colony's anti-NanoTrasen stance. Meanwhile, Refuge Security has been unable to quell
the riots. More on this at 6."} the riots. More on this at 6."}

View File

@@ -239,21 +239,21 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
full_oxy = A.oxygen * size full_oxy = A.oxygen * size
full_nitro = A.nitrogen * size full_nitro = A.nitrogen * size
full_co2 = A.carbon_dioxide * size full_co2 = A.carbon_dioxide * size
full_plasma = A.toxins * size full_phoron = A.phoron * size
full_heat_capacity = A.heat_capacity() * size full_heat_capacity = A.heat_capacity() * size
s_full_oxy = B.oxygen * share_size s_full_oxy = B.oxygen * share_size
s_full_nitro = B.nitrogen * share_size s_full_nitro = B.nitrogen * share_size
s_full_co2 = B.carbon_dioxide * share_size s_full_co2 = B.carbon_dioxide * share_size
s_full_plasma = B.toxins * share_size s_full_phoron = B.phoron * share_size
s_full_heat_capacity = B.heat_capacity() * share_size s_full_heat_capacity = B.heat_capacity() * share_size
oxy_avg = (full_oxy + s_full_oxy) / (size + share_size) oxy_avg = (full_oxy + s_full_oxy) / (size + share_size)
nit_avg = (full_nitro + s_full_nitro) / (size + share_size) nit_avg = (full_nitro + s_full_nitro) / (size + share_size)
co2_avg = (full_co2 + s_full_co2) / (size + share_size) co2_avg = (full_co2 + s_full_co2) / (size + share_size)
plasma_avg = (full_plasma + s_full_plasma) / (size + share_size) phoron_avg = (full_phoron + s_full_phoron) / (size + share_size)
temp_avg = (A.temperature * full_heat_capacity + B.temperature * s_full_heat_capacity) / (full_heat_capacity + s_full_heat_capacity) temp_avg = (A.temperature * full_heat_capacity + B.temperature * s_full_heat_capacity) / (full_heat_capacity + s_full_heat_capacity)
@@ -265,14 +265,14 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg ) A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg )
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg ) A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg )
A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg ) A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg )
A.toxins = max(0, (A.toxins - plasma_avg) * (1-ratio) + plasma_avg ) A.phoron = max(0, (A.phoron - phoron_avg) * (1-ratio) + phoron_avg )
A.temperature = max(0, (A.temperature - temp_avg) * (1-ratio) + temp_avg ) A.temperature = max(0, (A.temperature - temp_avg) * (1-ratio) + temp_avg )
B.oxygen = max(0, (B.oxygen - oxy_avg) * (1-ratio) + oxy_avg ) B.oxygen = max(0, (B.oxygen - oxy_avg) * (1-ratio) + oxy_avg )
B.nitrogen = max(0, (B.nitrogen - nit_avg) * (1-ratio) + nit_avg ) B.nitrogen = max(0, (B.nitrogen - nit_avg) * (1-ratio) + nit_avg )
B.carbon_dioxide = max(0, (B.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg ) B.carbon_dioxide = max(0, (B.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg )
B.toxins = max(0, (B.toxins - plasma_avg) * (1-ratio) + plasma_avg ) B.phoron = max(0, (B.phoron - phoron_avg) * (1-ratio) + phoron_avg )
B.temperature = max(0, (B.temperature - temp_avg) * (1-ratio) + temp_avg ) B.temperature = max(0, (B.temperature - temp_avg) * (1-ratio) + temp_avg )
@@ -314,7 +314,7 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
unsim_oxygen = 0 unsim_oxygen = 0
unsim_nitrogen = 0 unsim_nitrogen = 0
unsim_co2 = 0 unsim_co2 = 0
unsim_plasma = 0 unsim_phoron = 0
unsim_heat_capacity = 0 unsim_heat_capacity = 0
unsim_temperature = 0 unsim_temperature = 0
@@ -328,7 +328,7 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
unsim_oxygen = avg_unsim.oxygen unsim_oxygen = avg_unsim.oxygen
unsim_co2 = avg_unsim.carbon_dioxide unsim_co2 = avg_unsim.carbon_dioxide
unsim_nitrogen = avg_unsim.nitrogen unsim_nitrogen = avg_unsim.nitrogen
unsim_plasma = avg_unsim.toxins unsim_phoron = avg_unsim.phoron
unsim_temperature = avg_unsim.temperature unsim_temperature = avg_unsim.temperature
share_size = max(1, max(size + 3, 1) + avg_unsim.group_multiplier) share_size = max(1, max(size + 3, 1) + avg_unsim.group_multiplier)
tileslen = avg_unsim.group_multiplier tileslen = avg_unsim.group_multiplier
@@ -352,20 +352,20 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
unsim_oxygen += T.oxygen unsim_oxygen += T.oxygen
unsim_co2 += T.carbon_dioxide unsim_co2 += T.carbon_dioxide
unsim_nitrogen += T.nitrogen unsim_nitrogen += T.nitrogen
unsim_plasma += T.toxins unsim_phoron += T.phoron
unsim_temperature += T.temperature/unsimulated_tiles.len unsim_temperature += T.temperature/unsimulated_tiles.len
//These values require adjustment in order to properly represent a room of the specified size. //These values require adjustment in order to properly represent a room of the specified size.
unsim_oxygen *= correction_ratio unsim_oxygen *= correction_ratio
unsim_co2 *= correction_ratio unsim_co2 *= correction_ratio
unsim_nitrogen *= correction_ratio unsim_nitrogen *= correction_ratio
unsim_plasma *= correction_ratio unsim_phoron *= correction_ratio
tileslen = unsimulated_tiles.len tileslen = unsimulated_tiles.len
else //invalid input type else //invalid input type
return 0 return 0
unsim_heat_capacity = HEAT_CAPACITY_CALCULATION(unsim_oxygen, unsim_co2, unsim_nitrogen, unsim_plasma) unsim_heat_capacity = HEAT_CAPACITY_CALCULATION(unsim_oxygen, unsim_co2, unsim_nitrogen, unsim_phoron)
var var
ratio = sharing_lookup_table[6] ratio = sharing_lookup_table[6]
@@ -375,14 +375,14 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
full_oxy = A.oxygen * size full_oxy = A.oxygen * size
full_nitro = A.nitrogen * size full_nitro = A.nitrogen * size
full_co2 = A.carbon_dioxide * size full_co2 = A.carbon_dioxide * size
full_plasma = A.toxins * size full_phoron = A.phoron * size
full_heat_capacity = A.heat_capacity() * size full_heat_capacity = A.heat_capacity() * size
oxy_avg = (full_oxy + unsim_oxygen*share_size) / (size + share_size) oxy_avg = (full_oxy + unsim_oxygen*share_size) / (size + share_size)
nit_avg = (full_nitro + unsim_nitrogen*share_size) / (size + share_size) nit_avg = (full_nitro + unsim_nitrogen*share_size) / (size + share_size)
co2_avg = (full_co2 + unsim_co2*share_size) / (size + share_size) co2_avg = (full_co2 + unsim_co2*share_size) / (size + share_size)
plasma_avg = (full_plasma + unsim_plasma*share_size) / (size + share_size) phoron_avg = (full_phoron + unsim_phoron*share_size) / (size + share_size)
temp_avg = 0 temp_avg = 0
@@ -399,7 +399,7 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
A.oxygen = max(0, (A.oxygen - oxy_avg) * (1 - ratio) + oxy_avg ) A.oxygen = max(0, (A.oxygen - oxy_avg) * (1 - ratio) + oxy_avg )
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1 - ratio) + nit_avg ) A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1 - ratio) + nit_avg )
A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1 - ratio) + co2_avg ) A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1 - ratio) + co2_avg )
A.toxins = max(0, (A.toxins - plasma_avg) * (1 - ratio) + plasma_avg ) A.phoron = max(0, (A.phoron - phoron_avg) * (1 - ratio) + phoron_avg )
A.temperature = max(TCMB, (A.temperature - temp_avg) * (1 - ratio) + temp_avg ) A.temperature = max(TCMB, (A.temperature - temp_avg) * (1 - ratio) + temp_avg )

View File

@@ -312,7 +312,7 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
/datum/controller/air_system/proc/has_same_air(turf/A, turf/B) /datum/controller/air_system/proc/has_same_air(turf/A, turf/B)
if(A.oxygen != B.oxygen) return 0 if(A.oxygen != B.oxygen) return 0
if(A.nitrogen != B.nitrogen) return 0 if(A.nitrogen != B.nitrogen) return 0
if(A.toxins != B.toxins) return 0 if(A.phoron != B.phoron) return 0
if(A.carbon_dioxide != B.carbon_dioxide) return 0 if(A.carbon_dioxide != B.carbon_dioxide) return 0
if(A.temperature != B.temperature) return 0 if(A.temperature != B.temperature) return 0
return 1 return 1

View File

@@ -19,7 +19,7 @@ client/proc/Zone_Info(turf/T as null|turf)
mob << "No zone here." mob << "No zone here."
var/datum/gas_mixture/mix = T.return_air() var/datum/gas_mixture/mix = T.return_air()
mob << "[mix.return_pressure()] kPa [mix.temperature]C" mob << "[mix.return_pressure()] kPa [mix.temperature]C"
mob << "O2: [mix.oxygen] N2: [mix.nitrogen] CO2: [mix.carbon_dioxide] TX: [mix.toxins]" mob << "O2: [mix.oxygen] N2: [mix.nitrogen] CO2: [mix.carbon_dioxide] TX: [mix.phoron]"
else else
if(zone_debug_images) if(zone_debug_images)
for(var/zone in zone_debug_images) for(var/zone in zone_debug_images)
@@ -105,7 +105,7 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
client << "<u>Zone Air Contents</u>" client << "<u>Zone Air Contents</u>"
client << "Oxygen: [air.oxygen]" client << "Oxygen: [air.oxygen]"
client << "Nitrogen: [air.nitrogen]" client << "Nitrogen: [air.nitrogen]"
client << "Plasma: [air.toxins]" client << "Phoron: [air.phoron]"
client << "Carbon Dioxide: [air.carbon_dioxide]" client << "Carbon Dioxide: [air.carbon_dioxide]"
client << "Temperature: [air.temperature] K" client << "Temperature: [air.temperature] K"
client << "Heat Energy: [air.temperature * air.heat_capacity()] J" client << "Heat Energy: [air.temperature * air.heat_capacity()] J"

View File

@@ -3,8 +3,8 @@
Making Bombs with ZAS: Making Bombs with ZAS:
Make burny fire with lots of burning Make burny fire with lots of burning
Draw off 5000K gas from burny fire Draw off 5000K gas from burny fire
Separate gas into oxygen and plasma components Separate gas into oxygen and phoron components
Obtain plasma and oxygen tanks filled up about 50-75% with normal-temp gas Obtain phoron and oxygen tanks filled up about 50-75% with normal-temp gas
Fill rest with super hot gas from separated canisters, they should be about 125C now. Fill rest with super hot gas from separated canisters, they should be about 125C now.
Attach to transfer valve and open. BOOM. Attach to transfer valve and open. BOOM.
@@ -25,7 +25,7 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh)
if(locate(/obj/fire) in src) if(locate(/obj/fire) in src)
return 1 return 1
var/datum/gas_mixture/air_contents = return_air() var/datum/gas_mixture/air_contents = return_air()
if(!air_contents || exposed_temperature < PLASMA_MINIMUM_BURN_TEMPERATURE) if(!air_contents || exposed_temperature < PHORON_MINIMUM_BURN_TEMPERATURE)
return 0 return 0
var/igniting = 0 var/igniting = 0
@@ -77,8 +77,8 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh)
//the amount of moles might get to low for some functions to catch them and thus result in wonky behaviour //the amount of moles might get to low for some functions to catch them and thus result in wonky behaviour
if(air_contents.oxygen < 0.1) if(air_contents.oxygen < 0.1)
air_contents.oxygen = 0 air_contents.oxygen = 0
if(air_contents.toxins < 0.1) if(air_contents.phoron < 0.1)
air_contents.toxins = 0 air_contents.phoron = 0
if(fuel) if(fuel)
if(fuel.moles < 0.1) if(fuel.moles < 0.1)
air_contents.trace_gases.Remove(fuel) air_contents.trace_gases.Remove(fuel)
@@ -139,7 +139,7 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh)
//Ensure flow temperature is higher than minimum fire temperatures. //Ensure flow temperature is higher than minimum fire temperatures.
//this creates some energy ex nihilo but is necessary to get a fire started //this creates some energy ex nihilo but is necessary to get a fire started
//lets just pretend this energy comes from the ignition source and dont mention this again //lets just pretend this energy comes from the ignition source and dont mention this again
//flow.temperature = max(PLASMA_MINIMUM_BURN_TEMPERATURE+0.1,flow.temperature) //flow.temperature = max(PHORON_MINIMUM_BURN_TEMPERATURE+0.1,flow.temperature)
//burn baby burn! //burn baby burn!
@@ -188,11 +188,11 @@ turf/simulated/apply_fire_protection()
datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, force_burn) datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, force_burn)
var/value = 0 var/value = 0
if((temperature > PLASMA_MINIMUM_BURN_TEMPERATURE || force_burn) && check_recombustability(liquid)) if((temperature > PHORON_MINIMUM_BURN_TEMPERATURE || force_burn) && check_recombustability(liquid))
var/total_fuel = 0 var/total_fuel = 0
var/datum/gas/volatile_fuel/fuel = locate() in trace_gases var/datum/gas/volatile_fuel/fuel = locate() in trace_gases
total_fuel += toxins total_fuel += phoron
if(fuel) if(fuel)
//Volatile Fuel //Volatile Fuel
@@ -230,9 +230,9 @@ datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, forc
//remove and add gasses as calculated //remove and add gasses as calculated
oxygen -= min(oxygen, total_oxygen * used_reactants_ratio ) oxygen -= min(oxygen, total_oxygen * used_reactants_ratio )
toxins -= min(toxins, (toxins * used_fuel_ratio * used_reactants_ratio ) * 3) phoron -= min(phoron, (phoron * used_fuel_ratio * used_reactants_ratio ) * 3)
if(toxins < 0) if(phoron < 0)
toxins = 0 phoron = 0
carbon_dioxide += max(2 * total_fuel, 0) carbon_dioxide += max(2 * total_fuel, 0)
@@ -257,10 +257,10 @@ datum/gas_mixture/proc/check_recombustability(obj/effect/decal/cleanable/liquid_
var/datum/gas/volatile_fuel/fuel = locate() in trace_gases var/datum/gas/volatile_fuel/fuel = locate() in trace_gases
if(oxygen && (toxins || fuel || liquid)) if(oxygen && (phoron || fuel || liquid))
if(liquid) if(liquid)
return 1 return 1
if(toxins >= 0.1) if(phoron >= 0.1)
return 1 return 1
if(fuel && fuel.moles >= 0.1) if(fuel && fuel.moles >= 0.1)
return 1 return 1
@@ -272,10 +272,10 @@ datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fu
var/datum/gas/volatile_fuel/fuel = locate() in trace_gases var/datum/gas/volatile_fuel/fuel = locate() in trace_gases
if(oxygen && (toxins || fuel || liquid)) if(oxygen && (phoron || fuel || liquid))
if(liquid) if(liquid)
return 1 return 1
if (toxins >= 0.1) if (phoron >= 0.1)
return 1 return 1
if(fuel && fuel.moles >= 0.1) if(fuel && fuel.moles >= 0.1)
return 1 return 1
@@ -291,7 +291,7 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue
if(check_recombustability(liquid)) if(check_recombustability(liquid))
total_fuel += toxins total_fuel += phoron
if(liquid) if(liquid)
total_fuel += liquid.amount total_fuel += liquid.amount

View File

@@ -1,37 +1,37 @@
var/image/contamination_overlay = image('icons/effects/contamination.dmi') var/image/contamination_overlay = image('icons/effects/contamination.dmi')
/pl_control /pl_control
var/PLASMA_DMG = 3 var/PHORON_DMG = 3
var/PLASMA_DMG_NAME = "Plasma Damage Amount" var/PHORON_DMG_NAME = "Phoron Damage Amount"
var/PLASMA_DMG_DESC = "Self Descriptive" var/PHORON_DMG_DESC = "Self Descriptive"
var/CLOTH_CONTAMINATION = 1 var/CLOTH_CONTAMINATION = 1
var/CLOTH_CONTAMINATION_NAME = "Cloth Contamination" var/CLOTH_CONTAMINATION_NAME = "Cloth Contamination"
var/CLOTH_CONTAMINATION_DESC = "If this is on, plasma does damage by getting into cloth." var/CLOTH_CONTAMINATION_DESC = "If this is on, phoron does damage by getting into cloth."
var/PLASMAGUARD_ONLY = 0 var/PHORONGUARD_ONLY = 0
var/PLASMAGUARD_ONLY_NAME = "\"PlasmaGuard Only\"" var/PHORONGUARD_ONLY_NAME = "\"PhoronGuard Only\""
var/PLASMAGUARD_ONLY_DESC = "If this is on, only biosuits and spacesuits protect against contamination and ill effects." var/PHORONGUARD_ONLY_DESC = "If this is on, only biosuits and spacesuits protect against contamination and ill effects."
var/GENETIC_CORRUPTION = 0 var/GENETIC_CORRUPTION = 0
var/GENETIC_CORRUPTION_NAME = "Genetic Corruption Chance" var/GENETIC_CORRUPTION_NAME = "Genetic Corruption Chance"
var/GENETIC_CORRUPTION_DESC = "Chance of genetic corruption as well as toxic damage, X in 10,000." var/GENETIC_CORRUPTION_DESC = "Chance of genetic corruption as well as toxic damage, X in 10,000."
var/SKIN_BURNS = 0 var/SKIN_BURNS = 0
var/SKIN_BURNS_DESC = "Plasma has an effect similar to mustard gas on the un-suited." var/SKIN_BURNS_DESC = "Phoron has an effect similar to mustard gas on the un-suited."
var/SKIN_BURNS_NAME = "Skin Burns" var/SKIN_BURNS_NAME = "Skin Burns"
var/EYE_BURNS = 1 var/EYE_BURNS = 1
var/EYE_BURNS_NAME = "Eye Burns" var/EYE_BURNS_NAME = "Eye Burns"
var/EYE_BURNS_DESC = "Plasma burns the eyes of anyone not wearing eye protection." var/EYE_BURNS_DESC = "Phoron burns the eyes of anyone not wearing eye protection."
var/CONTAMINATION_LOSS = 0.02 var/CONTAMINATION_LOSS = 0.02
var/CONTAMINATION_LOSS_NAME = "Contamination Loss" var/CONTAMINATION_LOSS_NAME = "Contamination Loss"
var/CONTAMINATION_LOSS_DESC = "How much toxin damage is dealt from contaminated clothing" //Per tick? ASK ARYN var/CONTAMINATION_LOSS_DESC = "How much toxin damage is dealt from contaminated clothing" //Per tick? ASK ARYN
var/PLASMA_HALLUCINATION = 0 var/PHORON_HALLUCINATION = 0
var/PLASMA_HALLUCINATION_NAME = "Plasma Hallucination" var/PHORON_HALLUCINATION_NAME = "Phoron Hallucination"
var/PLASMA_HALLUCINATION_DESC = "Does being in plasma cause you to hallucinate?" var/PHORON_HALLUCINATION_DESC = "Does being in phoron cause you to hallucinate?"
var/N2O_HALLUCINATION = 1 var/N2O_HALLUCINATION = 1
var/N2O_HALLUCINATION_NAME = "N2O Hallucination" var/N2O_HALLUCINATION_NAME = "N2O Hallucination"
@@ -43,7 +43,7 @@ obj/var/contaminated = 0
/obj/item/proc/can_contaminate() /obj/item/proc/can_contaminate()
//Clothing and backpacks can be contaminated. //Clothing and backpacks can be contaminated.
if(flags & PLASMAGUARD) return 0 if(flags & PHORONGUARD) return 0
else if(istype(src,/obj/item/weapon/storage/backpack)) return 0 //Cannot be washed :( else if(istype(src,/obj/item/weapon/storage/backpack)) return 0 //Cannot be washed :(
else if(istype(src,/obj/item/clothing)) return 1 else if(istype(src,/obj/item/clothing)) return 1
@@ -66,7 +66,7 @@ obj/var/contaminated = 0
suit_contamination() suit_contamination()
if(!pl_head_protected()) if(!pl_head_protected())
if(prob(1)) suit_contamination() //Plasma can sometimes get through such an open suit. if(prob(1)) suit_contamination() //Phoron can sometimes get through such an open suit.
//Cannot wash backpacks currently. //Cannot wash backpacks currently.
// if(istype(back,/obj/item/weapon/storage/backpack)) // if(istype(back,/obj/item/weapon/storage/backpack))
@@ -75,7 +75,7 @@ obj/var/contaminated = 0
/mob/proc/pl_effects() /mob/proc/pl_effects()
/mob/living/carbon/human/pl_effects() /mob/living/carbon/human/pl_effects()
//Handles all the bad things plasma can do. //Handles all the bad things phoron can do.
//Contamination //Contamination
if(vsc.plc.CLOTH_CONTAMINATION) contaminate() if(vsc.plc.CLOTH_CONTAMINATION) contaminate()
@@ -111,7 +111,7 @@ obj/var/contaminated = 0
if(vsc.plc.GENETIC_CORRUPTION) if(vsc.plc.GENETIC_CORRUPTION)
if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION) if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION)
randmutb(src) randmutb(src)
src << "\red High levels of toxins cause you to spontaneously mutate." src << "\red High levels of phoron cause you to spontaneously mutate."
domutcheck(src,null) domutcheck(src,null)
@@ -128,8 +128,8 @@ obj/var/contaminated = 0
/mob/living/carbon/human/proc/pl_head_protected() /mob/living/carbon/human/proc/pl_head_protected()
//Checks if the head is adequately sealed. //Checks if the head is adequately sealed.
if(head) if(head)
if(vsc.plc.PLASMAGUARD_ONLY) if(vsc.plc.PHORONGUARD_ONLY)
if(head.flags & PLASMAGUARD) if(head.flags & PHORONGUARD)
return 1 return 1
else if(head.flags & HEADCOVERSEYES) else if(head.flags & HEADCOVERSEYES)
return 1 return 1
@@ -138,10 +138,11 @@ obj/var/contaminated = 0
/mob/living/carbon/human/proc/pl_suit_protected() /mob/living/carbon/human/proc/pl_suit_protected()
//Checks if the suit is adequately sealed. //Checks if the suit is adequately sealed.
if(wear_suit) if(wear_suit)
if(vsc.plc.PLASMAGUARD_ONLY) if(vsc.plc.PHORONGUARD_ONLY)
if(wear_suit.flags & PLASMAGUARD) return 1 if(wear_suit.flags & PHORONGUARD) return 1
else else
if(wear_suit.flags_inv & HIDEJUMPSUIT) return 1 if(wear_suit.flags_inv & HIDEJUMPSUIT) return 1
//should check HIDETAIL as well, but for the moment tails are not a part that can be damaged separately
return 0 return 0
/mob/living/carbon/human/proc/suit_contamination() /mob/living/carbon/human/proc/suit_contamination()
@@ -153,11 +154,11 @@ obj/var/contaminated = 0
turf/Entered(obj/item/I) turf/Entered(obj/item/I)
. = ..() . = ..()
//Items that are in plasma, but not on a mob, can still be contaminated. //Items that are in phoron, but not on a mob, can still be contaminated.
if(istype(I) && vsc.plc.CLOTH_CONTAMINATION) if(istype(I) && vsc.plc.CLOTH_CONTAMINATION)
var/datum/gas_mixture/env = return_air(1) var/datum/gas_mixture/env = return_air(1)
if(!env) if(!env)
return return
if(env.toxins > MOLES_PLASMA_VISIBLE + 1) if(env.phoron > MOLES_PHORON_VISIBLE + 1)
if(I.can_contaminate()) if(I.can_contaminate())
I.contaminate() I.contaminate()

View File

@@ -182,7 +182,7 @@
GM.oxygen = oxygen GM.oxygen = oxygen
GM.carbon_dioxide = carbon_dioxide GM.carbon_dioxide = carbon_dioxide
GM.nitrogen = nitrogen GM.nitrogen = nitrogen
GM.toxins = toxins GM.phoron = phoron
GM.temperature = temperature GM.temperature = temperature
GM.update_values() GM.update_values()
@@ -192,12 +192,12 @@
/turf/remove_air(amount as num) /turf/remove_air(amount as num)
var/datum/gas_mixture/GM = new var/datum/gas_mixture/GM = new
var/sum = oxygen + carbon_dioxide + nitrogen + toxins var/sum = oxygen + carbon_dioxide + nitrogen + phoron
if(sum>0) if(sum>0)
GM.oxygen = (oxygen/sum)*amount GM.oxygen = (oxygen/sum)*amount
GM.carbon_dioxide = (carbon_dioxide/sum)*amount GM.carbon_dioxide = (carbon_dioxide/sum)*amount
GM.nitrogen = (nitrogen/sum)*amount GM.nitrogen = (nitrogen/sum)*amount
GM.toxins = (toxins/sum)*amount GM.phoron = (phoron/sum)*amount
GM.temperature = temperature GM.temperature = temperature
GM.update_values() GM.update_values()
@@ -230,7 +230,7 @@
/turf/proc/make_air() /turf/proc/make_air()
air = new/datum/gas_mixture air = new/datum/gas_mixture
air.temperature = temperature air.temperature = temperature
air.adjust(oxygen, carbon_dioxide, nitrogen, toxins) air.adjust(oxygen, carbon_dioxide, nitrogen, phoron)
air.group_multiplier = 1 air.group_multiplier = 1
air.volume = CELL_VOLUME air.volume = CELL_VOLUME

View File

@@ -186,51 +186,51 @@ var/global/vs_control/vsc = new
newvalue = vars[V] newvalue = vars[V]
V = newvalue V = newvalue
/vs_control/proc/ChangePlasma() /vs_control/proc/ChangePhoron()
for(var/V in plc.settings) for(var/V in plc.settings)
plc.Randomize(V) plc.Randomize(V)
/vs_control/proc/SetDefault(var/mob/user) /vs_control/proc/SetDefault(var/mob/user)
var/list/setting_choices = list("Plasma - Standard", "Plasma - Low Hazard", "Plasma - High Hazard", "Plasma - Oh Shit!",\ var/list/setting_choices = list("Phoron - Standard", "Phoron - Low Hazard", "Phoron - High Hazard", "Phoron - Oh Shit!",\
"ZAS - Normal", "ZAS - Forgiving", "ZAS - Dangerous", "ZAS - Hellish") "ZAS - Normal", "ZAS - Forgiving", "ZAS - Dangerous", "ZAS - Hellish")
var/def = input(user, "Which of these presets should be used?") as null|anything in setting_choices var/def = input(user, "Which of these presets should be used?") as null|anything in setting_choices
if(!def) if(!def)
return return
switch(def) switch(def)
if("Plasma - Standard") if("Phoron - Standard")
plc.CLOTH_CONTAMINATION = 1 //If this is on, plasma does damage by getting into cloth. plc.CLOTH_CONTAMINATION = 1 //If this is on, phoron does damage by getting into cloth.
plc.PLASMAGUARD_ONLY = 0 plc.PHORONGUARD_ONLY = 0
plc.GENETIC_CORRUPTION = 0 //Chance of genetic corruption as well as toxic damage, X in 1000. plc.GENETIC_CORRUPTION = 0 //Chance of genetic corruption as well as toxic damage, X in 1000.
plc.SKIN_BURNS = 0 //Plasma has an effect similar to mustard gas on the un-suited. plc.SKIN_BURNS = 0 //Phoron has an effect similar to mustard gas on the un-suited.
plc.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection. plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
plc.PLASMA_HALLUCINATION = 0 plc.PHORON_HALLUCINATION = 0
plc.CONTAMINATION_LOSS = 0.02 plc.CONTAMINATION_LOSS = 0.02
if("Plasma - Low Hazard") if("Phoron - Low Hazard")
plc.CLOTH_CONTAMINATION = 0 //If this is on, plasma does damage by getting into cloth. plc.CLOTH_CONTAMINATION = 0 //If this is on, phoron does damage by getting into cloth.
plc.PLASMAGUARD_ONLY = 0 plc.PHORONGUARD_ONLY = 0
plc.GENETIC_CORRUPTION = 0 //Chance of genetic corruption as well as toxic damage, X in 1000 plc.GENETIC_CORRUPTION = 0 //Chance of genetic corruption as well as toxic damage, X in 1000
plc.SKIN_BURNS = 0 //Plasma has an effect similar to mustard gas on the un-suited. plc.SKIN_BURNS = 0 //Phoron has an effect similar to mustard gas on the un-suited.
plc.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection. plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
plc.PLASMA_HALLUCINATION = 0 plc.PHORON_HALLUCINATION = 0
plc.CONTAMINATION_LOSS = 0.01 plc.CONTAMINATION_LOSS = 0.01
if("Plasma - High Hazard") if("Phoron - High Hazard")
plc.CLOTH_CONTAMINATION = 1 //If this is on, plasma does damage by getting into cloth. plc.CLOTH_CONTAMINATION = 1 //If this is on, phoron does damage by getting into cloth.
plc.PLASMAGUARD_ONLY = 0 plc.PHORONGUARD_ONLY = 0
plc.GENETIC_CORRUPTION = 0 //Chance of genetic corruption as well as toxic damage, X in 1000. plc.GENETIC_CORRUPTION = 0 //Chance of genetic corruption as well as toxic damage, X in 1000.
plc.SKIN_BURNS = 1 //Plasma has an effect similar to mustard gas on the un-suited. plc.SKIN_BURNS = 1 //Phoron has an effect similar to mustard gas on the un-suited.
plc.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection. plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
plc.PLASMA_HALLUCINATION = 1 plc.PHORON_HALLUCINATION = 1
plc.CONTAMINATION_LOSS = 0.05 plc.CONTAMINATION_LOSS = 0.05
if("Plasma - Oh Shit!") if("Phoron - Oh Shit!")
plc.CLOTH_CONTAMINATION = 1 //If this is on, plasma does damage by getting into cloth. plc.CLOTH_CONTAMINATION = 1 //If this is on, phoron does damage by getting into cloth.
plc.PLASMAGUARD_ONLY = 1 plc.PHORONGUARD_ONLY = 1
plc.GENETIC_CORRUPTION = 5 //Chance of genetic corruption as well as toxic damage, X in 1000. plc.GENETIC_CORRUPTION = 5 //Chance of genetic corruption as well as toxic damage, X in 1000.
plc.SKIN_BURNS = 1 //Plasma has an effect similar to mustard gas on the un-suited. plc.SKIN_BURNS = 1 //Phoron has an effect similar to mustard gas on the un-suited.
plc.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection. plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
plc.PLASMA_HALLUCINATION = 1 plc.PHORON_HALLUCINATION = 1
plc.CONTAMINATION_LOSS = 0.075 plc.CONTAMINATION_LOSS = 0.075
if("ZAS - Normal") if("ZAS - Normal")
@@ -291,7 +291,7 @@ var/global/vs_control/vsc = new
connection_insulation = 0 connection_insulation = 0
world << "\blue <b>[key_name(user)] changed the global plasma/ZAS settings to \"[def]\"</b>" world << "\blue <b>[key_name(user)] changed the global phoron/ZAS settings to \"[def]\"</b>"
/pl_control/var/list/settings = list() /pl_control/var/list/settings = list()

View File

@@ -130,7 +130,7 @@ Class Procs:
/zone/proc/dbg_data(mob/M) /zone/proc/dbg_data(mob/M)
M << name M << name
M << "O2: [air.oxygen] N2: [air.nitrogen] CO2: [air.carbon_dioxide] P: [air.toxins]" M << "O2: [air.oxygen] N2: [air.nitrogen] CO2: [air.carbon_dioxide] P: [air.phoron]"
M << "P: [air.return_pressure()] kPa V: [air.volume]L T: [air.temperature]<5D>K ([air.temperature - T0C]<5D>C)" M << "P: [air.return_pressure()] kPa V: [air.volume]L T: [air.temperature]<5D>K ([air.temperature - T0C]<5D>C)"
M << "O2 per N2: [(air.nitrogen ? air.oxygen/air.nitrogen : "N/A")] Moles: [air.total_moles]" M << "O2 per N2: [(air.nitrogen ? air.oxygen/air.nitrogen : "N/A")] Moles: [air.total_moles]"
M << "Simulated: [contents.len] ([air.group_multiplier])" M << "Simulated: [contents.len] ([air.group_multiplier])"

View File

@@ -7,8 +7,8 @@ What are the archived variables for?
#define SPECIFIC_HEAT_TOXIN 200 #define SPECIFIC_HEAT_TOXIN 200
#define SPECIFIC_HEAT_AIR 20 #define SPECIFIC_HEAT_AIR 20
#define SPECIFIC_HEAT_CDO 30 #define SPECIFIC_HEAT_CDO 30
#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) \ #define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,phoron) \
max(0, carbon_dioxide * SPECIFIC_HEAT_CDO + (oxygen + nitrogen) * SPECIFIC_HEAT_AIR + toxins * SPECIFIC_HEAT_TOXIN) max(0, carbon_dioxide * SPECIFIC_HEAT_CDO + (oxygen + nitrogen) * SPECIFIC_HEAT_AIR + phoron * SPECIFIC_HEAT_TOXIN)
#define MINIMUM_HEAT_CAPACITY 0.0003 #define MINIMUM_HEAT_CAPACITY 0.0003
#define QUANTIZE(variable) (round(variable,0.0001)) #define QUANTIZE(variable) (round(variable,0.0001))
@@ -17,7 +17,7 @@ What are the archived variables for?
/hook/startup/proc/createGasOverlays() /hook/startup/proc/createGasOverlays()
plmaster = new /obj/effect/overlay() plmaster = new /obj/effect/overlay()
plmaster.icon = 'icons/effects/tile_effects.dmi' plmaster.icon = 'icons/effects/tile_effects.dmi'
plmaster.icon_state = "plasma" plmaster.icon_state = "phoron"
plmaster.layer = FLY_LAYER plmaster.layer = FLY_LAYER
plmaster.mouse_opacity = 0 plmaster.mouse_opacity = 0
@@ -45,7 +45,7 @@ What are the archived variables for?
var/oxygen = 0 //Holds the "moles" of each of the four gases. var/oxygen = 0 //Holds the "moles" of each of the four gases.
var/carbon_dioxide = 0 var/carbon_dioxide = 0
var/nitrogen = 0 var/nitrogen = 0
var/toxins = 0 var/phoron = 0
var/total_moles = 0 //Updated when a reaction occurs. var/total_moles = 0 //Updated when a reaction occurs.
@@ -64,7 +64,7 @@ What are the archived variables for?
var/tmp/oxygen_archived //These are variables for use with the archived data var/tmp/oxygen_archived //These are variables for use with the archived data
var/tmp/carbon_dioxide_archived var/tmp/carbon_dioxide_archived
var/tmp/nitrogen_archived var/tmp/nitrogen_archived
var/tmp/toxins_archived var/tmp/phoron_archived
var/tmp/temperature_archived var/tmp/temperature_archived
@@ -85,7 +85,7 @@ What are the archived variables for?
oxygen = max(0, oxygen + o2) oxygen = max(0, oxygen + o2)
carbon_dioxide = max(0, carbon_dioxide + co2) carbon_dioxide = max(0, carbon_dioxide + co2)
nitrogen = max(0, nitrogen + n2) nitrogen = max(0, nitrogen + n2)
toxins = max(0, toxins + tx) phoron = max(0, phoron + tx)
//handle trace gasses //handle trace gasses
for(var/datum/gas/G in traces) for(var/datum/gas/G in traces)
@@ -119,7 +119,7 @@ What are the archived variables for?
//Inputs: None //Inputs: None
//Outputs: Heat capacity //Outputs: Heat capacity
var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,phoron)
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -133,7 +133,7 @@ What are the archived variables for?
//Inputs: None //Inputs: None
//Outputs: Archived heat capacity //Outputs: Archived heat capacity
var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,toxins_archived) var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,phoron_archived)
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -143,7 +143,7 @@ What are the archived variables for?
/datum/gas_mixture/proc/total_moles() /datum/gas_mixture/proc/total_moles()
return total_moles return total_moles
/*var/moles = oxygen + carbon_dioxide + nitrogen + toxins /*var/moles = oxygen + carbon_dioxide + nitrogen + phoron
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -187,7 +187,7 @@ What are the archived variables for?
//Inputs: None //Inputs: None
//Outputs: None //Outputs: None
total_moles = oxygen + carbon_dioxide + nitrogen + toxins total_moles = oxygen + carbon_dioxide + nitrogen + phoron
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -206,7 +206,7 @@ What are the archived variables for?
//Outputs: 1 if graphic changed, 0 if unchanged //Outputs: 1 if graphic changed, 0 if unchanged
graphic = 0 graphic = 0
if(toxins > MOLES_PLASMA_VISIBLE) if(phoron > MOLES_PHORON_VISIBLE)
graphic = 1 graphic = 1
else if(length(trace_gases)) else if(length(trace_gases))
var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases
@@ -258,11 +258,11 @@ What are the archived variables for?
carbon_dioxide += burned_fuel carbon_dioxide += burned_fuel
fuel_burnt += burned_fuel fuel_burnt += burned_fuel
//Handle plasma burning //Handle phoron burning
if(toxins > MINIMUM_HEAT_CAPACITY) if(toxins > MINIMUM_HEAT_CAPACITY)
var/plasma_burn_rate = 0 var/phoron_burn_rate = 0
var/oxygen_burn_rate = 0 var/oxygen_burn_rate = 0
//more plasma released at higher temperatures //more phoron released at higher temperatures
var/temperature_scale var/temperature_scale
if(temperature > PLASMA_UPPER_TEMPERATURE) if(temperature > PLASMA_UPPER_TEMPERATURE)
temperature_scale = 1 temperature_scale = 1
@@ -271,17 +271,17 @@ What are the archived variables for?
if(temperature_scale > 0) if(temperature_scale > 0)
oxygen_burn_rate = 1.4 - temperature_scale oxygen_burn_rate = 1.4 - temperature_scale
if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN) if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN)
plasma_burn_rate = (toxins*temperature_scale)/4 phoron_burn_rate = (toxins*temperature_scale)/4
else else
plasma_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4 phoron_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4
if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY) if(phoron_burn_rate > MINIMUM_HEAT_CAPACITY)
toxins -= plasma_burn_rate toxins -= phoron_burn_rate
oxygen -= plasma_burn_rate*oxygen_burn_rate oxygen -= phoron_burn_rate*oxygen_burn_rate
carbon_dioxide += plasma_burn_rate carbon_dioxide += phoron_burn_rate
energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) energy_released += FIRE_PLASMA_ENERGY_RELEASED * (phoron_burn_rate)
fuel_burnt += (plasma_burn_rate)*(1+oxygen_burn_rate) fuel_burnt += (phoron_burn_rate)*(1+oxygen_burn_rate)
if(energy_released > 0) if(energy_released > 0)
var/new_heat_capacity = heat_capacity() var/new_heat_capacity = heat_capacity()
@@ -305,7 +305,7 @@ What are the archived variables for?
oxygen_archived = oxygen oxygen_archived = oxygen
carbon_dioxide_archived = carbon_dioxide carbon_dioxide_archived = carbon_dioxide
nitrogen_archived = nitrogen nitrogen_archived = nitrogen
toxins_archived = toxins phoron_archived = phoron
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -329,7 +329,7 @@ What are the archived variables for?
if(((giver.oxygen > MINIMUM_AIR_TO_SUSPEND) && (giver.oxygen >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ if(((giver.oxygen > MINIMUM_AIR_TO_SUSPEND) && (giver.oxygen >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((giver.carbon_dioxide > MINIMUM_AIR_TO_SUSPEND) && (giver.carbon_dioxide >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((giver.carbon_dioxide > MINIMUM_AIR_TO_SUSPEND) && (giver.carbon_dioxide >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((giver.nitrogen > MINIMUM_AIR_TO_SUSPEND) && (giver.nitrogen >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((giver.nitrogen > MINIMUM_AIR_TO_SUSPEND) && (giver.nitrogen >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((giver.toxins > MINIMUM_AIR_TO_SUSPEND) && (giver.toxins >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND))) || ((giver.phoron > MINIMUM_AIR_TO_SUSPEND) && (giver.phoron >= phoron*MINIMUM_AIR_RATIO_TO_SUSPEND)))
return 0 return 0
if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
return 0 return 0
@@ -362,12 +362,12 @@ What are the archived variables for?
oxygen += giver.oxygen*giver.group_multiplier/group_multiplier oxygen += giver.oxygen*giver.group_multiplier/group_multiplier
carbon_dioxide += giver.carbon_dioxide*giver.group_multiplier/group_multiplier carbon_dioxide += giver.carbon_dioxide*giver.group_multiplier/group_multiplier
nitrogen += giver.nitrogen*giver.group_multiplier/group_multiplier nitrogen += giver.nitrogen*giver.group_multiplier/group_multiplier
toxins += giver.toxins*giver.group_multiplier/group_multiplier phoron += giver.phoron*giver.group_multiplier/group_multiplier
else else
oxygen += giver.oxygen oxygen += giver.oxygen
carbon_dioxide += giver.carbon_dioxide carbon_dioxide += giver.carbon_dioxide
nitrogen += giver.nitrogen nitrogen += giver.nitrogen
toxins += giver.toxins phoron += giver.phoron
if(giver.trace_gases.len) if(giver.trace_gases.len)
for(var/datum/gas/trace_gas in giver.trace_gases) for(var/datum/gas/trace_gas in giver.trace_gases)
@@ -399,12 +399,12 @@ What are the archived variables for?
removed.oxygen = QUANTIZE((oxygen/sum)*amount) removed.oxygen = QUANTIZE((oxygen/sum)*amount)
removed.nitrogen = QUANTIZE((nitrogen/sum)*amount) removed.nitrogen = QUANTIZE((nitrogen/sum)*amount)
removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount) removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount)
removed.toxins = QUANTIZE(((toxins/sum)*amount)) removed.phoron = QUANTIZE(((phoron/sum)*amount))
oxygen -= removed.oxygen/group_multiplier oxygen -= removed.oxygen/group_multiplier
nitrogen -= removed.nitrogen/group_multiplier nitrogen -= removed.nitrogen/group_multiplier
carbon_dioxide -= removed.carbon_dioxide/group_multiplier carbon_dioxide -= removed.carbon_dioxide/group_multiplier
toxins -= removed.toxins/group_multiplier phoron -= removed.phoron/group_multiplier
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -436,12 +436,12 @@ What are the archived variables for?
removed.oxygen = QUANTIZE(oxygen*ratio) removed.oxygen = QUANTIZE(oxygen*ratio)
removed.nitrogen = QUANTIZE(nitrogen*ratio) removed.nitrogen = QUANTIZE(nitrogen*ratio)
removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio) removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio)
removed.toxins = QUANTIZE(toxins*ratio) removed.phoron = QUANTIZE(phoron*ratio)
oxygen -= removed.oxygen/group_multiplier oxygen -= removed.oxygen/group_multiplier
nitrogen -= removed.nitrogen/group_multiplier nitrogen -= removed.nitrogen/group_multiplier
carbon_dioxide -= removed.carbon_dioxide/group_multiplier carbon_dioxide -= removed.carbon_dioxide/group_multiplier
toxins -= removed.toxins/group_multiplier phoron -= removed.phoron/group_multiplier
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -480,7 +480,7 @@ What are the archived variables for?
oxygen = sample.oxygen oxygen = sample.oxygen
carbon_dioxide = sample.carbon_dioxide carbon_dioxide = sample.carbon_dioxide
nitrogen = sample.nitrogen nitrogen = sample.nitrogen
toxins = sample.toxins phoron = sample.phoron
total_moles = sample.total_moles() total_moles = sample.total_moles()
trace_gases.len=null trace_gases.len=null
@@ -508,14 +508,14 @@ What are the archived variables for?
var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION
var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION
var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived)/TRANSFER_FRACTION var/delta_phoron = QUANTIZE(phoron_archived - sharer.phoron_archived)/TRANSFER_FRACTION
var/delta_temperature = (temperature_archived - sharer.temperature_archived) var/delta_temperature = (temperature_archived - sharer.temperature_archived)
if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) || ((abs(delta_phoron) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_phoron) >= phoron_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
return 0 return 0
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
@@ -540,7 +540,7 @@ What are the archived variables for?
if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= sharer.oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= sharer.oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= sharer.carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= sharer.carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= sharer.nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= sharer.nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= sharer.toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) || ((abs(delta_phoron) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_phoron) >= sharer.phoron_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
return -1 return -1
if(trace_gases.len) if(trace_gases.len)
@@ -564,14 +564,14 @@ What are the archived variables for?
var/delta_oxygen = (oxygen_archived - model.oxygen)/TRANSFER_FRACTION var/delta_oxygen = (oxygen_archived - model.oxygen)/TRANSFER_FRACTION
var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/TRANSFER_FRACTION var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/TRANSFER_FRACTION
var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/TRANSFER_FRACTION var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/TRANSFER_FRACTION
var/delta_toxins = (toxins_archived - model.toxins)/TRANSFER_FRACTION var/delta_phoron = (phoron_archived - model.phoron)/TRANSFER_FRACTION
var/delta_temperature = (temperature_archived - model.temperature) var/delta_temperature = (temperature_archived - model.temperature)
if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
|| ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) || ((abs(delta_phoron) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_phoron) >= phoron_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
return 0 return 0
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
return 0 return 0
@@ -597,7 +597,7 @@ What are the archived variables for?
var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION
var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION
var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived)/TRANSFER_FRACTION var/delta_phoron = QUANTIZE(phoron_archived - sharer.phoron_archived)/TRANSFER_FRACTION
var/delta_temperature = (temperature_archived - sharer.temperature_archived) var/delta_temperature = (temperature_archived - sharer.temperature_archived)
@@ -630,14 +630,14 @@ What are the archived variables for?
heat_sharer_to_self -= carbon_dioxide_heat_capacity*sharer.temperature_archived heat_sharer_to_self -= carbon_dioxide_heat_capacity*sharer.temperature_archived
heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity
if(delta_toxins) if(delta_phoron)
var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins var/phoron_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_phoron
if(delta_toxins > 0) if(delta_phoron > 0)
heat_self_to_sharer += toxins_heat_capacity*temperature_archived heat_self_to_sharer += phoron_heat_capacity*temperature_archived
heat_capacity_self_to_sharer += toxins_heat_capacity heat_capacity_self_to_sharer += phoron_heat_capacity
else else
heat_sharer_to_self -= toxins_heat_capacity*sharer.temperature_archived heat_sharer_to_self -= phoron_heat_capacity*sharer.temperature_archived
heat_capacity_sharer_to_self -= toxins_heat_capacity heat_capacity_sharer_to_self -= phoron_heat_capacity
old_self_heat_capacity = heat_capacity()*group_multiplier old_self_heat_capacity = heat_capacity()*group_multiplier
old_sharer_heat_capacity = sharer.heat_capacity()*sharer.group_multiplier old_sharer_heat_capacity = sharer.heat_capacity()*sharer.group_multiplier
@@ -651,10 +651,10 @@ What are the archived variables for?
nitrogen -= delta_nitrogen/group_multiplier nitrogen -= delta_nitrogen/group_multiplier
sharer.nitrogen += delta_nitrogen/sharer.group_multiplier sharer.nitrogen += delta_nitrogen/sharer.group_multiplier
toxins -= delta_toxins/group_multiplier phoron -= delta_phoron/group_multiplier
sharer.toxins += delta_toxins/sharer.group_multiplier sharer.phoron += delta_phoron/sharer.group_multiplier
var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_phoron)
var/list/trace_types_considered = list() var/list/trace_types_considered = list()
@@ -743,7 +743,7 @@ What are the archived variables for?
var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/TRANSFER_FRACTION var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/TRANSFER_FRACTION
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/TRANSFER_FRACTION var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/TRANSFER_FRACTION
var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/TRANSFER_FRACTION var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/TRANSFER_FRACTION
var/delta_toxins = QUANTIZE(toxins_archived - model.toxins)/TRANSFER_FRACTION var/delta_phoron = QUANTIZE(phoron_archived - model.phoron)/TRANSFER_FRACTION
var/delta_temperature = (temperature_archived - model.temperature) var/delta_temperature = (temperature_archived - model.temperature)
@@ -764,10 +764,10 @@ What are the archived variables for?
heat_transferred -= carbon_dioxide_heat_capacity*model.temperature heat_transferred -= carbon_dioxide_heat_capacity*model.temperature
heat_capacity_transferred -= carbon_dioxide_heat_capacity heat_capacity_transferred -= carbon_dioxide_heat_capacity
if(delta_toxins) if(delta_phoron)
var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins var/phoron_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_phoron
heat_transferred -= toxins_heat_capacity*model.temperature heat_transferred -= phoron_heat_capacity*model.temperature
heat_capacity_transferred -= toxins_heat_capacity heat_capacity_transferred -= phoron_heat_capacity
old_self_heat_capacity = heat_capacity()*group_multiplier old_self_heat_capacity = heat_capacity()*group_multiplier
@@ -775,14 +775,14 @@ What are the archived variables for?
oxygen -= delta_oxygen*border_multiplier/group_multiplier oxygen -= delta_oxygen*border_multiplier/group_multiplier
carbon_dioxide -= delta_carbon_dioxide*border_multiplier/group_multiplier carbon_dioxide -= delta_carbon_dioxide*border_multiplier/group_multiplier
nitrogen -= delta_nitrogen*border_multiplier/group_multiplier nitrogen -= delta_nitrogen*border_multiplier/group_multiplier
toxins -= delta_toxins*border_multiplier/group_multiplier phoron -= delta_phoron*border_multiplier/group_multiplier
else else
oxygen -= delta_oxygen/group_multiplier oxygen -= delta_oxygen/group_multiplier
carbon_dioxide -= delta_carbon_dioxide/group_multiplier carbon_dioxide -= delta_carbon_dioxide/group_multiplier
nitrogen -= delta_nitrogen/group_multiplier nitrogen -= delta_nitrogen/group_multiplier
toxins -= delta_toxins/group_multiplier phoron -= delta_phoron/group_multiplier
var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_phoron)
if(trace_gases.len) if(trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -812,7 +812,7 @@ What are the archived variables for?
temperature_mimic(model, model.thermal_conductivity, border_multiplier) temperature_mimic(model, model.thermal_conductivity, border_multiplier)
if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE)
var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.toxins) var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.phoron)
return delta_pressure*R_IDEAL_GAS_EQUATION/volume return delta_pressure*R_IDEAL_GAS_EQUATION/volume
else else
return 0 return 0
@@ -989,8 +989,8 @@ What are the archived variables for?
if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \ if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \
((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (carbon_dioxide > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide))) ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (carbon_dioxide > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide)))
return 0 return 0
if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \ if((abs(phoron-sample.phoron) > MINIMUM_AIR_TO_SUSPEND) && \
((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins))) ((phoron < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.phoron) || (phoron > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.phoron)))
return 0 return 0
@@ -1030,7 +1030,7 @@ What are the archived variables for?
oxygen += right_side.oxygen oxygen += right_side.oxygen
carbon_dioxide += right_side.carbon_dioxide carbon_dioxide += right_side.carbon_dioxide
nitrogen += right_side.nitrogen nitrogen += right_side.nitrogen
toxins += right_side.toxins phoron += right_side.phoron
if(trace_gases.len || right_side.trace_gases.len) if(trace_gases.len || right_side.trace_gases.len)
for(var/datum/gas/trace_gas in right_side.trace_gases) for(var/datum/gas/trace_gas in right_side.trace_gases)
@@ -1052,7 +1052,7 @@ What are the archived variables for?
oxygen = max(oxygen - right_side.oxygen) oxygen = max(oxygen - right_side.oxygen)
carbon_dioxide = max(carbon_dioxide - right_side.carbon_dioxide) carbon_dioxide = max(carbon_dioxide - right_side.carbon_dioxide)
nitrogen = max(nitrogen - right_side.nitrogen) nitrogen = max(nitrogen - right_side.nitrogen)
toxins = max(toxins - right_side.toxins) phoron = max(phoron - right_side.phoron)
if(trace_gases.len || right_side.trace_gases.len) if(trace_gases.len || right_side.trace_gases.len)
for(var/datum/gas/trace_gas in right_side.trace_gases) for(var/datum/gas/trace_gas in right_side.trace_gases)
@@ -1067,7 +1067,7 @@ What are the archived variables for?
oxygen *= factor oxygen *= factor
carbon_dioxide *= factor carbon_dioxide *= factor
nitrogen *= factor nitrogen *= factor
toxins *= factor phoron *= factor
if(trace_gases && trace_gases.len) if(trace_gases && trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)
@@ -1080,7 +1080,7 @@ What are the archived variables for?
oxygen /= factor oxygen /= factor
carbon_dioxide /= factor carbon_dioxide /= factor
nitrogen /= factor nitrogen /= factor
toxins /= factor phoron /= factor
if(trace_gases && trace_gases.len) if(trace_gases && trace_gases.len)
for(var/datum/gas/trace_gas in trace_gases) for(var/datum/gas/trace_gas in trace_gases)

View File

@@ -92,8 +92,9 @@
return return
// operate two levels deep here (item in backpack in src; NOT item in box in backpack in src) // operate two STORAGE levels deep here (item in backpack in src; NOT item in box in backpack in src)
if(A == loc || (A in loc) || (A in contents) || (A.loc in contents)) var/sdepth = A.storage_depth(src)
if(A == loc || (A in loc) || (sdepth != -1 && sdepth <= 1))
// faster access to objects already on you // faster access to objects already on you
if(A in contents) if(A in contents)

View File

@@ -36,9 +36,6 @@
if(istype(master, /obj/item/weapon/storage)) if(istype(master, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = master var/obj/item/weapon/storage/S = master
S.close(usr) S.close(usr)
else if(istype(master,/obj/item/clothing/suit/storage))
var/obj/item/clothing/suit/storage/S = master
S.close(usr)
return 1 return 1
@@ -308,14 +305,14 @@
contents.Add(0) contents.Add(0)
if ("oxygen") if ("oxygen")
if(t.air_contents.oxygen && !t.air_contents.toxins) if(t.air_contents.oxygen && !t.air_contents.phoron)
contents.Add(t.air_contents.oxygen) contents.Add(t.air_contents.oxygen)
else else
contents.Add(0) contents.Add(0)
// No races breath this, but never know about downstream servers. // No races breath this, but never know about downstream servers.
if ("carbon dioxide") if ("carbon dioxide")
if(t.air_contents.carbon_dioxide && !t.air_contents.toxins) if(t.air_contents.carbon_dioxide && !t.air_contents.phoron)
contents.Add(t.air_contents.carbon_dioxide) contents.Add(t.air_contents.carbon_dioxide)
else else
contents.Add(0) contents.Add(0)

View File

@@ -39,7 +39,7 @@
var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
var/traitor_scaling = 0 //if amount of traitors scales based on amount of players var/traitor_scaling = 0 //if amount of traitors scales based on amount of players
var/objectives_disabled = 0 //if objectives are disabled or not var/objectives_disabled = 0 //if objectives are disabled or not
var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other var/protect_roles_from_antagonist = 0// If security and such can be traitor/cult/other
var/continous_rounds = 1 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke. var/continous_rounds = 1 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke.
var/allow_Metadata = 0 // Metadata is supported. var/allow_Metadata = 0 // Metadata is supported.
var/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1. var/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1.

View File

@@ -154,6 +154,11 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
else else
preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT) preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT)
// Skin color
if(H.species.flags & HAS_SKIN_TONE)
if(!H.species || H.species.flags & HAS_SKIN_COLOR)
preview_icon.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), ICON_ADD)
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s") var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s")
eyes_s.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD) eyes_s.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD)
@@ -210,7 +215,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if("Scientist") if("Scientist")
clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s") clothes_s = new /icon('icons/mob/uniform.dmi', "rndswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
if("Chemist") if("Chemist")

View File

@@ -16,7 +16,7 @@ var/list/advance_cures = list(
"nutriment", "sugar", "orangejuice", "nutriment", "sugar", "orangejuice",
"spaceacillin", "kelotane", "ethanol", "spaceacillin", "kelotane", "ethanol",
"leporazine", "synaptizine", "lipozine", "leporazine", "synaptizine", "lipozine",
"silver", "gold", "plasma" "silver", "gold", "phoron"
) )
/* /*

View File

@@ -4,7 +4,7 @@
spread = "On contact" spread = "On contact"
spread_type = CONTACT_GENERAL spread_type = CONTACT_GENERAL
cure = "Chick Chicky Boom!" cure = "Chick Chicky Boom!"
cure_id = list("plasma") cure_id = list("phoron")
agent = "Unknown" agent = "Unknown"
affected_species = list("Human") affected_species = list("Human")
permeability_mod = 1 permeability_mod = 1

View File

@@ -91,6 +91,6 @@ client/verb/showrevinfo()
var/output = "Sorry, the revision info is unavailable." var/output = "Sorry, the revision info is unavailable."
output = file2text("/home/bay12/live/data/gitcommit") output = file2text("/home/bay12/live/data/gitcommit")
output += "Current Infomational Settings: <br>" output += "Current Infomational Settings: <br>"
output += "Protect Authority Roles From Tratior: [config.protect_roles_from_antagonist]<br>" output += "Protect Authority Roles From Traitor: [config.protect_roles_from_antagonist]<br>"
usr << browse(output,"window=revdata"); usr << browse(output,"window=revdata");
return return

View File

@@ -1049,7 +1049,7 @@ datum/mind
special_role = "malfunction" special_role = "malfunction"
current.icon_state = "ai-malf" current.icon_state = "ai-malf"
proc/make_Tratior() proc/make_Traitor()
if(!(src in ticker.mode.traitors)) if(!(src in ticker.mode.traitors))
ticker.mode.traitors += src ticker.mode.traitors += src
special_role = "traitor" special_role = "traitor"

View File

@@ -600,11 +600,11 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
access = access_robotics access = access_robotics
group = "Engineering" group = "Engineering"
/datum/supply_packs/plasma /datum/supply_packs/phoron
name = "Plasma assembly crate" name = "Phoron assembly crate"
contains = list(/obj/item/weapon/tank/plasma, contains = list(/obj/item/weapon/tank/phoron,
/obj/item/weapon/tank/plasma, /obj/item/weapon/tank/phoron,
/obj/item/weapon/tank/plasma, /obj/item/weapon/tank/phoron,
/obj/item/device/assembly/igniter, /obj/item/device/assembly/igniter,
/obj/item/device/assembly/igniter, /obj/item/device/assembly/igniter,
/obj/item/device/assembly/igniter, /obj/item/device/assembly/igniter,
@@ -615,8 +615,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/device/assembly/timer, /obj/item/device/assembly/timer,
/obj/item/device/assembly/timer) /obj/item/device/assembly/timer)
cost = 10 cost = 10
containertype = /obj/structure/closet/crate/secure/plasma containertype = /obj/structure/closet/crate/secure/phoron
containername = "Plasma assembly crate" containername = "Phoron assembly crate"
access = access_tox_storage access = access_tox_storage
group = "Medical / Science" group = "Medical / Science"
@@ -639,9 +639,9 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/eweapons /datum/supply_packs/eweapons
name = "Experimental weapons crate" name = "Experimental weapons crate"
contains = list(/obj/item/weapon/flamethrower/full, contains = list(/obj/item/weapon/flamethrower/full,
/obj/item/weapon/tank/plasma, /obj/item/weapon/tank/phoron,
/obj/item/weapon/tank/plasma, /obj/item/weapon/tank/phoron,
/obj/item/weapon/tank/plasma, /obj/item/weapon/tank/phoron,
/obj/item/weapon/grenade/chem_grenade/incendiary, /obj/item/weapon/grenade/chem_grenade/incendiary,
/obj/item/weapon/grenade/chem_grenade/incendiary, /obj/item/weapon/grenade/chem_grenade/incendiary,
/obj/item/weapon/grenade/chem_grenade/incendiary) /obj/item/weapon/grenade/chem_grenade/incendiary)
@@ -776,14 +776,14 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
group = "Security" group = "Security"
/datum/supply_packs/securitybarriers /datum/supply_packs/securitybarriers
name = "Shield Generators" name = "Wall shield Generators"
contains = list(/obj/machinery/shieldwallgen, contains = list(/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen, /obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen, /obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen) /obj/machinery/shieldwallgen)
cost = 20 cost = 20
containertype = /obj/structure/closet/crate/secure containertype = /obj/structure/closet/crate/secure
containername = "Shield Generators crate" containername = "wall shield generators crate"
access = access_teleporter access = access_teleporter
group = "Security" group = "Security"
@@ -1012,10 +1012,28 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/shield_gen /datum/supply_packs/shield_gen
contains = list(/obj/item/weapon/circuitboard/shield_gen) contains = list(/obj/item/weapon/circuitboard/shield_gen)
name = "Experimental shield generator circuitry" name = "Bubble shield generator circuitry"
cost = 50 cost = 50
containertype = /obj/structure/closet/crate/secure containertype = /obj/structure/closet/crate/secure
containername = "Experimental shield generator" containername = "bubble shield generator circuitry crate"
group = "Engineering"
access = access_ce
/datum/supply_packs/shield_gen_ex
contains = list(/obj/item/weapon/circuitboard/shield_gen_ex)
name = "Hull shield generator circuitry"
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "hull shield generator circuitry crate"
group = "Engineering"
access = access_ce
/datum/supply_packs/shield_cap
contains = list(/obj/item/weapon/circuitboard/shield_cap)
name = "Bubble shield capacitor circuitry"
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "shield capacitor circuitry crate"
group = "Engineering" group = "Engineering"
access = access_ce access = access_ce
@@ -1023,7 +1041,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
name = "Supermatter Core" name = "Supermatter Core"
contains = list(/obj/machinery/power/supermatter) contains = list(/obj/machinery/power/supermatter)
cost = 50 cost = 50
containertype = /obj/structure/closet/crate/secure/plasma containertype = /obj/structure/closet/crate/secure/phoron
containername = "Supermatter crate (CAUTION)" containername = "Supermatter crate (CAUTION)"
group = "Engineering" group = "Engineering"
access = access_ce access = access_ce
@@ -1033,20 +1051,11 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
name = "Supermatter Shard" name = "Supermatter Shard"
contains = list(/obj/machinery/power/supermatter/shard) contains = list(/obj/machinery/power/supermatter/shard)
cost = 25 cost = 25
containertype = /obj/structure/closet/crate/secure/plasma containertype = /obj/structure/closet/crate/secure/phoron
containername = "Supermatter shard crate (CAUTION)" containername = "Supermatter shard crate (CAUTION)"
access = access_ce access = access_ce
group = "Engineering" */ group = "Engineering" */
/datum/supply_packs/shield_cap
contains = list(/obj/item/weapon/circuitboard/shield_cap)
name = "Experimental shield capacitor circuitry"
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "Experimental shield capacitor"
group = "Engineering"
access = access_ce
/datum/supply_packs/eftpos /datum/supply_packs/eftpos
contains = list(/obj/item/device/eftpos) contains = list(/obj/item/device/eftpos)
name = "EFTPOS scanner" name = "EFTPOS scanner"

View File

@@ -59,7 +59,7 @@
throw_range = 20 throw_range = 20
/obj/item/weapon/soap/nanotrasen /obj/item/weapon/soap/nanotrasen
desc = "A Nanotrasen brand bar of soap. Smells of plasma." desc = "A Nanotrasen brand bar of soap. Smells of phoron."
icon_state = "soapnt" icon_state = "soapnt"
/obj/item/weapon/soap/deluxe /obj/item/weapon/soap/deluxe

View File

@@ -1344,41 +1344,41 @@ var/list/ghostteleportlocs = list()
name = "Hydroponics" name = "Hydroponics"
icon_state = "hydro" icon_state = "hydro"
//Toxins //rnd (Research and Development
/area/toxins/lab /area/rnd/lab
name = "\improper Research and Development" name = "\improper Research and Development"
icon_state = "toxlab" icon_state = "toxlab"
/area/toxins/hallway /area/rnd/hallway
name = "\improper Research Lab" name = "\improper Research Lab"
icon_state = "toxlab" icon_state = "toxlab"
/area/toxins/rdoffice /area/rnd/rdoffice
name = "\improper Research Director's Office" name = "\improper Research Director's Office"
icon_state = "head_quarters" icon_state = "head_quarters"
/area/toxins/supermatter /area/rnd/supermatter
name = "\improper Supermatter Lab" name = "\improper Supermatter Lab"
icon_state = "toxlab" icon_state = "toxlab"
/area/toxins/xenobiology /area/rnd/xenobiology
name = "\improper Xenobiology Lab" name = "\improper Xenobiology Lab"
icon_state = "toxlab" icon_state = "toxlab"
/area/toxins/storage /area/rnd/storage
name = "\improper Toxins Storage" name = "\improper Toxins Storage"
icon_state = "toxstorage" icon_state = "toxstorage"
/area/toxins/test_area /area/rnd/test_area
name = "\improper Toxins Test Area" name = "\improper Toxins Test Area"
icon_state = "toxtest" icon_state = "toxtest"
/area/toxins/mixing /area/rnd/mixing
name = "\improper Toxins Mixing Room" name = "\improper Toxins Mixing Room"
icon_state = "toxmix" icon_state = "toxmix"
/area/toxins/misc_lab /area/rnd/misc_lab
name = "\improper Miscellaneous Research" name = "\improper Miscellaneous Research"
icon_state = "toxmisc" icon_state = "toxmisc"
@@ -1894,7 +1894,7 @@ var/list/the_station_areas = list (
/area/quartermaster, /area/quartermaster,
/area/janitor, /area/janitor,
/area/hydroponics, /area/hydroponics,
/area/toxins, /area/rnd,
/area/storage, /area/storage,
/area/construction, /area/construction,
/area/ai_monitored/storage/eva, //do not try to simplify to "/area/ai_monitored" --rastaf0 /area/ai_monitored/storage/eva, //do not try to simplify to "/area/ai_monitored" --rastaf0

View File

@@ -24,13 +24,16 @@
#define DNA_UI_BEARD_G 5 #define DNA_UI_BEARD_G 5
#define DNA_UI_BEARD_B 6 #define DNA_UI_BEARD_B 6
#define DNA_UI_SKIN_TONE 7 #define DNA_UI_SKIN_TONE 7
#define DNA_UI_EYES_R 8 #define DNA_UI_SKIN_R 8
#define DNA_UI_EYES_G 9 #define DNA_UI_SKIN_G 9
#define DNA_UI_EYES_B 10 #define DNA_UI_SKIN_B 10
#define DNA_UI_GENDER 11 #define DNA_UI_EYES_R 11
#define DNA_UI_BEARD_STYLE 12 #define DNA_UI_EYES_G 12
#define DNA_UI_HAIR_STYLE 13 #define DNA_UI_EYES_B 13
#define DNA_UI_LENGTH 13 // Update this when you add something, or you WILL break shit. #define DNA_UI_GENDER 14
#define DNA_UI_BEARD_STYLE 15
#define DNA_UI_HAIR_STYLE 16
#define DNA_UI_LENGTH 16 // Update this when you add something, or you WILL break shit.
#define DNA_SE_LENGTH 27 #define DNA_SE_LENGTH 27
// For later: // For later:
@@ -140,6 +143,10 @@ var/global/list/datum/dna/gene/dna_genes[0]
SetUIValueRange(DNA_UI_EYES_G, character.g_eyes, 255, 1) SetUIValueRange(DNA_UI_EYES_G, character.g_eyes, 255, 1)
SetUIValueRange(DNA_UI_EYES_B, character.b_eyes, 255, 1) SetUIValueRange(DNA_UI_EYES_B, character.b_eyes, 255, 1)
SetUIValueRange(DNA_UI_SKIN_R, character.r_skin, 255, 1)
SetUIValueRange(DNA_UI_SKIN_G, character.g_skin, 255, 1)
SetUIValueRange(DNA_UI_SKIN_B, character.b_skin, 255, 1)
SetUIValueRange(DNA_UI_SKIN_TONE, 35-character.s_tone, 220, 1) // Value can be negative. SetUIValueRange(DNA_UI_SKIN_TONE, 35-character.s_tone, 220, 1) // Value can be negative.
SetUIState(DNA_UI_GENDER, character.gender!=MALE, 1) SetUIState(DNA_UI_GENDER, character.gender!=MALE, 1)

View File

@@ -139,6 +139,10 @@
H.g_facial = dna.GetUIValueRange(DNA_UI_BEARD_G, 255) H.g_facial = dna.GetUIValueRange(DNA_UI_BEARD_G, 255)
H.b_facial = dna.GetUIValueRange(DNA_UI_BEARD_B, 255) H.b_facial = dna.GetUIValueRange(DNA_UI_BEARD_B, 255)
H.r_skin = dna.GetUIValueRange(DNA_UI_SKIN_R, 255)
H.g_skin = dna.GetUIValueRange(DNA_UI_SKIN_G, 255)
H.b_skin = dna.GetUIValueRange(DNA_UI_SKIN_B, 255)
H.r_eyes = dna.GetUIValueRange(DNA_UI_EYES_R, 255) H.r_eyes = dna.GetUIValueRange(DNA_UI_EYES_R, 255)
H.g_eyes = dna.GetUIValueRange(DNA_UI_EYES_G, 255) H.g_eyes = dna.GetUIValueRange(DNA_UI_EYES_G, 255)
H.b_eyes = dna.GetUIValueRange(DNA_UI_EYES_B, 255) H.b_eyes = dna.GetUIValueRange(DNA_UI_EYES_B, 255)

View File

@@ -110,9 +110,11 @@
sleep(48) sleep(48)
del(animation) del(animation)
var/mob/living/carbon/human/O = new( src ) var/mob/living/carbon/human/O
if(Mo.greaterform) if(Mo.greaterform)
O.set_species(Mo.greaterform) O = new(src, Mo.greaterform)
else
O = new(src)
if (M.dna.GetUIState(DNA_UI_GENDER)) if (M.dna.GetUIState(DNA_UI_GENDER))
O.gender = FEMALE O.gender = FEMALE

View File

@@ -323,13 +323,13 @@ ________________________________________________________________________________
var/o2_level = environment.oxygen/total_moles var/o2_level = environment.oxygen/total_moles
var/n2_level = environment.nitrogen/total_moles var/n2_level = environment.nitrogen/total_moles
var/co2_level = environment.carbon_dioxide/total_moles var/co2_level = environment.carbon_dioxide/total_moles
var/plasma_level = environment.toxins/total_moles var/phoron_level = environment.phoron/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level) var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
dat += "<ul>" dat += "<ul>"
dat += "<li>Nitrogen: [round(n2_level*100)]%</li>" dat += "<li>Nitrogen: [round(n2_level*100)]%</li>"
dat += "<li>Oxygen: [round(o2_level*100)]%</li>" dat += "<li>Oxygen: [round(o2_level*100)]%</li>"
dat += "<li>Carbon Dioxide: [round(co2_level*100)]%</li>" dat += "<li>Carbon Dioxide: [round(co2_level*100)]%</li>"
dat += "<li>Plasma: [round(plasma_level*100)]%</li>" dat += "<li>Phoron: [round(phoron_level*100)]%</li>"
dat += "</ul>" dat += "</ul>"
if(unknown_level > 0.01) if(unknown_level > 0.01)
dat += "OTHER: [round(unknown_level)]%<br>" dat += "OTHER: [round(unknown_level)]%<br>"

View File

@@ -22,7 +22,7 @@
var/explosion_in_progress = 0 //sit back and relax var/explosion_in_progress = 0 //sit back and relax
var/list/datum/mind/modePlayer = new var/list/datum/mind/modePlayer = new
var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist
var/list/protected_jobs = list() // Jobs that can't be tratiors because var/list/protected_jobs = list() // Jobs that can't be traitors because
var/required_players = 0 var/required_players = 0
var/required_players_secret = 0 //Minimum number of players for that game mode to be chose in Secret var/required_players_secret = 0 //Minimum number of players for that game mode to be chose in Secret
var/required_enemies = 0 var/required_enemies = 0

View File

@@ -604,7 +604,7 @@ datum
var/list/all_items = owner.current.get_contents() var/list/all_items = owner.current.get_contents()
for(var/obj/item/I in all_items) for(var/obj/item/I in all_items)
if(!istype(I, steal_target)) continue//If it's not actually that item. if(!istype(I, steal_target)) continue//If it's not actually that item.
if(I:air_contents:toxins) return 1 //If they got one with plasma if(I:air_contents:phoron) return 1 //If they got one with plasma
return 0 return 0

View File

@@ -358,7 +358,7 @@ datum/objective/escape
if(!location) if(!location)
return 0 return 0
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails tratiors if they are in the shuttle brig -- Polymorph if(istype(location, /turf/simulated/shuttle/floor4)) // Fails traitors if they are in the shuttle brig -- Polymorph
if(istype(owner.current, /mob/living/carbon)) if(istype(owner.current, /mob/living/carbon))
var/mob/living/carbon/C = owner.current var/mob/living/carbon/C = owner.current
if (!C.handcuffed) if (!C.handcuffed)
@@ -489,7 +489,7 @@ datum/objective/steal
"a pair of magboots" = /obj/item/clothing/shoes/magboots, "a pair of magboots" = /obj/item/clothing/shoes/magboots,
"the station blueprints" = /obj/item/blueprints, "the station blueprints" = /obj/item/blueprints,
"a nasa voidsuit" = /obj/item/clothing/suit/space/nasavoid, "a nasa voidsuit" = /obj/item/clothing/suit/space/nasavoid,
"28 moles of plasma (full tank)" = /obj/item/weapon/tank, "28 moles of phoron (full tank)" = /obj/item/weapon/tank,
"a sample of slime extract" = /obj/item/slime_extract, "a sample of slime extract" = /obj/item/slime_extract,
"a piece of corgi meat" = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi, "a piece of corgi meat" = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi,
"a research director's jumpsuit" = /obj/item/clothing/under/rank/research_director, "a research director's jumpsuit" = /obj/item/clothing/under/rank/research_director,
@@ -551,13 +551,13 @@ datum/objective/steal
if(!isliving(owner.current)) return 0 if(!isliving(owner.current)) return 0
var/list/all_items = owner.current.get_contents() var/list/all_items = owner.current.get_contents()
switch (target_name) switch (target_name)
if("28 moles of plasma (full tank)","10 diamonds","50 gold bars","25 refined uranium bars") if("28 moles of phoron (full tank)","10 diamonds","50 gold bars","25 refined uranium bars")
var/target_amount = text2num(target_name)//Non-numbers are ignored. var/target_amount = text2num(target_name)//Non-numbers are ignored.
var/found_amount = 0.0//Always starts as zero. var/found_amount = 0.0//Always starts as zero.
for(var/obj/item/I in all_items) //Check for plasma tanks for(var/obj/item/I in all_items) //Check for phoron tanks
if(istype(I, steal_target)) if(istype(I, steal_target))
found_amount += (target_name=="28 moles of plasma (full tank)" ? (I:air_contents:toxins) : (I:amount)) found_amount += (target_name=="28 moles of phoron (full tank)" ? (I:air_contents:phoron) : (I:amount))
return found_amount>=target_amount return found_amount>=target_amount
if("50 coins (in bag)") if("50 coins (in bag)")
@@ -867,7 +867,7 @@ datum/objective/heist/salvage
target = "plasteel" target = "plasteel"
target_amount = 100 target_amount = 100
if(4) if(4)
target = "plasma" target = "phoron"
target_amount = 100 target_amount = 100
if(5) if(5)
target = "silver" target = "silver"

View File

@@ -46,14 +46,14 @@
selection_color = "#ffeeff" selection_color = "#ffeeff"
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch)
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch) minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch)
alt_titles = list("Xenoarcheologist", "Anomalist", "Plasma Researcher") alt_titles = list("Xenoarcheologist", "Anomalist", "Phoron Researcher")
equip(var/mob/living/carbon/human/H) equip(var/mob/living/carbon/human/H)
if(!H) return 0 if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit)
if(H.backbag == 1) if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
@@ -80,7 +80,7 @@
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit)
if(H.backbag == 1) if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)

View File

@@ -103,7 +103,7 @@
req_access = list(access_rd, access_atmospherics, access_engine_equip) req_access = list(access_rd, access_atmospherics, access_engine_equip)
TLV["oxygen"] = list(-1.0, -1.0,-1.0,-1.0) // Partial pressure, kpa TLV["oxygen"] = list(-1.0, -1.0,-1.0,-1.0) // Partial pressure, kpa
TLV["carbon dioxide"] = list(-1.0, -1.0, 5, 10) // Partial pressure, kpa TLV["carbon dioxide"] = list(-1.0, -1.0, 5, 10) // Partial pressure, kpa
TLV["plasma"] = list(-1.0, -1.0, 0.2, 0.5) // Partial pressure, kpa TLV["phoron"] = list(-1.0, -1.0, 0.2, 0.5) // Partial pressure, kpa
TLV["other"] = list(-1.0, -1.0, 0.5, 1.0) // Partial pressure, kpa TLV["other"] = list(-1.0, -1.0, 0.5, 1.0) // Partial pressure, kpa
TLV["pressure"] = list(0,ONE_ATMOSPHERE*0.10,ONE_ATMOSPHERE*1.40,ONE_ATMOSPHERE*1.60) /* kpa */ TLV["pressure"] = list(0,ONE_ATMOSPHERE*0.10,ONE_ATMOSPHERE*1.40,ONE_ATMOSPHERE*1.60) /* kpa */
TLV["temperature"] = list(20, 40, 140, 160) // K TLV["temperature"] = list(20, 40, 140, 160) // K
@@ -143,7 +143,7 @@
// breathable air according to human/Life() // breathable air according to human/Life()
TLV["oxygen"] = list(16, 19, 135, 140) // Partial pressure, kpa TLV["oxygen"] = list(16, 19, 135, 140) // Partial pressure, kpa
TLV["carbon dioxide"] = list(-1.0, -1.0, 5, 10) // Partial pressure, kpa TLV["carbon dioxide"] = list(-1.0, -1.0, 5, 10) // Partial pressure, kpa
TLV["plasma"] = list(-1.0, -1.0, 0.2, 0.5) // Partial pressure, kpa TLV["phoron"] = list(-1.0, -1.0, 0.2, 0.5) // Partial pressure, kpa
TLV["other"] = list(-1.0, -1.0, 0.5, 1.0) // Partial pressure, kpa TLV["other"] = list(-1.0, -1.0, 0.5, 1.0) // Partial pressure, kpa
TLV["pressure"] = list(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.10,ONE_ATMOSPHERE*1.20) /* kpa */ TLV["pressure"] = list(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.10,ONE_ATMOSPHERE*1.20) /* kpa */
TLV["temperature"] = list(T0C-26, T0C, T0C+40, T0C+66) // K TLV["temperature"] = list(T0C-26, T0C, T0C+40, T0C+66) // K
@@ -245,7 +245,7 @@
var/pressure_dangerlevel = get_danger_level(environment_pressure, TLV["pressure"]) var/pressure_dangerlevel = get_danger_level(environment_pressure, TLV["pressure"])
var/oxygen_dangerlevel = get_danger_level(environment.oxygen*partial_pressure, TLV["oxygen"]) var/oxygen_dangerlevel = get_danger_level(environment.oxygen*partial_pressure, TLV["oxygen"])
var/co2_dangerlevel = get_danger_level(environment.carbon_dioxide*partial_pressure, TLV["carbon dioxide"]) var/co2_dangerlevel = get_danger_level(environment.carbon_dioxide*partial_pressure, TLV["carbon dioxide"])
var/plasma_dangerlevel = get_danger_level(environment.toxins*partial_pressure, TLV["plasma"]) var/phoron_dangerlevel = get_danger_level(environment.phoron*partial_pressure, TLV["phoron"])
var/temperature_dangerlevel = get_danger_level(environment.temperature, TLV["temperature"]) var/temperature_dangerlevel = get_danger_level(environment.temperature, TLV["temperature"])
var/other_dangerlevel = get_danger_level(other_moles*partial_pressure, TLV["other"]) var/other_dangerlevel = get_danger_level(other_moles*partial_pressure, TLV["other"])
@@ -253,7 +253,7 @@
pressure_dangerlevel, pressure_dangerlevel,
oxygen_dangerlevel, oxygen_dangerlevel,
co2_dangerlevel, co2_dangerlevel,
plasma_dangerlevel, phoron_dangerlevel,
other_dangerlevel, other_dangerlevel,
temperature_dangerlevel temperature_dangerlevel
) )
@@ -700,7 +700,7 @@
/obj/machinery/alarm/proc/return_status() /obj/machinery/alarm/proc/return_status()
var/turf/location = get_turf(src) var/turf/location = get_turf(src)
var/datum/gas_mixture/environment = location.return_air() var/datum/gas_mixture/environment = location.return_air()
var/total = environment.oxygen + environment.carbon_dioxide + environment.toxins + environment.nitrogen var/total = environment.oxygen + environment.carbon_dioxide + environment.phoron + environment.nitrogen
var/output = "<b>Air Status:</b><br>" var/output = "<b>Air Status:</b><br>"
if(total == 0) if(total == 0)
@@ -729,9 +729,9 @@
var/co2_dangerlevel = get_danger_level(environment.carbon_dioxide*partial_pressure, current_settings) var/co2_dangerlevel = get_danger_level(environment.carbon_dioxide*partial_pressure, current_settings)
var/co2_percent = round(environment.carbon_dioxide / total * 100, 2) var/co2_percent = round(environment.carbon_dioxide / total * 100, 2)
current_settings = TLV["plasma"] current_settings = TLV["phoron"]
var/plasma_dangerlevel = get_danger_level(environment.toxins*partial_pressure, current_settings) var/phoron_dangerlevel = get_danger_level(environment.phoron*partial_pressure, current_settings)
var/plasma_percent = round(environment.toxins / total * 100, 2) var/phoron_percent = round(environment.phoron / total * 100, 2)
current_settings = TLV["other"] current_settings = TLV["other"]
var/other_moles = 0.0 var/other_moles = 0.0
@@ -746,7 +746,7 @@
Pressure: <span class='dl[pressure_dangerlevel]'>[environment_pressure]</span>kPa<br> Pressure: <span class='dl[pressure_dangerlevel]'>[environment_pressure]</span>kPa<br>
Oxygen: <span class='dl[oxygen_dangerlevel]'>[oxygen_percent]</span>%<br> Oxygen: <span class='dl[oxygen_dangerlevel]'>[oxygen_percent]</span>%<br>
Carbon dioxide: <span class='dl[co2_dangerlevel]'>[co2_percent]</span>%<br> Carbon dioxide: <span class='dl[co2_dangerlevel]'>[co2_percent]</span>%<br>
Toxins: <span class='dl[plasma_dangerlevel]'>[plasma_percent]</span>%<br> Toxins: <span class='dl[phoron_dangerlevel]'>[phoron_percent]</span>%<br>
"} "}
if (other_dangerlevel==2) if (other_dangerlevel==2)
output += "Notice: <span class='dl2'>High Concentration of Unknown Particles Detected</span><br>" output += "Notice: <span class='dl2'>High Concentration of Unknown Particles Detected</span><br>"
@@ -757,7 +757,7 @@ Toxins: <span class='dl[plasma_dangerlevel]'>[plasma_percent]</span>%<br>
//Overall status //Overall status
output += "Local Status: " output += "Local Status: "
switch(max(pressure_dangerlevel,oxygen_dangerlevel,co2_dangerlevel,plasma_dangerlevel,other_dangerlevel,temperature_dangerlevel)) switch(max(pressure_dangerlevel,oxygen_dangerlevel,co2_dangerlevel,phoron_dangerlevel,other_dangerlevel,temperature_dangerlevel))
if(2) if(2)
output += "<span class='dl2'>DANGER: Internals Required</span>" output += "<span class='dl2'>DANGER: Internals Required</span>"
if(1) if(1)
@@ -881,7 +881,7 @@ siphoning
Carbon Dioxide Carbon Dioxide
<A href='?src=\ref[src];id_tag=[id_tag];command=co2_scrub;val=[!data["filter_co2"]]'>[data["filter_co2"]?"on":"off"]</A>; <A href='?src=\ref[src];id_tag=[id_tag];command=co2_scrub;val=[!data["filter_co2"]]'>[data["filter_co2"]?"on":"off"]</A>;
Toxins Toxins
<A href='?src=\ref[src];id_tag=[id_tag];command=tox_scrub;val=[!data["filter_toxins"]]'>[data["filter_toxins"]?"on":"off"]</A>; <A href='?src=\ref[src];id_tag=[id_tag];command=tox_scrub;val=[!data["filter_phoron"]]'>[data["filter_phoron"]?"on":"off"]</A>;
Nitrous Oxide Nitrous Oxide
<A href='?src=\ref[src];id_tag=[id_tag];command=n2o_scrub;val=[!data["filter_n2o"]]'>[data["filter_n2o"]?"on":"off"]</A> <A href='?src=\ref[src];id_tag=[id_tag];command=n2o_scrub;val=[!data["filter_n2o"]]'>[data["filter_n2o"]?"on":"off"]</A>
<BR> <BR>
@@ -930,7 +930,7 @@ table tr:first-child th:first-child { border: none;}
var/list/gases = list( var/list/gases = list(
"oxygen" = "O<sub>2</sub>", "oxygen" = "O<sub>2</sub>",
"carbon dioxide" = "CO<sub>2</sub>", "carbon dioxide" = "CO<sub>2</sub>",
"plasma" = "Toxin", "phoron" = "Toxin",
"other" = "Other",) "other" = "Other",)
var/list/selected var/list/selected

View File

@@ -16,7 +16,7 @@ obj/machinery/air_sensor
// 2 for temperature // 2 for temperature
// Output >= 4 includes gas composition // Output >= 4 includes gas composition
// 4 for oxygen concentration // 4 for oxygen concentration
// 8 for toxins concentration // 8 for phoron concentration
// 16 for nitrogen concentration // 16 for nitrogen concentration
// 32 for carbon dioxide concentration // 32 for carbon dioxide concentration
@@ -45,14 +45,14 @@ obj/machinery/air_sensor
if(output&4) if(output&4)
signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1) signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1)
if(output&8) if(output&8)
signal.data["toxins"] = round(100*air_sample.toxins/total_moles,0.1) signal.data["phoron"] = round(100*air_sample.phoron/total_moles,0.1)
if(output&16) if(output&16)
signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1) signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1)
if(output&32) if(output&32)
signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1) signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1)
else else
signal.data["oxygen"] = 0 signal.data["oxygen"] = 0
signal.data["toxins"] = 0 signal.data["phoron"] = 0
signal.data["nitrogen"] = 0 signal.data["nitrogen"] = 0
signal.data["carbon_dioxide"] = 0 signal.data["carbon_dioxide"] = 0
signal.data["sigtype"]="status" signal.data["sigtype"]="status"
@@ -151,7 +151,7 @@ obj/machinery/computer/general_air_control
sensor_part += " <B>Pressure:</B> [data["pressure"]] kPa<BR>" sensor_part += " <B>Pressure:</B> [data["pressure"]] kPa<BR>"
if(data["temperature"]) if(data["temperature"])
sensor_part += " <B>Temperature:</B> [data["temperature"]] K<BR>" sensor_part += " <B>Temperature:</B> [data["temperature"]] K<BR>"
if(data["oxygen"]||data["toxins"]||data["nitrogen"]||data["carbon_dioxide"]) if(data["oxygen"]||data["phoron"]||data["nitrogen"]||data["carbon_dioxide"])
sensor_part += " <B>Gas Composition :</B>" sensor_part += " <B>Gas Composition :</B>"
if(data["oxygen"]) if(data["oxygen"])
sensor_part += "[data["oxygen"]]% O2; " sensor_part += "[data["oxygen"]]% O2; "
@@ -159,8 +159,8 @@ obj/machinery/computer/general_air_control
sensor_part += "[data["nitrogen"]]% N; " sensor_part += "[data["nitrogen"]]% N; "
if(data["carbon_dioxide"]) if(data["carbon_dioxide"])
sensor_part += "[data["carbon_dioxide"]]% CO2; " sensor_part += "[data["carbon_dioxide"]]% CO2; "
if(data["toxins"]) if(data["phoron"])
sensor_part += "[data["toxins"]]% TX; " sensor_part += "[data["phoron"]]% TX; "
sensor_part += "<HR>" sensor_part += "<HR>"
else else

View File

@@ -34,8 +34,8 @@
icon_state = "blue" icon_state = "blue"
canister_color = "blue" canister_color = "blue"
can_label = 0 can_label = 0
/obj/machinery/portable_atmospherics/canister/toxins /obj/machinery/portable_atmospherics/canister/phoron
name = "Canister \[Toxin (Bio)\]" name = "Canister \[Phoron\]"
icon_state = "orange" icon_state = "orange"
canister_color = "orange" canister_color = "orange"
can_label = 0 can_label = 0
@@ -171,7 +171,7 @@ update_flag
else else
can_label = 0 can_label = 0
if(air_contents.temperature > PLASMA_FLASHPOINT) if(air_contents.temperature > PHORON_FLASHPOINT)
air_contents.zburn() air_contents.zburn()
return return
@@ -328,11 +328,11 @@ update_flag
return 1 return 1
/obj/machinery/portable_atmospherics/canister/toxins/New() /obj/machinery/portable_atmospherics/canister/phoron/New()
..() ..()
src.air_contents.toxins = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.air_contents.phoron = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
air_contents.update_values() air_contents.update_values()
src.update_icon() src.update_icon()

View File

@@ -125,15 +125,15 @@
var/o2_concentration = air_contents.oxygen/total_moles var/o2_concentration = air_contents.oxygen/total_moles
var/n2_concentration = air_contents.nitrogen/total_moles var/n2_concentration = air_contents.nitrogen/total_moles
var/co2_concentration = air_contents.carbon_dioxide/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 Pressure: [round(pressure,0.1)] kPa"
user << "\blue Nitrogen: [round(n2_concentration*100)]%" user << "\blue Nitrogen: [round(n2_concentration*100)]%"
user << "\blue Oxygen: [round(o2_concentration*100)]%" user << "\blue Oxygen: [round(o2_concentration*100)]%"
user << "\blue CO2: [round(co2_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) if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%" user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(air_contents.temperature-T0C)]&deg;C" user << "\blue Temperature: [round(air_contents.temperature-T0C)]&deg;C"

View File

@@ -114,8 +114,8 @@
filtered_out.temperature = removed.temperature filtered_out.temperature = removed.temperature
filtered_out.toxins = removed.toxins filtered_out.phoron = removed.phoron
removed.toxins = 0 removed.phoron = 0
filtered_out.carbon_dioxide = removed.carbon_dioxide filtered_out.carbon_dioxide = removed.carbon_dioxide
removed.carbon_dioxide = 0 removed.carbon_dioxide = 0

View File

@@ -10,7 +10,7 @@
g_amt = 300 g_amt = 300
// Motion, EMP-Proof, X-Ray // Motion, EMP-Proof, X-Ray
var/list/obj/item/possible_upgrades = list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/weapon/reagent_containers/food/snacks/grown/carrot) var/list/obj/item/possible_upgrades = list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/phoron, /obj/item/weapon/reagent_containers/food/snacks/grown/carrot)
var/list/upgrades = list() var/list/upgrades = list()
var/state = 0 var/state = 0
var/busy = 0 var/busy = 0

View File

@@ -53,7 +53,7 @@
// CHECKS // CHECKS
/obj/machinery/camera/proc/isEmpProof() /obj/machinery/camera/proc/isEmpProof()
var/O = locate(/obj/item/stack/sheet/mineral/plasma) in assembly.upgrades var/O = locate(/obj/item/stack/sheet/mineral/phoron) in assembly.upgrades
return O return O
/obj/machinery/camera/proc/isXRay() /obj/machinery/camera/proc/isXRay()
@@ -67,7 +67,7 @@
// UPGRADE PROCS // UPGRADE PROCS
/obj/machinery/camera/proc/upgradeEmpProof() /obj/machinery/camera/proc/upgradeEmpProof()
assembly.upgrades.Add(new /obj/item/stack/sheet/mineral/plasma(assembly)) assembly.upgrades.Add(new /obj/item/stack/sheet/mineral/phoron(assembly))
/obj/machinery/camera/proc/upgradeXRay() /obj/machinery/camera/proc/upgradeXRay()
assembly.upgrades.Add(new /obj/item/weapon/reagent_containers/food/snacks/grown/carrot(assembly)) assembly.upgrades.Add(new /obj/item/weapon/reagent_containers/food/snacks/grown/carrot(assembly))

View File

@@ -162,7 +162,7 @@
spawn(30) spawn(30)
src.eject_wait = 0 src.eject_wait = 0
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src) var/mob/living/carbon/human/H = new /mob/living/carbon/human(src, R.dna.species)
occupant = H occupant = H
if(!R.dna.real_name) //to prevent null names if(!R.dna.real_name) //to prevent null names
@@ -212,8 +212,6 @@
if(R.dna.species == "Human") //no more xenos losing ears/tentacles if(R.dna.species == "Human") //no more xenos losing ears/tentacles
H.h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3") H.h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3")
H.set_species(R.dna.species)
//for(var/datum/language/L in languages) //for(var/datum/language/L in languages)
// H.add_language(L.name) // H.add_language(L.name)
H.suiciding = 0 H.suiciding = 0

View File

@@ -359,7 +359,7 @@
t1 += data_core.get_manifest(0) // make it monochrome t1 += data_core.get_manifest(0) // make it monochrome
P.info = t1 P.info = t1
P.name = "paper- 'Crew Manifest'" P.name = text("Crew Manifest ([])", worldtime2text())
printing = null printing = null
if (modify) if (modify)
modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])")

View File

@@ -16,6 +16,14 @@
var/temp = null var/temp = null
var/printing = null var/printing = null
/obj/machinery/computer/med_data/attackby(obj/item/O as obj, user as mob)
if(istype(O, /obj/item/weapon/card/id) && !scan)
usr.drop_item()
O.loc = src
scan = O
user << "You insert [O]."
..()
/obj/machinery/computer/med_data/attack_ai(user as mob) /obj/machinery/computer/med_data/attack_ai(user as mob)
return src.attack_hand(user) return src.attack_hand(user)
@@ -463,23 +471,30 @@
if (href_list["print_p"]) if (href_list["print_p"])
if (!( src.printing )) if (!( src.printing ))
src.printing = 1 src.printing = 1
var/datum/data/record/record1 = null
var/datum/data/record/record2 = null
if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
record1 = active1
if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
record2 = active2
sleep(50) sleep(50)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
P.info = "<CENTER><B>Medical Record</B></CENTER><BR>" P.info = "<CENTER><B>Medical Record</B></CENTER><BR>"
if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) if (record1)
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"], src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", record1.fields["name"], record1.fields["id"], record1.fields["sex"], record1.fields["age"], record1.fields["fingerprint"], record1.fields["p_stat"], record1.fields["m_stat"])
P.name = text("Medical Record ([])", record1.fields["name"])
else else
P.info += "<B>General Record Lost!</B><BR>" P.info += "<B>General Record Lost!</B><BR>"
if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) P.name = "Medical Record"
P.info += text("<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: []<BR>\nDNA: []<BR>\n<BR>\nMinor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nMajor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nAllergies: []<BR>\nDetails: []<BR>\n<BR>\nCurrent Diseases: [] (per disease info placed in log/comment section)<BR>\nDetails: []<BR>\n<BR>\nImportant Notes:<BR>\n\t[]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", src.active2.fields["b_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"]) if (record2)
P.info += text("<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: []<BR>\nDNA: []<BR>\n<BR>\nMinor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nMajor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nAllergies: []<BR>\nDetails: []<BR>\n<BR>\nCurrent Diseases: [] (per disease info placed in log/comment section)<BR>\nDetails: []<BR>\n<BR>\nImportant Notes:<BR>\n\t[]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", record2.fields["b_type"], record2.fields["b_dna"], record2.fields["mi_dis"], record2.fields["mi_dis_d"], record2.fields["ma_dis"], record2.fields["ma_dis_d"], record2.fields["alg"], record2.fields["alg_d"], record2.fields["cdi"], record2.fields["cdi_d"], record2.fields["notes"])
var/counter = 1 var/counter = 1
while(src.active2.fields[text("com_[]", counter)]) while(record2.fields[text("com_[]", counter)])
P.info += text("[]<BR>", src.active2.fields[text("com_[]", counter)]) P.info += text("[]<BR>", record2.fields[text("com_[]", counter)])
counter++ counter++
else else
P.info += "<B>Medical Record Lost!</B><BR>" P.info += "<B>Medical Record Lost!</B><BR>"
P.info += "</TT>" P.info += "</TT>"
P.name = "paper- 'Medical Record'"
src.printing = null src.printing = null
src.add_fingerprint(usr) src.add_fingerprint(usr)

View File

@@ -329,23 +329,30 @@ What a mess.*/
if ("Print Record") if ("Print Record")
if (!( printing )) if (!( printing ))
printing = 1 printing = 1
var/datum/data/record/record1 = null
var/datum/data/record/record2 = null
if ((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
record1 = active1
if ((istype(active2, /datum/data/record) && data_core.security.Find(active2)))
record2 = active2
sleep(50) sleep(50)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc )
P.info = "<CENTER><B>Security Record</B></CENTER><BR>" P.info = "<CENTER><B>Security Record</B></CENTER><BR>"
if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) if (record1)
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"], active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", record1.fields["name"], record1.fields["id"], record1.fields["sex"], record1.fields["age"], record1.fields["fingerprint"], record1.fields["p_stat"], record1.fields["m_stat"])
P.name = text("Security Record ([])", record1.fields["name"])
else else
P.info += "<B>General Record Lost!</B><BR>" P.info += "<B>General Record Lost!</B><BR>"
if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) P.name = "Security Record"
P.info += text("<BR>\n<CENTER><B>Security Data</B></CENTER><BR>\nCriminal Status: []<BR>\n<BR>\nMinor Crimes: []<BR>\nDetails: []<BR>\n<BR>\nMajor Crimes: []<BR>\nDetails: []<BR>\n<BR>\nImportant Notes:<BR>\n\t[]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", active2.fields["criminal"], active2.fields["mi_crim"], active2.fields["mi_crim_d"], active2.fields["ma_crim"], active2.fields["ma_crim_d"], active2.fields["notes"]) if (record2)
P.info += text("<BR>\n<CENTER><B>Security Data</B></CENTER><BR>\nCriminal Status: []<BR>\n<BR>\nMinor Crimes: []<BR>\nDetails: []<BR>\n<BR>\nMajor Crimes: []<BR>\nDetails: []<BR>\n<BR>\nImportant Notes:<BR>\n\t[]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", 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 var/counter = 1
while(active2.fields[text("com_[]", counter)]) while(record2.fields[text("com_[]", counter)])
P.info += text("[]<BR>", active2.fields[text("com_[]", counter)]) P.info += text("[]<BR>", record2.fields[text("com_[]", counter)])
counter++ counter++
else else
P.info += "<B>Security Record Lost!</B><BR>" P.info += "<B>Security Record Lost!</B><BR>"
P.info += "</TT>" P.info += "</TT>"
P.name = "paper - 'Security Record'"
printing = null printing = null
updateUsrDialog() updateUsrDialog()
//RECORD DELETE //RECORD DELETE

View File

@@ -212,7 +212,7 @@ to destroy them and players will be able to make replacements.
name = "Circuit Board (PACMAN-type Generator)" name = "Circuit Board (PACMAN-type Generator)"
build_path = "/obj/machinery/power/port_gen/pacman" build_path = "/obj/machinery/power/port_gen/pacman"
board_type = "machine" 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." frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor."
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1, "/obj/item/weapon/stock_parts/matter_bin" = 1,

View File

@@ -258,37 +258,37 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
L.apply_effect(15,IRRADIATE,0) L.apply_effect(15,IRRADIATE,0)
return return
/obj/machinery/door/airlock/plasma /obj/machinery/door/airlock/phoron
name = "Plasma Airlock" name = "Phoron Airlock"
desc = "No way this can end badly." desc = "No way this can end badly."
icon = 'icons/obj/doors/Doorplasma.dmi' icon = 'icons/obj/doors/Doorphoron.dmi'
mineral = "plasma" 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) 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) 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)) 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 // 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() // target_tile.parent.suspend_group_processing()
var/datum/gas_mixture/napalm = new var/datum/gas_mixture/napalm = new
var/toxinsToDeduce = 35 var/phoronToDeduce = 35
napalm.toxins = toxinsToDeduce napalm.phoron = phoronToDeduce
napalm.temperature = 400+T0C napalm.temperature = 400+T0C
target_tile.assume_air(napalm) target_tile.assume_air(napalm)
spawn (0) target_tile.hotspot_expose(temperature, 400) 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) var/turf/T = get_turf(F)
T.ChangeTurf(/turf/simulated/wall/mineral/plasma/) T.ChangeTurf(/turf/simulated/wall/mineral/phoron/)
del (F) 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 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) D.ignite(temperature/4)
new/obj/structure/door_assembly( src.loc ) new/obj/structure/door_assembly( src.loc )
del (src) del (src)
@@ -1248,7 +1248,7 @@ About the new airlock wires panel:
..() ..()
return 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) if(C)
ignite(is_hot(C)) ignite(is_hot(C))
..() ..()

View File

@@ -1,6 +1,6 @@
/obj/machinery/igniter /obj/machinery/igniter
name = "igniter" name = "igniter"
desc = "It's useful for igniting plasma." desc = "It's useful for igniting flammable items."
icon = 'icons/obj/stationobjs.dmi' icon = 'icons/obj/stationobjs.dmi'
icon_state = "igniter1" icon_state = "igniter1"
var/id = null var/id = null

View File

@@ -27,6 +27,9 @@ Buildable meters
#define PIPE_UP 21 #define PIPE_UP 21
#define PIPE_DOWN 22 #define PIPE_DOWN 22
///// Z-Level stuff ///// Z-Level stuff
#define PIPE_GAS_FILTER_M 23
#define PIPE_GAS_MIXER_T 24
#define PIPE_GAS_MIXER_M 25
/obj/item/pipe /obj/item/pipe
name = "pipe" name = "pipe"
@@ -71,6 +74,12 @@ Buildable meters
src.pipe_type = PIPE_MVALVE src.pipe_type = PIPE_MVALVE
else if(istype(make_from, /obj/machinery/atmospherics/binary/pump)) else if(istype(make_from, /obj/machinery/atmospherics/binary/pump))
src.pipe_type = PIPE_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)) else if(istype(make_from, /obj/machinery/atmospherics/trinary/filter))
src.pipe_type = PIPE_GAS_FILTER src.pipe_type = PIPE_GAS_FILTER
else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer)) else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer))
@@ -132,6 +141,9 @@ Buildable meters
"pipe up", \ "pipe up", \
"pipe down", \ "pipe down", \
///// Z-Level stuff ///// Z-Level stuff
"gas filter m", \
"gas mixer t", \
"gas mixer m", \
) )
name = nlist[pipe_type+1] + " fitting" name = nlist[pipe_type+1] + " fitting"
var/list/islist = list( \ var/list/islist = list( \
@@ -160,6 +172,9 @@ Buildable meters
"cap", \ "cap", \
"cap", \ "cap", \
///// Z-Level stuff ///// Z-Level stuff
"m_filter", \
"t_mixer", \
"m_mixer", \
) )
icon_state = islist[pipe_type + 1] icon_state = islist[pipe_type + 1]
@@ -230,6 +245,10 @@ Buildable meters
return flip|cw|acw return flip|cw|acw
if(PIPE_GAS_FILTER, PIPE_GAS_MIXER,PIPE_MTVALVE) if(PIPE_GAS_FILTER, PIPE_GAS_MIXER,PIPE_MTVALVE)
return dir|flip|cw 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) if(PIPE_CAP)
return flip return flip
///// Z-Level stuff ///// Z-Level stuff
@@ -490,7 +509,7 @@ Buildable meters
P.node3.initialize() P.node3.initialize()
P.node3.build_network() 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) var/obj/machinery/atmospherics/trinary/mixer/P = new(src.loc)
P.dir = dir P.dir = dir
P.initialize_directions = pipe_dir P.initialize_directions = pipe_dir
@@ -510,6 +529,66 @@ Buildable meters
P.node3.initialize() P.node3.initialize()
P.node3.build_network() 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 if(PIPE_SCRUBBER) //scrubber
var/obj/machinery/atmospherics/unary/vent_scrubber/S = new(src.loc) var/obj/machinery/atmospherics/unary/vent_scrubber/S = new(src.loc)
S.dir = dir S.dir = dir
@@ -709,4 +788,7 @@ Buildable meters
#undef PIPE_VOLUME_PUMP #undef PIPE_VOLUME_PUMP
#undef PIPE_OUTLET_INJECT #undef PIPE_OUTLET_INJECT
#undef PIPE_MTVALVE #undef PIPE_MTVALVE
#undef PIPE_GAS_FILTER_M
#undef PIPE_GAS_MIXER_T
#undef PIPE_GAS_MIXER_M
//#undef PIPE_MANIFOLD4W //#undef PIPE_MANIFOLD4W

View File

@@ -34,7 +34,10 @@
<A href='?src=\ref[src];make=10;dir=1'>Scrubber</A><BR> <A href='?src=\ref[src];make=10;dir=1'>Scrubber</A><BR>
<A href='?src=\ref[src];makemeter=1'>Meter</A><BR> <A href='?src=\ref[src];makemeter=1'>Meter</A><BR>
<A href='?src=\ref[src];make=13;dir=1'>Gas Filter</A><BR> <A href='?src=\ref[src];make=13;dir=1'>Gas Filter</A><BR>
<A href='?src=\ref[src];make=23;dir=1'>Gas Filter-Mirrored</A><BR>
<A href='?src=\ref[src];make=14;dir=1'>Gas Mixer</A><BR> <A href='?src=\ref[src];make=14;dir=1'>Gas Mixer</A><BR>
<A href='?src=\ref[src];make=25;dir=1'>Gas Mixer-Mirrored</A><BR>
<A href='?src=\ref[src];make=24;dir=1'>Gas Mixer-T</A><BR>
<b>Heat exchange:</b><BR> <b>Heat exchange:</b><BR>
<A href='?src=\ref[src];make=2;dir=1'>Pipe</A><BR> <A href='?src=\ref[src];make=2;dir=1'>Pipe</A><BR>
<A href='?src=\ref[src];make=3;dir=5'>Bent Pipe</A><BR> <A href='?src=\ref[src];make=3;dir=5'>Bent Pipe</A><BR>

View File

@@ -65,7 +65,7 @@
if(1 to 50) 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")]." 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) 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) if(61 to 70)
objective = "Cut power to 80% or more of the station's tiles." objective = "Cut power to 80% or more of the station's tiles."
if(71 to 80) if(71 to 80)

View File

@@ -53,6 +53,8 @@
var/const/WIRE_SHOOTINV = 4 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/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() /obj/machinery/vending/New()
..() ..()
@@ -150,6 +152,11 @@
else if(istype(W, /obj/item/weapon/card) && currently_vending) else if(istype(W, /obj/item/weapon/card) && currently_vending)
var/obj/item/weapon/card/I = W var/obj/item/weapon/card/I = W
scan_card(I) 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) else if(src.panel_open)
@@ -243,7 +250,10 @@
dat += "<b>Select an item: </b><br><br>" //the rest is just general spacing and bolding dat += "<b>Select an item: </b><br><br>" //the rest is just general spacing and bolding
if (premium.len > 0) if (premium.len > 0)
dat += "<b>Coin slot:</b> [coin ? coin : "No coin inserted"] (<a href='byond://?src=\ref[src];remove_coin=1'>Remove</A>)<br><br>" dat += "<b>Coin slot:</b> [coin ? coin : "No coin inserted"] (<a href='byond://?src=\ref[src];remove_coin=1'>Remove</A>)<br>"
if (ewallet)
dat += "<b>Charge card's credits:</b> [ewallet ? ewallet.worth : "No charge card inserted"] (<a href='byond://?src=\ref[src];remove_ewallet=1'>Remove</A>)<br><br>"
if (src.product_records.len == 0) if (src.product_records.len == 0)
dat += "<font color = 'red'>No product loaded!</font>" dat += "<font color = 'red'>No product loaded!</font>"
@@ -317,6 +327,15 @@
usr << "\blue You remove the [coin] from the [src]" usr << "\blue You remove the [coin] from the [src]"
coin = null 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)))) if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
usr.set_machine(src) usr.set_machine(src)
@@ -343,10 +362,18 @@
if(R.price == null) if(R.price == null)
src.vend(R, usr) src.vend(R, usr)
else
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 else
src.currently_vending = R src.currently_vending = R
src.updateUsrDialog() src.updateUsrDialog()
return return
else if (href_list["cancel_buying"]) else if (href_list["cancel_buying"])
@@ -597,7 +624,7 @@
desc = "A vendor with a wide variety of masks and gas tanks." desc = "A vendor with a wide variety of masks and gas tanks."
icon = 'icons/obj/objects.dmi' icon = 'icons/obj/objects.dmi'
icon_state = "dispenser" 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" product_amounts = "10;10;10;5;25"
vend_delay = 0 vend_delay = 0
*/ */
@@ -686,7 +713,7 @@
icon_state = "cart" icon_state = "cart"
icon_deny = "cart-deny" icon_deny = "cart-deny"
products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10, 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) /obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
@@ -719,7 +746,7 @@
//This one's from bay12 //This one's from bay12
/obj/machinery/vending/plasmaresearch /obj/machinery/vending/phoronresearch
name = "Toximate 3000" name = "Toximate 3000"
desc = "All the fine parts you need in one vending machine!" 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, products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,

View File

@@ -262,7 +262,7 @@
energy_drain = 250 energy_drain = 250
range = MELEE|RANGED range = MELEE|RANGED
construction_time = 1200 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/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock.
var/disabled = 0 //malf var/disabled = 0 //malf
@@ -830,10 +830,10 @@
/obj/item/mecha_parts/mecha_equipment/generator /obj/item/mecha_parts/mecha_equipment/generator
name = "Plasma Converter" name = "Phoron Generator"
desc = "Generates power using solid plasma as fuel. Pollutes the environment." desc = "Generates power using solid phoron as fuel. Pollutes the environment."
icon_state = "tesla" icon_state = "tesla"
origin_tech = "plasmatech=2;powerstorage=2;engineering=1" origin_tech = "phorontech=2;powerstorage=2;engineering=1"
equip_cooldown = 10 equip_cooldown = 10
energy_drain = 0 energy_drain = 0
range = MELEE range = MELEE
@@ -853,7 +853,7 @@
return return
proc/init() proc/init()
fuel = new /obj/item/stack/sheet/mineral/plasma(src) fuel = new /obj/item/stack/sheet/mineral/phoron(src)
fuel.amount = 0 fuel.amount = 0
pr_mech_generator = new /datum/global_iterator/mecha_generator(list(src),0) pr_mech_generator = new /datum/global_iterator/mecha_generator(list(src),0)
pr_mech_generator.set_delay(equip_cooldown) pr_mech_generator.set_delay(equip_cooldown)
@@ -926,14 +926,14 @@
return return
var/datum/gas_mixture/GM = new var/datum/gas_mixture/GM = new
if(prob(10)) if(prob(10))
GM.toxins += 100 GM.phoron += 100
GM.temperature = 1500+T0C //should be enough to start a fire 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() destroy()
else else
GM.toxins += 5 GM.phoron += 5
GM.temperature = istype(T) ? T.air.temperature : T20C 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) T.assume_air(GM)
return return

View File

@@ -21,7 +21,7 @@
"gold"=0, "gold"=0,
"silver"=0, "silver"=0,
"diamond"=0, "diamond"=0,
"plasma"=0, "phoron"=0,
"uranium"=0, "uranium"=0,
//"bananium"=0 No need to state what it can no longer hold //"bananium"=0 No need to state what it can no longer hold
) )
@@ -684,8 +684,8 @@
type = /obj/item/stack/sheet/mineral/silver type = /obj/item/stack/sheet/mineral/silver
if("diamond") if("diamond")
type = /obj/item/stack/sheet/mineral/diamond type = /obj/item/stack/sheet/mineral/diamond
if("plasma") if("phoron")
type = /obj/item/stack/sheet/mineral/plasma type = /obj/item/stack/sheet/mineral/phoron
if("uranium") if("uranium")
type = /obj/item/stack/sheet/mineral/uranium type = /obj/item/stack/sheet/mineral/uranium
/*if("bananium") /*if("bananium")
@@ -732,9 +732,9 @@
if(src.resources["glass"] >= 3750) if(src.resources["glass"] >= 3750)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(src.resources["glass"] / G.perunit) G.amount = round(src.resources["glass"] / G.perunit)
if(src.resources["plasma"] >= 2000) if(src.resources["phoron"] >= 2000)
var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma(src.loc) var/obj/item/stack/sheet/mineral/phoron/G = new /obj/item/stack/sheet/mineral/phoron(src.loc)
G.amount = round(src.resources["plasma"] / G.perunit) G.amount = round(src.resources["phoron"] / G.perunit)
if(src.resources["silver"] >= 2000) if(src.resources["silver"] >= 2000)
var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver(src.loc) 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) G.amount = round(src.resources["silver"] / G.perunit)
@@ -767,8 +767,8 @@
material = "silver" material = "silver"
if(/obj/item/stack/sheet/mineral/diamond) if(/obj/item/stack/sheet/mineral/diamond)
material = "diamond" material = "diamond"
if(/obj/item/stack/sheet/mineral/plasma) if(/obj/item/stack/sheet/mineral/phoron)
material = "plasma" material = "phoron"
if(/obj/item/stack/sheet/metal) if(/obj/item/stack/sheet/metal)
material = "metal" material = "metal"
if(/obj/item/stack/sheet/glass) if(/obj/item/stack/sheet/glass)

View File

@@ -292,42 +292,42 @@
name="Phazon Torso" name="Phazon Torso"
icon_state = "phazon_harness" icon_state = "phazon_harness"
construction_time = 300 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" origin_tech = "programming=5;materials=7;bluespace=6;powerstorage=6"
/obj/item/mecha_parts/part/phazon_head /obj/item/mecha_parts/part/phazon_head
name="Phazon Head" name="Phazon Head"
icon_state = "phazon_head" icon_state = "phazon_head"
construction_time = 200 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" origin_tech = "programming=4;materials=5;magnets=6"
/obj/item/mecha_parts/part/phazon_left_arm /obj/item/mecha_parts/part/phazon_left_arm
name="Phazon Left Arm" name="Phazon Left Arm"
icon_state = "phazon_l_arm" icon_state = "phazon_l_arm"
construction_time = 200 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" origin_tech = "materials=5;bluespace=2;magnets=2"
/obj/item/mecha_parts/part/phazon_right_arm /obj/item/mecha_parts/part/phazon_right_arm
name="Phazon Right Arm" name="Phazon Right Arm"
icon_state = "phazon_r_arm" icon_state = "phazon_r_arm"
construction_time = 200 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" origin_tech = "materials=5;bluespace=2;magnets=2"
/obj/item/mecha_parts/part/phazon_left_leg /obj/item/mecha_parts/part/phazon_left_leg
name="Phazon Left Leg" name="Phazon Left Leg"
icon_state = "phazon_l_leg" icon_state = "phazon_l_leg"
construction_time = 200 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" origin_tech = "materials=5;bluespace=3;magnets=3"
/obj/item/mecha_parts/part/phazon_right_leg /obj/item/mecha_parts/part/phazon_right_leg
name="Phazon Right Leg" name="Phazon Right Leg"
icon_state = "phazon_r_leg" icon_state = "phazon_r_leg"
construction_time = 200 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" origin_tech = "materials=5;bluespace=3;magnets=3"
///////// Odysseus ///////// Odysseus

View File

@@ -16,7 +16,7 @@
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src) var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
var/obj/item/weapon/storage/box/B = new(BPK) var/obj/item/weapon/storage/box/B = new(BPK)
new /obj/item/weapon/pen(B) 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/weapon/tank/oxygen(src)
new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/mask/gas(src)
new /obj/item/device/radio/headset/headset_sci(src) new /obj/item/device/radio/headset/headset_sci(src)

View File

@@ -1,5 +1,5 @@
obj/effect/decal/cleanable/liquid_fuel 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 = 'icons/effects/effects.dmi'
icon_state = "fuel" icon_state = "fuel"
layer = TURF_LAYER+0.2 layer = TURF_LAYER+0.2
@@ -21,7 +21,7 @@ obj/effect/decal/cleanable/liquid_fuel
proc/Spread() proc/Spread()
//Allows liquid fuels to sometimes flow into other tiles. //Allows liquid fuels to sometimes flow into other tiles.
if(amount < 0.5) return if(amount < 5.0) return
var/turf/simulated/S = loc var/turf/simulated/S = loc
if(!istype(S)) return if(!istype(S)) return
for(var/d in cardinal) for(var/d in cardinal)

View File

@@ -52,7 +52,7 @@
/datum/poster/bay_11 /datum/poster/bay_11
icon_state="bsposter11" icon_state="bsposter11"
name = "Underwater Laboratory" 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 /datum/poster/bay_12
icon_state="bsposter12" icon_state="bsposter12"
@@ -143,3 +143,104 @@
icon_state="bsposter29" icon_state="bsposter29"
name = "Winter Is Coming" 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!\"" 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!\""

View File

@@ -63,13 +63,13 @@
spawn(0) spawn(0)
del(src) del(src)
/obj/effect/mine/proc/triggerplasma(obj) /obj/effect/mine/proc/triggerphoron(obj)
for (var/turf/simulated/floor/target in range(1,src)) for (var/turf/simulated/floor/target in range(1,src))
if(!target.blocks_air) if(!target.blocks_air)
var/datum/gas_mixture/payload = new var/datum/gas_mixture/payload = new
payload.toxins = 30 payload.phoron = 30
target.zone.air.merge(payload) target.zone.air.merge(payload)
@@ -96,10 +96,10 @@
icon_state = "uglymine" icon_state = "uglymine"
triggerproc = "triggerrad" triggerproc = "triggerrad"
/obj/effect/mine/plasma /obj/effect/mine/phoron
name = "Plasma Mine" name = "Phoron Mine"
icon_state = "uglymine" icon_state = "uglymine"
triggerproc = "triggerplasma" triggerproc = "triggerphoron"
/obj/effect/mine/kick /obj/effect/mine/kick
name = "Kick Mine" name = "Kick Mine"

View File

@@ -30,7 +30,7 @@
// radio // radio
if (0) if (0)
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank(src.loc) 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/radio/signaler/p1 = new /obj/item/device/radio/signaler(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R) var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1 R.part1 = p1
@@ -47,7 +47,7 @@
// proximity // proximity
if (1) if (1)
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank(src.loc) 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/prox_sensor/p1 = new /obj/item/device/prox_sensor(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R) var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1 R.part1 = p1
@@ -69,7 +69,7 @@
// timer // timer
if (2) if (2)
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank(src.loc) 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/timer/p1 = new /obj/item/device/timer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R) var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1 R.part1 = p1
@@ -85,7 +85,7 @@
//bombvest //bombvest
if(3) 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/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/healthanalyzer/p1 = new /obj/item/device/healthanalyzer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(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) 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/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) var/obj/item/weapon/tank/oxygen/OT = new(V)
V.tank_one = PT V.tank_one = PT
@@ -136,12 +136,12 @@
PT.master = V PT.master = V
OT.master = V OT.master = V
PT.air_contents.temperature = PLASMA_FLASHPOINT PT.air_contents.temperature = PHORON_FLASHPOINT
PT.air_contents.toxins = 3 PT.air_contents.phoron = 3
PT.air_contents.carbon_dioxide = 17 PT.air_contents.carbon_dioxide = 17
PT.air_contents.update_values() 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.oxygen = 20
OT.air_contents.update_values() OT.air_contents.update_values()

View File

@@ -238,18 +238,6 @@
/obj/item/proc/equipped(var/mob/user, var/slot) /obj/item/proc/equipped(var/mob/user, var/slot)
return 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. //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. //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. //Set disable_warning to 1 if you wish it to not give you outputs.

View File

@@ -83,8 +83,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon_state = "pda-j" icon_state = "pda-j"
ttone = "slip" ttone = "slip"
/obj/item/device/pda/toxins /obj/item/device/pda/science
default_cartridge = /obj/item/weapon/cartridge/signal/toxins default_cartridge = /obj/item/weapon/cartridge/signal/science
icon_state = "pda-tox" icon_state = "pda-tox"
ttone = "boom" ttone = "boom"
@@ -446,14 +446,14 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/o2_level = environment.oxygen/total_moles var/o2_level = environment.oxygen/total_moles
var/n2_level = environment.nitrogen/total_moles var/n2_level = environment.nitrogen/total_moles
var/co2_level = environment.carbon_dioxide/total_moles var/co2_level = environment.carbon_dioxide/total_moles
var/plasma_level = environment.toxins/total_moles var/phoron_level = environment.phoron/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level) var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
data["aircontents"] = list(\ data["aircontents"] = list(\
"pressure" = "[round(pressure,0.1)]",\ "pressure" = "[round(pressure,0.1)]",\
"nitrogen" = "[round(n2_level*100,0.1)]",\ "nitrogen" = "[round(n2_level*100,0.1)]",\
"oxygen" = "[round(o2_level*100,0.1)]",\ "oxygen" = "[round(o2_level*100,0.1)]",\
"carbon_dioxide" = "[round(co2_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)]",\ "other" = "[round(unknown_level, 0.01)]",\
"temp" = "[round(environment.temperature-T0C,0.1)]",\ "temp" = "[round(environment.temperature-T0C,0.1)]",\
"reading" = 1\ "reading" = 1\
@@ -556,7 +556,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
mode = 1 mode = 1
if("2")//Messenger if("2")//Messenger
mode = 2 mode = 2
if("21")//Read messeges if("21")//Read messages
mode = 21 mode = 21
if("3")//Atmos scan if("3")//Atmos scan
mode = 3 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!" message += "You feel a searing heat! Your [P] is burning!"
if(i>=20 && i<=25) //EMP if(i>=20 && i<=25) //EMP
empulse(P.loc, 3, 6, 1) 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 if(i>=25 && i<=40) //Smoke
var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
S.attach(P.loc) S.attach(P.loc)
@@ -895,7 +895,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/obj/machinery/message_server/useMS = null var/obj/machinery/message_server/useMS = null
if(message_servers) if(message_servers)
for (var/obj/machinery/message_server/MS in 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) if(MS.active)
useMS = MS useMS = MS
break break
@@ -914,7 +914,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
t = Gibberish(t, signal.data["compression"] + 50) t = Gibberish(t, signal.data["compression"] + 50)
if(useMS && useTC) // only send the message if it's stable 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." U << "ERROR: Cannot reach recipient."
return return
useMS.send_pda_message("[P.owner]","[owner]","[t]") useMS.send_pda_message("[P.owner]","[owner]","[t]")
@@ -957,7 +957,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(L) if(L)
L << "\icon[P] <b>Message from [src.owner] ([ownjob]), </b>\"[t]\" (<a href='byond://?src=\ref[P];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)" L << "\icon[P] <b>Message from [src.owner] ([ownjob]), </b>\"[t]\" (<a href='byond://?src=\ref[P];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
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 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/o2_concentration = A:air_contents.oxygen/total_moles
var/n2_concentration = A:air_contents.nitrogen/total_moles var/n2_concentration = A:air_contents.nitrogen/total_moles
var/co2_concentration = A:air_contents.carbon_dioxide/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 Pressure: [round(pressure,0.1)] kPa"
user << "\blue Nitrogen: [round(n2_concentration*100)]%" user << "\blue Nitrogen: [round(n2_concentration*100)]%"
user << "\blue Oxygen: [round(o2_concentration*100)]%" user << "\blue Oxygen: [round(o2_concentration*100)]%"
user << "\blue CO2: [round(co2_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) if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%" user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(A:air_contents.temperature-T0C)]&deg;C" user << "\blue Temperature: [round(A:air_contents.temperature-T0C)]&deg;C"
@@ -1194,15 +1194,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/o2_concentration = T.parent.air.oxygen/total_moles var/o2_concentration = T.parent.air.oxygen/total_moles
var/n2_concentration = T.parent.air.nitrogen/total_moles var/n2_concentration = T.parent.air.nitrogen/total_moles
var/co2_concentration = T.parent.air.carbon_dioxide/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 Pressure: [round(pressure,0.1)] kPa"
user << "\blue Nitrogen: [round(n2_concentration*100)]%" user << "\blue Nitrogen: [round(n2_concentration*100)]%"
user << "\blue Oxygen: [round(o2_concentration*100)]%" user << "\blue Oxygen: [round(o2_concentration*100)]%"
user << "\blue CO2: [round(co2_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) if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%" user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(T.parent.air.temperature-T0C)]&deg;C" user << "\blue Temperature: [round(T.parent.air.temperature-T0C)]&deg;C"
@@ -1293,7 +1293,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/newcart = pick( /obj/item/weapon/cartridge/engineering, var/newcart = pick( /obj/item/weapon/cartridge/engineering,
/obj/item/weapon/cartridge/security, /obj/item/weapon/cartridge/security,
/obj/item/weapon/cartridge/medical, /obj/item/weapon/cartridge/medical,
/obj/item/weapon/cartridge/signal/toxins, /obj/item/weapon/cartridge/signal/science,
/obj/item/weapon/cartridge/quartermaster) /obj/item/weapon/cartridge/quartermaster)
new newcart(src) new newcart(src)

View File

@@ -103,7 +103,7 @@
name = "generic signaler cartridge" name = "generic signaler cartridge"
desc = "A data cartridge with an integrated radio signaler module." 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" name = "Signal Ace 2"
desc = "Complete with integrated radio signaler!" desc = "Complete with integrated radio signaler!"
icon_state = "cart-tox" icon_state = "cart-tox"

View File

@@ -25,33 +25,200 @@
if (!in_range(src, user)) if (!in_range(src, user))
return return
user.set_machine(src) user.set_machine(src)
var/dat = "<TT><B>Personal AI Device</B><BR>" var/dat = {"
if(pai && (!pai.master_dna || !pai.master)) <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
dat += "<a href='byond://?src=\ref[src];setdna=1'>Imprint Master DNA</a><br>" <html>
<head>
<style>
body {
margin-top:5px;
font-family:Verdana;
color:white;
font-size:13px;
background-image:url('uiBackground.png');
background-repeat:repeat-x;
background-color:#272727;
background-position:center top;
}
table {
font-size:13px;
margin-left:-2px;
}
table.request {
border-collapse:collapse;
}
table.desc {
border-collapse:collapse;
font-size:13px;
border: 1px solid #161616;
width:100%;
}
table.download {
border-collapse:collapse;
font-size:13px;
border: 1px solid #161616;
width:100%;
}
tr.d0 td, tr.d0 th {
background-color: #506070;
color: white;
}
tr.d1 td, tr.d1 th {
background-color: #708090;
color: white;
}
tr.d2 td {
background-color: #00FF00;
color: white;
text-align:center;
}
td.button {
border: 1px solid #161616;
background-color: #40628a;
}
td.button {
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
}
td.button_red {
border: 1px solid #161616;
background-color: #B04040;
text-align: center;
}
td.download {
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
}
th {
text-align:left;
width:125px;
}
td.request {
width:140px;
vertical-align:top;
}
td.radio {
width:90px;
vertical-align:top;
}
td.request {
vertical-align:top;
}
a {
color:#4477E0;
}
a.button {
color:white;
text-decoration: none;
}
h2 {
font-size:15px;
}
</style>
</head>
<body>
"}
if(pai) if(pai)
dat += "Installed Personality: [pai.name]<br>" dat += {"
dat += "Prime directive: <br>[pai.pai_law0]<br>" <b><font size='3px'>Personal AI Device</font></b><br><br>
dat += "Additional directives: <br>[pai.pai_laws]<br>" <table class="request">
dat += "<a href='byond://?src=\ref[src];setlaws=1'>Configure Directives</a><br>" <tr>
<td class="request">Installed Personality:</td>
<td>[pai.name]</td>
</tr>
<tr>
<td class="request">Prime directive:</td>
<td>[pai.pai_law0]</td>
</tr>
<tr>
<td class="request">Additional directives:</td>
<td>[pai.pai_laws]</td>
</tr>
</table>
<br>
"}
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];setlaws=1' class='button'>Configure Directives</a>
</td>
</table>
"}
if(pai && (!pai.master_dna || !pai.master))
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];setdna=1' class='button'>Imprint Master DNA</a>
</td>
</table>
"}
dat += "<br>" dat += "<br>"
dat += "<h3>Device Settings</h3><br>"
if(radio) if(radio)
dat += "<b>Radio Uplink</b><br>" dat += "<b>Radio Uplink</b>"
dat += "Transmit: <A href='byond://?src=\ref[src];wires=4'>[(radio.wires & 4) ? "Enabled" : "Disabled"]</A><br>" dat += {"
dat += "Receive: <A href='byond://?src=\ref[src];wires=2'>[(radio.wires & 2) ? "Enabled" : "Disabled"]</A><br>" <table class="request">
dat += "Signal Pulser: <A href='byond://?src=\ref[src];wires=1'>[(radio.wires & 1) ? "Enabled" : "Disabled"]</A><br>" <tr>
<td class="radio">Transmit:</td>
<td><a href='byond://?src=\ref[src];wires=4'>[(radio.wires & 4) ? "<font color=#55FF55>En" : "<font color=#FF5555>Dis" ]abled</font></a>
</td>
</tr>
<tr>
<td class="radio">Receive:</td>
<td><a href='byond://?src=\ref[src];wires=2'>[(radio.wires & 2) ? "<font color=#55FF55>En" : "<font color=#FF5555>Dis" ]abled</font></a>
</td>
</tr>
<tr>
<td class="radio">Signal Pulser:</td>
<td><a href='byond://?src=\ref[src];wires=1'>[(radio.wires & 1) ? "<font color=#55FF55>En" : "<font color=#FF5555>Dis" ]abled</font></a>
</td>
</tr>
</table>
<br>
"}
else else
dat += "<b>Radio Uplink</b><br>" dat += "<b>Radio Uplink</b><br>"
dat += "<font color=red><i>Radio firmware not loaded. Please install a pAI personality to load firmware.</i></font><br>" dat += "<font color=red><i>Radio firmware not loaded. Please install a pAI personality to load firmware.</i></font><br>"
dat += "<A href='byond://?src=\ref[src];wipe=1'>\[Wipe current pAI personality\]</a><br>" dat += {"
<table>
<td class="button_red"><a href='byond://?src=\ref[src];wipe=1' class='button'>Wipe current pAI personality</a>
</td>
</table>
"}
else else
if(looking_for_personality) if(looking_for_personality)
dat += "Searching for a personality..." dat += {"
dat += "<A href='byond://?src=\ref[src];request=1'>\[View available personalities\]</a><br>" <b><font size='3px'>pAI Request Module</font></b><br><br>
<p>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.</p>
<img src='loading.gif' /> Searching for personalities<br><br>
<table>
<tr>
<td class="button">
<a href='byond://?src=\ref[src];request=1' class="button">Refresh available personalities</a>
</td>
</tr>
</table><br>
"}
else else
dat += "No personality is installed.<br>" dat += {"
dat += "<A href='byond://?src=\ref[src];request=1'>\[Request personal AI personality\]</a><br>" <b><font size='3px'>pAI Request Module</font></b><br><br>
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." <p>No personality is installed.</p>
<table>
<tr>
<td class="button"><a href='byond://?src=\ref[src];request=1' class="button">Request personality</a>
</td>
</tr>
</table>
<br>
<p>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.</p>
"}
user << browse(dat, "window=paicard") user << browse(dat, "window=paicard")
onclose(user, "paicard") onclose(user, "paicard")
return return
@@ -96,7 +263,7 @@
if(newlaws) if(newlaws)
pai.pai_laws = newlaws pai.pai_laws = newlaws
pai << "Your supplemental directives have been updated. Your new directives are:" pai << "Your supplemental directives have been updated. Your new directives are:"
pai << "Prime Directive : <br>[pai.pai_law0]" pai << "Prime Directive: <br>[pai.pai_law0]"
pai << "Supplemental Directives: <br>[pai.pai_laws]" pai << "Supplemental Directives: <br>[pai.pai_laws]"
attack_self(usr) attack_self(usr)

View File

@@ -7,9 +7,15 @@
var/mode = "grey" var/mode = "grey"
/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob) /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 return
var/obj/machinery/atmospherics/pipe/P = A 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 P.pipe_color = mode
user.visible_message("<span class='notice'>[user] paints \the [P] [mode].</span>","<span class='notice'>You paint \the [P] [mode].</span>") user.visible_message("<span class='notice'>[user] paints \the [P] [mode].</span>","<span class='notice'>You paint \the [P] [mode].</span>")
P.update_icon() P.update_icon()

View File

@@ -238,9 +238,9 @@ REAGENT SCANNER
var/o2_concentration = environment.oxygen/total_moles var/o2_concentration = environment.oxygen/total_moles
var/n2_concentration = environment.nitrogen/total_moles var/n2_concentration = environment.nitrogen/total_moles
var/co2_concentration = environment.carbon_dioxide/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) if(abs(n2_concentration - N2STANDARD) < 20)
user.show_message("\blue Nitrogen: [round(n2_concentration*100)]%", 1) user.show_message("\blue Nitrogen: [round(n2_concentration*100)]%", 1)
else else
@@ -256,8 +256,8 @@ REAGENT SCANNER
else else
user.show_message("\blue CO2: [round(co2_concentration*100)]%", 1) user.show_message("\blue CO2: [round(co2_concentration*100)]%", 1)
if(plasma_concentration > 0.01) if(phoron_concentration > 0.01)
user.show_message("\red Plasma: [round(plasma_concentration*100)]%", 1) user.show_message("\red Phoron: [round(phoron_concentration*100)]%", 1)
if(unknown_concentration > 0.01) if(unknown_concentration > 0.01)
user.show_message("\red Unknown: [round(unknown_concentration*100)]%", 1) user.show_message("\red Unknown: [round(unknown_concentration*100)]%", 1)

View File

@@ -213,7 +213,7 @@
for(var/i=1,storedinfo.len >= i,i++) for(var/i=1,storedinfo.len >= i,i++)
t1 += "[storedinfo[i]]<BR>" t1 += "[storedinfo[i]]<BR>"
P.info = t1 P.info = t1
P.name = "paper- 'Transcript'" P.name = "Transcript"
canprint = 0 canprint = 0
sleep(300) sleep(300)
canprint = 1 canprint = 1

View File

@@ -133,7 +133,7 @@
/obj/item/borg/upgrade/jetpack /obj/item/borg/upgrade/jetpack
name = "mining robot jetpack" name = "mining robot jetpack"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations." 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" icon_state = "cyborg_upgrade3"
require_module = 1 require_module = 1

View File

@@ -2,8 +2,8 @@
* Contains: * Contains:
* Glass sheets * Glass sheets
* Reinforced glass sheets * Reinforced glass sheets
* Plasma Glass Sheets * Phoron Glass Sheets
* Reinforced Plasma Glass Sheets (AKA Holy fuck strong windows) * Reinforced Phoron Glass Sheets (AKA Holy fuck strong windows)
* Glass shards - TODO: Move this into code/game/object/item/weapons * 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 /obj/item/stack/sheet/glass/phoronglass
name = "plasma glass" name = "phoron glass"
desc = "A very strong and very resistant sheet of a plasma-glass alloy." desc = "A very strong and very resistant sheet of a phoron-glass alloy."
singular_name = "plasma glass sheet" singular_name = "phoron glass sheet"
icon_state = "sheet-plasmaglass" icon_state = "sheet-phoronglass"
g_amt = 7500 g_amt = 7500
origin_tech = "materials=3;plasma=2" origin_tech = "materials=3;phoron=2"
created_window = /obj/structure/window/plasmabasic 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) 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) ) if( istype(W, /obj/item/stack/rods) )
var/obj/item/stack/rods/V = W 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_fingerprint(user)
RG.add_to_stacks(user) RG.add_to_stacks(user)
V.use(1) V.use(1)
@@ -342,17 +342,17 @@
return ..() return ..()
/* /*
* Reinforced plasma glass sheets * Reinforced phoron glass sheets
*/ */
/obj/item/stack/sheet/glass/plasmarglass /obj/item/stack/sheet/glass/phoronrglass
name = "reinforced plasma glass" name = "reinforced phoron glass"
desc = "Plasma glass which seems to have rods or something stuck in them." desc = "Phoron glass which seems to have rods or something stuck in them."
singular_name = "reinforced plasma glass sheet" singular_name = "reinforced phoron glass sheet"
icon_state = "sheet-plasmarglass" icon_state = "sheet-phoronrglass"
g_amt = 7500 g_amt = 7500
m_amt = 1875 m_amt = 1875
origin_tech = "materials=4;plasma=2" origin_tech = "materials=4;phoron=2"
created_window = /obj/structure/window/plasmareinforced 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) construct_window(user)

View File

@@ -4,7 +4,7 @@ Mineral Sheets
- Sandstone - Sandstone
- Diamond - Diamond
- Uranium - Uranium
- Plasma - Phoron
- Gold - Gold
- Silver - Silver
- Clown - Clown
@@ -90,26 +90,26 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \
..() ..()
/* /*
* Plasma * Phoron
*/ */
/obj/item/stack/sheet/mineral/plasma /obj/item/stack/sheet/mineral/phoron
name = "solid plasma" name = "solid phoron"
icon_state = "sheet-plasma" icon_state = "sheet-phoron"
force = 5.0 force = 5.0
throwforce = 5 throwforce = 5
w_class = 3.0 w_class = 3.0
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = "plasmatech=2;materials=2" origin_tech = "phorontech=2;materials=2"
perunit = 2000 perunit = 2000
sheettype = "plasma" sheettype = "phoron"
var/global/list/datum/stack_recipe/plasma_recipes = list ( \ var/global/list/datum/stack_recipe/phoron_recipes = list ( \
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \ 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) /obj/item/stack/sheet/mineral/phoron/New(var/loc, var/amount=null)
recipes = plasma_recipes recipes = phoron_recipes
pixel_x = rand(0,4)-4 pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4 pixel_y = rand(0,4)-4
..() ..()

View File

@@ -108,7 +108,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
/obj/item/stack/sheet/plasteel /obj/item/stack/sheet/plasteel
name = "plasteel" name = "plasteel"
singular_name = "plasteel sheet" 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" icon_state = "sheet-plasteel"
item_state = "sheet-metal" item_state = "sheet-metal"
m_amt = 7500 m_amt = 7500

View File

@@ -136,9 +136,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(!src.lit) if(!src.lit)
src.lit = 1 src.lit = 1
damtype = "fire" 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() 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() e.start()
del(src) del(src)
return return

View File

@@ -11,7 +11,7 @@
throw_range = 5 throw_range = 5
w_class = 3.0 w_class = 3.0
m_amt = 500 m_amt = 500
origin_tech = "combat=1;plasmatech=1" origin_tech = "combat=1;phorontech=1"
var/status = 0 var/status = 0
var/throw_amount = 100 var/throw_amount = 100
var/lit = 0 //on or off var/lit = 0 //on or off
@@ -19,7 +19,7 @@
var/turf/previousturf = null var/turf/previousturf = null
var/obj/item/weapon/weldingtool/weldtool = null var/obj/item/weapon/weldingtool/weldtool = null
var/obj/item/device/assembly/igniter/igniter = 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() /obj/item/weapon/flamethrower/Del()
@@ -102,9 +102,9 @@
update_icon() update_icon()
return return
if(istype(W,/obj/item/weapon/tank/plasma)) if(istype(W,/obj/item/weapon/tank/phoron))
if(ptank) if(ptank)
user << "<span class='notice'>There appears to already be a plasma tank loaded in [src]!</span>" user << "<span class='notice'>There appears to already be a phoron tank loaded in [src]!</span>"
return return
user.drop_item() user.drop_item()
ptank = W ptank = W
@@ -123,15 +123,15 @@
var/o2_concentration = ptank.air_contents.oxygen/total_moles var/o2_concentration = ptank.air_contents.oxygen/total_moles
var/n2_concentration = ptank.air_contents.nitrogen/total_moles var/n2_concentration = ptank.air_contents.nitrogen/total_moles
var/co2_concentration = ptank.air_contents.carbon_dioxide/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 Pressure: [round(pressure,0.1)] kPa"
user << "\blue Nitrogen: [round(n2_concentration*100)]%" user << "\blue Nitrogen: [round(n2_concentration*100)]%"
user << "\blue Oxygen: [round(o2_concentration*100)]%" user << "\blue Oxygen: [round(o2_concentration*100)]%"
user << "\blue CO2: [round(co2_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) if(unknown_concentration>0.01)
user << "\red Unknown: [round(unknown_concentration*100)]%" user << "\red Unknown: [round(unknown_concentration*100)]%"
user << "\blue Temperature: [round(ptank.air_contents.temperature-T0C)]&deg;C" user << "\blue Temperature: [round(ptank.air_contents.temperature-T0C)]&deg;C"
@@ -146,9 +146,9 @@
if(user.stat || user.restrained() || user.lying) return if(user.stat || user.restrained() || user.lying) return
user.set_machine(src) user.set_machine(src)
if(!ptank) if(!ptank)
user << "<span class='notice'>Attach a plasma tank first!</span>" user << "<span class='notice'>Attach a phoron tank first!</span>"
return return
var/dat = text("<TT><B>Flamethrower (<A HREF='?src=\ref[src];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [ptank.air_contents.return_pressure()]<BR>\nAmount to throw: <A HREF='?src=\ref[src];amount=-100'>-</A> <A HREF='?src=\ref[src];amount=-10'>-</A> <A HREF='?src=\ref[src];amount=-1'>-</A> [throw_amount] <A HREF='?src=\ref[src];amount=1'>+</A> <A HREF='?src=\ref[src];amount=10'>+</A> <A HREF='?src=\ref[src];amount=100'>+</A><BR>\n<A HREF='?src=\ref[src];remove=1'>Remove plasmatank</A> - <A HREF='?src=\ref[src];close=1'>Close</A></TT>") var/dat = text("<TT><B>Flamethrower (<A HREF='?src=\ref[src];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [ptank.air_contents.return_pressure()]<BR>\nAmount to throw: <A HREF='?src=\ref[src];amount=-100'>-</A> <A HREF='?src=\ref[src];amount=-10'>-</A> <A HREF='?src=\ref[src];amount=-1'>-</A> [throw_amount] <A HREF='?src=\ref[src];amount=1'>+</A> <A HREF='?src=\ref[src];amount=10'>+</A> <A HREF='?src=\ref[src];amount=100'>+</A><BR>\n<A HREF='?src=\ref[src];remove=1'>Remove phorontank</A> - <A HREF='?src=\ref[src];close=1'>Close</A></TT>")
user << browse(dat, "window=flamethrower;size=600x300") user << browse(dat, "window=flamethrower;size=600x300")
onclose(user, "flamethrower") onclose(user, "flamethrower")
return return
@@ -163,7 +163,7 @@
usr.set_machine(src) usr.set_machine(src)
if(href_list["light"]) if(href_list["light"])
if(!ptank) return if(!ptank) return
if(ptank.air_contents.toxins < 1) return if(ptank.air_contents.phoron < 1) return
if(!status) return if(!status) return
lit = !lit lit = !lit
if(lit) if(lit)
@@ -212,8 +212,8 @@
//Transfer 5% of current tank air contents to turf //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)) 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 //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)) new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.phoron,get_dir(loc,target))
air_transfer.toxins = 0 air_transfer.phoron = 0
target.assume_air(air_transfer) target.assume_air(air_transfer)
//Burn it based on transfered gas //Burn it based on transfered gas
//target.hotspot_expose(part4.air_contents.temperature*2,300) //target.hotspot_expose(part4.air_contents.temperature*2,300)

View File

@@ -213,7 +213,7 @@
B1.reagents.add_reagent("aluminum", 15) B1.reagents.add_reagent("aluminum", 15)
B1.reagents.add_reagent("fuel",20) B1.reagents.add_reagent("fuel",20)
B2.reagents.add_reagent("plasma", 15) B2.reagents.add_reagent("phoron", 15)
B2.reagents.add_reagent("sacid", 15) B2.reagents.add_reagent("sacid", 15)
B1.reagents.add_reagent("fuel",20) B1.reagents.add_reagent("fuel",20)

View File

@@ -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. 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.
<h2>Protolathe</h2> <h2>Protolathe</h2>
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. The downside is that, again, not all devices you make are 100% reliable when you first discover them.
<h2>Reliability and You</h2> <h2>Reliability and You</h2>

View File

@@ -104,7 +104,7 @@
/obj/item/weapon/cell/slime /obj/item/weapon/cell/slime
name = "charged slime core" 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" origin_tech = "powerstorage=2;biotech=4"
icon = 'icons/mob/slimes.dmi' //'icons/obj/harvest.dmi' icon = 'icons/mob/slimes.dmi' //'icons/obj/harvest.dmi'
icon_state = "yellow slime extract" //"potato_battery" icon_state = "yellow slime extract" //"potato_battery"

View File

@@ -15,9 +15,22 @@
max_combined_w_class = 21 max_combined_w_class = 21
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob) /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 * Backpack Types
*/ */

View File

@@ -8,29 +8,6 @@
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed", "disciplined") 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 /obj/item/weapon/storage/belt/utility
name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing. name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
desc = "Can hold various tools." desc = "Can hold various tools."

Some files were not shown because too many files have changed in this diff Show More