mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +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\FEA_system.dm"
|
||||||
#include "code\ZAS\Fire.dm"
|
#include "code\ZAS\Fire.dm"
|
||||||
#include "code\ZAS\Functions.dm"
|
#include "code\ZAS\Functions.dm"
|
||||||
|
#include "code\ZAS\NewSettings.dm"
|
||||||
#include "code\ZAS\Plasma.dm"
|
#include "code\ZAS\Plasma.dm"
|
||||||
#include "code\ZAS\Variable Settings.dm"
|
|
||||||
#include "code\ZAS\ZAS_Turfs.dm"
|
#include "code\ZAS\ZAS_Turfs.dm"
|
||||||
#include "code\ZAS\ZAS_Zones.dm"
|
#include "code\ZAS\ZAS_Zones.dm"
|
||||||
#include "interface\interface.dm"
|
#include "interface\interface.dm"
|
||||||
|
|||||||
@@ -52,12 +52,12 @@ mob/var/tmp/last_airflow_stun = 0
|
|||||||
mob/proc/airflow_stun()
|
mob/proc/airflow_stun()
|
||||||
if(stat == 2)
|
if(stat == 2)
|
||||||
return 0
|
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))
|
if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN))
|
||||||
src << "\blue You stay upright as the air rushes past you."
|
src << "\blue You stay upright as the air rushes past you."
|
||||||
return 0
|
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!"
|
if(weakened <= 0) src << "\red The sudden rush of air knocks you over!"
|
||||||
weakened = max(weakened,5)
|
weakened = max(weakened,5)
|
||||||
last_airflow_stun = world.time
|
last_airflow_stun = world.time
|
||||||
@@ -72,7 +72,7 @@ mob/living/carbon/metroid/airflow_stun()
|
|||||||
return
|
return
|
||||||
|
|
||||||
mob/living/carbon/human/airflow_stun()
|
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(buckled) return 0
|
||||||
if(shoes)
|
if(shoes)
|
||||||
if(shoes.flags & NOSLIP) return 0
|
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."
|
src << "\blue You stay upright as the air rushes past you."
|
||||||
return 0
|
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!"
|
if(weakened <= 0) src << "\red The sudden rush of air knocks you over!"
|
||||||
weakened = max(weakened,rand(1,5))
|
weakened = max(weakened,rand(1,5))
|
||||||
last_airflow_stun = world.time
|
last_airflow_stun = world.time
|
||||||
@@ -89,17 +89,17 @@ mob/living/carbon/human/airflow_stun()
|
|||||||
last_airflow_stun = world.time
|
last_airflow_stun = world.time
|
||||||
|
|
||||||
atom/movable/proc/check_airflow_movable(n)
|
atom/movable/proc/check_airflow_movable(n)
|
||||||
if(!vsc.airflow_push)
|
if(!zas_settings.Get("airflow_push"))
|
||||||
return 0
|
return 0
|
||||||
if(anchored && !ismob(src))
|
if(anchored && !ismob(src))
|
||||||
return 0
|
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 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
mob/check_airflow_movable(n)
|
mob/check_airflow_movable(n)
|
||||||
if(n < vsc.airflow_heavy_pressure)
|
if(n < zas_settings.Get("airflow_heavy_pressure"))
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -114,11 +114,11 @@ obj/item/check_airflow_movable(n)
|
|||||||
. = ..()
|
. = ..()
|
||||||
switch(w_class)
|
switch(w_class)
|
||||||
if(2)
|
if(2)
|
||||||
if(n < vsc.airflow_lightest_pressure) return 0
|
if(n < zas_settings.Get("airflow_lightest_pressure")) return 0
|
||||||
if(3)
|
if(3)
|
||||||
if(n < vsc.airflow_light_pressure) return 0
|
if(n < zas_settings.Get("airflow_light_pressure")) return 0
|
||||||
if(4,5)
|
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.
|
//The main airflow code. Called by zone updates.
|
||||||
//Zones A and B are air zones. n represents the amount of air moved.
|
//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()
|
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.
|
//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.
|
//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
|
var/list/connection/connections_A = A.connections
|
||||||
@@ -153,12 +153,12 @@ proc/Airflow(zone/A, zone/B)
|
|||||||
var/list/temporary_pplz = air_sucked
|
var/list/temporary_pplz = air_sucked
|
||||||
air_sucked = air_repelled
|
air_sucked = air_repelled
|
||||||
air_repelled = temporary_pplz
|
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)
|
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
|
//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
|
if(M:status_flags & GODMODE) continue
|
||||||
M:airflow_stun()
|
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.
|
//Do it again for the stuff in the other zone, making it fly away.
|
||||||
for(var/atom/movable/M in air_repelled)
|
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
|
if(M:status_flags & GODMODE) continue
|
||||||
M:airflow_stun()
|
M:airflow_stun()
|
||||||
|
|
||||||
@@ -207,16 +207,16 @@ proc/AirflowSpace(zone/A)
|
|||||||
var/n = A.air.return_pressure()
|
var/n = A.air.return_pressure()
|
||||||
//Here, n is determined by only the pressure in the room.
|
//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/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.
|
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)
|
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
|
var/mob/O = M
|
||||||
if(O.status_flags & GODMODE) continue
|
if(O.status_flags & GODMODE) continue
|
||||||
O.airflow_stun()
|
O.airflow_stun()
|
||||||
@@ -243,10 +243,10 @@ atom/movable
|
|||||||
var/tmp/last_airflow = 0
|
var/tmp/last_airflow = 0
|
||||||
|
|
||||||
proc/GotoAirflowDest(n)
|
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_dest) return
|
||||||
if(airflow_speed < 0) 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)
|
if(airflow_speed)
|
||||||
airflow_speed = n/max(get_dist(src,airflow_dest),1)
|
airflow_speed = n/max(get_dist(src,airflow_dest),1)
|
||||||
return
|
return
|
||||||
@@ -280,7 +280,7 @@ atom/movable
|
|||||||
while(airflow_speed > 0)
|
while(airflow_speed > 0)
|
||||||
if(airflow_speed <= 0) return
|
if(airflow_speed <= 0) return
|
||||||
airflow_speed = min(airflow_speed,15)
|
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_speed > 7)
|
||||||
if(airflow_time++ >= airflow_speed - 7)
|
if(airflow_time++ >= airflow_speed - 7)
|
||||||
if(od)
|
if(od)
|
||||||
@@ -300,7 +300,7 @@ atom/movable
|
|||||||
return
|
return
|
||||||
step_towards(src, src.airflow_dest)
|
step_towards(src, src.airflow_dest)
|
||||||
if(ismob(src) && src:client)
|
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_dest = null
|
||||||
airflow_speed = 0
|
airflow_speed = 0
|
||||||
airflow_time = 0
|
airflow_time = 0
|
||||||
@@ -309,10 +309,10 @@ atom/movable
|
|||||||
|
|
||||||
|
|
||||||
proc/RepelAirflowDest(n)
|
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_dest) return
|
||||||
if(airflow_speed < 0) 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)
|
if(airflow_speed)
|
||||||
airflow_speed = n/max(get_dist(src,airflow_dest),1)
|
airflow_speed = n/max(get_dist(src,airflow_dest),1)
|
||||||
return
|
return
|
||||||
@@ -346,7 +346,7 @@ atom/movable
|
|||||||
while(airflow_speed > 0)
|
while(airflow_speed > 0)
|
||||||
if(airflow_speed <= 0) return
|
if(airflow_speed <= 0) return
|
||||||
airflow_speed = min(airflow_speed,15)
|
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_speed > 7)
|
||||||
if(airflow_time++ >= airflow_speed - 7)
|
if(airflow_time++ >= airflow_speed - 7)
|
||||||
sleep(1 * tick_multiplier)
|
sleep(1 * tick_multiplier)
|
||||||
@@ -360,7 +360,7 @@ atom/movable
|
|||||||
return
|
return
|
||||||
step_towards(src, src.airflow_dest)
|
step_towards(src, src.airflow_dest)
|
||||||
if(ismob(src) && src:client)
|
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_dest = null
|
||||||
airflow_speed = 0
|
airflow_speed = 0
|
||||||
airflow_time = 0
|
airflow_time = 0
|
||||||
@@ -405,7 +405,7 @@ mob/living/carbon/human/airflow_hit(atom/A)
|
|||||||
src.wear_suit.add_blood(src)
|
src.wear_suit.add_blood(src)
|
||||||
if (src.w_uniform)
|
if (src.w_uniform)
|
||||||
src.w_uniform.add_blood(src)
|
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")
|
var/blocked = run_armor_check("head","melee")
|
||||||
apply_damage(b_loss/3, BRUTE, "head", blocked, 0, "Airflow")
|
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")
|
blocked = run_armor_check("groin","melee")
|
||||||
apply_damage(b_loss/3, BRUTE, "groin", blocked, 0, "Airflow")
|
apply_damage(b_loss/3, BRUTE, "groin", blocked, 0, "Airflow")
|
||||||
|
|
||||||
if(vsc.airflow_push)
|
if(zas_settings.Get("airflow_push"))
|
||||||
if(airflow_speed > 10)
|
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)
|
stunned = max(stunned,paralysis + 3)
|
||||||
else
|
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.
|
//Spread the fire.
|
||||||
if(!(locate(/obj/fire) in enemy_tile))
|
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)
|
new/obj/fire(enemy_tile,firelevel)
|
||||||
|
|
||||||
//seperate part of the present gas
|
//seperate part of the present gas
|
||||||
//this is done to prevent the fire burning all gases in a single pass
|
//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 ///////////////////////////////////////////////
|
///////////////////////////////// FLOW HAS BEEN CREATED /// DONT DELETE THE FIRE UNTIL IT IS MERGED BACK OR YOU WILL DELETE AIR ///////////////////////////////////////////////
|
||||||
|
|
||||||
if(flow)
|
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
|
var/total_reactants = total_fuel + total_oxygen
|
||||||
|
|
||||||
//determine the amount of reactants actually reacting
|
//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
|
//remove and add gasses as calculated
|
||||||
oxygen -= min(oxygen, total_oxygen * used_reactants_ratio )
|
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
|
if(liquid.amount <= 0) del liquid
|
||||||
|
|
||||||
//calculate the energy produced by the reaction and then set the new temperature of the mix
|
//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()
|
update_values()
|
||||||
value = total_reactants * used_reactants_ratio
|
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
|
//calculates how close the mixture of the reactants is to the optimum
|
||||||
var/mix_multiplier = 1 / (1 + (5 * ((oxygen / total_combustables) ^2)))
|
var/mix_multiplier = 1 / (1 + (5 * ((oxygen / total_combustables) ^2)))
|
||||||
//toss everything together
|
//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)
|
return max( 0, firelevel)
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue
|
|||||||
|
|
||||||
//determine the multiplier
|
//determine the multiplier
|
||||||
//minimize this for low-pressure enviroments
|
//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.
|
//Get heat transfer coefficients for clothing.
|
||||||
//skytodo: kill anyone who breaks things then orders me to fix them
|
//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
|
This is an attempt to fix that by using getters and
|
||||||
setters instead of stupidity. It may or may
|
setters instead of stupidity. It's a little more difficult
|
||||||
not work, but dammit, it's better than hackery.
|
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_UNDEFINED -1
|
||||||
#define ZAS_TYPE_BOOLEAN 0
|
#define ZAS_TYPE_BOOLEAN 0
|
||||||
#define ZAS_TYPE_NUMERIC 1
|
#define ZAS_TYPE_NUMERIC 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ZAS Setting Datum
|
* 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."
|
desc = "The smallest temperature difference which will cause heat to travel through doors."
|
||||||
valtype=ZAS_TYPE_NUMERIC
|
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
|
* ZAS Settings
|
||||||
*
|
*
|
||||||
@@ -146,24 +218,68 @@ var/global/ZAS_Settings/vsc = new
|
|||||||
* @subpackage ZAS
|
* @subpackage ZAS
|
||||||
*/
|
*/
|
||||||
/ZAS_Settings
|
/ZAS_Settings
|
||||||
|
// INTERNAL USE ONLY
|
||||||
var/list/datum/ZAS_Setting/settings = list()
|
var/list/datum/ZAS_Setting/settings = list()
|
||||||
pl_control/plc = new()
|
|
||||||
|
|
||||||
/ZAS_Settings/New()
|
/ZAS_Settings/New()
|
||||||
.=..()
|
.=..()
|
||||||
for(var/S in typesof(/datum/ZAS_Setting) - /datum/ZAS_Setting)
|
for(var/S in typesof(/datum/ZAS_Setting) - /datum/ZAS_Setting)
|
||||||
testing("Creating [S]")
|
|
||||||
var/id=idfrompath("[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)
|
/ZAS_Settings/proc/idfrompath(var/str)
|
||||||
return replacetext(str,"/datum/ZAS_Setting/","")
|
return replacetext(str,"/datum/ZAS_Setting/","")
|
||||||
|
|
||||||
/ZAS_Settings/proc/Set(var/id, var/value)
|
// INTERNAL USE ONLY
|
||||||
var/datum/ZAS_Setting/setting = settings[id]
|
/ZAS_Settings/proc/ChangeSetting(var/user,var/id)
|
||||||
|
var/datum/ZAS_Setting/setting = src.settings[id]
|
||||||
|
var/displayedValue=""
|
||||||
switch(setting.valtype)
|
switch(setting.valtype)
|
||||||
if(ZAS_TYPE_NUMERIC)
|
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)
|
if(ZAS_TYPE_BITFLAG)
|
||||||
var/flag = input(user,"Toggle which bit?","Settings") in bitflags
|
var/flag = input(user,"Toggle which bit?","Settings") in bitflags
|
||||||
@@ -174,28 +290,207 @@ var/global/ZAS_Settings/vsc = new
|
|||||||
newvar |= flag
|
newvar |= flag
|
||||||
*/
|
*/
|
||||||
if(ZAS_TYPE_BOOLEAN)
|
if(ZAS_TYPE_BOOLEAN)
|
||||||
setting.value = !newvar
|
setting.value = !setting.value
|
||||||
|
displayedValue = (setting.value) ? "ON" : "OFF"
|
||||||
/*
|
/*
|
||||||
if(ZAS_TYPE_STRING)
|
if(ZAS_TYPE_STRING)
|
||||||
setting.value = input(user,"Enter text:","Settings",newvar) as message
|
setting.value = input(user,"Enter text:","Settings",newvar) as message
|
||||||
*/
|
*/
|
||||||
else
|
else
|
||||||
error("[S] has an invalid type. Enjoy your hard crash bb.")
|
error("[id] has an invalid typeval.")
|
||||||
var/lol=1/0
|
return
|
||||||
error("[lol]") // Just in case this compiler optimizes out unused vars.
|
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)
|
/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)
|
/ZAS_Settings/proc/ChangeSettingsDialog(mob/user)
|
||||||
//var/which = input(user,"Choose a setting:") in L
|
var/dat = {"
|
||||||
var/dat = "<dl>"
|
<html>
|
||||||
for(var/datum/ZAS_Setting/s in settings)
|
<head>
|
||||||
dat += "<dt><b>[s.name] = [s.value]</b> <A href='?src=\ref[src];changevar=[idfrompath(s.type)]'>\[Change\]</A></dt>"
|
<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 += "<dd>[s.desc]</i></dd>"
|
||||||
dat += "</dl>"
|
dat += "</dl></body></html>"
|
||||||
user << browse(dat,"window=settings")
|
user << browse(dat,"window=settings")
|
||||||
|
|
||||||
/ZAS_Settings/Topic(href,href_list)
|
/ZAS_Settings/Topic(href,href_list)
|
||||||
if("changevar" in href_list)
|
if("changevar" in href_list)
|
||||||
ChangeSetting(usr,href_list["changevar"])
|
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')
|
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/var/contaminated = 0
|
||||||
|
|
||||||
obj/item/proc
|
obj/item/proc
|
||||||
@@ -78,21 +40,21 @@ obj/item/proc
|
|||||||
//Handles all the bad things plasma can do.
|
//Handles all the bad things plasma can do.
|
||||||
|
|
||||||
//Contamination
|
//Contamination
|
||||||
if(vsc.plc.CLOTH_CONTAMINATION) contaminate()
|
if(zas_settings.Get("CLOTH_CONTAMINATION")) contaminate()
|
||||||
|
|
||||||
//Anything else requires them to not be dead.
|
//Anything else requires them to not be dead.
|
||||||
if(stat >= 2)
|
if(stat >= 2)
|
||||||
return
|
return
|
||||||
|
|
||||||
//Burn skin if exposed.
|
//Burn skin if exposed.
|
||||||
if(vsc.plc.SKIN_BURNS)
|
if(zas_settings.Get("SKIN_BURNS"))
|
||||||
if(!pl_head_protected() || !pl_suit_protected())
|
if(!pl_head_protected() || !pl_suit_protected())
|
||||||
burn_skin(0.75)
|
burn_skin(0.75)
|
||||||
if(prob(20)) src << "\red Your skin burns!"
|
if(prob(20)) src << "\red Your skin burns!"
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
//Burn eyes if exposed.
|
//Burn eyes if exposed.
|
||||||
if(vsc.plc.EYE_BURNS)
|
if(zas_settings.Get("EYE_BURNS"))
|
||||||
if(!head)
|
if(!head)
|
||||||
if(!wear_mask)
|
if(!wear_mask)
|
||||||
burn_eyes()
|
burn_eyes()
|
||||||
@@ -108,8 +70,8 @@ obj/item/proc
|
|||||||
burn_eyes()
|
burn_eyes()
|
||||||
|
|
||||||
//Genetic Corruption
|
//Genetic Corruption
|
||||||
if(vsc.plc.GENETIC_CORRUPTION)
|
if(zas_settings.Get("GENETIC_CORRUPTION"))
|
||||||
if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION)
|
if(rand(1,10000) < zas_settings.Get("GENETIC_CORRUPTION"))
|
||||||
randmutb(src)
|
randmutb(src)
|
||||||
src << "\red High levels of toxins cause you to spontaneously mutate."
|
src << "\red High levels of toxins cause you to spontaneously mutate."
|
||||||
domutcheck(src,null)
|
domutcheck(src,null)
|
||||||
@@ -128,7 +90,7 @@ obj/item/proc
|
|||||||
/mob/living/carbon/human/proc/pl_head_protected()
|
/mob/living/carbon/human/proc/pl_head_protected()
|
||||||
//Checks if the head is adequately sealed.
|
//Checks if the head is adequately sealed.
|
||||||
if(head)
|
if(head)
|
||||||
if(vsc.plc.PLASMAGUARD_ONLY)
|
if(zas_settings.Get("PLASMAGUARD_ONLY"))
|
||||||
if(head.flags & PLASMAGUARD)
|
if(head.flags & PLASMAGUARD)
|
||||||
return 1
|
return 1
|
||||||
else if(head.flags & HEADCOVERSEYES)
|
else if(head.flags & HEADCOVERSEYES)
|
||||||
@@ -138,7 +100,7 @@ obj/item/proc
|
|||||||
/mob/living/carbon/human/proc/pl_suit_protected()
|
/mob/living/carbon/human/proc/pl_suit_protected()
|
||||||
//Checks if the suit is adequately sealed.
|
//Checks if the suit is adequately sealed.
|
||||||
if(wear_suit)
|
if(wear_suit)
|
||||||
if(vsc.plc.PLASMAGUARD_ONLY)
|
if(zas_settings.Get("PLASMAGUARD_ONLY"))
|
||||||
if(wear_suit.flags & PLASMAGUARD) return 1
|
if(wear_suit.flags & PLASMAGUARD) return 1
|
||||||
else
|
else
|
||||||
if(wear_suit.flags_inv & HIDEJUMPSUIT) return 1
|
if(wear_suit.flags_inv & HIDEJUMPSUIT) return 1
|
||||||
@@ -154,7 +116,7 @@ obj/item/proc
|
|||||||
turf/Entered(obj/item/I)
|
turf/Entered(obj/item/I)
|
||||||
. = ..()
|
. = ..()
|
||||||
//Items that are in plasma, but not on a mob, can still be contaminated.
|
//Items that are in 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)
|
var/datum/gas_mixture/env = return_air(1)
|
||||||
if(!env)
|
if(!env)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs
|
|||||||
if(unsimulated_tiles.len)
|
if(unsimulated_tiles.len)
|
||||||
var/moved_air = ShareSpace(air,unsimulated_tiles)
|
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)
|
AirflowSpace(src)
|
||||||
else
|
else
|
||||||
unsimulated_tiles = null
|
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.
|
//Ensure we're not doing pointless calculations on equilibrium zones.
|
||||||
var/moles_delta = abs(air.total_moles() - Z.air.total_moles())
|
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(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)
|
Airflow(src,Z)
|
||||||
var/unsimulated_boost = 0
|
var/unsimulated_boost = 0
|
||||||
if(unsimulated_tiles)
|
if(unsimulated_tiles)
|
||||||
@@ -267,7 +267,7 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs
|
|||||||
if(Z.last_update > last_update)
|
if(Z.last_update > last_update)
|
||||||
continue
|
continue
|
||||||
if(air && Z.air)
|
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])
|
ShareHeat(air, Z.air, closed_connection_zones[Z])
|
||||||
|
|
||||||
progress = "all components completed successfully, the problem is not here"
|
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]
|
ratio = sharing_lookup_table[unsimulated_tiles.len]
|
||||||
|
|
||||||
//We need to adjust it to account for the insulation settings.
|
//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.oxygen = max(0, (A.oxygen - oxy_avg) * (1 - ratio) + oxy_avg )
|
||||||
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1 - ratio) + nit_avg )
|
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1 - ratio) + nit_avg )
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
/obj/machinery/door/proc/bumpopen(mob/user as mob)
|
/obj/machinery/door/proc/bumpopen(mob/user as mob)
|
||||||
if(operating) return
|
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
|
return
|
||||||
src.add_fingerprint(user)
|
src.add_fingerprint(user)
|
||||||
if(!src.requiresID())
|
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];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_turf=1'>Create Turf</A><br>
|
||||||
<A href='?src=\ref[src];create_mob=1'>Create Mob</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>
|
<br><A href='?src=\ref[src];vsc=airflow'>Edit ZAS Settings</A><br>
|
||||||
<A href='?src=\ref[src];vsc=plasma'>Edit Plasma Settings</A><br>
|
|
||||||
<A href='?src=\ref[src];vsc=default'>Choose a default ZAS setting</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"])
|
else if(href_list["vsc"])
|
||||||
if(check_rights(R_ADMIN|R_SERVER))
|
if(check_rights(R_ADMIN|R_SERVER))
|
||||||
if(href_list["vsc"] == "airflow")
|
if(href_list["vsc"] == "airflow")
|
||||||
vsc.ChangeSettingsDialog(usr,vsc.settings)
|
zas_settings.ChangeSettingsDialog(usr,zas_settings.settings)
|
||||||
if(href_list["vsc"] == "plasma")
|
|
||||||
vsc.ChangeSettingsDialog(usr,vsc.plc.settings)
|
|
||||||
if(href_list["vsc"] == "default")
|
if(href_list["vsc"] == "default")
|
||||||
vsc.SetDefault(usr)
|
zas_settings.SetDefault(usr)
|
||||||
|
|
||||||
// player info stuff
|
// player info stuff
|
||||||
|
|
||||||
|
|||||||
@@ -833,7 +833,7 @@
|
|||||||
var/total_plasmaloss = 0
|
var/total_plasmaloss = 0
|
||||||
for(var/obj/item/I in src)
|
for(var/obj/item/I in src)
|
||||||
if(I.contaminated)
|
if(I.contaminated)
|
||||||
total_plasmaloss += vsc.plc.CONTAMINATION_LOSS
|
total_plasmaloss += zas_settings.Get("CONTAMINATION_LOSS")
|
||||||
if(status_flags & GODMODE) return 0 //godmode
|
if(status_flags & GODMODE) return 0 //godmode
|
||||||
adjustToxLoss(total_plasmaloss)
|
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