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

View File

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

View File

@@ -3,4 +3,4 @@
MAP_ICON_TYPE: 0
AUTO_FILE_DIR: OFF
*/
// END_INTERNALS
// END_INTERNALS

View File

@@ -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>
@@ -234,4 +234,45 @@ obj/machinery/atmospherics/trinary/filter/Topic(href, href_list) // -- TLE
*/
return
obj/machinery/atmospherics/trinary/filter/m_filter
icon = 'icons/obj/atmospherics/m_filter.dmi'
icon_state = "intact_off"
dir = SOUTH
initialize_directions = SOUTH|NORTH|EAST
obj/machinery/atmospherics/trinary/filter/m_filter/New()
..()
switch(dir)
if(NORTH)
initialize_directions = WEST|NORTH|SOUTH
if(SOUTH)
initialize_directions = SOUTH|EAST|NORTH
if(EAST)
initialize_directions = EAST|WEST|NORTH
if(WEST)
initialize_directions = WEST|SOUTH|EAST
obj/machinery/atmospherics/trinary/filter/m_filter/initialize()
if(node1 && node2 && node3) return
var/node1_connect = turn(dir, -180)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
if(target.initialize_directions & get_dir(target,src))
node1 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
if(target.initialize_directions & get_dir(target,src))
node2 = target
break
for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect))
if(target.initialize_directions & get_dir(target,src))
node3 = target
break
update_icon()

View File

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

View File

@@ -70,7 +70,7 @@
"scrubbing" = scrubbing,
"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.001) || (environment.carbon_dioxide>0.001) || (environment.trace_gases.len>0))
if((environment.phoron>0.001) || (environment.carbon_dioxide>0.001) || (environment.trace_gases.len>0))
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles()
//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

View File

@@ -80,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
@@ -94,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)
@@ -122,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
@@ -149,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()
@@ -162,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)
@@ -186,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

View File

@@ -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

View File

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

View File

@@ -884,22 +884,22 @@ obj/machinery/atmospherics/pipe/tank/carbon_dioxide
..()
obj/machinery/atmospherics/pipe/tank/toxins
obj/machinery/atmospherics/pipe/tank/phoron
icon = 'icons/obj/atmospherics/orange_pipe_tank.dmi'
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)]&deg;C"

View File

@@ -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()

View File

@@ -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"

View File

@@ -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")

View File

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

View File

@@ -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"

View File

@@ -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)
//

View File

@@ -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
*/

View File

@@ -3,10 +3,10 @@
// External Shield Generator
/obj/item/weapon/circuitboard/shield_gen_ex
name = "Circuit board (Experimental hull shield generator)"
name = "Circuit board (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,19 +20,19 @@ 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"
////////////////////////////////////////
// Shield Generator
/obj/item/weapon/circuitboard/shield_gen
name = "Circuit board (Experimental shield generator)"
name = "Circuit board (Bubble 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,
@@ -43,19 +43,19 @@ datum/design/shield_gen_ex
"/obj/item/weapon/cable_coil" = 5)
datum/design/shield_gen
name = "Circuit Design (Experimental shield generator)"
name = "Circuit Design (Bubble shield generator)"
desc = "Allows for the construction of circuit boards used to build an experimental shield generator."
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"
////////////////////////////////////////
// Shield Capacitor
/obj/item/weapon/circuitboard/shield_cap
name = "Circuit board (Experimental shield capacitor)"
name = "Circuit board (Shield capacitor)"
board_type = "machine"
build_path = "/obj/machinery/shield_capacitor"
origin_tech = "magnets=3;powerstorage=4"
@@ -69,10 +69,10 @@ datum/design/shield_gen
"/obj/item/weapon/cable_coil" = 5)
datum/design/shield_cap
name = "Circuit Design (Experimental shield capacitor)"
name = "Circuit Design (Shield capacitor)"
desc = "Allows for the construction of circuit boards used to build an experimental shielding capacitor."
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"

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/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,

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View File

@@ -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(

View File

@@ -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

View File

@@ -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."}

View File

@@ -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 )

View File

@@ -312,7 +312,7 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
/datum/controller/air_system/proc/has_same_air(turf/A, turf/B)
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

View File

@@ -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"

View File

@@ -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
@@ -230,9 +230,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)
@@ -257,10 +257,10 @@ datum/gas_mixture/proc/check_recombustability(obj/effect/decal/cleanable/liquid_
var/datum/gas/volatile_fuel/fuel = locate() in trace_gases
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
@@ -272,10 +272,10 @@ datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fu
var/datum/gas/volatile_fuel/fuel = locate() in trace_gases
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
@@ -291,7 +291,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

View File

@@ -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,10 +138,11 @@ 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
//should check HIDETAIL as well, but for the moment tails are not a part that can be damaged separately
return 0
/mob/living/carbon/human/proc/suit_contamination()
@@ -153,11 +154,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()

View File

@@ -182,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()
@@ -192,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()
@@ -230,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

View File

@@ -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()

View File

@@ -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]<5D>K ([air.temperature - T0C]<5D>C)"
M << "O2 per N2: [(air.nitrogen ? air.oxygen/air.nitrogen : "N/A")] Moles: [air.total_moles]"
M << "Simulated: [contents.len] ([air.group_multiplier])"

View File

@@ -7,8 +7,8 @@ What are the archived variables for?
#define SPECIFIC_HEAT_TOXIN 200
#define SPECIFIC_HEAT_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)

View File

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

View File

@@ -36,9 +36,6 @@
if(istype(master, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = master
S.close(usr)
else if(istype(master,/obj/item/clothing/suit/storage))
var/obj/item/clothing/suit/storage/S = master
S.close(usr)
return 1
@@ -308,14 +305,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)

View File

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

View File

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

View File

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

View File

@@ -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

View File

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

View File

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

View File

@@ -600,11 +600,11 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
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,
@@ -615,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"
@@ -639,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)
@@ -776,14 +776,14 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
group = "Security"
/datum/supply_packs/securitybarriers
name = "Shield Generators"
name = "Wall shield Generators"
contains = list(/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen,
/obj/machinery/shieldwallgen)
cost = 20
containertype = /obj/structure/closet/crate/secure
containername = "Shield Generators crate"
containername = "wall shield generators crate"
access = access_teleporter
group = "Security"
@@ -1012,10 +1012,28 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/shield_gen
contains = list(/obj/item/weapon/circuitboard/shield_gen)
name = "Experimental shield generator circuitry"
name = "Bubble shield generator circuitry"
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "Experimental shield generator"
containername = "bubble shield generator circuitry crate"
group = "Engineering"
access = access_ce
/datum/supply_packs/shield_gen_ex
contains = list(/obj/item/weapon/circuitboard/shield_gen_ex)
name = "Hull shield generator circuitry"
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "hull shield generator circuitry crate"
group = "Engineering"
access = access_ce
/datum/supply_packs/shield_cap
contains = list(/obj/item/weapon/circuitboard/shield_cap)
name = "Bubble shield capacitor circuitry"
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "shield capacitor circuitry crate"
group = "Engineering"
access = access_ce
@@ -1023,7 +1041,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
@@ -1033,20 +1051,11 @@ 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" */
/datum/supply_packs/shield_cap
contains = list(/obj/item/weapon/circuitboard/shield_cap)
name = "Experimental shield capacitor circuitry"
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "Experimental shield capacitor"
group = "Engineering"
access = access_ce
/datum/supply_packs/eftpos
contains = list(/obj/item/device/eftpos)
name = "EFTPOS scanner"

View File

@@ -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

View File

@@ -1344,45 +1344,45 @@ 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/server
/area/toxins/server
name = "\improper Server Room"
icon_state = "server"
@@ -1894,7 +1894,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

View File

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

View File

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

View File

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

View File

@@ -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>"

View File

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

View File

@@ -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

View File

@@ -358,7 +358,7 @@ datum/objective/escape
if(!location)
return 0
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails tratiors if they are in the shuttle brig -- Polymorph
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails traitors if they are in the shuttle brig -- Polymorph
if(istype(owner.current, /mob/living/carbon))
var/mob/living/carbon/C = owner.current
if (!C.handcuffed)
@@ -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"

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -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)]&deg;C"

View File

@@ -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

View File

@@ -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

View File

@@ -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))

View File

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

View File

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

View File

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

View File

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

View File

@@ -212,7 +212,7 @@ to destroy them and players will be able to make replacements.
name = "Circuit Board (PACMAN-type Generator)"
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,

View File

@@ -258,37 +258,37 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
L.apply_effect(15,IRRADIATE,0)
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))
..()

View File

@@ -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

View File

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

View File

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

View File

@@ -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)

View File

@@ -53,6 +53,8 @@
var/const/WIRE_SHOOTINV = 4
var/check_accounts = 0 // 1 = requires PIN and checks accounts. 0 = You slide an ID, it vends, SPACE COMMUNISM!
var/obj/item/weapon/spacecash/ewallet/ewallet
/obj/machinery/vending/New()
..()
@@ -150,6 +152,11 @@
else if(istype(W, /obj/item/weapon/card) && currently_vending)
var/obj/item/weapon/card/I = W
scan_card(I)
else if (istype(W, /obj/item/weapon/spacecash/ewallet))
user.drop_item()
W.loc = src
ewallet = W
user << "\blue You insert the [W] into the [src]"
else if(src.panel_open)
@@ -243,7 +250,10 @@
dat += "<b>Select an item: </b><br><br>" //the rest is just general spacing and bolding
if (premium.len > 0)
dat += "<b>Coin slot:</b> [coin ? coin : "No coin inserted"] (<a href='byond://?src=\ref[src];remove_coin=1'>Remove</A>)<br><br>"
dat += "<b>Coin slot:</b> [coin ? coin : "No coin inserted"] (<a href='byond://?src=\ref[src];remove_coin=1'>Remove</A>)<br>"
if (ewallet)
dat += "<b>Charge card's credits:</b> [ewallet ? ewallet.worth : "No charge card inserted"] (<a href='byond://?src=\ref[src];remove_ewallet=1'>Remove</A>)<br><br>"
if (src.product_records.len == 0)
dat += "<font color = 'red'>No product loaded!</font>"
@@ -317,6 +327,15 @@
usr << "\blue You remove the [coin] from the [src]"
coin = null
if(href_list["remove_ewallet"] && !istype(usr,/mob/living/silicon))
if (!ewallet)
usr << "There is no charge card in this machine."
return
ewallet.loc = src.loc
if(!usr.get_active_hand())
usr.put_in_hands(ewallet)
usr << "\blue You remove the [ewallet] from the [src]"
ewallet = null
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
usr.set_machine(src)
@@ -344,9 +363,17 @@
if(R.price == null)
src.vend(R, usr)
else
src.currently_vending = R
src.updateUsrDialog()
if (ewallet)
if (R.price <= ewallet.worth)
ewallet.worth -= R.price
src.vend(R, usr)
else
usr << "\red The ewallet doesn't have enough money to pay for that."
src.currently_vending = R
src.updateUsrDialog()
else
src.currently_vending = R
src.updateUsrDialog()
return
else if (href_list["cancel_buying"])
@@ -597,7 +624,7 @@
desc = "A vendor with a wide variety of masks and gas tanks."
icon = 'icons/obj/objects.dmi'
icon_state = "dispenser"
product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/plasma;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/phoron;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
product_amounts = "10;10;10;5;25"
vend_delay = 0
*/
@@ -686,7 +713,7 @@
icon_state = "cart"
icon_deny = "cart-deny"
products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10,
/obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/toxins = 10,/obj/item/device/pda/heads = 10,
/obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/science = 10,/obj/item/device/pda/heads = 10,
/obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
@@ -719,7 +746,7 @@
//This one's from bay12
/obj/machinery/vending/plasmaresearch
/obj/machinery/vending/phoronresearch
name = "Toximate 3000"
desc = "All the fine parts you need in one vending machine!"
products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -16,7 +16,7 @@
var/obj/item/weapon/storage/backpack/BPK = new /obj/item/weapon/storage/backpack(src)
var/obj/item/weapon/storage/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)

View File

@@ -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)

View File

@@ -52,7 +52,7 @@
/datum/poster/bay_11
icon_state="bsposter11"
name = "Underwater Laboratory"
desc = "This particular one is of the fabled last crew of Nanotrasen's previous project before going big on plasma research."
desc = "This particular one is of the fabled last crew of Nanotrasen's previous project before going big on phoron research."
/datum/poster/bay_12
icon_state="bsposter12"
@@ -143,3 +143,104 @@
icon_state="bsposter29"
name = "Winter Is Coming"
desc = "On the poster is a frighteningly large wolf, he warns: \"Only YOU can keep the station from freezing during planetary occultation!\""
/datum/poster/bay_30
icon_state="bsposter30"
name = "Ambrosia Vulgaris"
desc = "Just looking at this poster makes you feel a little bit dizzy."
/datum/poster/bay_31
icon_state="bsposter31"
name = "Donut Corp"
desc = "This is an advertisement for Donut Corp, the new innovation in donut technology!"
/datum/poster/bay_32
icon_state="bsposter32"
name = "Eat!"
desc = "A poster depicting a hamburger. The poster orders you to consume the hamburger."
/datum/poster/bay_33
icon_state="bsposter33"
name = "Tools, tools, tools"
desc = "You can never have enough tools, thats for sure!"
/datum/poster/bay_34
icon_state="bsposter34"
name = "Power Up!"
desc = "High reward, higher risk!"
/datum/poster/bay_35
icon_state="bsposter35"
name = "Lamarr"
desc = "This is a poster depicting the pet and mascot of the NSS Exodus science department."
/datum/poster/bay_36
icon_state="bsposter36"
name = "Fancy Borg"
desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it."
/datum/poster/bay_37
icon_state="bsposter37"
name = "Fancier Borg"
desc = "A poster depicting a cyborg using the service module. 'Fancy Borg' is written on it. This is even fancier than the first poster."
/datum/poster/bay_38
icon_state="bsposter38"
name = "Toaster Love"
desc = "This is a poster of a toaster containing two slices of bread. The word LOVE is written in big pink letters underneath."
/datum/poster/bay_39
icon_state="bsposter39"
name = "Responsible medbay habits, No #91"
desc = "A safety poster with a chemist holding a vial. \"Always wear safety gear while handling dangerous chemicals, even if it concerns only small amounts.\""
/datum/poster/bay_40
icon_state="bsposter40"
name = "Agreeable work environment"
desc = "This poster depicts a young woman in a stylish dress. \"Try to aim for a pleasant atmosphere in the workspace. A friendly word can do more than forms in triplicate.\""
/datum/poster/bay_41
icon_state="bsposter41"
name = "Professional work environment"
desc = "A safety poster featuring a green haired woman in a shimmering blue dress. \"As an Internal Affairs Agent, your job is to create a fair and agreeable work environment for the crewmembers, as discreetly and professionally as possible.\""
/datum/poster/bay_42
icon_state="bsposter42"
name = "Engineering pinup"
desc = "This is pin-up poster. A half-naked girl with white hair, toned muscles and stunning blue eyes looks back at you from the poster. Her welding helmet, tattoos and grey jumpsuit hanging around her waist gives a bit of a rugged feel."
/datum/poster/bay_43
icon_state="bsposter43"
name = "Responsible medbay habits, No #3"
desc = "A safety poster with a purple-haired surgeon. She looks a bit cross. \"Let the surgeons do their work. NEVER replace or remove a surgery tool from where the surgeon put it.\""
/datum/poster/bay_44
icon_state="bsposter44"
name = "Time for a drink?"
desc = "This poster depicts a friendly-looking Tajara holding a tray of drinks."
/datum/poster/bay_45
icon_state="bsposter45"
name = "Responsible engineering habits, No #1"
desc = "A safety poster featuring a blue haired engineer. \"When repairing a machine or construction, always aim for long-term solutions.\""
/datum/poster/bay_46
icon_state="bsposter46"
name = "Inspirational lawyer"
desc = "An inspirational poster depicting a Skrellian lawyer. He seems to be shouting something, while pointing fiercely to the right."
/datum/poster/bay_47
icon_state="bsposter47"
name = "Security pinup"
desc = "This is a pin-up poster. A dark skinned white haired girl poses in the sunlight wearing a tank top with her stomach exposed. The text on the poster states \"M, Succubus of Security.\" and a lipstick mark stains the top right corner, as if kissed by the model herself."
/datum/poster/bay_48
icon_state="bsposter48"
name = "Borg pinup?"
desc = "This is a.. pin-up poster? It is a diagram on an old model of cyborg with a note scribbled in marker on the bottom, on the top there is a large XO written in red marker."
/datum/poster/bay_49
icon_state="bsposter49"
name = "Engineering recruitment"
desc = "This is a poster showing an engineer relaxing by a computer, the text states \"Living the life! Join Engineering today!\""

View File

@@ -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"

View File

@@ -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()

View File

@@ -238,18 +238,6 @@
/obj/item/proc/equipped(var/mob/user, var/slot)
return
//returns 1 if the item is equipped by a mob, 0 otherwise.
//This might need some error trapping, not sure if get_equipped_items() is safe for non-human mobs.
/obj/item/proc/is_equipped()
if(!ismob(loc))
return 0
var/mob/M = loc
if(src in M.get_equipped_items())
return 1
else
return 0
//the mob M is attempting to equip this item into the slot passed through as 'slot'. Return 1 if it can do this and 0 if it can't.
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
//Set disable_warning to 1 if you wish it to not give you outputs.

View File

@@ -83,8 +83,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon_state = "pda-j"
ttone = "slip"
/obj/item/device/pda/toxins
default_cartridge = /obj/item/weapon/cartridge/signal/toxins
/obj/item/device/pda/science
default_cartridge = /obj/item/weapon/cartridge/signal/science
icon_state = "pda-tox"
ttone = "boom"
@@ -446,14 +446,14 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/o2_level = environment.oxygen/total_moles
var/n2_level = environment.nitrogen/total_moles
var/co2_level = environment.carbon_dioxide/total_moles
var/plasma_level = environment.toxins/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level)
var/phoron_level = environment.phoron/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
data["aircontents"] = list(\
"pressure" = "[round(pressure,0.1)]",\
"nitrogen" = "[round(n2_level*100,0.1)]",\
"oxygen" = "[round(o2_level*100,0.1)]",\
"carbon_dioxide" = "[round(co2_level*100,0.1)]",\
"plasma" = "[round(plasma_level*100,0.01)]",\
"phoron" = "[round(phoron_level*100,0.01)]",\
"other" = "[round(unknown_level, 0.01)]",\
"temp" = "[round(environment.temperature-T0C,0.1)]",\
"reading" = 1\
@@ -556,7 +556,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
mode = 1
if("2")//Messenger
mode = 2
if("21")//Read messeges
if("21")//Read messages
mode = 21
if("3")//Atmos scan
mode = 3
@@ -818,7 +818,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
message += "You feel a searing heat! Your [P] is burning!"
if(i>=20 && i<=25) //EMP
empulse(P.loc, 3, 6, 1)
message += "Your [P] emits a wave of electomagnetic energy!"
message += "Your [P] emits a wave of electromagnetic energy!"
if(i>=25 && i<=40) //Smoke
var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
S.attach(P.loc)
@@ -895,7 +895,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/obj/machinery/message_server/useMS = null
if(message_servers)
for (var/obj/machinery/message_server/MS in message_servers)
//PDAs are now dependant on the Message Server.
//PDAs are now dependent on the Message Server.
if(MS.active)
useMS = MS
break
@@ -914,7 +914,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
t = Gibberish(t, signal.data["compression"] + 50)
if(useMS && useTC) // only send the message if it's stable
if(useTC != 2) // Does our recepient have a broadcaster on their level?
if(useTC != 2) // Does our recipient have a broadcaster on their level?
U << "ERROR: Cannot reach recipient."
return
useMS.send_pda_message("[P.owner]","[owner]","[t]")
@@ -957,7 +957,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(L)
L << "\icon[P] <b>Message from [src.owner] ([ownjob]), </b>\"[t]\" (<a href='byond://?src=\ref[P];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
nanomanager.update_user_uis(L, P) // Update the recieving user's PDA UI so that they can see the new message
nanomanager.update_user_uis(L, P) // Update the receiving user's PDA UI so that they can see the new message
nanomanager.update_user_uis(U, P) // Update the sending user's PDA UI so that they can see the new message
@@ -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)]&deg;C"
@@ -1194,15 +1194,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/o2_concentration = T.parent.air.oxygen/total_moles
var/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)]&deg;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)

View File

@@ -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"

View File

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

View File

@@ -7,9 +7,15 @@
var/mode = "grey"
/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob)
if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated))
if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated) || !in_range(user, A))
return
var/obj/machinery/atmospherics/pipe/P = A
var/turf/T = P.loc
if (P.level < 2 && T.level==1 && isturf(T) && T.intact)
user << "\red You must remove the plating first."
return
P.pipe_color = mode
user.visible_message("<span class='notice'>[user] paints \the [P] [mode].</span>","<span class='notice'>You paint \the [P] [mode].</span>")
P.update_icon()

View File

@@ -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)

View File

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

View File

@@ -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

View File

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

View File

@@ -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
..()

View File

@@ -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

View File

@@ -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

View File

@@ -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)]&deg;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)

View File

@@ -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)

View File

@@ -512,7 +512,7 @@
This machine, along with the Protolathe, is used to actually produce new devices. The Circuit Imprinter takes glass and various chemicals (depends on the design) to produce new circuit boards to build new machines or computers. It can even be used to print AI modules.
<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.
<h2>Reliability and You</h2>

View File

@@ -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"

View File

@@ -15,9 +15,22 @@
max_combined_w_class = 21
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob)
playsound(src.loc, "rustle", 50, 1, -5)
if (src.use_sound)
playsound(src.loc, src.use_sound, 50, 1, -5)
..()
/obj/item/weapon/storage/backpack/equipped(var/mob/user, var/slot)
if (slot == slot_back && src.use_sound)
playsound(src.loc, src.use_sound, 50, 1, -5)
..(user, slot)
/*
/obj/item/weapon/storage/backpack/dropped(mob/user as mob)
if (loc == user && src.use_sound)
playsound(src.loc, src.use_sound, 50, 1, -5)
..(user)
*/
/*
* Backpack Types
*/

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