mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
ZAS settings reworked to be more configurable.
This commit is contained in:
@@ -1343,8 +1343,8 @@
|
||||
#include "code\ZAS\FEA_system.dm"
|
||||
#include "code\ZAS\Fire.dm"
|
||||
#include "code\ZAS\Functions.dm"
|
||||
#include "code\ZAS\NewSettings.dm"
|
||||
#include "code\ZAS\Plasma.dm"
|
||||
#include "code\ZAS\Variable Settings.dm"
|
||||
#include "code\ZAS\ZAS_Turfs.dm"
|
||||
#include "code\ZAS\ZAS_Zones.dm"
|
||||
#include "interface\interface.dm"
|
||||
|
||||
@@ -52,12 +52,12 @@ mob/var/tmp/last_airflow_stun = 0
|
||||
mob/proc/airflow_stun()
|
||||
if(stat == 2)
|
||||
return 0
|
||||
if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0
|
||||
if(last_airflow_stun > world.time - zas_settings.Get("airflow_stun_cooldown")) return 0
|
||||
if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN))
|
||||
src << "\blue You stay upright as the air rushes past you."
|
||||
return 0
|
||||
|
||||
if(vsc.airflow_push)
|
||||
if(zas_settings.Get("airflow_push"))
|
||||
if(weakened <= 0) src << "\red The sudden rush of air knocks you over!"
|
||||
weakened = max(weakened,5)
|
||||
last_airflow_stun = world.time
|
||||
@@ -72,7 +72,7 @@ mob/living/carbon/metroid/airflow_stun()
|
||||
return
|
||||
|
||||
mob/living/carbon/human/airflow_stun()
|
||||
if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0
|
||||
if(last_airflow_stun > world.time - zas_settings.Get("airflow_stun_cooldown")) return 0
|
||||
if(buckled) return 0
|
||||
if(shoes)
|
||||
if(shoes.flags & NOSLIP) return 0
|
||||
@@ -80,7 +80,7 @@ mob/living/carbon/human/airflow_stun()
|
||||
src << "\blue You stay upright as the air rushes past you."
|
||||
return 0
|
||||
|
||||
if(vsc.airflow_push)
|
||||
if(zas_settings.Get("airflow_push"))
|
||||
if(weakened <= 0) src << "\red The sudden rush of air knocks you over!"
|
||||
weakened = max(weakened,rand(1,5))
|
||||
last_airflow_stun = world.time
|
||||
@@ -89,17 +89,17 @@ mob/living/carbon/human/airflow_stun()
|
||||
last_airflow_stun = world.time
|
||||
|
||||
atom/movable/proc/check_airflow_movable(n)
|
||||
if(!vsc.airflow_push)
|
||||
if(!zas_settings.Get("airflow_push"))
|
||||
return 0
|
||||
if(anchored && !ismob(src))
|
||||
return 0
|
||||
if(!istype(src,/obj/item) && n < vsc.airflow_dense_pressure)
|
||||
if(!istype(src,/obj/item) && n < zas_settings.Get("airflow_dense_pressure"))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
mob/check_airflow_movable(n)
|
||||
if(n < vsc.airflow_heavy_pressure)
|
||||
if(n < zas_settings.Get("airflow_heavy_pressure"))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -114,11 +114,11 @@ obj/item/check_airflow_movable(n)
|
||||
. = ..()
|
||||
switch(w_class)
|
||||
if(2)
|
||||
if(n < vsc.airflow_lightest_pressure) return 0
|
||||
if(n < zas_settings.Get("airflow_lightest_pressure")) return 0
|
||||
if(3)
|
||||
if(n < vsc.airflow_light_pressure) return 0
|
||||
if(n < zas_settings.Get("airflow_light_pressure")) return 0
|
||||
if(4,5)
|
||||
if(n < vsc.airflow_medium_pressure) return 0
|
||||
if(n < zas_settings.Get("airflow_medium_pressure")) return 0
|
||||
|
||||
//The main airflow code. Called by zone updates.
|
||||
//Zones A and B are air zones. n represents the amount of air moved.
|
||||
@@ -128,7 +128,7 @@ proc/Airflow(zone/A, zone/B)
|
||||
var/n = B.air.return_pressure() - A.air.return_pressure()
|
||||
|
||||
//Don't go any further if n is lower than the lowest value needed for airflow.
|
||||
if(abs(n) < vsc.airflow_lightest_pressure) return
|
||||
if(abs(n) < zas_settings.Get("airflow_lightest_pressure")) return
|
||||
|
||||
//These turfs are the midway point between A and B, and will be the destination point for thrown objects.
|
||||
var/list/connection/connections_A = A.connections
|
||||
@@ -153,12 +153,12 @@ proc/Airflow(zone/A, zone/B)
|
||||
var/list/temporary_pplz = air_sucked
|
||||
air_sucked = air_repelled
|
||||
air_repelled = temporary_pplz
|
||||
if(vsc.airflow_push) // If enabled
|
||||
if(zas_settings.Get("airflow_push")) // If enabled
|
||||
for(var/atom/movable/M in air_sucked)
|
||||
if(M.last_airflow > world.time - vsc.airflow_delay) continue
|
||||
if(M.last_airflow > world.time - zas_settings.Get("airflow_delay")) continue
|
||||
|
||||
//Check for knocking people over
|
||||
if(ismob(M) && n > vsc.airflow_stun_pressure)
|
||||
if(ismob(M) && n > zas_settings.Get("airflow_stun_pressure"))
|
||||
if(M:status_flags & GODMODE) continue
|
||||
M:airflow_stun()
|
||||
|
||||
@@ -180,9 +180,9 @@ proc/Airflow(zone/A, zone/B)
|
||||
//Do it again for the stuff in the other zone, making it fly away.
|
||||
for(var/atom/movable/M in air_repelled)
|
||||
|
||||
if(M.last_airflow > world.time - vsc.airflow_delay) continue
|
||||
if(M.last_airflow > world.time - zas_settings.Get("airflow_delay")) continue
|
||||
|
||||
if(ismob(M) && abs(n) > vsc.airflow_medium_pressure)
|
||||
if(ismob(M) && abs(n) > zas_settings.Get("airflow_medium_pressure"))
|
||||
if(M:status_flags & GODMODE) continue
|
||||
M:airflow_stun()
|
||||
|
||||
@@ -207,16 +207,16 @@ proc/AirflowSpace(zone/A)
|
||||
var/n = A.air.return_pressure()
|
||||
//Here, n is determined by only the pressure in the room.
|
||||
|
||||
if(n < vsc.airflow_lightest_pressure) return
|
||||
if(n < zas_settings.Get("airflow_lightest_pressure")) return
|
||||
|
||||
var/list/connected_turfs = A.unsimulated_tiles //The midpoints are now all the space connections.
|
||||
var/list/pplz = A.movables() //We only need to worry about things in the zone, not things in space.
|
||||
|
||||
if(vsc.airflow_push) // If enabled
|
||||
if(zas_settings.Get("airflow_push")) // If enabled
|
||||
for(var/atom/movable/M in pplz)
|
||||
if(M.last_airflow > world.time - vsc.airflow_delay) continue
|
||||
if(M.last_airflow > world.time - zas_settings.Get("airflow_delay")) continue
|
||||
|
||||
if(ismob(M) && n > vsc.airflow_stun_pressure)
|
||||
if(ismob(M) && n > zas_settings.Get("airflow_stun_pressure"))
|
||||
var/mob/O = M
|
||||
if(O.status_flags & GODMODE) continue
|
||||
O.airflow_stun()
|
||||
@@ -243,10 +243,10 @@ atom/movable
|
||||
var/tmp/last_airflow = 0
|
||||
|
||||
proc/GotoAirflowDest(n)
|
||||
if(!vsc.airflow_push) return // If not enabled, fuck it.
|
||||
if(!zas_settings.Get("airflow_push")) return // If not enabled, fuck it.
|
||||
if(!airflow_dest) return
|
||||
if(airflow_speed < 0) return
|
||||
if(last_airflow > world.time - vsc.airflow_delay) return
|
||||
if(last_airflow > world.time - zas_settings.Get("airflow_delay")) return
|
||||
if(airflow_speed)
|
||||
airflow_speed = n/max(get_dist(src,airflow_dest),1)
|
||||
return
|
||||
@@ -280,7 +280,7 @@ atom/movable
|
||||
while(airflow_speed > 0)
|
||||
if(airflow_speed <= 0) return
|
||||
airflow_speed = min(airflow_speed,15)
|
||||
airflow_speed -= vsc.airflow_speed_decay
|
||||
airflow_speed -= zas_settings.Get("airflow_speed_decay")
|
||||
if(airflow_speed > 7)
|
||||
if(airflow_time++ >= airflow_speed - 7)
|
||||
if(od)
|
||||
@@ -300,7 +300,7 @@ atom/movable
|
||||
return
|
||||
step_towards(src, src.airflow_dest)
|
||||
if(ismob(src) && src:client)
|
||||
src:client:move_delay = world.time + vsc.airflow_mob_slowdown
|
||||
src:client:move_delay = world.time + zas_settings.Get("airflow_mob_slowdown")
|
||||
airflow_dest = null
|
||||
airflow_speed = 0
|
||||
airflow_time = 0
|
||||
@@ -309,10 +309,10 @@ atom/movable
|
||||
|
||||
|
||||
proc/RepelAirflowDest(n)
|
||||
if(!vsc.airflow_push) return // If not enabled, fuck it.
|
||||
if(!zas_settings.Get("airflow_push")) return // If not enabled, fuck it.
|
||||
if(!airflow_dest) return
|
||||
if(airflow_speed < 0) return
|
||||
if(last_airflow > world.time - vsc.airflow_delay) return
|
||||
if(last_airflow > world.time - zas_settings.Get("airflow_delay")) return
|
||||
if(airflow_speed)
|
||||
airflow_speed = n/max(get_dist(src,airflow_dest),1)
|
||||
return
|
||||
@@ -346,7 +346,7 @@ atom/movable
|
||||
while(airflow_speed > 0)
|
||||
if(airflow_speed <= 0) return
|
||||
airflow_speed = min(airflow_speed,15)
|
||||
airflow_speed -= vsc.airflow_speed_decay
|
||||
airflow_speed -= zas_settings.Get("airflow_speed_decay")
|
||||
if(airflow_speed > 7)
|
||||
if(airflow_time++ >= airflow_speed - 7)
|
||||
sleep(1 * tick_multiplier)
|
||||
@@ -360,7 +360,7 @@ atom/movable
|
||||
return
|
||||
step_towards(src, src.airflow_dest)
|
||||
if(ismob(src) && src:client)
|
||||
src:client:move_delay = world.time + vsc.airflow_mob_slowdown
|
||||
src:client:move_delay = world.time + zas_settings.Get("airflow_mob_slowdown")
|
||||
airflow_dest = null
|
||||
airflow_speed = 0
|
||||
airflow_time = 0
|
||||
@@ -405,7 +405,7 @@ mob/living/carbon/human/airflow_hit(atom/A)
|
||||
src.wear_suit.add_blood(src)
|
||||
if (src.w_uniform)
|
||||
src.w_uniform.add_blood(src)
|
||||
var/b_loss = airflow_speed * vsc.airflow_damage
|
||||
var/b_loss = airflow_speed * zas_settings.Get("airflow_damage")
|
||||
|
||||
var/blocked = run_armor_check("head","melee")
|
||||
apply_damage(b_loss/3, BRUTE, "head", blocked, 0, "Airflow")
|
||||
@@ -416,12 +416,12 @@ mob/living/carbon/human/airflow_hit(atom/A)
|
||||
blocked = run_armor_check("groin","melee")
|
||||
apply_damage(b_loss/3, BRUTE, "groin", blocked, 0, "Airflow")
|
||||
|
||||
if(vsc.airflow_push)
|
||||
if(zas_settings.Get("airflow_push"))
|
||||
if(airflow_speed > 10)
|
||||
paralysis += round(airflow_speed * vsc.airflow_stun)
|
||||
paralysis += round(airflow_speed * zas_settings.Get("airflow_stun"))
|
||||
stunned = max(stunned,paralysis + 3)
|
||||
else
|
||||
stunned += round(airflow_speed * vsc.airflow_stun/2)
|
||||
stunned += round(airflow_speed * zas_settings.Get("airflow_stun")/2)
|
||||
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -128,12 +128,12 @@ obj
|
||||
|
||||
//Spread the fire.
|
||||
if(!(locate(/obj/fire) in enemy_tile))
|
||||
if( prob( 50 + 50 * (firelevel/vsc.fire_firelevel_multiplier) ) && S.CanPass(null, enemy_tile, 0,0) && enemy_tile.CanPass(null, S, 0,0))
|
||||
if( prob( 50 + 50 * (firelevel/zas_settings.Get("fire_firelevel_multiplier")) ) && S.CanPass(null, enemy_tile, 0,0) && enemy_tile.CanPass(null, S, 0,0))
|
||||
new/obj/fire(enemy_tile,firelevel)
|
||||
|
||||
//seperate part of the present gas
|
||||
//this is done to prevent the fire burning all gases in a single pass
|
||||
var/datum/gas_mixture/flow = air_contents.remove_ratio(vsc.fire_consuption_rate)
|
||||
var/datum/gas_mixture/flow = air_contents.remove_ratio(zas_settings.Get("fire_consuption_rate"))
|
||||
///////////////////////////////// FLOW HAS BEEN CREATED /// DONT DELETE THE FIRE UNTIL IT IS MERGED BACK OR YOU WILL DELETE AIR ///////////////////////////////////////////////
|
||||
|
||||
if(flow)
|
||||
@@ -225,7 +225,7 @@ datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, forc
|
||||
var/total_reactants = total_fuel + total_oxygen
|
||||
|
||||
//determine the amount of reactants actually reacting
|
||||
var/used_reactants_ratio = min( max(total_reactants * firelevel / vsc.fire_firelevel_multiplier, 0.2), total_reactants) / total_reactants
|
||||
var/used_reactants_ratio = min( max(total_reactants * firelevel / zas_settings.Get("fire_firelevel_multiplier"), 0.2), total_reactants) / total_reactants
|
||||
|
||||
//remove and add gasses as calculated
|
||||
oxygen -= min(oxygen, total_oxygen * used_reactants_ratio )
|
||||
@@ -246,7 +246,7 @@ datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, forc
|
||||
if(liquid.amount <= 0) del liquid
|
||||
|
||||
//calculate the energy produced by the reaction and then set the new temperature of the mix
|
||||
temperature = (starting_energy + vsc.fire_fuel_energy_release * total_fuel) / heat_capacity()
|
||||
temperature = (starting_energy + zas_settings.Get("fire_fuel_energy_release") * total_fuel) / heat_capacity()
|
||||
|
||||
update_values()
|
||||
value = total_reactants * used_reactants_ratio
|
||||
@@ -311,7 +311,7 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue
|
||||
//calculates how close the mixture of the reactants is to the optimum
|
||||
var/mix_multiplier = 1 / (1 + (5 * ((oxygen / total_combustables) ^2)))
|
||||
//toss everything together
|
||||
firelevel = vsc.fire_firelevel_multiplier * mix_multiplier * dampening_multiplier
|
||||
firelevel = zas_settings.Get("fire_firelevel_multiplier") * mix_multiplier * dampening_multiplier
|
||||
|
||||
return max( 0, firelevel)
|
||||
|
||||
@@ -330,7 +330,7 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue
|
||||
|
||||
//determine the multiplier
|
||||
//minimize this for low-pressure enviroments
|
||||
var/mx = 5 * firelevel/vsc.fire_firelevel_multiplier * min(pressure / ONE_ATMOSPHERE, 1)
|
||||
var/mx = 5 * firelevel/zas_settings.Get("fire_firelevel_multiplier") * min(pressure / ONE_ATMOSPHERE, 1)
|
||||
|
||||
//Get heat transfer coefficients for clothing.
|
||||
//skytodo: kill anyone who breaks things then orders me to fix them
|
||||
|
||||
@@ -1,19 +1,30 @@
|
||||
/***************************
|
||||
* FUCKING EXPERIMENTAL WILL EAT YOUR CHILDREN
|
||||
****************************
|
||||
/*
|
||||
ZAS Settings System 2.0
|
||||
|
||||
Okay, so VariableSettings is a mess of spaghetticode.
|
||||
Okay, so VariableSettings is a mess of spaghetticode and
|
||||
is about as flexible as a grandmother covered in
|
||||
starch.
|
||||
|
||||
This is an attempt to fix that by using getters and
|
||||
setters instead of stupidity. It may or may
|
||||
not work, but dammit, it's better than hackery.
|
||||
setters instead of stupidity. It's a little more difficult
|
||||
to code with, but dammit, it's better than hackery.
|
||||
|
||||
NOTE: plc was merged into the main settings. We can set up
|
||||
visual groups later.
|
||||
|
||||
HOW2GET:
|
||||
zas_setting.Get(/datum/ZAS_Setting/herp)
|
||||
|
||||
HOW2SET:
|
||||
zas_setting.Set(/datum/ZAS_Setting/herp, "dsfargeg")
|
||||
*/
|
||||
|
||||
var/global/ZAS_Settings/vsc = new
|
||||
var/global/ZAS_Settings/zas_settings = new
|
||||
|
||||
#define ZAS_TYPE_UNDEFINED -1
|
||||
#define ZAS_TYPE_BOOLEAN 0
|
||||
#define ZAS_TYPE_NUMERIC 1
|
||||
|
||||
/**
|
||||
* ZAS Setting Datum
|
||||
*
|
||||
@@ -137,6 +148,67 @@ var/global/ZAS_Settings/vsc = new
|
||||
desc = "The smallest temperature difference which will cause heat to travel through doors."
|
||||
valtype=ZAS_TYPE_NUMERIC
|
||||
|
||||
|
||||
///////////////////////////////////////
|
||||
// PLASMA SHIT
|
||||
///////////////////////////////////////
|
||||
// ALL CAPS BECAUSE PLASMA IS HARDCORE YO
|
||||
// And I'm too lazy to fix the refs.
|
||||
|
||||
/datum/ZAS_Setting/PLASMA_DMG
|
||||
name = "Plasma Damage Amount"
|
||||
desc = "Self Descriptive"
|
||||
value = 3
|
||||
valtype=ZAS_TYPE_NUMERIC
|
||||
|
||||
/datum/ZAS_Setting/CLOTH_CONTAMINATION
|
||||
name = "Cloth Contamination"
|
||||
desc = "If this is on, plasma does damage by getting into cloth."
|
||||
value = 1
|
||||
valtype=ZAS_TYPE_BOOLEAN
|
||||
|
||||
/datum/ZAS_Setting/PLASMAGUARD_ONLY
|
||||
name = "PlasmaGuard Only"
|
||||
desc = "If this is on, only biosuits and spacesuits protect against contamination and ill effects."
|
||||
value = 0
|
||||
valtype=ZAS_TYPE_BOOLEAN
|
||||
|
||||
/datum/ZAS_Setting/GENETIC_CORRUPTION
|
||||
name = "Genetic Corruption Chance"
|
||||
desc = "Chance of genetic corruption as well as toxic damage, X in 10,000."
|
||||
value = 0
|
||||
valtype=ZAS_TYPE_BOOLEAN
|
||||
|
||||
/datum/ZAS_Setting/SKIN_BURNS
|
||||
name = "Skin Burns"
|
||||
desc = "Plasma has an effect similar to mustard gas on the un-suited."
|
||||
value = 0
|
||||
valtype=ZAS_TYPE_BOOLEAN
|
||||
|
||||
/datum/ZAS_Setting/EYE_BURNS
|
||||
name = "Eye Burns"
|
||||
desc = "Plasma burns the eyes of anyone not wearing eye protection."
|
||||
value = 1
|
||||
valtype=ZAS_TYPE_BOOLEAN
|
||||
|
||||
/datum/ZAS_Setting/CONTAMINATION_LOSS
|
||||
name = "Contamination Loss"
|
||||
desc = "How much toxin damage is dealt from contaminated clothing"
|
||||
value = 0.02 //Per tick? ASK ARYN
|
||||
valtype=ZAS_TYPE_NUMERIC
|
||||
|
||||
/datum/ZAS_Setting/PLASMA_HALLUCINATION
|
||||
name = "Plasma Hallucination"
|
||||
desc = "Does being in plasma cause you to hallucinate?"
|
||||
value = 0
|
||||
valtype=ZAS_TYPE_BOOLEAN
|
||||
|
||||
/datum/ZAS_Setting/N2O_HALLUCINATION
|
||||
name = "N2O Hallucination"
|
||||
desc = "Does being in sleeping gas cause you to hallucinate?"
|
||||
value = 1
|
||||
valtype=ZAS_TYPE_BOOLEAN
|
||||
|
||||
/**
|
||||
* ZAS Settings
|
||||
*
|
||||
@@ -146,24 +218,68 @@ var/global/ZAS_Settings/vsc = new
|
||||
* @subpackage ZAS
|
||||
*/
|
||||
/ZAS_Settings
|
||||
// INTERNAL USE ONLY
|
||||
var/list/datum/ZAS_Setting/settings = list()
|
||||
pl_control/plc = new()
|
||||
|
||||
/ZAS_Settings/New()
|
||||
.=..()
|
||||
for(var/S in typesof(/datum/ZAS_Setting) - /datum/ZAS_Setting)
|
||||
testing("Creating [S]")
|
||||
var/id=idfrompath("[S]")
|
||||
settings[id]=new S
|
||||
//testing("Creating zas_settings\[[id]\] = new [S]")
|
||||
src.settings[id]=new S
|
||||
|
||||
|
||||
if(fexists("config/ZAS.txt") == 0)
|
||||
Save()
|
||||
Load()
|
||||
|
||||
/ZAS_Settings/proc/Save()
|
||||
var/F = file("config/ZAS.txt")
|
||||
fdel(F)
|
||||
for(var/id in src.settings)
|
||||
var/datum/ZAS_Setting/setting = src.settings[id]
|
||||
F << "# [setting.name]"
|
||||
F << "# [setting.desc]"
|
||||
F << "[id] [setting.value]"
|
||||
F << ""
|
||||
|
||||
/ZAS_Settings/proc/Load()
|
||||
for(var/t in file2list("config/ZAS.txt"))
|
||||
if(!t) continue
|
||||
|
||||
t = trim(t)
|
||||
if (length(t) == 0)
|
||||
continue
|
||||
else if (copytext(t, 1, 2) == "#")
|
||||
continue
|
||||
|
||||
var/pos = findtext(t, " ")
|
||||
var/name = null
|
||||
var/value = null
|
||||
|
||||
if (pos)
|
||||
name = copytext(t, 1, pos)
|
||||
value = copytext(t, pos + 1)
|
||||
else
|
||||
name = t
|
||||
|
||||
if (!name)
|
||||
continue
|
||||
|
||||
src.SetFromConfig(name,value)
|
||||
|
||||
// INTERNAL USE ONLY
|
||||
/ZAS_Settings/proc/idfrompath(var/str)
|
||||
return replacetext(str,"/datum/ZAS_Setting/","")
|
||||
|
||||
/ZAS_Settings/proc/Set(var/id, var/value)
|
||||
var/datum/ZAS_Setting/setting = settings[id]
|
||||
// INTERNAL USE ONLY
|
||||
/ZAS_Settings/proc/ChangeSetting(var/user,var/id)
|
||||
var/datum/ZAS_Setting/setting = src.settings[id]
|
||||
var/displayedValue=""
|
||||
switch(setting.valtype)
|
||||
if(ZAS_TYPE_NUMERIC)
|
||||
setting.value = input(user,"Enter a number:","Settings",newvar) as num
|
||||
setting.value = input(user,"Enter a number:","Settings",setting.value) as num
|
||||
displayedValue="\"[setting.value]\""
|
||||
/*
|
||||
if(ZAS_TYPE_BITFLAG)
|
||||
var/flag = input(user,"Toggle which bit?","Settings") in bitflags
|
||||
@@ -174,28 +290,207 @@ var/global/ZAS_Settings/vsc = new
|
||||
newvar |= flag
|
||||
*/
|
||||
if(ZAS_TYPE_BOOLEAN)
|
||||
setting.value = !newvar
|
||||
setting.value = !setting.value
|
||||
displayedValue = (setting.value) ? "ON" : "OFF"
|
||||
/*
|
||||
if(ZAS_TYPE_STRING)
|
||||
setting.value = input(user,"Enter text:","Settings",newvar) as message
|
||||
*/
|
||||
else
|
||||
error("[S] has an invalid type. Enjoy your hard crash bb.")
|
||||
var/lol=1/0
|
||||
error("[lol]") // Just in case this compiler optimizes out unused vars.
|
||||
error("[id] has an invalid typeval.")
|
||||
return
|
||||
world << "\blue <b>[key_name(user)] changed ZAS setting <i>[setting.name]</i> to <i>[displayedValue]</i>.</b>"
|
||||
|
||||
ChangeSettingsDialog(user)
|
||||
|
||||
/**
|
||||
* Set the value of a setting.
|
||||
*
|
||||
* Recommended to use the actual type of the setting rather than the ID, since
|
||||
* this will allow for the compiler to check the validity of id. Kinda.
|
||||
*
|
||||
* @param id Either the typepath of the desired setting, or the string ID of the setting.
|
||||
* @param value The value that the setting should be set to.
|
||||
*/
|
||||
/ZAS_Settings/proc/Set(var/id, var/value)
|
||||
var/datum/ZAS_Setting/setting = src.settings[idfrompath(id)]
|
||||
setting.value=value
|
||||
|
||||
// INTERNAL USE ONLY
|
||||
/ZAS_Settings/proc/SetFromConfig(var/id, var/value)
|
||||
var/datum/ZAS_Setting/setting = src.settings[id]
|
||||
switch(setting.valtype)
|
||||
if(ZAS_TYPE_NUMERIC)
|
||||
setting.value = text2num(value)
|
||||
/*
|
||||
if(ZAS_TYPE_BITFLAG)
|
||||
var/flag = input(user,"Toggle which bit?","Settings") in bitflags
|
||||
flag = text2num(flag)
|
||||
if(newvar & flag)
|
||||
newvar &= ~flag
|
||||
else
|
||||
newvar |= flag
|
||||
*/
|
||||
if(ZAS_TYPE_BOOLEAN)
|
||||
setting.value = (value == "1")
|
||||
/*
|
||||
if(ZAS_TYPE_STRING)
|
||||
setting.value = input(user,"Enter text:","Settings",newvar) as message
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get a setting.
|
||||
*
|
||||
* Recommended to use the actual type of the setting rather than the ID, since
|
||||
* this will allow for the compiler to check the validity of id. Kinda.
|
||||
*
|
||||
* @param id Either the typepath of the desired setting, or the string ID of the setting.
|
||||
* @returns Value of the desired setting
|
||||
*/
|
||||
/ZAS_Settings/proc/Get(var/id)
|
||||
return settings[id].value
|
||||
var/datum/ZAS_Setting/setting = src.settings[idfrompath(id)]
|
||||
return setting.value
|
||||
|
||||
/ZAS_Settings/proc/ChangeSettingsDialog(mob/user,list/L)
|
||||
//var/which = input(user,"Choose a setting:") in L
|
||||
var/dat = "<dl>"
|
||||
for(var/datum/ZAS_Setting/s in settings)
|
||||
dat += "<dt><b>[s.name] = [s.value]</b> <A href='?src=\ref[src];changevar=[idfrompath(s.type)]'>\[Change\]</A></dt>"
|
||||
/ZAS_Settings/proc/ChangeSettingsDialog(mob/user)
|
||||
var/dat = {"
|
||||
<html>
|
||||
<head>
|
||||
<title>ZAS Settings 2.0</title>
|
||||
<style type="text/css">
|
||||
body,html {
|
||||
background:#666666;
|
||||
font-family:sans-serif;
|
||||
font-size:smaller;
|
||||
color: #cccccc;
|
||||
}
|
||||
a { color: white; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>ZAS Configuration</h1>
|
||||
<p><a href="?src=\ref[src];save=1">Save Settings</a> | <a href="?src=\ref[src];load=1">Load Settings</a></p>
|
||||
<p>Please note that changing these settings can and probably will result in death, destruction and mayhem. <b>Change at your own risk.</b></p>
|
||||
<dl>"}
|
||||
for(var/id in src.settings)
|
||||
var/datum/ZAS_Setting/s = src.settings[id]
|
||||
dat += "<dt><b>[s.name]</b> = <i>[s.value]</i> <A href='?src=\ref[src];changevar=[id]'>\[Change\]</A></dt>"
|
||||
dat += "<dd>[s.desc]</i></dd>"
|
||||
dat += "</dl>"
|
||||
dat += "</dl></body></html>"
|
||||
user << browse(dat,"window=settings")
|
||||
|
||||
/ZAS_Settings/Topic(href,href_list)
|
||||
if("changevar" in href_list)
|
||||
ChangeSetting(usr,href_list["changevar"])
|
||||
if("save" in href_list)
|
||||
var/sure = input(usr,"Are you sure? This will overwrite your ZAS configuration!","Overwrite ZAS.txt?", "No") in list("Yes","No")
|
||||
if(sure=="Yes")
|
||||
Save()
|
||||
message_admins("[key_name(usr)] saved ZAS settings to disk.")
|
||||
if("load" in href_list)
|
||||
var/sure = input(usr,"Are you sure?","Reload ZAS.txt?", "No") in list("Yes","No")
|
||||
if(sure=="Yes")
|
||||
Load()
|
||||
message_admins("[key_name(usr)] reloaded ZAS settings from disk.")
|
||||
|
||||
/ZAS_Settings/proc/SetDefault(var/mob/user)
|
||||
var/list/setting_choices = list("Plasma - Standard", "Plasma - Low Hazard", "Plasma - High Hazard", "Plasma - 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")
|
||||
Set("CLOTH_CONTAMINATION", 1) //If this is on, plasma does damage by getting into cloth.
|
||||
Set("PLASMAGUARD_ONLY", 0)
|
||||
Set("GENETIC_CORRUPTION", 0) //Chance of genetic corruption as well as toxic damage, X in 1000.
|
||||
Set("SKIN_BURNS", 0) //Plasma has an effect similar to mustard gas on the un-suited.
|
||||
Set("EYE_BURNS", 1) //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
Set("PLASMA_HALLUCINATION", 0)
|
||||
Set("CONTAMINATION_LOSS", 0.02)
|
||||
|
||||
if("Plasma - Low Hazard")
|
||||
Set("CLOTH_CONTAMINATION", 0) //If this is on, plasma does damage by getting into cloth.
|
||||
Set("PLASMAGUARD_ONLY", 0)
|
||||
Set("GENETIC_CORRUPTION", 0) //Chance of genetic corruption as well as toxic damage, X in 1000
|
||||
Set("SKIN_BURNS", 0) //Plasma has an effect similar to mustard gas on the un-suited.
|
||||
Set("EYE_BURNS", 1) //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
Set("PLASMA_HALLUCINATION", 0)
|
||||
Set("CONTAMINATION_LOSS", 0.01)
|
||||
|
||||
if("Plasma - High Hazard")
|
||||
Set("CLOTH_CONTAMINATION", 1) //If this is on, plasma does damage by getting into cloth.
|
||||
Set("PLASMAGUARD_ONLY", 0)
|
||||
Set("GENETIC_CORRUPTION", 0) //Chance of genetic corruption as well as toxic damage, X in 1000.
|
||||
Set("SKIN_BURNS", 1) //Plasma has an effect similar to mustard gas on the un-suited.
|
||||
Set("EYE_BURNS", 1) //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
Set("PLASMA_HALLUCINATION", 1)
|
||||
Set("CONTAMINATION_LOSS", 0.05)
|
||||
|
||||
if("Plasma - Oh Shit!")
|
||||
Set("CLOTH_CONTAMINATION", 1) //If this is on, plasma does damage by getting into cloth.
|
||||
Set("PLASMAGUARD_ONLY", 1)
|
||||
Set("GENETIC_CORRUPTION", 5) //Chance of genetic corruption as well as toxic damage, X in 1000.
|
||||
Set("SKIN_BURNS", 1) //Plasma has an effect similar to mustard gas on the un-suited.
|
||||
Set("EYE_BURNS", 1) //Plasma burns the eyes of anyone not wearing eye protection.
|
||||
Set("PLASMA_HALLUCINATION", 1)
|
||||
Set("CONTAMINATION_LOSS", 0.075)
|
||||
|
||||
if("ZAS - Normal")
|
||||
Set("airflow_push", 0)
|
||||
Set("airflow_lightest_pressure", 20)
|
||||
Set("airflow_light_pressure", 35)
|
||||
Set("airflow_medium_pressure", 50)
|
||||
Set("airflow_heavy_pressure", 65)
|
||||
Set("airflow_dense_pressure", 85)
|
||||
Set("airflow_stun_pressure", 60)
|
||||
Set("airflow_stun_cooldown", 60)
|
||||
Set("airflow_stun", 1)
|
||||
Set("airflow_damage", 2)
|
||||
Set("airflow_speed_decay", 1.5)
|
||||
Set("airflow_delay", 30)
|
||||
Set("airflow_mob_slowdown", 1)
|
||||
|
||||
if("ZAS - Forgiving")
|
||||
Set("airflow_push", 0)
|
||||
Set("airflow_lightest_pressure", 45)
|
||||
Set("airflow_light_pressure", 60)
|
||||
Set("airflow_medium_pressure", 120)
|
||||
Set("airflow_heavy_pressure", 110)
|
||||
Set("airflow_dense_pressure", 200)
|
||||
Set("airflow_stun_pressure", 150)
|
||||
Set("airflow_stun_cooldown", 90)
|
||||
Set("airflow_stun", 0.15)
|
||||
Set("airflow_damage", 0.15)
|
||||
Set("airflow_speed_decay", 1.5)
|
||||
Set("airflow_delay", 50)
|
||||
Set("airflow_mob_slowdown", 0)
|
||||
|
||||
if("ZAS - Dangerous")
|
||||
Set("airflow_push", 1)
|
||||
Set("airflow_lightest_pressure", 15)
|
||||
Set("airflow_light_pressure", 30)
|
||||
Set("airflow_medium_pressure", 45)
|
||||
Set("airflow_heavy_pressure", 55)
|
||||
Set("airflow_dense_pressure", 70)
|
||||
Set("airflow_stun_pressure", 50)
|
||||
Set("airflow_stun_cooldown", 50)
|
||||
Set("airflow_stun", 2)
|
||||
Set("airflow_damage", 3)
|
||||
Set("airflow_speed_decay", 1.2)
|
||||
Set("airflow_delay", 25)
|
||||
Set("airflow_mob_slowdown", 2)
|
||||
|
||||
if("ZAS - Hellish")
|
||||
Set("airflow_push", 1)
|
||||
Set("airflow_lightest_pressure", 20)
|
||||
Set("airflow_light_pressure", 30)
|
||||
Set("airflow_medium_pressure", 40)
|
||||
Set("airflow_heavy_pressure", 50)
|
||||
Set("airflow_dense_pressure", 60)
|
||||
Set("airflow_stun_pressure", 40)
|
||||
Set("airflow_stun_cooldown", 40)
|
||||
Set("airflow_stun", 3)
|
||||
Set("airflow_damage", 4)
|
||||
Set("airflow_speed_decay", 1)
|
||||
Set("airflow_delay", 20)
|
||||
Set("airflow_mob_slowdown", 3)
|
||||
world << "\blue <b>[key_name(usr)] loaded ZAS preset <i>[def]</i></b>"
|
||||
@@ -1,43 +1,5 @@
|
||||
var/image/contamination_overlay = image('icons/effects/contamination.dmi')
|
||||
|
||||
pl_control/var
|
||||
PLASMA_DMG = 3
|
||||
PLASMA_DMG_NAME = "Plasma Damage Amount"
|
||||
PLASMA_DMG_DESC = "Self Descriptive"
|
||||
|
||||
CLOTH_CONTAMINATION = 1
|
||||
CLOTH_CONTAMINATION_NAME = "Cloth Contamination"
|
||||
CLOTH_CONTAMINATION_DESC = "If this is on, plasma does damage by getting into cloth."
|
||||
|
||||
PLASMAGUARD_ONLY = 0
|
||||
PLASMAGUARD_ONLY_NAME = "\"PlasmaGuard Only\""
|
||||
PLASMAGUARD_ONLY_DESC = "If this is on, only biosuits and spacesuits protect against contamination and ill effects."
|
||||
|
||||
GENETIC_CORRUPTION = 0
|
||||
GENETIC_CORRUPTION_NAME = "Genetic Corruption Chance"
|
||||
GENETIC_CORRUPTION_DESC = "Chance of genetic corruption as well as toxic damage, X in 10,000."
|
||||
|
||||
SKIN_BURNS = 0
|
||||
SKIN_BURNS_DESC = "Plasma has an effect similar to mustard gas on the un-suited."
|
||||
SKIN_BURNS_NAME = "Skin Burns"
|
||||
|
||||
EYE_BURNS = 1
|
||||
EYE_BURNS_NAME = "Eye Burns"
|
||||
EYE_BURNS_DESC = "Plasma burns the eyes of anyone not wearing eye protection."
|
||||
|
||||
CONTAMINATION_LOSS = 0.02
|
||||
CONTAMINATION_LOSS_NAME = "Contamination Loss"
|
||||
CONTAMINATION_LOSS_DESC = "How much toxin damage is dealt from contaminated clothing" //Per tick? ASK ARYN
|
||||
|
||||
PLASMA_HALLUCINATION = 0
|
||||
PLASMA_HALLUCINATION_NAME = "Plasma Hallucination"
|
||||
PLASMA_HALLUCINATION_DESC = "Does being in plasma cause you to hallucinate?"
|
||||
|
||||
N2O_HALLUCINATION = 1
|
||||
N2O_HALLUCINATION_NAME = "N2O Hallucination"
|
||||
N2O_HALLUCINATION_DESC = "Does being in sleeping gas cause you to hallucinate?"
|
||||
|
||||
|
||||
obj/var/contaminated = 0
|
||||
|
||||
obj/item/proc
|
||||
@@ -78,21 +40,21 @@ obj/item/proc
|
||||
//Handles all the bad things plasma can do.
|
||||
|
||||
//Contamination
|
||||
if(vsc.plc.CLOTH_CONTAMINATION) contaminate()
|
||||
if(zas_settings.Get("CLOTH_CONTAMINATION")) contaminate()
|
||||
|
||||
//Anything else requires them to not be dead.
|
||||
if(stat >= 2)
|
||||
return
|
||||
|
||||
//Burn skin if exposed.
|
||||
if(vsc.plc.SKIN_BURNS)
|
||||
if(zas_settings.Get("SKIN_BURNS"))
|
||||
if(!pl_head_protected() || !pl_suit_protected())
|
||||
burn_skin(0.75)
|
||||
if(prob(20)) src << "\red Your skin burns!"
|
||||
updatehealth()
|
||||
|
||||
//Burn eyes if exposed.
|
||||
if(vsc.plc.EYE_BURNS)
|
||||
if(zas_settings.Get("EYE_BURNS"))
|
||||
if(!head)
|
||||
if(!wear_mask)
|
||||
burn_eyes()
|
||||
@@ -108,8 +70,8 @@ obj/item/proc
|
||||
burn_eyes()
|
||||
|
||||
//Genetic Corruption
|
||||
if(vsc.plc.GENETIC_CORRUPTION)
|
||||
if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION)
|
||||
if(zas_settings.Get("GENETIC_CORRUPTION"))
|
||||
if(rand(1,10000) < zas_settings.Get("GENETIC_CORRUPTION"))
|
||||
randmutb(src)
|
||||
src << "\red High levels of toxins cause you to spontaneously mutate."
|
||||
domutcheck(src,null)
|
||||
@@ -128,7 +90,7 @@ obj/item/proc
|
||||
/mob/living/carbon/human/proc/pl_head_protected()
|
||||
//Checks if the head is adequately sealed.
|
||||
if(head)
|
||||
if(vsc.plc.PLASMAGUARD_ONLY)
|
||||
if(zas_settings.Get("PLASMAGUARD_ONLY"))
|
||||
if(head.flags & PLASMAGUARD)
|
||||
return 1
|
||||
else if(head.flags & HEADCOVERSEYES)
|
||||
@@ -138,7 +100,7 @@ obj/item/proc
|
||||
/mob/living/carbon/human/proc/pl_suit_protected()
|
||||
//Checks if the suit is adequately sealed.
|
||||
if(wear_suit)
|
||||
if(vsc.plc.PLASMAGUARD_ONLY)
|
||||
if(zas_settings.Get("PLASMAGUARD_ONLY"))
|
||||
if(wear_suit.flags & PLASMAGUARD) return 1
|
||||
else
|
||||
if(wear_suit.flags_inv & HIDEJUMPSUIT) return 1
|
||||
@@ -154,7 +116,7 @@ obj/item/proc
|
||||
turf/Entered(obj/item/I)
|
||||
. = ..()
|
||||
//Items that are in plasma, but not on a mob, can still be contaminated.
|
||||
if(istype(I) && vsc.plc.CLOTH_CONTAMINATION)
|
||||
if(istype(I) && zas_settings.Get("CLOTH_CONTAMINATION"))
|
||||
var/datum/gas_mixture/env = return_air(1)
|
||||
if(!env)
|
||||
return
|
||||
|
||||
@@ -170,7 +170,7 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs
|
||||
if(unsimulated_tiles.len)
|
||||
var/moved_air = ShareSpace(air,unsimulated_tiles)
|
||||
|
||||
if(moved_air > vsc.airflow_lightest_pressure)
|
||||
if(moved_air > zas_settings.Get("airflow_lightest_pressure"))
|
||||
AirflowSpace(src)
|
||||
else
|
||||
unsimulated_tiles = null
|
||||
@@ -252,7 +252,7 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs
|
||||
//Ensure we're not doing pointless calculations on equilibrium zones.
|
||||
var/moles_delta = abs(air.total_moles() - Z.air.total_moles())
|
||||
if(moles_delta > 0.1 || abs(air.temperature - Z.air.temperature) > 0.1)
|
||||
if(abs(Z.air.return_pressure() - air.return_pressure()) > vsc.airflow_lightest_pressure)
|
||||
if(abs(Z.air.return_pressure() - air.return_pressure()) > zas_settings.Get("airflow_lightest_pressure"))
|
||||
Airflow(src,Z)
|
||||
var/unsimulated_boost = 0
|
||||
if(unsimulated_tiles)
|
||||
@@ -267,7 +267,7 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs
|
||||
if(Z.last_update > last_update)
|
||||
continue
|
||||
if(air && Z.air)
|
||||
if( abs(air.temperature - Z.air.temperature) > vsc.connection_temperature_delta )
|
||||
if( abs(air.temperature - Z.air.temperature) > zas_settings.Get("connection_temperature_delta") )
|
||||
ShareHeat(air, Z.air, closed_connection_zones[Z])
|
||||
|
||||
progress = "all components completed successfully, the problem is not here"
|
||||
@@ -408,7 +408,7 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
|
||||
ratio = sharing_lookup_table[unsimulated_tiles.len]
|
||||
|
||||
//We need to adjust it to account for the insulation settings.
|
||||
ratio *= 1 - vsc.connection_insulation
|
||||
ratio *= 1 - zas_settings.Get("connection_insulation")
|
||||
|
||||
A.oxygen = max(0, (A.oxygen - oxy_avg) * (1 - ratio) + oxy_avg )
|
||||
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1 - ratio) + nit_avg )
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
|
||||
/obj/machinery/door/proc/bumpopen(mob/user as mob)
|
||||
if(operating) return
|
||||
if(user.last_airflow > world.time - vsc.airflow_delay) //Fakkit
|
||||
if(user.last_airflow > world.time - zas_settings.Get("airflow_delay")) //Fakkit
|
||||
return
|
||||
src.add_fingerprint(user)
|
||||
if(!src.requiresID())
|
||||
|
||||
@@ -501,8 +501,7 @@ var/global/floorIsLava = 0
|
||||
<A href='?src=\ref[src];quick_create_object=1'>Quick Create Object</A><br>
|
||||
<A href='?src=\ref[src];create_turf=1'>Create Turf</A><br>
|
||||
<A href='?src=\ref[src];create_mob=1'>Create Mob</A><br>
|
||||
<br><A href='?src=\ref[src];vsc=airflow'>Edit Airflow Settings</A><br>
|
||||
<A href='?src=\ref[src];vsc=plasma'>Edit Plasma Settings</A><br>
|
||||
<br><A href='?src=\ref[src];vsc=airflow'>Edit ZAS Settings</A><br>
|
||||
<A href='?src=\ref[src];vsc=default'>Choose a default ZAS setting</A><br>
|
||||
"}
|
||||
|
||||
|
||||
@@ -2453,11 +2453,9 @@
|
||||
else if(href_list["vsc"])
|
||||
if(check_rights(R_ADMIN|R_SERVER))
|
||||
if(href_list["vsc"] == "airflow")
|
||||
vsc.ChangeSettingsDialog(usr,vsc.settings)
|
||||
if(href_list["vsc"] == "plasma")
|
||||
vsc.ChangeSettingsDialog(usr,vsc.plc.settings)
|
||||
zas_settings.ChangeSettingsDialog(usr,zas_settings.settings)
|
||||
if(href_list["vsc"] == "default")
|
||||
vsc.SetDefault(usr)
|
||||
zas_settings.SetDefault(usr)
|
||||
|
||||
// player info stuff
|
||||
|
||||
|
||||
@@ -833,7 +833,7 @@
|
||||
var/total_plasmaloss = 0
|
||||
for(var/obj/item/I in src)
|
||||
if(I.contaminated)
|
||||
total_plasmaloss += vsc.plc.CONTAMINATION_LOSS
|
||||
total_plasmaloss += zas_settings.Get("CONTAMINATION_LOSS")
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
adjustToxLoss(total_plasmaloss)
|
||||
|
||||
|
||||
108
config-example/ZAS.txt
Normal file
108
config-example/ZAS.txt
Normal file
@@ -0,0 +1,108 @@
|
||||
# Fire - Air Consumption Ratio
|
||||
# Ratio of air removed and combusted per tick.
|
||||
fire_consumption_rate 0.75
|
||||
|
||||
# Fire - Firelevel Constant
|
||||
# Multiplied by the equation for firelevel, affects mainly the extingiushing of fires.
|
||||
fire_firelevel_multiplier 25
|
||||
|
||||
# Fire - Fuel energy release
|
||||
# The energy in joule released when burning one mol of a burnable substance
|
||||
fire_fuel_energy_release 550000
|
||||
|
||||
# Airflow - Small Movement Threshold %
|
||||
# Percent of 1 Atm. at which items with the small weight classes will move.
|
||||
airflow_lightest_pressure 20
|
||||
|
||||
# Airflow - Medium Movement Threshold %
|
||||
# Percent of 1 Atm. at which items with the medium weight classes will move.
|
||||
airflow_light_pressure 35
|
||||
|
||||
# Airflow - Heavy Movement Threshold %
|
||||
# Percent of 1 Atm. at which items with the largest weight classes will move.
|
||||
airflow_medium_pressure 50
|
||||
|
||||
# Airflow - Mob Movement Threshold %
|
||||
# Percent of 1 Atm. at which mobs will move.
|
||||
airflow_heavy_pressure 65
|
||||
|
||||
# Airflow - Dense Movement Threshold %
|
||||
# Percent of 1 Atm. at which items with canisters and closets will move.
|
||||
airflow_dense_pressure 85
|
||||
|
||||
# Airflow - Mob Stunning Threshold %
|
||||
# Percent of 1 Atm. at which mobs will be stunned by airflow.
|
||||
airflow_stun_pressure 60
|
||||
|
||||
# Aiflow Stunning - Cooldown
|
||||
# How long, in tenths of a second, to wait before stunning them again.
|
||||
airflow_stun_cooldown 60
|
||||
|
||||
# Airflow Impact - Stunning
|
||||
# How much a mob is stunned when hit by an object.
|
||||
airflow_stun 1
|
||||
|
||||
# Airflow Impact - Damage
|
||||
# Damage from airflow impacts.
|
||||
airflow_damage 2
|
||||
|
||||
# Airflow Speed Decay
|
||||
# How rapidly the speed gained from airflow decays.
|
||||
airflow_speed_decay 1.5
|
||||
|
||||
# Airflow Retrigger Delay
|
||||
# Time in deciseconds before things can be moved by airflow again.
|
||||
airflow_delay 30
|
||||
|
||||
# Airflow Slowdown
|
||||
# Time in tenths of a second to add as a delay to each movement by a mob if they are fighting the pull of the airflow.
|
||||
airflow_mob_slowdown 1
|
||||
|
||||
# Airflow - Push
|
||||
# 1=yes please rape my server, 0=no
|
||||
airflow_push 0
|
||||
|
||||
# Connections - Insulation
|
||||
# How insulative a connection is, in terms of heat transfer. 1 is perfectly insulative, and 0 is perfectly conductive.
|
||||
connection_insulation 0.4
|
||||
|
||||
# Connections - Temperature Difference
|
||||
# The smallest temperature difference which will cause heat to travel through doors.
|
||||
connection_temperature_delta 10
|
||||
|
||||
# Plasma Damage Amount
|
||||
# Self Descriptive
|
||||
PLASMA_DMG 3
|
||||
|
||||
# Cloth Contamination
|
||||
# If this is on, plasma does damage by getting into cloth.
|
||||
CLOTH_CONTAMINATION 1
|
||||
|
||||
# PlasmaGuard Only
|
||||
# If this is on, only biosuits and spacesuits protect against contamination and ill effects.
|
||||
PLASMAGUARD_ONLY 0
|
||||
|
||||
# Genetic Corruption Chance
|
||||
# Chance of genetic corruption as well as toxic damage, X in 10,000.
|
||||
GENETIC_CORRUPTION 0
|
||||
|
||||
# Skin Burns
|
||||
# Plasma has an effect similar to mustard gas on the un-suited.
|
||||
SKIN_BURNS 0
|
||||
|
||||
# Eye Burns
|
||||
# Plasma burns the eyes of anyone not wearing eye protection.
|
||||
EYE_BURNS 1
|
||||
|
||||
# Contamination Loss
|
||||
# How much toxin damage is dealt from contaminated clothing
|
||||
CONTAMINATION_LOSS 0.02
|
||||
|
||||
# Plasma Hallucination
|
||||
# Does being in plasma cause you to hallucinate?
|
||||
PLASMA_HALLUCINATION 0
|
||||
|
||||
# N2O Hallucination
|
||||
# Does being in sleeping gas cause you to hallucinate?
|
||||
N2O_HALLUCINATION 1
|
||||
|
||||
Reference in New Issue
Block a user