mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-18 02:25:06 +01:00
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into ewallet
Conflicts: icons/obj/items.dmi
This commit is contained in:
@@ -1341,7 +1341,6 @@
|
||||
#include "code\ZAS\Debug.dm"
|
||||
#include "code\ZAS\Diagnostic.dm"
|
||||
#include "code\ZAS\Fire.dm"
|
||||
#include "code\ZAS\Plasma.dm"
|
||||
#include "code\ZAS\Turf.dm"
|
||||
#include "code\ZAS\Variable Settings.dm"
|
||||
#include "code\ZAS\Zone.dm"
|
||||
|
||||
@@ -14,7 +14,7 @@ obj/machinery/atmospherics/trinary/filter
|
||||
/*
|
||||
Filter types:
|
||||
-1: Nothing
|
||||
0: Carbon Molecules: Plasma Toxin, Oxygen Agent B
|
||||
0: Phoron: Phoron, Oxygen Agent B
|
||||
1: Oxygen: Oxygen ONLY
|
||||
2: Nitrogen: Nitrogen ONLY
|
||||
3: Carbon Dioxide: Carbon Dioxide ONLY
|
||||
@@ -84,8 +84,8 @@ Filter types:
|
||||
|
||||
switch(filter_type)
|
||||
if(0) //removing hydrocarbons
|
||||
filtered_out.toxins = removed.toxins
|
||||
removed.toxins = 0
|
||||
filtered_out.phoron = removed.phoron
|
||||
removed.phoron = 0
|
||||
|
||||
if(removed.trace_gases.len>0)
|
||||
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
|
||||
switch(filter_type)
|
||||
if(0)
|
||||
current_filter_type = "Carbon Molecules"
|
||||
current_filter_type = "Phoron"
|
||||
if(1)
|
||||
current_filter_type = "Oxygen"
|
||||
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>Filtering: </b>[current_filter_type]<br><HR>
|
||||
<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=2'>Nitrogen</A><BR>
|
||||
<A href='?src=\ref[src];filterset=3'>Carbon Dioxide</A><BR>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
"scrubbing" = scrubbing,
|
||||
"panic" = panic,
|
||||
"filter_co2" = scrub_CO2,
|
||||
"filter_toxins" = scrub_Toxins,
|
||||
"filter_phoron" = scrub_Toxins,
|
||||
"filter_n2o" = scrub_N2O,
|
||||
"sigtype" = "status"
|
||||
)
|
||||
@@ -104,7 +104,7 @@
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
if(scrubbing)
|
||||
if((environment.toxins>0) || (environment.carbon_dioxide>0) || (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()
|
||||
|
||||
//Take a gas sample
|
||||
@@ -116,8 +116,8 @@
|
||||
var/datum/gas_mixture/filtered_out = new
|
||||
filtered_out.temperature = removed.temperature
|
||||
if(scrub_Toxins)
|
||||
filtered_out.toxins = removed.toxins
|
||||
removed.toxins = 0
|
||||
filtered_out.phoron = removed.phoron
|
||||
removed.phoron = 0
|
||||
if(scrub_CO2)
|
||||
filtered_out.carbon_dioxide = removed.carbon_dioxide
|
||||
removed.carbon_dioxide = 0
|
||||
|
||||
@@ -54,8 +54,6 @@ datum/pipe_network
|
||||
for(var/datum/pipeline/line_member in giver.line_members)
|
||||
line_member.network = src
|
||||
|
||||
del(giver)
|
||||
|
||||
update_network_gases()
|
||||
return 1
|
||||
|
||||
@@ -82,7 +80,7 @@ datum/pipe_network
|
||||
|
||||
air_transient.oxygen = 0
|
||||
air_transient.nitrogen = 0
|
||||
air_transient.toxins = 0
|
||||
air_transient.phoron = 0
|
||||
air_transient.carbon_dioxide = 0
|
||||
|
||||
|
||||
@@ -96,7 +94,7 @@ datum/pipe_network
|
||||
|
||||
air_transient.oxygen += gas.oxygen
|
||||
air_transient.nitrogen += gas.nitrogen
|
||||
air_transient.toxins += gas.toxins
|
||||
air_transient.phoron += gas.phoron
|
||||
air_transient.carbon_dioxide += gas.carbon_dioxide
|
||||
|
||||
if(gas.trace_gases.len)
|
||||
@@ -124,7 +122,7 @@ datum/pipe_network
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
gas.oxygen = air_transient.oxygen*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.temperature = air_transient.temperature
|
||||
@@ -151,7 +149,7 @@ proc/equalize_gases(datum/gas_mixture/list/gases)
|
||||
|
||||
var/total_oxygen = 0
|
||||
var/total_nitrogen = 0
|
||||
var/total_toxins = 0
|
||||
var/total_phoron = 0
|
||||
var/total_carbon_dioxide = 0
|
||||
|
||||
var/list/total_trace_gases = list()
|
||||
@@ -164,7 +162,7 @@ proc/equalize_gases(datum/gas_mixture/list/gases)
|
||||
|
||||
total_oxygen += gas.oxygen
|
||||
total_nitrogen += gas.nitrogen
|
||||
total_toxins += gas.toxins
|
||||
total_phoron += gas.phoron
|
||||
total_carbon_dioxide += gas.carbon_dioxide
|
||||
|
||||
if(gas.trace_gases.len)
|
||||
@@ -188,7 +186,7 @@ proc/equalize_gases(datum/gas_mixture/list/gases)
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
gas.oxygen = total_oxygen*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.temperature = temperature
|
||||
|
||||
@@ -39,7 +39,7 @@ datum/pipeline
|
||||
|
||||
member.air_temporary.oxygen = air.oxygen*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.temperature = air.temperature
|
||||
|
||||
@@ -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'
|
||||
name = "Pressure Tank (Plasma)"
|
||||
name = "Pressure Tank (Phoron)"
|
||||
|
||||
New()
|
||||
air_temporary = new
|
||||
air_temporary.volume = volume
|
||||
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
|
||||
icon = 'icons/obj/atmospherics/red_orange_pipe_tank.dmi'
|
||||
name = "Pressure Tank (Oxygen + Plasma)"
|
||||
name = "Pressure Tank (Oxygen + Phoron)"
|
||||
|
||||
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/n2_concentration = parent.air.nitrogen/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 Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
user << "\blue Phoron: [round(phoron_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(parent.air.temperature-T0C)]°C"
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
name = "wall"
|
||||
anchored = 1
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "plasma0"
|
||||
icon_state = "phoron0"
|
||||
opacity = 1
|
||||
var/closed_wall_dir = 0
|
||||
var/opening = 0
|
||||
var/mineral = "plasma"
|
||||
var/mineral = "phoron"
|
||||
var/is_metal = 0
|
||||
|
||||
/obj/structure/temple_falsewall/New()
|
||||
|
||||
@@ -60,9 +60,9 @@
|
||||
my_ladder.id = rand(999)
|
||||
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)
|
||||
//treat plasma slightly differently because it's the default wall type
|
||||
var/mineral = pick("uranium","sandstone","gold","iron","silver","diamond","clown","plasma")
|
||||
//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 phoron slightly differently because it's the default wall type
|
||||
var/mineral = pick("uranium","sandstone","gold","iron","silver","diamond","clown","phoron")
|
||||
//world << "init [mineral]"
|
||||
var/area/my_area = get_area(src)
|
||||
var/list/temple_turfs = get_area_turfs(my_area.type)
|
||||
@@ -86,8 +86,8 @@
|
||||
del(D)
|
||||
|
||||
for(var/turf/unsimulated/wall/T in temple_turfs)
|
||||
if(mineral != "plasma")
|
||||
T.icon_state = replacetext(T.icon_state, "plasma", mineral)
|
||||
if(mineral != "phoron")
|
||||
T.icon_state = replacetext(T.icon_state, "phoron", mineral)
|
||||
|
||||
/*for(var/obj/effect/landmark/falsewall_spawner/F in T.contents)
|
||||
//world << "falsewall_spawner found in wall"
|
||||
|
||||
@@ -289,8 +289,8 @@
|
||||
var/trap_type
|
||||
|
||||
New()
|
||||
trap_type = pick(50;"thrower","sawburst","poison_dart","flame_burst",10;"plasma_gas",5;"n2_gas")
|
||||
if( (trap_type == "plasma_gas" || trap_type == "n2_gas") && prob(10))
|
||||
trap_type = pick(50;"thrower","sawburst","poison_dart","flame_burst",10;"phoron_gas",5;"n2_gas")
|
||||
if( (trap_type == "phoron_gas" || trap_type == "n2_gas") && prob(10))
|
||||
new /obj/effect/glowshroom(src.loc)
|
||||
|
||||
//hint that this tile is dangerous
|
||||
@@ -337,8 +337,8 @@
|
||||
myloc.overlays -= flicker
|
||||
del flicker
|
||||
//flick("flameburst",src)
|
||||
if("plasma_gas")
|
||||
//spawn a bunch of plasma
|
||||
if("phoron_gas")
|
||||
//spawn a bunch of phoron
|
||||
if("n2_gas")
|
||||
//spawn a bunch of sleeping gas
|
||||
if("thrower")
|
||||
|
||||
@@ -174,5 +174,5 @@
|
||||
desc = ""
|
||||
density = 1
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "plasma0"
|
||||
var/mineral = "plasma"
|
||||
icon_state = "phoron0"
|
||||
var/mineral = "phoron"
|
||||
|
||||
@@ -56,15 +56,15 @@ datum/design/rust_fuel_port
|
||||
/obj/item/weapon/module/rust_fuel_compressor
|
||||
name = "Internal circuitry (RUST fuel compressor)"
|
||||
icon_state = "card_mod"
|
||||
origin_tech = "materials=6;plasmatech=4"
|
||||
origin_tech = "materials=6;phorontech=4"
|
||||
|
||||
datum/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."
|
||||
id = "rust_fuel_compressor"
|
||||
req_tech = list("materials" = 6, "plasmatech" = 4)
|
||||
req_tech = list("materials" = 6, "phorontech" = 4)
|
||||
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"
|
||||
|
||||
//////////////////////////////////////
|
||||
@@ -74,7 +74,7 @@ datum/design/rust_fuel_compressor
|
||||
name = "Internal circuitry (RUST tokamak core)"
|
||||
build_path = "/obj/machinery/power/rust_core"
|
||||
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."
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
|
||||
@@ -87,10 +87,10 @@ datum/design/rust_core
|
||||
name = "Internal circuitry (RUST tokamak core)"
|
||||
desc = "The circuit board that for a RUST-pattern tokamak fusion core."
|
||||
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
|
||||
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"
|
||||
|
||||
//////////////////////////////////////
|
||||
@@ -100,7 +100,7 @@ datum/design/rust_core
|
||||
name = "Internal circuitry (RUST fuel injector)"
|
||||
build_path = "/obj/machinery/power/rust_fuel_injector"
|
||||
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."
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
|
||||
@@ -113,8 +113,8 @@ datum/design/rust_injector
|
||||
name = "Internal circuitry (RUST tokamak core)"
|
||||
desc = "The circuit board that for a RUST-pattern particle accelerator."
|
||||
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
|
||||
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"
|
||||
|
||||
@@ -4,7 +4,7 @@ Deuterium-deuterium fusion : 40 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
|
||||
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/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/emp_overload = 0
|
||||
@@ -128,34 +128,34 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
|
||||
radiation = 0
|
||||
|
||||
//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
|
||||
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
|
||||
|
||||
//add plasma from the surrounding environment
|
||||
//add phoron from the surrounding environment
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
//hack in some stuff to remove plasma 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
|
||||
//hack in some stuff to remove phoron from the air because SCIENCE
|
||||
//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 (?)
|
||||
//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)
|
||||
//world << "\blue moles_covered: [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)
|
||||
//world << "\blue[plasma_captured.toxins] moles of plasma captured"
|
||||
plasma_captured.temperature = gas_covered.temperature
|
||||
plasma_captured.update_values()
|
||||
phoron_captured.phoron = round(gas_covered.phoron * transfer_ratio)
|
||||
//world << "\blue[phoron_captured.phoron] moles of phoron captured"
|
||||
phoron_captured.temperature = gas_covered.temperature
|
||||
phoron_captured.update_values()
|
||||
//
|
||||
gas_covered.toxins -= plasma_captured.toxins
|
||||
gas_covered.phoron -= phoron_captured.phoron
|
||||
gas_covered.update_values()
|
||||
//
|
||||
held_plasma.merge(plasma_captured)
|
||||
held_phoron.merge(phoron_captured)
|
||||
//
|
||||
environment.merge(gas_covered)
|
||||
|
||||
@@ -169,35 +169,35 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
|
||||
mega_energy -= energy_lost
|
||||
radiation += energy_lost*/
|
||||
|
||||
//change held plasma temp according to energy levels
|
||||
//change held phoron temp according to energy levels
|
||||
//SPECIFIC_HEAT_TOXIN
|
||||
if(mega_energy > 0 && held_plasma.toxins)
|
||||
var/heat_capacity = held_plasma.heat_capacity()//200 * number of plasma moles
|
||||
if(mega_energy > 0 && held_phoron.phoron)
|
||||
var/heat_capacity = held_phoron.heat_capacity()//200 * number of phoron moles
|
||||
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( held_plasma.toxins > (MOLES_CELLSTANDARD * 7) * (50 / field_strength) )
|
||||
LosePlasma()*/
|
||||
if(held_plasma.toxins > 1)
|
||||
//lose a random amount of plasma back into the air, increased by the field strength (want to switch this over to frequency eventually)
|
||||
//if there is too much phoron in the field, lose some
|
||||
/*if( held_phoron.phoron > (MOLES_CELLSTANDARD * 7) * (50 / field_strength) )
|
||||
LosePhoron()*/
|
||||
if(held_phoron.phoron > 1)
|
||||
//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))
|
||||
//world << "lost [loss_ratio*100]% of held plasma"
|
||||
//world << "lost [loss_ratio*100]% of held phoron"
|
||||
//
|
||||
var/datum/gas_mixture/plasma_lost = new
|
||||
plasma_lost.temperature = held_plasma.temperature
|
||||
var/datum/gas_mixture/phoron_lost = new
|
||||
phoron_lost.temperature = held_phoron.temperature
|
||||
//
|
||||
plasma_lost.toxins = held_plasma.toxins * loss_ratio
|
||||
//plasma_lost.update_values()
|
||||
held_plasma.toxins -= held_plasma.toxins * loss_ratio
|
||||
//held_plasma.update_values()
|
||||
phoron_lost.phoron = held_phoron.phoron * loss_ratio
|
||||
//phoron_lost.update_values()
|
||||
held_phoron.phoron -= held_phoron.phoron * loss_ratio
|
||||
//held_phoron.update_values()
|
||||
//
|
||||
environment.merge(plasma_lost)
|
||||
environment.merge(phoron_lost)
|
||||
radiation += loss_ratio * mega_energy * 0.1
|
||||
mega_energy -= loss_ratio * mega_energy * 0.1
|
||||
else
|
||||
held_plasma.toxins = 0
|
||||
//held_plasma.update_values()
|
||||
held_phoron.phoron = 0
|
||||
//held_phoron.update_values()
|
||||
|
||||
//handle some reactants formatting
|
||||
for(var/reactant in dormant_reactant_quantities)
|
||||
@@ -256,9 +256,9 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
|
||||
radiation += mega_energy
|
||||
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()
|
||||
environment.merge(held_plasma)
|
||||
environment.merge(held_phoron)
|
||||
|
||||
/obj/effect/rust_em_field/proc/change_size(var/newsize = 1)
|
||||
//
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
/*
|
||||
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
|
||||
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
|
||||
(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)
|
||||
|
||||
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)
|
||||
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
|
||||
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
|
||||
|
||||
the field is constantly pulling in plasma 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
|
||||
the field is constantly pulling in phoron from the surrounding [local] atmosphere
|
||||
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 -
|
||||
|
||||
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
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "Circuit board (Experimental hull shield generator)"
|
||||
board_type = "machine"
|
||||
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."
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
|
||||
@@ -20,9 +20,9 @@ datum/design/shield_gen_ex
|
||||
name = "Circuit Design (Experimental hull shield generator)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental hull shield generator."
|
||||
id = "shield_gen"
|
||||
req_tech = list("bluespace" = 4, "plasmatech" = 3)
|
||||
req_tech = list("bluespace" = 4, "phorontech" = 3)
|
||||
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"
|
||||
|
||||
////////////////////////////////////////
|
||||
@@ -32,7 +32,7 @@ datum/design/shield_gen_ex
|
||||
name = "Circuit board (Experimental shield generator)"
|
||||
board_type = "machine"
|
||||
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."
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
|
||||
@@ -46,9 +46,9 @@ datum/design/shield_gen
|
||||
name = "Circuit Design (Experimental shield generator)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental shield generator."
|
||||
id = "shield_gen"
|
||||
req_tech = list("bluespace" = 4, "plasmatech" = 3)
|
||||
req_tech = list("bluespace" = 4, "phorontech" = 3)
|
||||
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"
|
||||
|
||||
////////////////////////////////////////
|
||||
@@ -74,5 +74,5 @@ datum/design/shield_cap
|
||||
id = "shield_cap"
|
||||
req_tech = list("magnets" = 3, "powerstorage" = 4)
|
||||
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"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
|
||||
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
var/phoron_alert = 0
|
||||
var/fire_alert = 0
|
||||
|
||||
var/temperature_alert = 0
|
||||
@@ -455,7 +455,7 @@
|
||||
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.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]"
|
||||
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
|
||||
|
||||
@@ -282,7 +282,7 @@ siphoning
|
||||
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>;
|
||||
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
|
||||
<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>
|
||||
@@ -332,7 +332,7 @@ table tr:first-child th:first-child { border: none;}
|
||||
var/list/gases = list(
|
||||
"oxygen" = "O<sub>2</sub>",
|
||||
"carbon dioxide" = "CO<sub>2</sub>",
|
||||
"plasma" = "Toxin",
|
||||
"phoron" = "Toxin",
|
||||
"other" = "Other",
|
||||
)
|
||||
var/list/tlv
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/obj/structure/filingcabinet/attackby(obj/item/weapon/paper/P,mob/M)
|
||||
if(istype(P))
|
||||
M << "You put the [P] in the [src]."
|
||||
M << "You put \the [P] in the [src]."
|
||||
M.drop_item()
|
||||
P.loc = src
|
||||
else
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
// radio
|
||||
if (0)
|
||||
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/radio/signaler/p1 = new /obj/item/device/radio/signaler(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
R.part1 = p1
|
||||
@@ -74,7 +74,7 @@
|
||||
// proximity
|
||||
if (1)
|
||||
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/prox_sensor/p1 = new /obj/item/device/prox_sensor(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
R.part1 = p1
|
||||
@@ -96,7 +96,7 @@
|
||||
// timer
|
||||
if (2)
|
||||
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/timer/p1 = new /obj/item/device/timer(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
R.part1 = p1
|
||||
@@ -112,7 +112,7 @@
|
||||
//bombvest
|
||||
if(3)
|
||||
var/obj/item/clothing/suit/armor/a_i_a_ptank/R = new /obj/item/clothing/suit/armor/a_i_a_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p4 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p4 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/healthanalyzer/p1 = new /obj/item/device/healthanalyzer(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
var/obj/item/clothing/suit/armor/vest/p3 = new /obj/item/clothing/suit/armor/vest(R)
|
||||
@@ -140,7 +140,7 @@
|
||||
if (0)
|
||||
|
||||
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/device/radio/signaler/S = new(V)
|
||||
@@ -164,7 +164,7 @@
|
||||
if (1)
|
||||
|
||||
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/device/prox_sensor/P = new(V)
|
||||
@@ -187,7 +187,7 @@
|
||||
// timer
|
||||
if (2)
|
||||
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/device/timer/T = new(V)
|
||||
|
||||
@@ -193,12 +193,12 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/closet/wardrobe/toxins_white
|
||||
name = "toxins wardrobe"
|
||||
/obj/structure/closet/wardrobe/science_white
|
||||
name = "science wardrobe"
|
||||
icon_state = "white"
|
||||
icon_closed = "white"
|
||||
|
||||
/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)
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
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/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/clothing/mask/gas(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/clothing/under/rank/chemist(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)
|
||||
|
||||
/obj/item/wardrobe/hos
|
||||
|
||||
@@ -243,11 +243,11 @@
|
||||
"Do you think that caused a trauma with you?",
|
||||
"Have you ever previously spoken to anybody about this?")),
|
||||
new/datum/text_parser/keyword(
|
||||
list("bomb", "explosive", "toxin", "plasma"),
|
||||
list("bomb", "explosive", "toxin", "phoron"),
|
||||
list(
|
||||
"Do you worry about bombs often?",
|
||||
"Do you work in toxins?",
|
||||
"Do you find it odd to worry about bombs on a toxins research vessel?")),
|
||||
"Do you work in science?",
|
||||
"Do you find it odd to worry about bombs on a science research vessel?")),
|
||||
new/datum/text_parser/keyword(
|
||||
list("work", "job", "head", "staff", "transen"),
|
||||
list(
|
||||
|
||||
@@ -49,7 +49,7 @@ log transactions
|
||||
A.loc = src
|
||||
inserted += 50
|
||||
return
|
||||
if(istype(A,/obj/item/weapon/coin/plasma))
|
||||
if(istype(A,/obj/item/weapon/coin/phoron))
|
||||
cashes += A
|
||||
user.drop_item()
|
||||
A.loc = src
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
|
||||
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
|
||||
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
|
||||
\"further proof\" of the colony's anti-NanoTrasen stance. Meanwhile, Refuge Security has been unable to quell
|
||||
the riots. More on this at 6."}
|
||||
|
||||
+13
-13
@@ -239,21 +239,21 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
|
||||
full_oxy = A.oxygen * size
|
||||
full_nitro = A.nitrogen * size
|
||||
full_co2 = A.carbon_dioxide * size
|
||||
full_plasma = A.toxins * size
|
||||
full_phoron = A.phoron * size
|
||||
|
||||
full_heat_capacity = A.heat_capacity() * size
|
||||
|
||||
s_full_oxy = B.oxygen * share_size
|
||||
s_full_nitro = B.nitrogen * 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
|
||||
|
||||
oxy_avg = (full_oxy + s_full_oxy) / (size + share_size)
|
||||
nit_avg = (full_nitro + s_full_nitro) / (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)
|
||||
|
||||
@@ -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.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.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 )
|
||||
|
||||
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.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 )
|
||||
|
||||
@@ -314,7 +314,7 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
|
||||
unsim_oxygen = 0
|
||||
unsim_nitrogen = 0
|
||||
unsim_co2 = 0
|
||||
unsim_plasma = 0
|
||||
unsim_phoron = 0
|
||||
unsim_heat_capacity = 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_co2 = avg_unsim.carbon_dioxide
|
||||
unsim_nitrogen = avg_unsim.nitrogen
|
||||
unsim_plasma = avg_unsim.toxins
|
||||
unsim_phoron = avg_unsim.phoron
|
||||
unsim_temperature = avg_unsim.temperature
|
||||
share_size = max(1, max(size + 3, 1) + 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_co2 += T.carbon_dioxide
|
||||
unsim_nitrogen += T.nitrogen
|
||||
unsim_plasma += T.toxins
|
||||
unsim_phoron += T.phoron
|
||||
unsim_temperature += T.temperature/unsimulated_tiles.len
|
||||
|
||||
//These values require adjustment in order to properly represent a room of the specified size.
|
||||
unsim_oxygen *= correction_ratio
|
||||
unsim_co2 *= correction_ratio
|
||||
unsim_nitrogen *= correction_ratio
|
||||
unsim_plasma *= correction_ratio
|
||||
unsim_phoron *= correction_ratio
|
||||
tileslen = unsimulated_tiles.len
|
||||
|
||||
else //invalid input type
|
||||
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
|
||||
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_nitro = A.nitrogen * size
|
||||
full_co2 = A.carbon_dioxide * size
|
||||
full_plasma = A.toxins * size
|
||||
full_phoron = A.phoron * size
|
||||
|
||||
full_heat_capacity = A.heat_capacity() * size
|
||||
|
||||
oxy_avg = (full_oxy + unsim_oxygen*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)
|
||||
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
|
||||
|
||||
@@ -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.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.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 )
|
||||
|
||||
|
||||
@@ -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)
|
||||
if(A.oxygen != B.oxygen) 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.temperature != B.temperature) return 0
|
||||
return 1
|
||||
|
||||
@@ -19,7 +19,7 @@ client/proc/Zone_Info(turf/T as null|turf)
|
||||
mob << "No zone here."
|
||||
var/datum/gas_mixture/mix = T.return_air()
|
||||
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
|
||||
if(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 << "Oxygen: [air.oxygen]"
|
||||
client << "Nitrogen: [air.nitrogen]"
|
||||
client << "Plasma: [air.toxins]"
|
||||
client << "Phoron: [air.phoron]"
|
||||
client << "Carbon Dioxide: [air.carbon_dioxide]"
|
||||
client << "Temperature: [air.temperature] K"
|
||||
client << "Heat Energy: [air.temperature * air.heat_capacity()] J"
|
||||
|
||||
+16
-16
@@ -3,8 +3,8 @@
|
||||
Making Bombs with ZAS:
|
||||
Make burny fire with lots of burning
|
||||
Draw off 5000K gas from burny fire
|
||||
Separate gas into oxygen and plasma components
|
||||
Obtain plasma and oxygen tanks filled up about 50-75% with normal-temp gas
|
||||
Separate gas into oxygen and phoron components
|
||||
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.
|
||||
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)
|
||||
return 1
|
||||
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
|
||||
|
||||
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
|
||||
if(air_contents.oxygen < 0.1)
|
||||
air_contents.oxygen = 0
|
||||
if(air_contents.toxins < 0.1)
|
||||
air_contents.toxins = 0
|
||||
if(air_contents.phoron < 0.1)
|
||||
air_contents.phoron = 0
|
||||
if(fuel)
|
||||
if(fuel.moles < 0.1)
|
||||
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.
|
||||
//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
|
||||
//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!
|
||||
|
||||
@@ -188,11 +188,11 @@ turf/simulated/apply_fire_protection()
|
||||
datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, force_burn)
|
||||
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/datum/gas/volatile_fuel/fuel = locate() in trace_gases
|
||||
|
||||
total_fuel += toxins
|
||||
total_fuel += phoron
|
||||
|
||||
if(fuel)
|
||||
//Volatile Fuel
|
||||
@@ -227,9 +227,9 @@ datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, forc
|
||||
//remove and add gasses as calculated
|
||||
oxygen -= min(oxygen, total_oxygen * used_reactants_ratio )
|
||||
|
||||
toxins -= min(toxins, (toxins * used_fuel_ratio * used_reactants_ratio ) * 3)
|
||||
if(toxins < 0)
|
||||
toxins = 0
|
||||
phoron -= min(phoron, (phoron * used_fuel_ratio * used_reactants_ratio ) * 3)
|
||||
if(phoron < 0)
|
||||
phoron = 0
|
||||
|
||||
carbon_dioxide += max(2 * total_fuel, 0)
|
||||
|
||||
@@ -254,10 +254,10 @@ datum/gas_mixture/proc/check_recombustability(obj/effect/decal/cleanable/liquid_
|
||||
|
||||
var/datum/gas/volatile_fuel/fuel = locate() in trace_gases
|
||||
|
||||
if(oxygen && (toxins || fuel || liquid))
|
||||
if(oxygen && (phoron || fuel || liquid))
|
||||
if(liquid)
|
||||
return 1
|
||||
if(toxins >= 0.1)
|
||||
if(phoron >= 0.1)
|
||||
return 1
|
||||
if(fuel && fuel.moles >= 0.1)
|
||||
return 1
|
||||
@@ -269,10 +269,10 @@ datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fu
|
||||
|
||||
var/datum/gas/volatile_fuel/fuel = locate() in trace_gases
|
||||
|
||||
if(oxygen && (toxins || fuel || liquid))
|
||||
if(oxygen && (phoron || fuel || liquid))
|
||||
if(liquid)
|
||||
return 1
|
||||
if (toxins >= 0.1)
|
||||
if (phoron >= 0.1)
|
||||
return 1
|
||||
if(fuel && fuel.moles >= 0.1)
|
||||
return 1
|
||||
@@ -288,7 +288,7 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue
|
||||
|
||||
if(check_recombustability(liquid))
|
||||
|
||||
total_fuel += toxins
|
||||
total_fuel += phoron
|
||||
|
||||
if(liquid)
|
||||
total_fuel += liquid.amount
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
var/image/contamination_overlay = image('icons/effects/contamination.dmi')
|
||||
|
||||
/pl_control
|
||||
var/PLASMA_DMG = 3
|
||||
var/PLASMA_DMG_NAME = "Plasma Damage Amount"
|
||||
var/PLASMA_DMG_DESC = "Self Descriptive"
|
||||
var/PHORON_DMG = 3
|
||||
var/PHORON_DMG_NAME = "Phoron Damage Amount"
|
||||
var/PHORON_DMG_DESC = "Self Descriptive"
|
||||
|
||||
var/CLOTH_CONTAMINATION = 1
|
||||
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/PLASMAGUARD_ONLY_NAME = "\"PlasmaGuard Only\""
|
||||
var/PLASMAGUARD_ONLY_DESC = "If this is on, only biosuits and spacesuits protect against contamination and ill effects."
|
||||
var/PHORONGUARD_ONLY = 0
|
||||
var/PHORONGUARD_ONLY_NAME = "\"PhoronGuard Only\""
|
||||
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_NAME = "Genetic Corruption Chance"
|
||||
var/GENETIC_CORRUPTION_DESC = "Chance of genetic corruption as well as toxic damage, X in 10,000."
|
||||
|
||||
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/EYE_BURNS = 1
|
||||
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_NAME = "Contamination Loss"
|
||||
var/CONTAMINATION_LOSS_DESC = "How much toxin damage is dealt from contaminated clothing" //Per tick? ASK ARYN
|
||||
|
||||
var/PLASMA_HALLUCINATION = 0
|
||||
var/PLASMA_HALLUCINATION_NAME = "Plasma Hallucination"
|
||||
var/PLASMA_HALLUCINATION_DESC = "Does being in plasma cause you to hallucinate?"
|
||||
var/PHORON_HALLUCINATION = 0
|
||||
var/PHORON_HALLUCINATION_NAME = "Phoron Hallucination"
|
||||
var/PHORON_HALLUCINATION_DESC = "Does being in phoron cause you to hallucinate?"
|
||||
|
||||
var/N2O_HALLUCINATION = 1
|
||||
var/N2O_HALLUCINATION_NAME = "N2O Hallucination"
|
||||
@@ -43,7 +43,7 @@ obj/var/contaminated = 0
|
||||
|
||||
/obj/item/proc/can_contaminate()
|
||||
//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/clothing)) return 1
|
||||
|
||||
@@ -66,7 +66,7 @@ obj/var/contaminated = 0
|
||||
suit_contamination()
|
||||
|
||||
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.
|
||||
// if(istype(back,/obj/item/weapon/storage/backpack))
|
||||
@@ -75,7 +75,7 @@ obj/var/contaminated = 0
|
||||
/mob/proc/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
|
||||
if(vsc.plc.CLOTH_CONTAMINATION) contaminate()
|
||||
@@ -111,7 +111,7 @@ obj/var/contaminated = 0
|
||||
if(vsc.plc.GENETIC_CORRUPTION)
|
||||
if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION)
|
||||
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)
|
||||
|
||||
|
||||
@@ -128,8 +128,8 @@ obj/var/contaminated = 0
|
||||
/mob/living/carbon/human/proc/pl_head_protected()
|
||||
//Checks if the head is adequately sealed.
|
||||
if(head)
|
||||
if(vsc.plc.PLASMAGUARD_ONLY)
|
||||
if(head.flags & PLASMAGUARD)
|
||||
if(vsc.plc.PHORONGUARD_ONLY)
|
||||
if(head.flags & PHORONGUARD)
|
||||
return 1
|
||||
else if(head.flags & HEADCOVERSEYES)
|
||||
return 1
|
||||
@@ -138,8 +138,8 @@ obj/var/contaminated = 0
|
||||
/mob/living/carbon/human/proc/pl_suit_protected()
|
||||
//Checks if the suit is adequately sealed.
|
||||
if(wear_suit)
|
||||
if(vsc.plc.PLASMAGUARD_ONLY)
|
||||
if(wear_suit.flags & PLASMAGUARD) return 1
|
||||
if(vsc.plc.PHORONGUARD_ONLY)
|
||||
if(wear_suit.flags & PHORONGUARD) return 1
|
||||
else
|
||||
if(wear_suit.flags_inv & HIDEJUMPSUIT) return 1
|
||||
return 0
|
||||
@@ -153,11 +153,11 @@ obj/var/contaminated = 0
|
||||
|
||||
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)
|
||||
var/datum/gas_mixture/env = return_air(1)
|
||||
if(!env)
|
||||
return
|
||||
if(env.toxins > MOLES_PLASMA_VISIBLE + 1)
|
||||
if(env.phoron > MOLES_PHORON_VISIBLE + 1)
|
||||
if(I.can_contaminate())
|
||||
I.contaminate()
|
||||
+4
-5
@@ -173,7 +173,6 @@
|
||||
if(connections) connections.update_all()
|
||||
|
||||
/turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
|
||||
del(giver)
|
||||
return 0
|
||||
|
||||
/turf/return_air()
|
||||
@@ -183,7 +182,7 @@
|
||||
GM.oxygen = oxygen
|
||||
GM.carbon_dioxide = carbon_dioxide
|
||||
GM.nitrogen = nitrogen
|
||||
GM.toxins = toxins
|
||||
GM.phoron = phoron
|
||||
|
||||
GM.temperature = temperature
|
||||
GM.update_values()
|
||||
@@ -193,12 +192,12 @@
|
||||
/turf/remove_air(amount as num)
|
||||
var/datum/gas_mixture/GM = new
|
||||
|
||||
var/sum = oxygen + carbon_dioxide + nitrogen + toxins
|
||||
var/sum = oxygen + carbon_dioxide + nitrogen + phoron
|
||||
if(sum>0)
|
||||
GM.oxygen = (oxygen/sum)*amount
|
||||
GM.carbon_dioxide = (carbon_dioxide/sum)*amount
|
||||
GM.nitrogen = (nitrogen/sum)*amount
|
||||
GM.toxins = (toxins/sum)*amount
|
||||
GM.phoron = (phoron/sum)*amount
|
||||
|
||||
GM.temperature = temperature
|
||||
GM.update_values()
|
||||
@@ -231,7 +230,7 @@
|
||||
/turf/proc/make_air()
|
||||
air = new/datum/gas_mixture
|
||||
air.temperature = temperature
|
||||
air.adjust(oxygen, carbon_dioxide, nitrogen, toxins)
|
||||
air.adjust(oxygen, carbon_dioxide, nitrogen, phoron)
|
||||
air.group_multiplier = 1
|
||||
air.volume = CELL_VOLUME
|
||||
|
||||
|
||||
@@ -186,51 +186,51 @@ var/global/vs_control/vsc = new
|
||||
newvalue = vars[V]
|
||||
V = newvalue
|
||||
|
||||
/vs_control/proc/ChangePlasma()
|
||||
/vs_control/proc/ChangePhoron()
|
||||
for(var/V in plc.settings)
|
||||
plc.Randomize(V)
|
||||
|
||||
/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")
|
||||
var/def = input(user, "Which of these presets should be used?") as null|anything in setting_choices
|
||||
if(!def)
|
||||
return
|
||||
switch(def)
|
||||
if("Plasma - Standard")
|
||||
plc.CLOTH_CONTAMINATION = 1 //If this is on, plasma does damage by getting into cloth.
|
||||
plc.PLASMAGUARD_ONLY = 0
|
||||
if("Phoron - Standard")
|
||||
plc.CLOTH_CONTAMINATION = 1 //If this is on, phoron does damage by getting into cloth.
|
||||
plc.PHORONGUARD_ONLY = 0
|
||||
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.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
plc.PLASMA_HALLUCINATION = 0
|
||||
plc.SKIN_BURNS = 0 //Phoron has an effect similar to mustard gas on the un-suited.
|
||||
plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
|
||||
plc.PHORON_HALLUCINATION = 0
|
||||
plc.CONTAMINATION_LOSS = 0.02
|
||||
|
||||
if("Plasma - Low Hazard")
|
||||
plc.CLOTH_CONTAMINATION = 0 //If this is on, plasma does damage by getting into cloth.
|
||||
plc.PLASMAGUARD_ONLY = 0
|
||||
if("Phoron - Low Hazard")
|
||||
plc.CLOTH_CONTAMINATION = 0 //If this is on, phoron does damage by getting into cloth.
|
||||
plc.PHORONGUARD_ONLY = 0
|
||||
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.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
plc.PLASMA_HALLUCINATION = 0
|
||||
plc.SKIN_BURNS = 0 //Phoron has an effect similar to mustard gas on the un-suited.
|
||||
plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
|
||||
plc.PHORON_HALLUCINATION = 0
|
||||
plc.CONTAMINATION_LOSS = 0.01
|
||||
|
||||
if("Plasma - High Hazard")
|
||||
plc.CLOTH_CONTAMINATION = 1 //If this is on, plasma does damage by getting into cloth.
|
||||
plc.PLASMAGUARD_ONLY = 0
|
||||
if("Phoron - High Hazard")
|
||||
plc.CLOTH_CONTAMINATION = 1 //If this is on, phoron does damage by getting into cloth.
|
||||
plc.PHORONGUARD_ONLY = 0
|
||||
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.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
plc.PLASMA_HALLUCINATION = 1
|
||||
plc.SKIN_BURNS = 1 //Phoron has an effect similar to mustard gas on the un-suited.
|
||||
plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
|
||||
plc.PHORON_HALLUCINATION = 1
|
||||
plc.CONTAMINATION_LOSS = 0.05
|
||||
|
||||
if("Plasma - Oh Shit!")
|
||||
plc.CLOTH_CONTAMINATION = 1 //If this is on, plasma does damage by getting into cloth.
|
||||
plc.PLASMAGUARD_ONLY = 1
|
||||
if("Phoron - Oh Shit!")
|
||||
plc.CLOTH_CONTAMINATION = 1 //If this is on, phoron does damage by getting into cloth.
|
||||
plc.PHORONGUARD_ONLY = 1
|
||||
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.EYE_BURNS = 1 //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
plc.PLASMA_HALLUCINATION = 1
|
||||
plc.SKIN_BURNS = 1 //Phoron has an effect similar to mustard gas on the un-suited.
|
||||
plc.EYE_BURNS = 1 //Phoron burns the eyes of anyone not wearing eye protection.
|
||||
plc.PHORON_HALLUCINATION = 1
|
||||
plc.CONTAMINATION_LOSS = 0.075
|
||||
|
||||
if("ZAS - Normal")
|
||||
@@ -291,7 +291,7 @@ var/global/vs_control/vsc = new
|
||||
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()
|
||||
|
||||
|
||||
+1
-1
@@ -130,7 +130,7 @@ Class Procs:
|
||||
|
||||
/zone/proc/dbg_data(mob/M)
|
||||
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]°K ([air.temperature - T0C]°C)"
|
||||
M << "O2 per N2: [(air.nitrogen ? air.oxygen/air.nitrogen : "N/A")] Moles: [air.total_moles]"
|
||||
M << "Simulated: [contents.len] ([air.group_multiplier])"
|
||||
|
||||
+62
-62
@@ -7,8 +7,8 @@ What are the archived variables for?
|
||||
#define SPECIFIC_HEAT_TOXIN 200
|
||||
#define SPECIFIC_HEAT_AIR 20
|
||||
#define SPECIFIC_HEAT_CDO 30
|
||||
#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) \
|
||||
max(0, carbon_dioxide * SPECIFIC_HEAT_CDO + (oxygen + nitrogen) * SPECIFIC_HEAT_AIR + toxins * SPECIFIC_HEAT_TOXIN)
|
||||
#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,phoron) \
|
||||
max(0, carbon_dioxide * SPECIFIC_HEAT_CDO + (oxygen + nitrogen) * SPECIFIC_HEAT_AIR + phoron * SPECIFIC_HEAT_TOXIN)
|
||||
|
||||
#define MINIMUM_HEAT_CAPACITY 0.0003
|
||||
#define QUANTIZE(variable) (round(variable,0.0001))
|
||||
@@ -17,7 +17,7 @@ What are the archived variables for?
|
||||
/hook/startup/proc/createGasOverlays()
|
||||
plmaster = new /obj/effect/overlay()
|
||||
plmaster.icon = 'icons/effects/tile_effects.dmi'
|
||||
plmaster.icon_state = "plasma"
|
||||
plmaster.icon_state = "phoron"
|
||||
plmaster.layer = FLY_LAYER
|
||||
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/carbon_dioxide = 0
|
||||
var/nitrogen = 0
|
||||
var/toxins = 0
|
||||
var/phoron = 0
|
||||
|
||||
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/carbon_dioxide_archived
|
||||
var/tmp/nitrogen_archived
|
||||
var/tmp/toxins_archived
|
||||
var/tmp/phoron_archived
|
||||
|
||||
var/tmp/temperature_archived
|
||||
|
||||
@@ -85,7 +85,7 @@ What are the archived variables for?
|
||||
oxygen = max(0, oxygen + o2)
|
||||
carbon_dioxide = max(0, carbon_dioxide + co2)
|
||||
nitrogen = max(0, nitrogen + n2)
|
||||
toxins = max(0, toxins + tx)
|
||||
phoron = max(0, phoron + tx)
|
||||
|
||||
//handle trace gasses
|
||||
for(var/datum/gas/G in traces)
|
||||
@@ -119,7 +119,7 @@ What are the archived variables for?
|
||||
//Inputs: None
|
||||
//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)
|
||||
for(var/datum/gas/trace_gas in trace_gases)
|
||||
@@ -133,7 +133,7 @@ What are the archived variables for?
|
||||
//Inputs: None
|
||||
//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)
|
||||
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()
|
||||
return total_moles
|
||||
/*var/moles = oxygen + carbon_dioxide + nitrogen + toxins
|
||||
/*var/moles = oxygen + carbon_dioxide + nitrogen + phoron
|
||||
|
||||
if(trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in trace_gases)
|
||||
@@ -187,7 +187,7 @@ What are the archived variables for?
|
||||
//Inputs: None
|
||||
//Outputs: None
|
||||
|
||||
total_moles = oxygen + carbon_dioxide + nitrogen + toxins
|
||||
total_moles = oxygen + carbon_dioxide + nitrogen + phoron
|
||||
|
||||
if(trace_gases.len)
|
||||
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
|
||||
|
||||
graphic = 0
|
||||
if(toxins > MOLES_PLASMA_VISIBLE)
|
||||
if(phoron > MOLES_PHORON_VISIBLE)
|
||||
graphic = 1
|
||||
else if(length(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
|
||||
fuel_burnt += burned_fuel
|
||||
|
||||
//Handle plasma burning
|
||||
//Handle phoron burning
|
||||
if(toxins > MINIMUM_HEAT_CAPACITY)
|
||||
var/plasma_burn_rate = 0
|
||||
var/phoron_burn_rate = 0
|
||||
var/oxygen_burn_rate = 0
|
||||
//more plasma released at higher temperatures
|
||||
//more phoron released at higher temperatures
|
||||
var/temperature_scale
|
||||
if(temperature > PLASMA_UPPER_TEMPERATURE)
|
||||
temperature_scale = 1
|
||||
@@ -271,17 +271,17 @@ What are the archived variables for?
|
||||
if(temperature_scale > 0)
|
||||
oxygen_burn_rate = 1.4 - temperature_scale
|
||||
if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN)
|
||||
plasma_burn_rate = (toxins*temperature_scale)/4
|
||||
phoron_burn_rate = (toxins*temperature_scale)/4
|
||||
else
|
||||
plasma_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4
|
||||
if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY)
|
||||
toxins -= plasma_burn_rate
|
||||
oxygen -= plasma_burn_rate*oxygen_burn_rate
|
||||
carbon_dioxide += plasma_burn_rate
|
||||
phoron_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4
|
||||
if(phoron_burn_rate > MINIMUM_HEAT_CAPACITY)
|
||||
toxins -= phoron_burn_rate
|
||||
oxygen -= phoron_burn_rate*oxygen_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)
|
||||
var/new_heat_capacity = heat_capacity()
|
||||
@@ -305,7 +305,7 @@ What are the archived variables for?
|
||||
oxygen_archived = oxygen
|
||||
carbon_dioxide_archived = carbon_dioxide
|
||||
nitrogen_archived = nitrogen
|
||||
toxins_archived = toxins
|
||||
phoron_archived = phoron
|
||||
|
||||
if(trace_gases.len)
|
||||
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)) \
|
||||
|| ((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.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
|
||||
if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
|
||||
return 0
|
||||
@@ -362,12 +362,12 @@ What are the archived variables for?
|
||||
oxygen += giver.oxygen*giver.group_multiplier/group_multiplier
|
||||
carbon_dioxide += giver.carbon_dioxide*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
|
||||
oxygen += giver.oxygen
|
||||
carbon_dioxide += giver.carbon_dioxide
|
||||
nitrogen += giver.nitrogen
|
||||
toxins += giver.toxins
|
||||
phoron += giver.phoron
|
||||
|
||||
if(giver.trace_gases.len)
|
||||
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.nitrogen = QUANTIZE((nitrogen/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
|
||||
nitrogen -= removed.nitrogen/group_multiplier
|
||||
carbon_dioxide -= removed.carbon_dioxide/group_multiplier
|
||||
toxins -= removed.toxins/group_multiplier
|
||||
phoron -= removed.phoron/group_multiplier
|
||||
|
||||
if(trace_gases.len)
|
||||
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.nitrogen = QUANTIZE(nitrogen*ratio)
|
||||
removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio)
|
||||
removed.toxins = QUANTIZE(toxins*ratio)
|
||||
removed.phoron = QUANTIZE(phoron*ratio)
|
||||
|
||||
oxygen -= removed.oxygen/group_multiplier
|
||||
nitrogen -= removed.nitrogen/group_multiplier
|
||||
carbon_dioxide -= removed.carbon_dioxide/group_multiplier
|
||||
toxins -= removed.toxins/group_multiplier
|
||||
phoron -= removed.phoron/group_multiplier
|
||||
|
||||
if(trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in trace_gases)
|
||||
@@ -480,7 +480,7 @@ What are the archived variables for?
|
||||
oxygen = sample.oxygen
|
||||
carbon_dioxide = sample.carbon_dioxide
|
||||
nitrogen = sample.nitrogen
|
||||
toxins = sample.toxins
|
||||
phoron = sample.phoron
|
||||
total_moles = sample.total_moles()
|
||||
|
||||
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_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_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)
|
||||
|
||||
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_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
|
||||
|
||||
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)) \
|
||||
|| ((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_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
|
||||
|
||||
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_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/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)
|
||||
|
||||
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_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
|
||||
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
|
||||
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_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_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)
|
||||
|
||||
@@ -630,14 +630,14 @@ What are the archived variables for?
|
||||
heat_sharer_to_self -= carbon_dioxide_heat_capacity*sharer.temperature_archived
|
||||
heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity
|
||||
|
||||
if(delta_toxins)
|
||||
var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins
|
||||
if(delta_toxins > 0)
|
||||
heat_self_to_sharer += toxins_heat_capacity*temperature_archived
|
||||
heat_capacity_self_to_sharer += toxins_heat_capacity
|
||||
if(delta_phoron)
|
||||
var/phoron_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_phoron
|
||||
if(delta_phoron > 0)
|
||||
heat_self_to_sharer += phoron_heat_capacity*temperature_archived
|
||||
heat_capacity_self_to_sharer += phoron_heat_capacity
|
||||
else
|
||||
heat_sharer_to_self -= toxins_heat_capacity*sharer.temperature_archived
|
||||
heat_capacity_sharer_to_self -= toxins_heat_capacity
|
||||
heat_sharer_to_self -= phoron_heat_capacity*sharer.temperature_archived
|
||||
heat_capacity_sharer_to_self -= phoron_heat_capacity
|
||||
|
||||
old_self_heat_capacity = heat_capacity()*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
|
||||
sharer.nitrogen += delta_nitrogen/sharer.group_multiplier
|
||||
|
||||
toxins -= delta_toxins/group_multiplier
|
||||
sharer.toxins += delta_toxins/sharer.group_multiplier
|
||||
phoron -= delta_phoron/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()
|
||||
|
||||
@@ -743,7 +743,7 @@ What are the archived variables for?
|
||||
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_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)
|
||||
|
||||
@@ -764,10 +764,10 @@ What are the archived variables for?
|
||||
heat_transferred -= carbon_dioxide_heat_capacity*model.temperature
|
||||
heat_capacity_transferred -= carbon_dioxide_heat_capacity
|
||||
|
||||
if(delta_toxins)
|
||||
var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins
|
||||
heat_transferred -= toxins_heat_capacity*model.temperature
|
||||
heat_capacity_transferred -= toxins_heat_capacity
|
||||
if(delta_phoron)
|
||||
var/phoron_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_phoron
|
||||
heat_transferred -= phoron_heat_capacity*model.temperature
|
||||
heat_capacity_transferred -= phoron_heat_capacity
|
||||
|
||||
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
|
||||
carbon_dioxide -= delta_carbon_dioxide*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
|
||||
oxygen -= delta_oxygen/group_multiplier
|
||||
carbon_dioxide -= delta_carbon_dioxide/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)
|
||||
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)
|
||||
|
||||
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
|
||||
else
|
||||
return 0
|
||||
@@ -989,8 +989,8 @@ What are the archived variables for?
|
||||
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)))
|
||||
return 0
|
||||
if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \
|
||||
((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins)))
|
||||
if((abs(phoron-sample.phoron) > MINIMUM_AIR_TO_SUSPEND) && \
|
||||
((phoron < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.phoron) || (phoron > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.phoron)))
|
||||
return 0
|
||||
|
||||
|
||||
@@ -1030,7 +1030,7 @@ What are the archived variables for?
|
||||
oxygen += right_side.oxygen
|
||||
carbon_dioxide += right_side.carbon_dioxide
|
||||
nitrogen += right_side.nitrogen
|
||||
toxins += right_side.toxins
|
||||
phoron += right_side.phoron
|
||||
|
||||
if(trace_gases.len || right_side.trace_gases.len)
|
||||
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)
|
||||
carbon_dioxide = max(carbon_dioxide - right_side.carbon_dioxide)
|
||||
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)
|
||||
for(var/datum/gas/trace_gas in right_side.trace_gases)
|
||||
@@ -1067,7 +1067,7 @@ What are the archived variables for?
|
||||
oxygen *= factor
|
||||
carbon_dioxide *= factor
|
||||
nitrogen *= factor
|
||||
toxins *= factor
|
||||
phoron *= factor
|
||||
|
||||
if(trace_gases && trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in trace_gases)
|
||||
@@ -1080,7 +1080,7 @@ What are the archived variables for?
|
||||
oxygen /= factor
|
||||
carbon_dioxide /= factor
|
||||
nitrogen /= factor
|
||||
toxins /= factor
|
||||
phoron /= factor
|
||||
|
||||
if(trace_gases && trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in trace_gases)
|
||||
|
||||
@@ -308,14 +308,14 @@
|
||||
contents.Add(0)
|
||||
|
||||
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)
|
||||
else
|
||||
contents.Add(0)
|
||||
|
||||
// No races breath this, but never know about downstream servers.
|
||||
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)
|
||||
else
|
||||
contents.Add(0)
|
||||
|
||||
@@ -210,7 +210,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/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
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/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
|
||||
if("Chemist")
|
||||
|
||||
@@ -16,7 +16,7 @@ var/list/advance_cures = list(
|
||||
"nutriment", "sugar", "orangejuice",
|
||||
"spaceacillin", "kelotane", "ethanol",
|
||||
"leporazine", "synaptizine", "lipozine",
|
||||
"silver", "gold", "plasma"
|
||||
"silver", "gold", "phoron"
|
||||
)
|
||||
|
||||
/*
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
spread = "On contact"
|
||||
spread_type = CONTACT_GENERAL
|
||||
cure = "Chick Chicky Boom!"
|
||||
cure_id = list("plasma")
|
||||
cure_id = list("phoron")
|
||||
agent = "Unknown"
|
||||
affected_species = list("Human")
|
||||
permeability_mod = 1
|
||||
|
||||
+52
-51
@@ -5,7 +5,7 @@
|
||||
//BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle.
|
||||
//NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points.
|
||||
|
||||
var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Medical / Science","Hydroponics")
|
||||
var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Medical / Science","Hydroponics", "Supply", "Miscellaneous")
|
||||
|
||||
/datum/supply_packs
|
||||
var/name = null
|
||||
@@ -44,7 +44,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
hidden = 1
|
||||
|
||||
/datum/supply_packs/food
|
||||
name = "Food crate"
|
||||
name = "Kitchen supply crate"
|
||||
contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
@@ -61,7 +61,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Food crate"
|
||||
group = "Hospitality"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/monkey
|
||||
name = "Monkey crate"
|
||||
@@ -113,7 +113,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/toner
|
||||
name = "Toner Cartridges"
|
||||
name = "Toner cartridges"
|
||||
contains = list(/obj/item/device/toner,
|
||||
/obj/item/device/toner,
|
||||
/obj/item/device/toner,
|
||||
@@ -122,8 +122,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/device/toner)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Toner Cartridges"
|
||||
group = "Operations"
|
||||
containername = "Toner cartridges"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/party
|
||||
name = "Party equipment"
|
||||
@@ -176,7 +176,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/clothing/mask/gas)
|
||||
cost = 35
|
||||
containertype = /obj/structure/closet/crate/internals
|
||||
containername = "Emergency Crate"
|
||||
containername = "Emergency crate"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/evacuation
|
||||
@@ -208,7 +208,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Janitorial supplies"
|
||||
group = "Operations"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/lightbulbs
|
||||
name = "Replacement lights"
|
||||
@@ -229,7 +229,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Wizard costume crate"
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/mule
|
||||
name = "MULEbot Crate"
|
||||
@@ -266,38 +266,39 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
|
||||
//farm animals - useless and annoying, but potentially a good source of food
|
||||
/datum/supply_packs/cow
|
||||
name = "Cow Crate"
|
||||
name = "Cow crate"
|
||||
cost = 30
|
||||
containertype = /obj/structure/largecrate/cow
|
||||
containername = "Cow Crate"
|
||||
containername = "Cow crate"
|
||||
access = access_hydroponics
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/goat
|
||||
name = "Goat Crate"
|
||||
name = "Goat crate"
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate/goat
|
||||
containername = "Goat Crate"
|
||||
containername = "Goat crate"
|
||||
access = access_hydroponics
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/chicken
|
||||
name = "Chicken Crate"
|
||||
name = "Chicken crate"
|
||||
cost = 20
|
||||
containertype = /obj/structure/largecrate/chick
|
||||
containername = "Chicken Crate"
|
||||
containername = "Chicken crate"
|
||||
access = access_hydroponics
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/lisa
|
||||
name = "Corgi Crate"
|
||||
name = "Corgi crate"
|
||||
contains = list()
|
||||
cost = 50
|
||||
containertype = /obj/structure/largecrate/lisa
|
||||
containername = "Corgi Crate"
|
||||
containername = "Corgi crate"
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/seeds
|
||||
name = "Seeds Crate"
|
||||
name = "Seeds crate"
|
||||
contains = list(/obj/item/seeds/chiliseed,
|
||||
/obj/item/seeds/berryseed,
|
||||
/obj/item/seeds/cornseed,
|
||||
@@ -322,7 +323,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/weedcontrol
|
||||
name = "Weed Control Crate"
|
||||
name = "Weed control crate"
|
||||
contains = list(/obj/item/weapon/scythe,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/weapon/grenade/chem_grenade/antiweed,
|
||||
@@ -334,7 +335,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/exoticseeds
|
||||
name = "Exotic Seeds Crate"
|
||||
name = "Exotic seeds crate"
|
||||
contains = list(/obj/item/seeds/nettleseed,
|
||||
/obj/item/seeds/replicapod,
|
||||
/obj/item/seeds/replicapod,
|
||||
@@ -373,7 +374,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Medical / Science"
|
||||
|
||||
/datum/supply_packs/virus
|
||||
name = "Virus crate"
|
||||
name = "Virus sample crate"
|
||||
/* contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cold,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion,
|
||||
@@ -392,12 +393,12 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/virusdish/random)
|
||||
cost = 25
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Virus crate"
|
||||
containername = "Virus sample crate"
|
||||
access = access_cmo
|
||||
group = "Medical / Science"
|
||||
|
||||
/datum/supply_packs/metal50
|
||||
name = "50 Metal Sheets"
|
||||
name = "50 metal sheets"
|
||||
contains = list(/obj/item/stack/sheet/metal)
|
||||
amount = 50
|
||||
cost = 10
|
||||
@@ -406,7 +407,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/glass50
|
||||
name = "50 Glass Sheets"
|
||||
name = "50 glass sheets"
|
||||
contains = list(/obj/item/stack/sheet/glass)
|
||||
amount = 50
|
||||
cost = 10
|
||||
@@ -415,7 +416,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/wood50
|
||||
name = "50 Wooden Planks"
|
||||
name = "50 wooden planks"
|
||||
contains = list(/obj/item/stack/sheet/wood)
|
||||
amount = 50
|
||||
cost = 10
|
||||
@@ -506,7 +507,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/paper/solar)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "solar pack crate"
|
||||
containername = "Solar pack crate"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/engine
|
||||
@@ -582,7 +583,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
|
||||
|
||||
/datum/supply_packs/robotics
|
||||
name = "Robotics Assembly Crate"
|
||||
name = "Robotics assembly crate"
|
||||
contains = list(/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
@@ -595,15 +596,15 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/cell/high)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/secure/gear
|
||||
containername = "Robotics Assembly"
|
||||
containername = "Robotics assembly"
|
||||
access = access_robotics
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/plasma
|
||||
name = "Plasma assembly crate"
|
||||
contains = list(/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/datum/supply_packs/phoron
|
||||
name = "Phoron assembly crate"
|
||||
contains = list(/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/device/assembly/igniter,
|
||||
/obj/item/device/assembly/igniter,
|
||||
/obj/item/device/assembly/igniter,
|
||||
@@ -614,8 +615,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/device/assembly/timer,
|
||||
/obj/item/device/assembly/timer)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/secure/plasma
|
||||
containername = "Plasma assembly crate"
|
||||
containertype = /obj/structure/closet/crate/secure/phoron
|
||||
containername = "Phoron assembly crate"
|
||||
access = access_tox_storage
|
||||
group = "Medical / Science"
|
||||
|
||||
@@ -638,9 +639,9 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/datum/supply_packs/eweapons
|
||||
name = "Experimental weapons crate"
|
||||
contains = list(/obj/item/weapon/flamethrower/full,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/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)
|
||||
@@ -764,14 +765,14 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/securitybarriers
|
||||
name = "Security Barriers"
|
||||
name = "Security barrier crate"
|
||||
contains = list(/obj/machinery/deployable/barrier,
|
||||
/obj/machinery/deployable/barrier,
|
||||
/obj/machinery/deployable/barrier,
|
||||
/obj/machinery/deployable/barrier)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/secure/gear
|
||||
containername = "Security Barriers crate"
|
||||
containername = "Security barrier crate"
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/securitybarriers
|
||||
@@ -812,7 +813,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 200
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Collectable hats crate! Brought to you by Bass.inc!"
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/randomised/New()
|
||||
manifest += "Contains any [num_contained] of:"
|
||||
@@ -858,7 +859,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Operations"
|
||||
|
||||
/datum/supply_packs/boxes
|
||||
name = "Empty Box supplies"
|
||||
name = "Empty boxes"
|
||||
contains = list(/obj/item/weapon/storage/box,
|
||||
/obj/item/weapon/storage/box,
|
||||
/obj/item/weapon/storage/box,
|
||||
@@ -871,8 +872,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/storage/box)
|
||||
cost = 10
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Empty Box crate"
|
||||
group = "Operations"
|
||||
containername = "Empty box crate"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/surgery
|
||||
name = "Surgery crate"
|
||||
@@ -910,7 +911,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/pizzabox/mushroom,
|
||||
/obj/item/pizzabox/meat,
|
||||
/obj/item/pizzabox/vegetable)
|
||||
name = "Surprise pack of five dozen pizzas"
|
||||
name = "Surprise pack of five pizzas"
|
||||
cost = 15
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Pizza crate"
|
||||
@@ -950,7 +951,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Actor Costumes"
|
||||
access = access_theatre
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/formal_wear
|
||||
contains = list(/obj/item/clothing/head/bowler,
|
||||
@@ -971,7 +972,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet
|
||||
containername = "Formalwear for the best occasions."
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/rust_injector
|
||||
contains = list(/obj/machinery/power/rust_fuel_injector)
|
||||
@@ -1022,7 +1023,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
name = "Supermatter Core"
|
||||
contains = list(/obj/machinery/power/supermatter)
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure/plasma
|
||||
containertype = /obj/structure/closet/crate/secure/phoron
|
||||
containername = "Supermatter crate (CAUTION)"
|
||||
group = "Engineering"
|
||||
access = access_ce
|
||||
@@ -1032,7 +1033,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
name = "Supermatter Shard"
|
||||
contains = list(/obj/machinery/power/supermatter/shard)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate/secure/plasma
|
||||
containertype = /obj/structure/closet/crate/secure/phoron
|
||||
containername = "Supermatter shard crate (CAUTION)"
|
||||
access = access_ce
|
||||
group = "Engineering" */
|
||||
@@ -1052,7 +1053,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "EFTPOS crate"
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/teg
|
||||
contains = list(/obj/machinery/power/generator)
|
||||
@@ -1091,7 +1092,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
access = access_atmospherics
|
||||
|
||||
/datum/supply_packs/bee_keeper
|
||||
name = "Beekeeping Crate"
|
||||
name = "Beekeeping crate"
|
||||
contains = list(/obj/item/beezeez,
|
||||
/obj/item/weapon/bee_net,
|
||||
/obj/item/apiary,
|
||||
|
||||
@@ -1167,7 +1167,7 @@
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy))
|
||||
user.show_message("<span class='notice'>You make planks out of the [src]!</span>", 1)
|
||||
user.show_message("<span class='notice'>You make planks out of \the [src]!</span>", 1)
|
||||
for(var/i=0,i<2,i++)
|
||||
var/obj/item/stack/sheet/wood/NG = new (user.loc)
|
||||
for (var/obj/item/stack/sheet/wood/G in user.loc)
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
throw_range = 20
|
||||
|
||||
/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"
|
||||
|
||||
/obj/item/weapon/soap/deluxe
|
||||
|
||||
@@ -1344,49 +1344,49 @@ var/list/ghostteleportlocs = list()
|
||||
name = "Hydroponics"
|
||||
icon_state = "hydro"
|
||||
|
||||
//Toxins
|
||||
//rnd (Research and Development
|
||||
|
||||
/area/toxins/lab
|
||||
/area/rnd/lab
|
||||
name = "\improper Research and Development"
|
||||
icon_state = "toxlab"
|
||||
|
||||
/area/toxins/hallway
|
||||
/area/rnd/hallway
|
||||
name = "\improper Research Lab"
|
||||
icon_state = "toxlab"
|
||||
|
||||
/area/toxins/rdoffice
|
||||
/area/rnd/rdoffice
|
||||
name = "\improper Research Director's Office"
|
||||
icon_state = "head_quarters"
|
||||
|
||||
/area/toxins/supermatter
|
||||
/area/rnd/supermatter
|
||||
name = "\improper Supermatter Lab"
|
||||
icon_state = "toxlab"
|
||||
|
||||
/area/toxins/xenobiology
|
||||
/area/rnd/xenobiology
|
||||
name = "\improper Xenobiology Lab"
|
||||
icon_state = "toxlab"
|
||||
|
||||
/area/toxins/storage
|
||||
/area/rnd/storage
|
||||
name = "\improper Toxins Storage"
|
||||
icon_state = "toxstorage"
|
||||
|
||||
/area/toxins/test_area
|
||||
/area/rnd/test_area
|
||||
name = "\improper Toxins Test Area"
|
||||
icon_state = "toxtest"
|
||||
|
||||
/area/toxins/mixing
|
||||
/area/rnd/mixing
|
||||
name = "\improper Toxins Mixing Room"
|
||||
icon_state = "toxmix"
|
||||
|
||||
/area/toxins/misc_lab
|
||||
/area/rnd/misc_lab
|
||||
name = "\improper Miscellaneous Research"
|
||||
icon_state = "toxmisc"
|
||||
|
||||
/area/toxins/telesci
|
||||
/area/rnd/telesci
|
||||
name = "\improper Telescience Lab"
|
||||
icon_state = "toxmisc"
|
||||
|
||||
/area/toxins/server
|
||||
/area/rnd/server
|
||||
name = "\improper Server Room"
|
||||
icon_state = "server"
|
||||
|
||||
@@ -1898,7 +1898,7 @@ var/list/the_station_areas = list (
|
||||
/area/quartermaster,
|
||||
/area/janitor,
|
||||
/area/hydroponics,
|
||||
/area/toxins,
|
||||
/area/rnd,
|
||||
/area/storage,
|
||||
/area/construction,
|
||||
/area/ai_monitored/storage/eva, //do not try to simplify to "/area/ai_monitored" --rastaf0
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
|
||||
|
||||
/atom/proc/assume_air(datum/gas_mixture/giver)
|
||||
del(giver)
|
||||
return null
|
||||
|
||||
/atom/proc/remove_air(amount)
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
return
|
||||
|
||||
if(changeling.geneticdamage > max_genetic_damage)
|
||||
src << "<span class='warning'>Our geneomes are still reassembling. We need time to recover first.</span>"
|
||||
src << "<span class='warning'>Our genomes are still reassembling. We need time to recover first.</span>"
|
||||
return
|
||||
|
||||
return changeling
|
||||
|
||||
@@ -119,11 +119,11 @@ var/list/datum/power/changeling/powerinstances = list()
|
||||
genomecost = 10
|
||||
verbpath = /mob/proc/changeling_DEATHsting
|
||||
|
||||
/datum/power/changeling/unfat_sting
|
||||
name = "Unfat Sting"
|
||||
desc = "We silently sting a human, forcing them to rapidly metobolize their fat."
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_unfat_sting
|
||||
///datum/power/changeling/unfat_sting
|
||||
// name = "Unfat Sting"
|
||||
// desc = "We silently sting a human, forcing them to rapidly metabolize their fat."
|
||||
// genomecost = 1
|
||||
// verbpath = /mob/proc/changeling_unfat_sting
|
||||
|
||||
/datum/power/changeling/boost_range
|
||||
name = "Boost Range"
|
||||
|
||||
@@ -811,7 +811,7 @@ var/list/sacrificed = list()
|
||||
if (cultist == user) //just to be sure.
|
||||
return
|
||||
if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet)))
|
||||
user << "\red You cannot summon the [cultist], for his shackles of blood are strong"
|
||||
user << "\red You cannot summon \the [cultist], for his shackles of blood are strong."
|
||||
return fizzle()
|
||||
cultist.loc = src.loc
|
||||
cultist.lying = 1
|
||||
|
||||
@@ -323,13 +323,13 @@ ________________________________________________________________________________
|
||||
var/o2_level = environment.oxygen/total_moles
|
||||
var/n2_level = environment.nitrogen/total_moles
|
||||
var/co2_level = environment.carbon_dioxide/total_moles
|
||||
var/plasma_level = environment.toxins/total_moles
|
||||
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level)
|
||||
var/phoron_level = environment.phoron/total_moles
|
||||
var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
|
||||
dat += "<ul>"
|
||||
dat += "<li>Nitrogen: [round(n2_level*100)]%</li>"
|
||||
dat += "<li>Oxygen: [round(o2_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>"
|
||||
if(unknown_level > 0.01)
|
||||
dat += "OTHER: [round(unknown_level)]%<br>"
|
||||
|
||||
@@ -604,7 +604,7 @@ datum
|
||||
var/list/all_items = owner.current.get_contents()
|
||||
for(var/obj/item/I in all_items)
|
||||
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
|
||||
|
||||
|
||||
|
||||
@@ -489,7 +489,7 @@ datum/objective/steal
|
||||
"a pair of magboots" = /obj/item/clothing/shoes/magboots,
|
||||
"the station blueprints" = /obj/item/blueprints,
|
||||
"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 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,
|
||||
@@ -551,13 +551,13 @@ datum/objective/steal
|
||||
if(!isliving(owner.current)) return 0
|
||||
var/list/all_items = owner.current.get_contents()
|
||||
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/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))
|
||||
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
|
||||
|
||||
if("50 coins (in bag)")
|
||||
@@ -867,7 +867,7 @@ datum/objective/heist/salvage
|
||||
target = "plasteel"
|
||||
target_amount = 100
|
||||
if(4)
|
||||
target = "plasma"
|
||||
target = "phoron"
|
||||
target_amount = 100
|
||||
if(5)
|
||||
target = "silver"
|
||||
|
||||
@@ -46,14 +46,14 @@
|
||||
selection_color = "#ffeeff"
|
||||
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)
|
||||
alt_titles = list("Xenoarcheologist", "Anomalist", "Plasma Researcher")
|
||||
alt_titles = list("Xenoarcheologist", "Anomalist", "Phoron Researcher")
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
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/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/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)
|
||||
if(H.backbag == 1)
|
||||
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/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/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)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
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["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["pressure"] = list(0,ONE_ATMOSPHERE*0.10,ONE_ATMOSPHERE*1.40,ONE_ATMOSPHERE*1.60) /* kpa */
|
||||
TLV["temperature"] = list(20, 40, 140, 160) // K
|
||||
@@ -143,7 +143,7 @@
|
||||
// breathable air according to human/Life()
|
||||
TLV["oxygen"] = list(16, 19, 135, 140) // 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["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
|
||||
@@ -245,7 +245,7 @@
|
||||
var/pressure_dangerlevel = get_danger_level(environment_pressure, TLV["pressure"])
|
||||
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/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/other_dangerlevel = get_danger_level(other_moles*partial_pressure, TLV["other"])
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
pressure_dangerlevel,
|
||||
oxygen_dangerlevel,
|
||||
co2_dangerlevel,
|
||||
plasma_dangerlevel,
|
||||
phoron_dangerlevel,
|
||||
other_dangerlevel,
|
||||
temperature_dangerlevel
|
||||
)
|
||||
@@ -700,7 +700,7 @@
|
||||
/obj/machinery/alarm/proc/return_status()
|
||||
var/turf/location = get_turf(src)
|
||||
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>"
|
||||
|
||||
if(total == 0)
|
||||
@@ -729,9 +729,9 @@
|
||||
var/co2_dangerlevel = get_danger_level(environment.carbon_dioxide*partial_pressure, current_settings)
|
||||
var/co2_percent = round(environment.carbon_dioxide / total * 100, 2)
|
||||
|
||||
current_settings = TLV["plasma"]
|
||||
var/plasma_dangerlevel = get_danger_level(environment.toxins*partial_pressure, current_settings)
|
||||
var/plasma_percent = round(environment.toxins / total * 100, 2)
|
||||
current_settings = TLV["phoron"]
|
||||
var/phoron_dangerlevel = get_danger_level(environment.phoron*partial_pressure, current_settings)
|
||||
var/phoron_percent = round(environment.phoron / total * 100, 2)
|
||||
|
||||
current_settings = TLV["other"]
|
||||
var/other_moles = 0.0
|
||||
@@ -746,7 +746,7 @@
|
||||
Pressure: <span class='dl[pressure_dangerlevel]'>[environment_pressure]</span>kPa<br>
|
||||
Oxygen: <span class='dl[oxygen_dangerlevel]'>[oxygen_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)
|
||||
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
|
||||
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)
|
||||
output += "<span class='dl2'>DANGER: Internals Required</span>"
|
||||
if(1)
|
||||
@@ -881,7 +881,7 @@ siphoning
|
||||
Carbon Dioxide
|
||||
<A href='?src=\ref[src];id_tag=[id_tag];command=co2_scrub;val=[!data["filter_co2"]]'>[data["filter_co2"]?"on":"off"]</A>;
|
||||
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
|
||||
<A href='?src=\ref[src];id_tag=[id_tag];command=n2o_scrub;val=[!data["filter_n2o"]]'>[data["filter_n2o"]?"on":"off"]</A>
|
||||
<BR>
|
||||
@@ -930,7 +930,7 @@ table tr:first-child th:first-child { border: none;}
|
||||
var/list/gases = list(
|
||||
"oxygen" = "O<sub>2</sub>",
|
||||
"carbon dioxide" = "CO<sub>2</sub>",
|
||||
"plasma" = "Toxin",
|
||||
"phoron" = "Toxin",
|
||||
"other" = "Other",)
|
||||
|
||||
var/list/selected
|
||||
|
||||
@@ -16,7 +16,7 @@ obj/machinery/air_sensor
|
||||
// 2 for temperature
|
||||
// Output >= 4 includes gas composition
|
||||
// 4 for oxygen concentration
|
||||
// 8 for toxins concentration
|
||||
// 8 for phoron concentration
|
||||
// 16 for nitrogen concentration
|
||||
// 32 for carbon dioxide concentration
|
||||
|
||||
@@ -45,14 +45,14 @@ obj/machinery/air_sensor
|
||||
if(output&4)
|
||||
signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1)
|
||||
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)
|
||||
signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1)
|
||||
if(output&32)
|
||||
signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1)
|
||||
else
|
||||
signal.data["oxygen"] = 0
|
||||
signal.data["toxins"] = 0
|
||||
signal.data["phoron"] = 0
|
||||
signal.data["nitrogen"] = 0
|
||||
signal.data["carbon_dioxide"] = 0
|
||||
signal.data["sigtype"]="status"
|
||||
@@ -151,7 +151,7 @@ obj/machinery/computer/general_air_control
|
||||
sensor_part += " <B>Pressure:</B> [data["pressure"]] kPa<BR>"
|
||||
if(data["temperature"])
|
||||
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>"
|
||||
if(data["oxygen"])
|
||||
sensor_part += "[data["oxygen"]]% O2; "
|
||||
@@ -159,8 +159,8 @@ obj/machinery/computer/general_air_control
|
||||
sensor_part += "[data["nitrogen"]]% N; "
|
||||
if(data["carbon_dioxide"])
|
||||
sensor_part += "[data["carbon_dioxide"]]% CO2; "
|
||||
if(data["toxins"])
|
||||
sensor_part += "[data["toxins"]]% TX; "
|
||||
if(data["phoron"])
|
||||
sensor_part += "[data["phoron"]]% TX; "
|
||||
sensor_part += "<HR>"
|
||||
|
||||
else
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
icon_state = "blue"
|
||||
canister_color = "blue"
|
||||
can_label = 0
|
||||
/obj/machinery/portable_atmospherics/canister/toxins
|
||||
name = "Canister \[Toxin (Bio)\]"
|
||||
/obj/machinery/portable_atmospherics/canister/phoron
|
||||
name = "Canister \[Phoron\]"
|
||||
icon_state = "orange"
|
||||
canister_color = "orange"
|
||||
can_label = 0
|
||||
@@ -171,7 +171,7 @@ update_flag
|
||||
else
|
||||
can_label = 0
|
||||
|
||||
if(air_contents.temperature > PLASMA_FLASHPOINT)
|
||||
if(air_contents.temperature > PHORON_FLASHPOINT)
|
||||
air_contents.zburn()
|
||||
return
|
||||
|
||||
@@ -328,11 +328,11 @@ update_flag
|
||||
|
||||
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()
|
||||
|
||||
src.update_icon()
|
||||
|
||||
@@ -125,15 +125,15 @@
|
||||
var/o2_concentration = air_contents.oxygen/total_moles
|
||||
var/n2_concentration = air_contents.nitrogen/total_moles
|
||||
var/co2_concentration = air_contents.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = air_contents.toxins/total_moles
|
||||
var/phoron_concentration = air_contents.phoron/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
|
||||
|
||||
user << "\blue Pressure: [round(pressure,0.1)] kPa"
|
||||
user << "\blue Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
user << "\blue Phoron: [round(phoron_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(air_contents.temperature-T0C)]°C"
|
||||
|
||||
@@ -114,8 +114,8 @@
|
||||
filtered_out.temperature = removed.temperature
|
||||
|
||||
|
||||
filtered_out.toxins = removed.toxins
|
||||
removed.toxins = 0
|
||||
filtered_out.phoron = removed.phoron
|
||||
removed.phoron = 0
|
||||
|
||||
filtered_out.carbon_dioxide = removed.carbon_dioxide
|
||||
removed.carbon_dioxide = 0
|
||||
|
||||
@@ -16,7 +16,7 @@ var/global/list/autolathe_recipes = list( \
|
||||
new /obj/item/weapon/stock_parts/console_screen(), \
|
||||
new /obj/item/weapon/airlock_electronics(), \
|
||||
new /obj/item/weapon/airalarm_electronics(), \
|
||||
new /obj/item/weapon/firealarm_electronics(), \
|
||||
new /obj/item/weapon/firealarm_electronics(), \
|
||||
new /obj/item/weapon/module/power_control(), \
|
||||
new /obj/item/stack/sheet/metal(), \
|
||||
new /obj/item/stack/sheet/glass(), \
|
||||
@@ -262,9 +262,42 @@ var/global/list/autolathe_recipes_hidden = list( \
|
||||
if (!busy)
|
||||
if(href_list["make"])
|
||||
var/turf/T = get_step(src.loc, get_dir(src,usr))
|
||||
var/obj/template = locate(href_list["make"])
|
||||
|
||||
// critical exploit fix start -walter0o
|
||||
var/obj/item/template = null
|
||||
var/attempting_to_build = locate(href_list["make"])
|
||||
|
||||
if(!attempting_to_build)
|
||||
return
|
||||
|
||||
if(locate(attempting_to_build, src.L) || locate(attempting_to_build, src.LL)) // see if the requested object is in one of the construction lists, if so, it is legit -walter0o
|
||||
template = attempting_to_build
|
||||
|
||||
else // somebody is trying to exploit, alert admins -walter0o
|
||||
|
||||
var/turf/LOC = get_turf(usr)
|
||||
message_admins("[key_name_admin(usr)] tried to exploit an autolathe to duplicate <a href='?_src_=vars;Vars=\ref[attempting_to_build]'>[attempting_to_build]</a> ! ([LOC ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[LOC.x];Y=[LOC.y];Z=[LOC.z]'>JMP</a>" : "null"])", 0)
|
||||
log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] !")
|
||||
return
|
||||
|
||||
// now check for legit multiplier, also only stacks should pass with one to prevent raw-materials-manipulation -walter0o
|
||||
|
||||
var/multiplier = text2num(href_list["multiplier"])
|
||||
|
||||
if (!multiplier) multiplier = 1
|
||||
var/max_multiplier = 1
|
||||
|
||||
if(istype(template, /obj/item/stack)) // stacks are the only items which can have a multiplier higher than 1 -walter0o
|
||||
var/obj/item/stack/S = template
|
||||
max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) // pasta from regular_win() to make sure the numbers match -walter0o
|
||||
|
||||
if( (multiplier > max_multiplier) || (multiplier <= 0) ) // somebody is trying to exploit, alert admins-walter0o
|
||||
|
||||
var/turf/LOC = get_turf(usr)
|
||||
message_admins("[key_name_admin(usr)] tried to exploit an autolathe with multiplier set to <u>[multiplier]</u> on <u>[template]</u> ! ([LOC ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[LOC.x];Y=[LOC.y];Z=[LOC.z]'>JMP</a>" : "null"])" , 0)
|
||||
log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] !")
|
||||
return
|
||||
|
||||
var/power = max(2000, (template.m_amt+template.g_amt)*multiplier/5)
|
||||
if(src.m_amount >= template.m_amt*multiplier && src.g_amount >= template.g_amt*multiplier)
|
||||
busy = 1
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
g_amt = 300
|
||||
|
||||
// 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/state = 0
|
||||
var/busy = 0
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
// CHECKS
|
||||
|
||||
/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
|
||||
|
||||
/obj/machinery/camera/proc/isXRay()
|
||||
@@ -67,7 +67,7 @@
|
||||
// UPGRADE PROCS
|
||||
|
||||
/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()
|
||||
assembly.upgrades.Add(new /obj/item/weapon/reagent_containers/food/snacks/grown/carrot(assembly))
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve
|
||||
return
|
||||
for(var/mob/M in range(3,src))
|
||||
M.show_message("\b ERROR. Recalibrating projetion apparatus.")
|
||||
M.show_message("\b ERROR. Recalibrating projection apparatus.")
|
||||
last_change = world.time
|
||||
return
|
||||
|
||||
@@ -447,6 +447,8 @@
|
||||
|
||||
if(isrobot(user))
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
/obj/structure/table/holotable/wood
|
||||
name = "table"
|
||||
@@ -489,7 +491,7 @@
|
||||
damtype = HALLOSS
|
||||
|
||||
/obj/item/weapon/holo/esword
|
||||
desc = "May the force be within you. Sorta"
|
||||
desc = "May the force be within you. Sorta."
|
||||
icon_state = "sword0"
|
||||
force = 3.0
|
||||
throw_speed = 1
|
||||
@@ -607,11 +609,11 @@
|
||||
power_channel = ENVIRON
|
||||
|
||||
/obj/machinery/readybutton/attack_ai(mob/user as mob)
|
||||
user << "The station AI is not to interact with these devices"
|
||||
user << "The station AI is not to interact with these devices!"
|
||||
return
|
||||
|
||||
/obj/machinery/readybutton/attack_paw(mob/user as mob)
|
||||
user << "You are too primitive to use this device"
|
||||
user << "You are too primitive to use this device."
|
||||
return
|
||||
|
||||
/obj/machinery/readybutton/New()
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
|
||||
/obj/machinery/computer/security/telescreen/entertainment
|
||||
name = "entertainment monitor"
|
||||
desc = "Damn, they better have /tg/thechannel on these things."
|
||||
desc = "Damn, why do they never have anything interesting on these things?"
|
||||
icon = 'icons/obj/status_display.dmi'
|
||||
icon_state = "entertainment"
|
||||
|
||||
@@ -206,4 +206,4 @@
|
||||
name = "Mission Monitor"
|
||||
desc = "Used to access the built-in cameras in helmets."
|
||||
icon_state = "syndicam"
|
||||
network = list("NUKE")
|
||||
network = list("NUKE")
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
if (authenticated)
|
||||
var/t1 = href_list["assign_target"]
|
||||
if(t1 == "Custom")
|
||||
var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,MAX_MESSAGE_LEN)
|
||||
var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,45)
|
||||
//let custom jobs function as an impromptu alt title, mainly for sechuds
|
||||
if(temp_t && modify)
|
||||
modify.assignment = temp_t
|
||||
|
||||
@@ -212,7 +212,7 @@ to destroy them and players will be able to make replacements.
|
||||
name = "Circuit Board (PACMAN-type Generator)"
|
||||
build_path = "/obj/machinery/power/port_gen/pacman"
|
||||
board_type = "machine"
|
||||
origin_tech = "programming=3:powerstorage=3;plasmatech=3;engineering=3"
|
||||
origin_tech = "programming=3:powerstorage=3;phorontech=3;engineering=3"
|
||||
frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor."
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
||||
|
||||
@@ -68,11 +68,11 @@ for reference:
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/stack/sheet/wood))
|
||||
if (src.health < src.maxhealth)
|
||||
visible_message("\red [user] begins to repair the [src]!")
|
||||
visible_message("\red [user] begins to repair \the [src]!")
|
||||
if(do_after(user,20))
|
||||
src.health = src.maxhealth
|
||||
W:use(1)
|
||||
visible_message("\red [user] repairs the [src]!")
|
||||
visible_message("\red [user] repairs \the [src]!")
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -181,7 +181,7 @@ for reference:
|
||||
if (src.emagged == 0)
|
||||
src.emagged = 1
|
||||
src.req_access = null
|
||||
user << "You break the ID authentication lock on the [src]."
|
||||
user << "You break the ID authentication lock on \the [src]."
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 1, src)
|
||||
s.start()
|
||||
@@ -189,7 +189,7 @@ for reference:
|
||||
return
|
||||
else if (src.emagged == 1)
|
||||
src.emagged = 2
|
||||
user << "You short out the anchoring mechanism on the [src]."
|
||||
user << "You short out the anchoring mechanism on \the [src]."
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 1, src)
|
||||
s.start()
|
||||
@@ -200,12 +200,12 @@ for reference:
|
||||
src.health = src.maxhealth
|
||||
src.emagged = 0
|
||||
src.req_access = list(access_security)
|
||||
visible_message("\red [user] repairs the [src]!")
|
||||
visible_message("\red [user] repairs \the [src]!")
|
||||
return
|
||||
else if (src.emagged > 0)
|
||||
src.emagged = 0
|
||||
src.req_access = list(access_security)
|
||||
visible_message("\red [user] repairs the [src]!")
|
||||
visible_message("\red [user] repairs \the [src]!")
|
||||
return
|
||||
return
|
||||
else
|
||||
|
||||
@@ -258,37 +258,37 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
||||
L.apply_effect(15,IRRADIATE,0)
|
||||
return
|
||||
|
||||
/obj/machinery/door/airlock/plasma
|
||||
name = "Plasma Airlock"
|
||||
/obj/machinery/door/airlock/phoron
|
||||
name = "Phoron Airlock"
|
||||
desc = "No way this can end badly."
|
||||
icon = 'icons/obj/doors/Doorplasma.dmi'
|
||||
mineral = "plasma"
|
||||
icon = 'icons/obj/doors/Doorphoron.dmi'
|
||||
mineral = "phoron"
|
||||
|
||||
/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/machinery/door/airlock/phoron/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
PhoronBurn(exposed_temperature)
|
||||
|
||||
/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature)
|
||||
/obj/machinery/door/airlock/phoron/proc/ignite(exposed_temperature)
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
PhoronBurn(exposed_temperature)
|
||||
|
||||
/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
|
||||
/obj/machinery/door/airlock/phoron/proc/PhoronBurn(temperature)
|
||||
for(var/turf/simulated/floor/target_tile in range(2,loc))
|
||||
// if(target_tile.parent && target_tile.parent.group_processing) // THESE PROBABLY DO SOMETHING IMPORTANT BUT I DON'T KNOW HOW TO FIX IT - Erthilo
|
||||
// target_tile.parent.suspend_group_processing()
|
||||
var/datum/gas_mixture/napalm = new
|
||||
var/toxinsToDeduce = 35
|
||||
napalm.toxins = toxinsToDeduce
|
||||
var/phoronToDeduce = 35
|
||||
napalm.phoron = phoronToDeduce
|
||||
napalm.temperature = 400+T0C
|
||||
target_tile.assume_air(napalm)
|
||||
spawn (0) target_tile.hotspot_expose(temperature, 400)
|
||||
for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
|
||||
for(var/obj/structure/falsewall/phoron/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
|
||||
var/turf/T = get_turf(F)
|
||||
T.ChangeTurf(/turf/simulated/wall/mineral/plasma/)
|
||||
T.ChangeTurf(/turf/simulated/wall/mineral/phoron/)
|
||||
del (F)
|
||||
for(var/turf/simulated/wall/mineral/plasma/W in range(3,src))
|
||||
for(var/turf/simulated/wall/mineral/phoron/W in range(3,src))
|
||||
W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
|
||||
for(var/obj/machinery/door/airlock/plasma/D in range(3,src))
|
||||
for(var/obj/machinery/door/airlock/phoron/D in range(3,src))
|
||||
D.ignite(temperature/4)
|
||||
new/obj/structure/door_assembly( src.loc )
|
||||
del (src)
|
||||
@@ -1248,7 +1248,7 @@ About the new airlock wires panel:
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/machinery/door/airlock/plasma/attackby(C as obj, mob/user as mob)
|
||||
/obj/machinery/door/airlock/phoron/attackby(C as obj, mob/user as mob)
|
||||
if(C)
|
||||
ignite(is_hot(C))
|
||||
..()
|
||||
|
||||
@@ -783,6 +783,15 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/machinery/hydroponics/attack_tk(mob/user as mob)
|
||||
if(harvest)
|
||||
myseed.harvest(src)
|
||||
else if(dead)
|
||||
planted = 0
|
||||
dead = 0
|
||||
usr << text("You remove the dead plant from the [src].")
|
||||
del(myseed)
|
||||
updateicon()
|
||||
|
||||
/obj/machinery/hydroponics/attack_hand(mob/user as mob)
|
||||
if(istype(usr,/mob/living/silicon)) //How does AI know what plant is?
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/machinery/igniter
|
||||
name = "igniter"
|
||||
desc = "It's useful for igniting plasma."
|
||||
desc = "It's useful for igniting flammable items."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "igniter1"
|
||||
var/id = null
|
||||
|
||||
@@ -8,7 +8,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
|
||||
/obj/machinery/requests_console
|
||||
name = "Requests Console"
|
||||
desc = "A console intended to send requests to diferent departments on the station."
|
||||
desc = "A console intended to send requests to different departments on the station."
|
||||
anchored = 1
|
||||
icon = 'icons/obj/terminals.dmi'
|
||||
icon_state = "req_comp0"
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
|
||||
if (src.health <= 0)
|
||||
visible_message("\blue The [src] dissapates")
|
||||
visible_message("\blue The [src] dissipates!")
|
||||
del(src)
|
||||
return
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
src.health -= max_health*0.75 //3/4 health as damage
|
||||
|
||||
if(src.health <= 0)
|
||||
visible_message("\blue The [src] dissapates")
|
||||
visible_message("\blue The [src] dissipates!")
|
||||
del(src)
|
||||
return
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
health -= Proj.damage
|
||||
..()
|
||||
if(health <=0)
|
||||
visible_message("\blue The [src] dissapates")
|
||||
visible_message("\blue The [src] dissipates!")
|
||||
del(src)
|
||||
return
|
||||
opacity = 1
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
//Handle the destruction of the shield
|
||||
if (src.health <= 0)
|
||||
visible_message("\blue The [src] dissapates")
|
||||
visible_message("\blue The [src] dissipates!")
|
||||
del(src)
|
||||
return
|
||||
|
||||
@@ -500,7 +500,7 @@
|
||||
|
||||
else
|
||||
src.add_fingerprint(user)
|
||||
visible_message("\red The [src.name] has been hit with the [W.name] by [user.name]!")
|
||||
visible_message("\red The [src.name] has been hit with \the [W.name] by [user.name]!")
|
||||
|
||||
/obj/machinery/shieldwallgen/proc/cleanup(var/NSEW)
|
||||
var/obj/machinery/shieldwall/F
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
if(1 to 50)
|
||||
objective = "Steal [pick("a hand teleporter", "the Captain's antique laser gun", "a jetpack", "the Captain's ID", "the Captain's jumpsuit")]."
|
||||
if(51 to 60)
|
||||
objective = "Destroy 70% or more of the station's plasma tanks."
|
||||
objective = "Destroy 70% or more of the station's phoron tanks."
|
||||
if(61 to 70)
|
||||
objective = "Cut power to 80% or more of the station's tiles."
|
||||
if(71 to 80)
|
||||
|
||||
@@ -624,7 +624,7 @@
|
||||
desc = "A vendor with a wide variety of masks and gas tanks."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "dispenser"
|
||||
product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/plasma;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
|
||||
product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/phoron;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
|
||||
product_amounts = "10;10;10;5;25"
|
||||
vend_delay = 0
|
||||
*/
|
||||
@@ -675,7 +675,7 @@
|
||||
|
||||
/obj/machinery/vending/snack
|
||||
name = "Getmore Chocolate Corp"
|
||||
desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars"
|
||||
desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars."
|
||||
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
|
||||
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
|
||||
icon_state = "snack"
|
||||
@@ -708,18 +708,18 @@
|
||||
//This one's from bay12
|
||||
/obj/machinery/vending/cart
|
||||
name = "PTech"
|
||||
desc = "Cartridges for PDAs"
|
||||
desc = "Cartridges for PDAs."
|
||||
product_slogans = "Carts to go!"
|
||||
icon_state = "cart"
|
||||
icon_deny = "cart-deny"
|
||||
products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10,
|
||||
/obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/toxins = 10,/obj/item/device/pda/heads = 10,
|
||||
/obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/science = 10,/obj/item/device/pda/heads = 10,
|
||||
/obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
|
||||
|
||||
|
||||
/obj/machinery/vending/cigarette
|
||||
name = "Cigarette machine" //OCD had to be uppercase to look nice with the new formating
|
||||
desc = "If you want to get cancer, might as well do it in style"
|
||||
desc = "If you want to get cancer, might as well do it in style!"
|
||||
product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!"
|
||||
product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
|
||||
vend_delay = 34
|
||||
@@ -746,7 +746,7 @@
|
||||
|
||||
|
||||
//This one's from bay12
|
||||
/obj/machinery/vending/plasmaresearch
|
||||
/obj/machinery/vending/phoronresearch
|
||||
name = "Toximate 3000"
|
||||
desc = "All the fine parts you need in one vending machine!"
|
||||
products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,
|
||||
@@ -777,7 +777,7 @@
|
||||
|
||||
/obj/machinery/vending/security
|
||||
name = "SecTech"
|
||||
desc = "A security equipment vendor"
|
||||
desc = "A security equipment vendor."
|
||||
product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?"
|
||||
icon_state = "sec"
|
||||
icon_deny = "sec-deny"
|
||||
@@ -788,7 +788,7 @@
|
||||
|
||||
/obj/machinery/vending/hydronutrients
|
||||
name = "NutriMax"
|
||||
desc = "A plant nutrients vendor"
|
||||
desc = "A plant nutrients vendor."
|
||||
product_slogans = "Aren't you glad you don't have to fertilize the natural way?;Now with 50% less stink!;Plants are people too!"
|
||||
product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
|
||||
icon_state = "nutri"
|
||||
@@ -827,7 +827,7 @@
|
||||
|
||||
/obj/machinery/vending/dinnerware
|
||||
name = "Dinnerware"
|
||||
desc = "A kitchen and restaurant equipment vendor"
|
||||
desc = "A kitchen and restaurant equipment vendor."
|
||||
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
|
||||
icon_state = "dinnerware"
|
||||
products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2)
|
||||
@@ -835,7 +835,7 @@
|
||||
|
||||
/obj/machinery/vending/sovietsoda
|
||||
name = "BODA"
|
||||
desc = "Old sweet water vending machine"
|
||||
desc = "An old sweet water vending machine,how did this end up here?"
|
||||
icon_state = "sovietsoda"
|
||||
product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem."
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda = 30)
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
energy_drain = 250
|
||||
range = MELEE|RANGED
|
||||
construction_time = 1200
|
||||
construction_cost = list("metal"=30000,"plasma"=25000,"silver"=20000,"gold"=20000)
|
||||
construction_cost = list("metal"=30000,"phoron"=25000,"silver"=20000,"gold"=20000)
|
||||
var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock.
|
||||
var/disabled = 0 //malf
|
||||
|
||||
@@ -830,10 +830,10 @@
|
||||
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/generator
|
||||
name = "Plasma Converter"
|
||||
desc = "Generates power using solid plasma as fuel. Pollutes the environment."
|
||||
name = "Phoron Generator"
|
||||
desc = "Generates power using solid phoron as fuel. Pollutes the environment."
|
||||
icon_state = "tesla"
|
||||
origin_tech = "plasmatech=2;powerstorage=2;engineering=1"
|
||||
origin_tech = "phorontech=2;powerstorage=2;engineering=1"
|
||||
equip_cooldown = 10
|
||||
energy_drain = 0
|
||||
range = MELEE
|
||||
@@ -853,7 +853,7 @@
|
||||
return
|
||||
|
||||
proc/init()
|
||||
fuel = new /obj/item/stack/sheet/mineral/plasma(src)
|
||||
fuel = new /obj/item/stack/sheet/mineral/phoron(src)
|
||||
fuel.amount = 0
|
||||
pr_mech_generator = new /datum/global_iterator/mecha_generator(list(src),0)
|
||||
pr_mech_generator.set_delay(equip_cooldown)
|
||||
@@ -926,14 +926,14 @@
|
||||
return
|
||||
var/datum/gas_mixture/GM = new
|
||||
if(prob(10))
|
||||
GM.toxins += 100
|
||||
GM.phoron += 100
|
||||
GM.temperature = 1500+T0C //should be enough to start a fire
|
||||
T.visible_message("The [src] suddenly disgorges a cloud of heated plasma.")
|
||||
T.visible_message("The [src] suddenly disgorges a cloud of heated phoron.")
|
||||
destroy()
|
||||
else
|
||||
GM.toxins += 5
|
||||
GM.phoron += 5
|
||||
GM.temperature = istype(T) ? T.air.temperature : T20C
|
||||
T.visible_message("The [src] suddenly disgorges a cloud of plasma.")
|
||||
T.visible_message("The [src] suddenly disgorges a cloud of phoron.")
|
||||
T.assume_air(GM)
|
||||
return
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"gold"=0,
|
||||
"silver"=0,
|
||||
"diamond"=0,
|
||||
"plasma"=0,
|
||||
"phoron"=0,
|
||||
"uranium"=0,
|
||||
//"bananium"=0 No need to state what it can no longer hold
|
||||
)
|
||||
@@ -684,8 +684,8 @@
|
||||
type = /obj/item/stack/sheet/mineral/silver
|
||||
if("diamond")
|
||||
type = /obj/item/stack/sheet/mineral/diamond
|
||||
if("plasma")
|
||||
type = /obj/item/stack/sheet/mineral/plasma
|
||||
if("phoron")
|
||||
type = /obj/item/stack/sheet/mineral/phoron
|
||||
if("uranium")
|
||||
type = /obj/item/stack/sheet/mineral/uranium
|
||||
/*if("bananium")
|
||||
@@ -732,9 +732,9 @@
|
||||
if(src.resources["glass"] >= 3750)
|
||||
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
|
||||
G.amount = round(src.resources["glass"] / G.perunit)
|
||||
if(src.resources["plasma"] >= 2000)
|
||||
var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma(src.loc)
|
||||
G.amount = round(src.resources["plasma"] / G.perunit)
|
||||
if(src.resources["phoron"] >= 2000)
|
||||
var/obj/item/stack/sheet/mineral/phoron/G = new /obj/item/stack/sheet/mineral/phoron(src.loc)
|
||||
G.amount = round(src.resources["phoron"] / G.perunit)
|
||||
if(src.resources["silver"] >= 2000)
|
||||
var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver(src.loc)
|
||||
G.amount = round(src.resources["silver"] / G.perunit)
|
||||
@@ -767,8 +767,8 @@
|
||||
material = "silver"
|
||||
if(/obj/item/stack/sheet/mineral/diamond)
|
||||
material = "diamond"
|
||||
if(/obj/item/stack/sheet/mineral/plasma)
|
||||
material = "plasma"
|
||||
if(/obj/item/stack/sheet/mineral/phoron)
|
||||
material = "phoron"
|
||||
if(/obj/item/stack/sheet/metal)
|
||||
material = "metal"
|
||||
if(/obj/item/stack/sheet/glass)
|
||||
|
||||
@@ -628,7 +628,7 @@
|
||||
/obj/mecha/proc/dynattackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
src.log_message("Attacked by [W]. Attacker - [user]")
|
||||
if(prob(src.deflect_chance))
|
||||
user << "\red The [W] bounces off [src.name] armor."
|
||||
user << "\red \The [W] bounces off [src.name]."
|
||||
src.log_append_to_last("Armor saved.")
|
||||
/*
|
||||
for (var/mob/V in viewers(src))
|
||||
|
||||
@@ -292,42 +292,42 @@
|
||||
name="Phazon Torso"
|
||||
icon_state = "phazon_harness"
|
||||
construction_time = 300
|
||||
construction_cost = list("metal"=35000,"glass"=10000,"plasma"=20000)
|
||||
construction_cost = list("metal"=35000,"glass"=10000,"phoron"=20000)
|
||||
origin_tech = "programming=5;materials=7;bluespace=6;powerstorage=6"
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_head
|
||||
name="Phazon Head"
|
||||
icon_state = "phazon_head"
|
||||
construction_time = 200
|
||||
construction_cost = list("metal"=15000,"glass"=5000,"plasma"=10000)
|
||||
construction_cost = list("metal"=15000,"glass"=5000,"phoron"=10000)
|
||||
origin_tech = "programming=4;materials=5;magnets=6"
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_left_arm
|
||||
name="Phazon Left Arm"
|
||||
icon_state = "phazon_l_arm"
|
||||
construction_time = 200
|
||||
construction_cost = list("metal"=20000,"plasma"=10000)
|
||||
construction_cost = list("metal"=20000,"phoron"=10000)
|
||||
origin_tech = "materials=5;bluespace=2;magnets=2"
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_right_arm
|
||||
name="Phazon Right Arm"
|
||||
icon_state = "phazon_r_arm"
|
||||
construction_time = 200
|
||||
construction_cost = list("metal"=20000,"plasma"=10000)
|
||||
construction_cost = list("metal"=20000,"phoron"=10000)
|
||||
origin_tech = "materials=5;bluespace=2;magnets=2"
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_left_leg
|
||||
name="Phazon Left Leg"
|
||||
icon_state = "phazon_l_leg"
|
||||
construction_time = 200
|
||||
construction_cost = list("metal"=20000,"plasma"=10000)
|
||||
construction_cost = list("metal"=20000,"phoron"=10000)
|
||||
origin_tech = "materials=5;bluespace=3;magnets=3"
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_right_leg
|
||||
name="Phazon Right Leg"
|
||||
icon_state = "phazon_r_leg"
|
||||
construction_time = 200
|
||||
construction_cost = list("metal"=20000,"plasma"=10000)
|
||||
construction_cost = list("metal"=20000,"phoron"=10000)
|
||||
origin_tech = "materials=5;bluespace=3;magnets=3"
|
||||
|
||||
///////// Odysseus
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
|
||||
var/obj/item/weapon/storage/box/B = new(BPK)
|
||||
new /obj/item/weapon/pen(B)
|
||||
new /obj/item/device/pda/toxins(src)
|
||||
new /obj/item/device/pda/science(src)
|
||||
new /obj/item/weapon/tank/oxygen(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/device/radio/headset/headset_sci(src)
|
||||
|
||||
@@ -15,17 +15,17 @@
|
||||
|
||||
/obj/structure/closet/walllocker/emerglocker
|
||||
name = "emergency locker"
|
||||
desc = "A wall mounted locker with emergency supplies"
|
||||
desc = "A wall mounted locker with emergency supplies."
|
||||
var/list/spawnitems = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath)
|
||||
var/amount = 2 // spawns each items X times.
|
||||
icon_state = "emerg"
|
||||
|
||||
/obj/structure/closet/walllocker/emerglocker/toggle(mob/user as mob)
|
||||
src.attack_hand(user)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/closet/walllocker/emerglocker/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/closet/walllocker/emerglocker/attack_hand(mob/user as mob)
|
||||
if (istype(user, /mob/living/silicon/ai)) //Added by Strumpetplaya - AI shouldn't be able to
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
obj/effect/decal/cleanable/liquid_fuel
|
||||
//Liquid fuel is used for things that used to rely on volatile fuels or plasma being contained to a couple tiles.
|
||||
//Liquid fuel is used for things that used to rely on volatile fuels or phoron being contained to a couple tiles.
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "fuel"
|
||||
layer = TURF_LAYER+0.2
|
||||
@@ -21,7 +21,7 @@ obj/effect/decal/cleanable/liquid_fuel
|
||||
|
||||
proc/Spread()
|
||||
//Allows liquid fuels to sometimes flow into other tiles.
|
||||
if(amount < 0.5) return
|
||||
if(amount < 5.0) return
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
for(var/d in cardinal)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
/datum/poster/bay_11
|
||||
icon_state="bsposter11"
|
||||
name = "Underwater Laboratory"
|
||||
desc = "This particular one is of the fabled last crew of Nanotrasen's previous project before going big on plasma research."
|
||||
desc = "This particular one is of the fabled last crew of Nanotrasen's previous project before going big on phoron research."
|
||||
|
||||
/datum/poster/bay_12
|
||||
icon_state="bsposter12"
|
||||
@@ -143,3 +143,43 @@
|
||||
icon_state="bsposter29"
|
||||
name = "Winter Is Coming"
|
||||
desc = "On the poster is a frighteningly large wolf, he warns: \"Only YOU can keep the station from freezing during planetary occultation!\""
|
||||
|
||||
/datum/poster/bay_30
|
||||
icon_state="bsposter30"
|
||||
name = "Ambrosia Vulgaris"
|
||||
desc = "Just looking at this poster makes you feel a little bit dizzy."
|
||||
|
||||
/datum/poster/bay_31
|
||||
icon_state="bsposter31"
|
||||
name = "Donut Corp"
|
||||
desc = "This is an advertisement for Donut Corp, the new innovation in donut technology!"
|
||||
|
||||
/datum/poster/bay_32
|
||||
icon_state="bsposter32"
|
||||
name = "Eat!"
|
||||
desc = "A poster depicting a hamburger. The poster orders you to consume the hamburger."
|
||||
|
||||
/datum/poster/bay_33
|
||||
icon_state="bsposter33"
|
||||
name = "Tools, tools, tools"
|
||||
desc = "You can never have enough tools, thats for sure!"
|
||||
|
||||
/datum/poster/bay_34
|
||||
icon_state="bsposter34"
|
||||
name = "Power Up!"
|
||||
desc = "High reward, higher risk!"
|
||||
|
||||
/datum/poster/bay_35
|
||||
icon_state="bsposter35"
|
||||
name = "Lamarr"
|
||||
desc = "This is a poster depicting the pet and mascot of the NSS Exodus science department."
|
||||
|
||||
/datum/poster/bay_36
|
||||
icon_state="bsposter36"
|
||||
name = "Fancy Borg"
|
||||
desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it."
|
||||
|
||||
/datum/poster/bay_37
|
||||
icon_state="bsposter37"
|
||||
name = "Fancier Borg"
|
||||
desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it. This is even fancier than the first poster."
|
||||
|
||||
@@ -63,13 +63,13 @@
|
||||
spawn(0)
|
||||
del(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerplasma(obj)
|
||||
/obj/effect/mine/proc/triggerphoron(obj)
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
if(!target.blocks_air)
|
||||
|
||||
var/datum/gas_mixture/payload = new
|
||||
|
||||
payload.toxins = 30
|
||||
payload.phoron = 30
|
||||
|
||||
target.zone.air.merge(payload)
|
||||
|
||||
@@ -96,10 +96,10 @@
|
||||
icon_state = "uglymine"
|
||||
triggerproc = "triggerrad"
|
||||
|
||||
/obj/effect/mine/plasma
|
||||
name = "Plasma Mine"
|
||||
/obj/effect/mine/phoron
|
||||
name = "Phoron Mine"
|
||||
icon_state = "uglymine"
|
||||
triggerproc = "triggerplasma"
|
||||
triggerproc = "triggerphoron"
|
||||
|
||||
/obj/effect/mine/kick
|
||||
name = "Kick Mine"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
// radio
|
||||
if (0)
|
||||
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/radio/signaler/p1 = new /obj/item/device/radio/signaler(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
R.part1 = p1
|
||||
@@ -47,7 +47,7 @@
|
||||
// proximity
|
||||
if (1)
|
||||
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/prox_sensor/p1 = new /obj/item/device/prox_sensor(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
R.part1 = p1
|
||||
@@ -69,7 +69,7 @@
|
||||
// timer
|
||||
if (2)
|
||||
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p3 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/timer/p1 = new /obj/item/device/timer(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
R.part1 = p1
|
||||
@@ -85,7 +85,7 @@
|
||||
//bombvest
|
||||
if(3)
|
||||
var/obj/item/clothing/suit/armor/a_i_a_ptank/R = new /obj/item/clothing/suit/armor/a_i_a_ptank(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/p4 = new /obj/item/weapon/tank/plasma(R)
|
||||
var/obj/item/weapon/tank/phoron/p4 = new /obj/item/weapon/tank/phoron(R)
|
||||
var/obj/item/device/healthanalyzer/p1 = new /obj/item/device/healthanalyzer(R)
|
||||
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
||||
var/obj/item/clothing/suit/armor/vest/p3 = new /obj/item/clothing/suit/armor/vest(R)
|
||||
@@ -127,7 +127,7 @@
|
||||
..()
|
||||
|
||||
var/obj/item/device/transfer_valve/V = new(src.loc)
|
||||
var/obj/item/weapon/tank/plasma/PT = new(V)
|
||||
var/obj/item/weapon/tank/phoron/PT = new(V)
|
||||
var/obj/item/weapon/tank/oxygen/OT = new(V)
|
||||
|
||||
V.tank_one = PT
|
||||
@@ -136,12 +136,12 @@
|
||||
PT.master = V
|
||||
OT.master = V
|
||||
|
||||
PT.air_contents.temperature = PLASMA_FLASHPOINT
|
||||
PT.air_contents.toxins = 3
|
||||
PT.air_contents.temperature = PHORON_FLASHPOINT
|
||||
PT.air_contents.phoron = 3
|
||||
PT.air_contents.carbon_dioxide = 17
|
||||
PT.air_contents.update_values()
|
||||
|
||||
OT.air_contents.temperature = PLASMA_FLASHPOINT
|
||||
OT.air_contents.temperature = PHORON_FLASHPOINT
|
||||
OT.air_contents.oxygen = 20
|
||||
OT.air_contents.update_values()
|
||||
|
||||
|
||||
@@ -237,6 +237,18 @@
|
||||
/obj/item/proc/equipped(var/mob/user, var/slot)
|
||||
return
|
||||
|
||||
//returns 1 if the item is equipped by a mob, 0 otherwise.
|
||||
//This might need some error trapping, not sure if get_equipped_items() is safe for non-human mobs.
|
||||
/obj/item/proc/is_equipped()
|
||||
if(!ismob(loc))
|
||||
return 0
|
||||
|
||||
var/mob/M = loc
|
||||
if(src in M.get_equipped_items())
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
//the mob M is attempting to equip this item into the slot passed through as 'slot'. Return 1 if it can do this and 0 if it can't.
|
||||
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
|
||||
//Set disable_warning to 1 if you wish it to not give you outputs.
|
||||
|
||||
@@ -83,8 +83,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
icon_state = "pda-j"
|
||||
ttone = "slip"
|
||||
|
||||
/obj/item/device/pda/toxins
|
||||
default_cartridge = /obj/item/weapon/cartridge/signal/toxins
|
||||
/obj/item/device/pda/science
|
||||
default_cartridge = /obj/item/weapon/cartridge/signal/science
|
||||
icon_state = "pda-tox"
|
||||
ttone = "boom"
|
||||
|
||||
@@ -446,14 +446,14 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/o2_level = environment.oxygen/total_moles
|
||||
var/n2_level = environment.nitrogen/total_moles
|
||||
var/co2_level = environment.carbon_dioxide/total_moles
|
||||
var/plasma_level = environment.toxins/total_moles
|
||||
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level)
|
||||
var/phoron_level = environment.phoron/total_moles
|
||||
var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
|
||||
data["aircontents"] = list(\
|
||||
"pressure" = "[round(pressure,0.1)]",\
|
||||
"nitrogen" = "[round(n2_level*100,0.1)]",\
|
||||
"oxygen" = "[round(o2_level*100,0.1)]",\
|
||||
"carbon_dioxide" = "[round(co2_level*100,0.1)]",\
|
||||
"plasma" = "[round(plasma_level*100,0.01)]",\
|
||||
"phoron" = "[round(phoron_level*100,0.01)]",\
|
||||
"other" = "[round(unknown_level, 0.01)]",\
|
||||
"temp" = "[round(environment.temperature-T0C,0.1)]",\
|
||||
"reading" = 1\
|
||||
@@ -1165,15 +1165,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/o2_concentration = A:air_contents.oxygen/total_moles
|
||||
var/n2_concentration = A:air_contents.nitrogen/total_moles
|
||||
var/co2_concentration = A:air_contents.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = A:air_contents.toxins/total_moles
|
||||
var/phoron_concentration = A:air_contents.phoron/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
|
||||
|
||||
user << "\blue Pressure: [round(pressure,0.1)] kPa"
|
||||
user << "\blue Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
user << "\blue Phoron: [round(phoron_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(A:air_contents.temperature-T0C)]°C"
|
||||
@@ -1194,15 +1194,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/o2_concentration = T.parent.air.oxygen/total_moles
|
||||
var/n2_concentration = T.parent.air.nitrogen/total_moles
|
||||
var/co2_concentration = T.parent.air.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = T.parent.air.toxins/total_moles
|
||||
var/phoron_concentration = T.parent.air.phoron/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
|
||||
|
||||
user << "\blue Pressure: [round(pressure,0.1)] kPa"
|
||||
user << "\blue Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
user << "\blue Phoron: [round(phoron_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(T.parent.air.temperature-T0C)]°C"
|
||||
@@ -1293,7 +1293,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/newcart = pick( /obj/item/weapon/cartridge/engineering,
|
||||
/obj/item/weapon/cartridge/security,
|
||||
/obj/item/weapon/cartridge/medical,
|
||||
/obj/item/weapon/cartridge/signal/toxins,
|
||||
/obj/item/weapon/cartridge/signal/science,
|
||||
/obj/item/weapon/cartridge/quartermaster)
|
||||
new newcart(src)
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
name = "generic signaler cartridge"
|
||||
desc = "A data cartridge with an integrated radio signaler module."
|
||||
|
||||
/obj/item/weapon/cartridge/signal/toxins
|
||||
/obj/item/weapon/cartridge/signal/science
|
||||
name = "Signal Ace 2"
|
||||
desc = "Complete with integrated radio signaler!"
|
||||
icon_state = "cart-tox"
|
||||
|
||||
@@ -238,9 +238,9 @@ REAGENT SCANNER
|
||||
var/o2_concentration = environment.oxygen/total_moles
|
||||
var/n2_concentration = environment.nitrogen/total_moles
|
||||
var/co2_concentration = environment.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = environment.toxins/total_moles
|
||||
var/phoron_concentration = environment.phoron/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
|
||||
if(abs(n2_concentration - N2STANDARD) < 20)
|
||||
user.show_message("\blue Nitrogen: [round(n2_concentration*100)]%", 1)
|
||||
else
|
||||
@@ -256,8 +256,8 @@ REAGENT SCANNER
|
||||
else
|
||||
user.show_message("\blue CO2: [round(co2_concentration*100)]%", 1)
|
||||
|
||||
if(plasma_concentration > 0.01)
|
||||
user.show_message("\red Plasma: [round(plasma_concentration*100)]%", 1)
|
||||
if(phoron_concentration > 0.01)
|
||||
user.show_message("\red Phoron: [round(phoron_concentration*100)]%", 1)
|
||||
|
||||
if(unknown_concentration > 0.01)
|
||||
user.show_message("\red Unknown: [round(unknown_concentration*100)]%", 1)
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
/obj/item/borg/upgrade/jetpack
|
||||
name = "mining robot jetpack"
|
||||
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
|
||||
construction_cost = list("metal"=10000,"plasma"=15000,"uranium" = 20000)
|
||||
construction_cost = list("metal"=10000,"phoron"=15000,"uranium" = 20000)
|
||||
icon_state = "cyborg_upgrade3"
|
||||
require_module = 1
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
* Contains:
|
||||
* Glass sheets
|
||||
* Reinforced glass sheets
|
||||
* Plasma Glass Sheets
|
||||
* Reinforced Plasma Glass Sheets (AKA Holy fuck strong windows)
|
||||
* Phoron Glass Sheets
|
||||
* Reinforced Phoron Glass Sheets (AKA Holy fuck strong windows)
|
||||
* Glass shards - TODO: Move this into code/game/object/item/weapons
|
||||
*/
|
||||
|
||||
@@ -300,25 +300,25 @@
|
||||
|
||||
|
||||
/*
|
||||
* Plasma Glass sheets
|
||||
* Phoron Glass sheets
|
||||
*/
|
||||
/obj/item/stack/sheet/glass/plasmaglass
|
||||
name = "plasma glass"
|
||||
desc = "A very strong and very resistant sheet of a plasma-glass alloy."
|
||||
singular_name = "plasma glass sheet"
|
||||
icon_state = "sheet-plasmaglass"
|
||||
/obj/item/stack/sheet/glass/phoronglass
|
||||
name = "phoron glass"
|
||||
desc = "A very strong and very resistant sheet of a phoron-glass alloy."
|
||||
singular_name = "phoron glass sheet"
|
||||
icon_state = "sheet-phoronglass"
|
||||
g_amt = 7500
|
||||
origin_tech = "materials=3;plasma=2"
|
||||
created_window = /obj/structure/window/plasmabasic
|
||||
origin_tech = "materials=3;phoron=2"
|
||||
created_window = /obj/structure/window/phoronbasic
|
||||
|
||||
/obj/item/stack/sheet/glass/plasmaglass/attack_self(mob/user as mob)
|
||||
/obj/item/stack/sheet/glass/phoronglass/attack_self(mob/user as mob)
|
||||
construct_window(user)
|
||||
|
||||
/obj/item/stack/sheet/glass/plasmaglass/attackby(obj/item/W, mob/user)
|
||||
/obj/item/stack/sheet/glass/phoronglass/attackby(obj/item/W, mob/user)
|
||||
..()
|
||||
if( istype(W, /obj/item/stack/rods) )
|
||||
var/obj/item/stack/rods/V = W
|
||||
var/obj/item/stack/sheet/glass/plasmarglass/RG = new (user.loc)
|
||||
var/obj/item/stack/sheet/glass/phoronrglass/RG = new (user.loc)
|
||||
RG.add_fingerprint(user)
|
||||
RG.add_to_stacks(user)
|
||||
V.use(1)
|
||||
@@ -332,17 +332,17 @@
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Reinforced plasma glass sheets
|
||||
* Reinforced phoron glass sheets
|
||||
*/
|
||||
/obj/item/stack/sheet/glass/plasmarglass
|
||||
name = "reinforced plasma glass"
|
||||
desc = "Plasma glass which seems to have rods or something stuck in them."
|
||||
singular_name = "reinforced plasma glass sheet"
|
||||
icon_state = "sheet-plasmarglass"
|
||||
/obj/item/stack/sheet/glass/phoronrglass
|
||||
name = "reinforced phoron glass"
|
||||
desc = "Phoron glass which seems to have rods or something stuck in them."
|
||||
singular_name = "reinforced phoron glass sheet"
|
||||
icon_state = "sheet-phoronrglass"
|
||||
g_amt = 7500
|
||||
m_amt = 1875
|
||||
origin_tech = "materials=4;plasma=2"
|
||||
created_window = /obj/structure/window/plasmareinforced
|
||||
origin_tech = "materials=4;phoron=2"
|
||||
created_window = /obj/structure/window/phoronreinforced
|
||||
|
||||
/obj/item/stack/sheet/glass/plasmarglass/attack_self(mob/user as mob)
|
||||
/obj/item/stack/sheet/glass/phoronrglass/attack_self(mob/user as mob)
|
||||
construct_window(user)
|
||||
@@ -4,7 +4,7 @@ Mineral Sheets
|
||||
- Sandstone
|
||||
- Diamond
|
||||
- Uranium
|
||||
- Plasma
|
||||
- Phoron
|
||||
- Gold
|
||||
- Silver
|
||||
- Clown
|
||||
@@ -90,26 +90,26 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \
|
||||
..()
|
||||
|
||||
/*
|
||||
* Plasma
|
||||
* Phoron
|
||||
*/
|
||||
/obj/item/stack/sheet/mineral/plasma
|
||||
name = "solid plasma"
|
||||
icon_state = "sheet-plasma"
|
||||
/obj/item/stack/sheet/mineral/phoron
|
||||
name = "solid phoron"
|
||||
icon_state = "sheet-phoron"
|
||||
force = 5.0
|
||||
throwforce = 5
|
||||
w_class = 3.0
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "plasmatech=2;materials=2"
|
||||
origin_tech = "phorontech=2;materials=2"
|
||||
perunit = 2000
|
||||
sheettype = "plasma"
|
||||
sheettype = "phoron"
|
||||
|
||||
var/global/list/datum/stack_recipe/plasma_recipes = list ( \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
|
||||
var/global/list/datum/stack_recipe/phoron_recipes = list ( \
|
||||
new/datum/stack_recipe("phoron door", /obj/structure/mineral_door/transparent/phoron, 10, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/plasma/New(var/loc, var/amount=null)
|
||||
recipes = plasma_recipes
|
||||
/obj/item/stack/sheet/mineral/phoron/New(var/loc, var/amount=null)
|
||||
recipes = phoron_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
|
||||
@@ -108,7 +108,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
||||
/obj/item/stack/sheet/plasteel
|
||||
name = "plasteel"
|
||||
singular_name = "plasteel sheet"
|
||||
desc = "This sheet is an alloy of iron and plasma."
|
||||
desc = "This sheet is an alloy of iron and phoron."
|
||||
icon_state = "sheet-plasteel"
|
||||
item_state = "sheet-metal"
|
||||
m_amt = 7500
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/obj/item/stack/tile/grass
|
||||
name = "grass tile"
|
||||
singular_name = "grass floor tile"
|
||||
desc = "A patch of grass like they often use on golf courses"
|
||||
desc = "A patch of grass like they often use on golf courses."
|
||||
icon_state = "tile_grass"
|
||||
w_class = 3.0
|
||||
force = 1.0
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/item/stack/tile/wood
|
||||
name = "wood floor tile"
|
||||
singular_name = "wood floor tile"
|
||||
desc = "an easy to fit wood floor tile"
|
||||
desc = "An easy to fit wooden floor tile."
|
||||
icon_state = "tile-wood"
|
||||
w_class = 3.0
|
||||
force = 1.0
|
||||
@@ -44,7 +44,7 @@
|
||||
/obj/item/stack/tile/carpet
|
||||
name = "carpet"
|
||||
singular_name = "carpet"
|
||||
desc = "A piece of carpet. It is the same size as a floor tile"
|
||||
desc = "A piece of carpet. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-carpet"
|
||||
w_class = 3.0
|
||||
force = 1.0
|
||||
@@ -52,4 +52,4 @@
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
max_amount = 60
|
||||
max_amount = 60
|
||||
|
||||
@@ -136,9 +136,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(!src.lit)
|
||||
src.lit = 1
|
||||
damtype = "fire"
|
||||
if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire
|
||||
if(reagents.get_reagent_amount("phoron")) // the phoron explodes when exposed to fire
|
||||
var/datum/effect/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
|
||||
e.set_up(round(reagents.get_reagent_amount("phoron") / 2.5, 1), get_turf(src), 0, 0)
|
||||
e.start()
|
||||
del(src)
|
||||
return
|
||||
@@ -201,9 +201,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/cigarette/cigar
|
||||
name = "premium cigar"
|
||||
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
|
||||
icon_state = "cigaroff"
|
||||
icon_on = "cigaron"
|
||||
icon_off = "cigaroff"
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_off = "cigar2off"
|
||||
type_butt = /obj/item/weapon/cigbutt/cigarbutt
|
||||
throw_speed = 0.5
|
||||
item_state = "cigaroff"
|
||||
@@ -219,7 +219,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
|
||||
/obj/item/clothing/mask/cigarette/cigar/havana
|
||||
name = "premium Havanian cigar"
|
||||
desc = "A cigar fit for only the best for the best."
|
||||
desc = "A cigar fit for only the best of the best."
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_off = "cigar2off"
|
||||
@@ -247,10 +247,33 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
|
||||
|
||||
/obj/item/clothing/mask/cigarette/cigar/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/match))
|
||||
..()
|
||||
else
|
||||
user << "<span class='notice'>\The [src] straight out REFUSES to be lit by such uncivilized means.</span>"
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.isOn())
|
||||
light("<span class='notice'>[user] insults [name] by lighting it with [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/lighter/zippo))
|
||||
var/obj/item/weapon/lighter/zippo/Z = W
|
||||
if(Z.lit)
|
||||
light("<span class='rose'>With a flick of their wrist, [user] lights their [name] with their [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/lighter))
|
||||
var/obj/item/weapon/lighter/L = W
|
||||
if(L.lit)
|
||||
light("<span class='notice'>[user] manages to offend their [name] by lighting it with [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/match))
|
||||
var/obj/item/weapon/match/M = W
|
||||
if(M.lit)
|
||||
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/melee/energy/sword))
|
||||
var/obj/item/weapon/melee/energy/sword/S = W
|
||||
if(S.active)
|
||||
light("<span class='warning'>[user] swings their [W], barely missing their nose. They light their [name] in the process.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/device/assembly/igniter))
|
||||
light("<span class='notice'>[user] fiddles with [W], and manages to light their [name] with the power of science.</span>")
|
||||
|
||||
/////////////////
|
||||
//SMOKING PIPES//
|
||||
@@ -306,10 +329,28 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/match))
|
||||
..()
|
||||
else
|
||||
user << "<span class='notice'>\The [src] straight out REFUSES to be lit by such means.</span>"
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.isOn())//
|
||||
light("<span class='notice'>[user] recklessly lights [name] with [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/lighter/zippo))
|
||||
var/obj/item/weapon/lighter/zippo/Z = W
|
||||
if(Z.lit)
|
||||
light("<span class='rose'>With much care, [user] lights their [name] with their [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/lighter))
|
||||
var/obj/item/weapon/lighter/L = W
|
||||
if(L.lit)
|
||||
light("<span class='notice'>[user] manages to light their [name] with [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/match))
|
||||
var/obj/item/weapon/match/M = W
|
||||
if(M.lit)
|
||||
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/device/assembly/igniter))
|
||||
light("<span class='notice'>[user] fiddles with [W], and manages to light their [name] with the power of science.</span>")
|
||||
|
||||
/obj/item/clothing/mask/cigarette/pipe/cobpipe
|
||||
name = "corn cob pipe"
|
||||
@@ -423,4 +464,4 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(lit)
|
||||
user.SetLuminosity(user.luminosity-2)
|
||||
SetLuminosity(2)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
m_amt = 500
|
||||
origin_tech = "combat=1;plasmatech=1"
|
||||
origin_tech = "combat=1;phorontech=1"
|
||||
var/status = 0
|
||||
var/throw_amount = 100
|
||||
var/lit = 0 //on or off
|
||||
@@ -19,7 +19,7 @@
|
||||
var/turf/previousturf = null
|
||||
var/obj/item/weapon/weldingtool/weldtool = null
|
||||
var/obj/item/device/assembly/igniter/igniter = null
|
||||
var/obj/item/weapon/tank/plasma/ptank = null
|
||||
var/obj/item/weapon/tank/phoron/ptank = null
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/Del()
|
||||
@@ -102,9 +102,9 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(istype(W,/obj/item/weapon/tank/plasma))
|
||||
if(istype(W,/obj/item/weapon/tank/phoron))
|
||||
if(ptank)
|
||||
user << "<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
|
||||
user.drop_item()
|
||||
ptank = W
|
||||
@@ -123,15 +123,15 @@
|
||||
var/o2_concentration = ptank.air_contents.oxygen/total_moles
|
||||
var/n2_concentration = ptank.air_contents.nitrogen/total_moles
|
||||
var/co2_concentration = ptank.air_contents.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = ptank.air_contents.toxins/total_moles
|
||||
var/phoron_concentration = ptank.air_contents.phoron/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
|
||||
|
||||
user << "\blue Pressure: [round(pressure,0.1)] kPa"
|
||||
user << "\blue Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
user << "\blue Phoron: [round(phoron_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(ptank.air_contents.temperature-T0C)]°C"
|
||||
@@ -146,9 +146,9 @@
|
||||
if(user.stat || user.restrained() || user.lying) return
|
||||
user.set_machine(src)
|
||||
if(!ptank)
|
||||
user << "<span class='notice'>Attach a plasma tank first!</span>"
|
||||
user << "<span class='notice'>Attach a phoron tank first!</span>"
|
||||
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")
|
||||
onclose(user, "flamethrower")
|
||||
return
|
||||
@@ -163,7 +163,7 @@
|
||||
usr.set_machine(src)
|
||||
if(href_list["light"])
|
||||
if(!ptank) return
|
||||
if(ptank.air_contents.toxins < 1) return
|
||||
if(ptank.air_contents.phoron < 1) return
|
||||
if(!status) return
|
||||
lit = !lit
|
||||
if(lit)
|
||||
@@ -212,8 +212,8 @@
|
||||
//Transfer 5% of current tank air contents to turf
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.02*(throw_amount/100))
|
||||
//air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.toxins,get_dir(loc,target))
|
||||
air_transfer.toxins = 0
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.phoron,get_dir(loc,target))
|
||||
air_transfer.phoron = 0
|
||||
target.assume_air(air_transfer)
|
||||
//Burn it based on transfered gas
|
||||
//target.hotspot_expose(part4.air_contents.temperature*2,300)
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
|
||||
B1.reagents.add_reagent("aluminum", 15)
|
||||
B1.reagents.add_reagent("fuel",20)
|
||||
B2.reagents.add_reagent("plasma", 15)
|
||||
B2.reagents.add_reagent("phoron", 15)
|
||||
B2.reagents.add_reagent("sacid", 15)
|
||||
B1.reagents.add_reagent("fuel",20)
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
<center><b>Notes on starting the basic function mode, dubbed .Heat-Primary Mode..</b></center></br></br>
|
||||
|
||||
1. Prepare collector arrays. This is done standard to any text on their function by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.</br></br>
|
||||
1. Prepare collector arrays. This is done standard to any text on their function by wrenching them down, filling six phoron tanks with a phoron canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.</br></br>
|
||||
|
||||
2. Prepare gas system. Before introducing any gas to the Supermatter engine room, it is important to remember the small but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500, or maximum flow. Second, switch the digital switching valve into the .up. position, in order to circulate the gas back toward the coolers and collectors.</br></br>
|
||||
|
||||
@@ -111,11 +111,11 @@
|
||||
|
||||
Additionally, this mode can be used for what is called a .Cold Start.. If the station has no power in the SMES to run the emitters, using this mode will allow enough power output to run them, and quickly reach an acceptable level of power output.</br></br>
|
||||
|
||||
1. Prepare collector arrays. This is done standard to any text on their function by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.</br></br>
|
||||
1. Prepare collector arrays. This is done standard to any text on their function by wrenching them down, filling six phoron tanks with a phoron canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.</br></br>
|
||||
|
||||
2. Prepare gas system. Before introducing any gas to the Supermatter engine room, it is important to remember the small but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500, or maximum flow. Second, switch the digital switching valve into the .up. position, in order to circulate the gas back toward the coolers and collectors.</br></br>
|
||||
|
||||
3. Modify the engine room filters. Unlike the Heat-Primary Mode, it is important to change the filters attached to the gas system to stop filtering O2, and start filtering Carbon Molecules. O2-Reaction Mode produces far more plasma than Heat-Primary, therefor filtering it off is essential.</br></br>
|
||||
3. Modify the engine room filters. Unlike the Heat-Primary Mode, it is important to change the filters attached to the gas system to stop filtering O2, and start filtering Carbon Molecules. O2-Reaction Mode produces far more phoron than Heat-Primary, therefor filtering it off is essential.</br></br>
|
||||
|
||||
4. Switch SMES units to primary settings. Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures.) If you check the power in the system lines at this point you will find that it is constantly going up. Indeed, with just the addition of O2 to the Supermatter, it will begin outputting power.</br></br>
|
||||
|
||||
@@ -131,18 +131,18 @@
|
||||
|
||||
*Radiation (which is converted into power by the collectors,)</br>
|
||||
*Heat (which is removed via the gas exchange system and coolers,)</br>
|
||||
*External gas (in the form of plasma and O2.)</br>
|
||||
*External gas (in the form of phoron and O2.)</br>
|
||||
|
||||
When in Heat-Primary mode, far more heat and plasma are produced than radiation. In O2-Reaction mode, very little heat and only moderate amounts of plasma are produced, however HUGE amounts of energy leaving the Supermatter is in the form of radiation.</br></br>
|
||||
When in Heat-Primary mode, far more heat and phoron are produced than radiation. In O2-Reaction mode, very little heat and only moderate amounts of phoron are produced, however HUGE amounts of energy leaving the Supermatter is in the form of radiation.</br></br>
|
||||
|
||||
The O2-Reaction engine mode has a single drawback which has been eluded to more than once so far and that is very simple. The engine room will continue to grow hotter as the constant reaction continues. Eventually, there will be what he calls the .critical gas mix.. This is the point at which the constant adding of plasma to the mix of air around the Supermatter changes the gas concentration to below the tolerance. When this happens, two things occur. First, the Supermatter switches to its primary mode of operation where in huge amounts of heat are produced by the engine rather than low amounts with high power output. Second, an uncontrollable increase in heat within the Supermatter chamber will occur. This will lead to a spark-up, igniting the plasma in the Supermatter chamber, wildly increasing both pressure and temperature.</br></br>
|
||||
The O2-Reaction engine mode has a single drawback which has been eluded to more than once so far and that is very simple. The engine room will continue to grow hotter as the constant reaction continues. Eventually, there will be what he calls the .critical gas mix.. This is the point at which the constant adding of phoron to the mix of air around the Supermatter changes the gas concentration to below the tolerance. When this happens, two things occur. First, the Supermatter switches to its primary mode of operation where in huge amounts of heat are produced by the engine rather than low amounts with high power output. Second, an uncontrollable increase in heat within the Supermatter chamber will occur. This will lead to a spark-up, igniting the phoron in the Supermatter chamber, wildly increasing both pressure and temperature.</br></br>
|
||||
|
||||
While the O2-Reaction mode is dangerous, it does produce heavy amounts of energy. Consider using this mode only in short amounts to fill the SMES, and switch back later in the shift to keep things flowing normally.</br></br>
|
||||
|
||||
|
||||
Notes on Supermatter Containment and Emergency Procedures-</br></br>
|
||||
|
||||
While a constant vigil on the Supermatter is not required, regular checkups are important. Verify the temp of gas leaving the Supermatter chamber for unsafe levels, and ensure that the plasma in the chamber is at a safe concentration. Of course, also make sure the chamber is not on fire. A fire in the core chamber is very difficult to put out. As any Toxin scientist can tell you, even low amounts of plasma can burn at very high temperatures. This burning creates a huge increase in pressure and more importantly, temperature of the crystal itself.</br></br>
|
||||
While a constant vigil on the Supermatter is not required, regular checkups are important. Verify the temp of gas leaving the Supermatter chamber for unsafe levels, and ensure that the phoron in the chamber is at a safe concentration. Of course, also make sure the chamber is not on fire. A fire in the core chamber is very difficult to put out. As any Toxin scientist can tell you, even low amounts of phoron can burn at very high temperatures. This burning creates a huge increase in pressure and more importantly, temperature of the crystal itself.</br></br>
|
||||
|
||||
The Supermatter is strong, but not invincible. When the Supermatter is heated too much, its crystal structure will attempt to liquify. The change in atomic structure of the Supermatter leads to a single reaction, a massive explosion. The computer chip attached to the Supermatter core will warn the station when stability is threatened. It will then offer a second warning, when things have become dangerously close to total destruction of the core.</br></br>
|
||||
|
||||
@@ -470,7 +470,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.
|
||||
|
||||
<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.
|
||||
|
||||
<h1>Reliability and You</h1>
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
/obj/item/weapon/cell/slime
|
||||
name = "charged slime core"
|
||||
desc = "A yellow slime core infused with plasma, it crackles with power."
|
||||
desc = "A yellow slime core infused with phoron, it crackles with power."
|
||||
origin_tech = "powerstorage=2;biotech=4"
|
||||
icon = 'icons/mob/slimes.dmi' //'icons/obj/harvest.dmi'
|
||||
icon_state = "yellow slime extract" //"potato_battery"
|
||||
|
||||
@@ -10,12 +10,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/proc/can_use()
|
||||
if(!ismob(loc)) return 0
|
||||
var/mob/M = loc
|
||||
if(src in M.get_equipped_items())
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
return is_equipped()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/MouseDrop(obj/over_object as obj, src_location, over_location)
|
||||
|
||||
@@ -132,7 +132,19 @@
|
||||
new /obj/item/ammo_casing/shotgun/blank(src)
|
||||
new /obj/item/ammo_casing/shotgun/blank(src)
|
||||
|
||||
/obj/item/weapon/storage/box/beanbags
|
||||
name = "box of beanbag shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
|
||||
/obj/item/weapon/storage/box/flashbangs
|
||||
name = "box of flashbangs (WARNING)"
|
||||
@@ -410,7 +422,7 @@
|
||||
|
||||
/obj/item/weapon/storage/box/matches
|
||||
name = "matchbox"
|
||||
desc = "A small box of Almost But Not Quite Plasma Premium Matches."
|
||||
desc = "A small box of 'Space-Proof' premium matches."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "matchbox"
|
||||
item_state = "zippo"
|
||||
|
||||
@@ -261,7 +261,7 @@
|
||||
if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow))
|
||||
for(var/mob/M in viewers(usr, null))
|
||||
if (M == usr)
|
||||
usr << "<span class='notice'>You put the [W] into [src].</span>"
|
||||
usr << "<span class='notice'>You put \the [W] into [src].</span>"
|
||||
else if (M in range(1)) //If someone is standing close enough, they can tell what it is...
|
||||
M.show_message("<span class='notice'>[usr] puts [W] into [src].</span>")
|
||||
else if (W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance...
|
||||
@@ -449,6 +449,10 @@
|
||||
del(src)
|
||||
//BubbleWrap END
|
||||
|
||||
|
||||
/obj/item/weapon/storage/hear_talk(mob/M as mob, text)
|
||||
for (var/atom/A in src)
|
||||
if(istype(A,/obj/))
|
||||
var/obj/O = A
|
||||
O.hear_talk(M, text)
|
||||
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
var/datum/gas_mixture/G = src.air_contents.remove(num)
|
||||
|
||||
var/allgases = G.carbon_dioxide + G.nitrogen + G.oxygen + G.toxins //fuck trace gases -Pete
|
||||
var/allgases = G.carbon_dioxide + G.nitrogen + G.oxygen + G.phoron //fuck trace gases -Pete
|
||||
if(allgases >= 0.005)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Oxygen
|
||||
* Anesthetic
|
||||
* Air
|
||||
* Plasma
|
||||
* Phoron
|
||||
* Emergency Oxygen
|
||||
*/
|
||||
|
||||
@@ -92,25 +92,25 @@
|
||||
|
||||
|
||||
/*
|
||||
* Plasma
|
||||
* Phoron
|
||||
*/
|
||||
/obj/item/weapon/tank/plasma
|
||||
name = "plasma tank"
|
||||
desc = "Contains dangerous plasma. Do not inhale. Warning: extremely flammable."
|
||||
icon_state = "plasma"
|
||||
/obj/item/weapon/tank/phoron
|
||||
name = "phoron tank"
|
||||
desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable."
|
||||
icon_state = "phoron"
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
slot_flags = null //they have no straps!
|
||||
|
||||
|
||||
/obj/item/weapon/tank/plasma/New()
|
||||
/obj/item/weapon/tank/phoron/New()
|
||||
..()
|
||||
|
||||
src.air_contents.toxins = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
src.air_contents.phoron = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
//
|
||||
src.air_contents.update_values()
|
||||
return
|
||||
|
||||
/obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/weapon/tank/phoron/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
if (istype(W, /obj/item/weapon/flamethrower))
|
||||
|
||||
@@ -97,15 +97,15 @@
|
||||
var/o2_concentration = air_contents.oxygen/total_moles
|
||||
var/n2_concentration = air_contents.nitrogen/total_moles
|
||||
var/co2_concentration = air_contents.carbon_dioxide/total_moles
|
||||
var/plasma_concentration = air_contents.toxins/total_moles
|
||||
var/phoron_concentration = air_contents.phoron/total_moles
|
||||
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+phoron_concentration)
|
||||
|
||||
user << "\blue Pressure: [round(pressure,0.1)] kPa"
|
||||
user << "\blue Nitrogen: [round(n2_concentration*100)]%"
|
||||
user << "\blue Oxygen: [round(o2_concentration*100)]%"
|
||||
user << "\blue CO2: [round(co2_concentration*100)]%"
|
||||
user << "\blue Plasma: [round(plasma_concentration*100)]%"
|
||||
user << "\blue Phoron: [round(phoron_concentration*100)]%"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "\red Unknown: [round(unknown_concentration*100)]%"
|
||||
user << "\blue Temperature: [round(air_contents.temperature-T0C)]°C"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
/obj/item/weapon/wrench
|
||||
name = "wrench"
|
||||
desc = "A wrench with common uses. Can be found in your hand."
|
||||
desc = "A wrench with many common uses. Can be usually found in your hand."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "wrench"
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
@@ -411,7 +411,7 @@
|
||||
w_class = 3.0
|
||||
m_amt = 70
|
||||
g_amt = 120
|
||||
origin_tech = "engineering=4;plasma=3"
|
||||
origin_tech = "engineering=4;phoron=3"
|
||||
var/last_gen = 0
|
||||
|
||||
|
||||
@@ -428,7 +428,7 @@
|
||||
|
||||
/obj/item/weapon/crowbar
|
||||
name = "crowbar"
|
||||
desc = "Used to hit floors"
|
||||
desc = "Used to remove floors and to pry open doors."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "crowbar"
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "rup"
|
||||
var/spawn_nothing_percentage = 0 // this variable determines the likelyhood that this random object will not spawn anything
|
||||
|
||||
|
||||
|
||||
// creates a new object and deletes itself
|
||||
/obj/random/New()
|
||||
..()
|
||||
@@ -37,8 +37,8 @@
|
||||
/obj/item/weapon/crowbar,\
|
||||
/obj/item/weapon/wrench,\
|
||||
/obj/item/device/flashlight)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/random/technology_scanner
|
||||
name = "Random Scanner"
|
||||
desc = "This is a random technology scanner."
|
||||
@@ -46,10 +46,10 @@
|
||||
icon_state = "atmos"
|
||||
item_to_spawn()
|
||||
return pick(prob(5);/obj/item/device/t_scanner,\
|
||||
prob(2);/obj/item/device/radio/intercom,\
|
||||
prob(2);/obj/item/device/radio,\
|
||||
prob(5);/obj/item/device/analyzer)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/random/powercell
|
||||
name = "Random Powercell"
|
||||
desc = "This is a random powercell."
|
||||
@@ -61,8 +61,8 @@
|
||||
prob(40);/obj/item/weapon/cell/high,\
|
||||
prob(9);/obj/item/weapon/cell/super,\
|
||||
prob(1);/obj/item/weapon/cell/hyper)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/random/bomb_supply
|
||||
name = "Bomb Supply"
|
||||
desc = "This is a random bomb supply."
|
||||
@@ -71,7 +71,8 @@
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/device/assembly/igniter,\
|
||||
/obj/item/device/assembly/prox_sensor,\
|
||||
/obj/item/device/assembly/signaler)
|
||||
/obj/item/device/assembly/signaler,\
|
||||
/obj/item/device/multitool)
|
||||
|
||||
|
||||
/obj/random/toolbox
|
||||
@@ -83,8 +84,8 @@
|
||||
return pick(prob(3);/obj/item/weapon/storage/toolbox/mechanical,\
|
||||
prob(2);/obj/item/weapon/storage/toolbox/electrical,\
|
||||
prob(1);/obj/item/weapon/storage/toolbox/emergency)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/random/tech_supply
|
||||
name = "Random Tech Supply"
|
||||
desc = "This is a random piece of technology supplies."
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user