From ddd8e9478422d62dc86ecb8a6db4571449fc55ea Mon Sep 17 00:00:00 2001 From: "giacomand@gmail.com" Date: Sun, 14 Oct 2012 02:02:18 +0000 Subject: [PATCH] -Walls, firelocks and glass-less airlocks now stop heat. -Fire made more deadly, as the flames will add more damage and a fire can spread more quickly. -Fire can break windows now, meaning they can potentially extinguish themselves by opening a window to space. -Increased the delay for atmos to process a cell and airgroup, will help with the lag for 50 player servers. -Minor tweaks were made. --Plasma needing a bit more before displaying its overlay. --Pressure can now damage you at 550 kPA. This was because it wasn't viable to set the pumps to over-pressurize a room and potentially kill people. --High pressure warning shows at 325. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4869 316c924e-a436-60f5-8080-3fe189b3f50e --- code/FEA/FEA_airgroup.dm | 2 +- code/FEA/FEA_turf_tile.dm | 2 +- code/defines/procs/helpers.dm | 4 +- code/game/machinery/doors/door.dm | 9 ++++ code/game/objects/structures/window.dm | 56 ++++++++++++++---------- code/modules/mob/living/carbon/carbon.dm | 7 ++- code/setup.dm | 23 ++++++---- html/changelog.html | 19 ++++---- 8 files changed, 77 insertions(+), 45 deletions(-) diff --git a/code/FEA/FEA_airgroup.dm b/code/FEA/FEA_airgroup.dm index 9ebb8e6bb1c..00a6afc3949 100644 --- a/code/FEA/FEA_airgroup.dm +++ b/code/FEA/FEA_airgroup.dm @@ -90,7 +90,7 @@ datum/air_group if (next_check > 0) next_check-- return 1 - next_check += check_delay + rand(0,check_delay/2) + next_check += check_delay + rand(max(check_delay, 1)/2,check_delay) check_delay++ var/turf/simulated/list/border_individual = list() diff --git a/code/FEA/FEA_turf_tile.dm b/code/FEA/FEA_turf_tile.dm index 9af7bd58ec3..d043e348245 100644 --- a/code/FEA/FEA_turf_tile.dm +++ b/code/FEA/FEA_turf_tile.dm @@ -304,7 +304,7 @@ turf if (next_check > 0) next_check-- return 1 - next_check += check_delay + rand(0,check_delay/2) + next_check += check_delay + rand(max(check_delay, 1)/2,check_delay) check_delay++ var/turf/simulated/list/possible_fire_spreads = list() diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm index 6551b0cff44..f6b522f631d 100644 --- a/code/defines/procs/helpers.dm +++ b/code/defines/procs/helpers.dm @@ -327,8 +327,8 @@ Turf and target are seperate in case you want to teleport some distance from a t if(isAI(src)) var/mob/living/silicon/ai/A = src oldname = null//don't bother with the records update crap - world << "[newname] is the AI!" - world << sound('sound/AI/newAI.ogg') + //world << "[newname] is the AI!" + //world << sound('sound/AI/newAI.ogg') // Set eyeobj name if(A.eyeobj) A.eyeobj.name = "[newname] (AI Eye)" diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 195ac89590f..60283d659d4 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -30,6 +30,9 @@ if(density) layer = 3.1 //Above most items if closed explosion_resistance = initial(explosion_resistance) + if(opacity) + var/turf/T = get_turf(src) + T.thermal_conductivity = DOOR_HEAT_TRANSFER_COEFFICIENT else layer = 2.7 //Under all objects if opened. 2.7 due to tables being at 2.6 explosion_resistance = 0 @@ -38,6 +41,7 @@ Del() + density = 0 update_nearby_tiles() ..() return @@ -253,6 +257,11 @@ var/turf/simulated/east = get_step(source,EAST) var/turf/simulated/west = get_step(source,WEST) + if(src.density && src.opacity) + source.thermal_conductivity = DOOR_HEAT_TRANSFER_COEFFICIENT + else + source.thermal_conductivity = initial(source.thermal_conductivity) + if(need_rebuild) if(istype(source)) //Rebuild/update nearby group geometry if(source.parent) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 31c006f40fe..6ddbf1eac68 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -227,33 +227,38 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 75, 1) user << (state ? "You have pried the window into the frame." : "You have pried the window out of the frame.") else - - var/aforce = W.force - if(reinf) aforce /= 2.0 if(W.damtype == BRUTE || W.damtype == BURN) - src.health = max(0, src.health - aforce) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - if (src.health <= 7) - src.anchored = 0 - update_nearby_icons() - step(src, get_dir(user, src)) - if (src.health <= 0) - if (src.dir == SOUTHWEST) - var/index = null - index = 0 - while(index < 2) - new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/stack/rods( src.loc) - index++ - else - new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/stack/rods( src.loc) - src.density = 0 - del(src) - return + hit(W.force) + if (src.health <= 7) + src.anchored = 0 + update_nearby_icons() + step(src, get_dir(user, src)) + else + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) ..() return +/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1) + + if(reinf) damage /= 2.0 + src.health = max(0, src.health - damage) + if(sound_effect) + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + if (src.health <= 0) + if (src.dir == SOUTHWEST) + var/index = null + index = 0 + while(index < 2) + new /obj/item/weapon/shard( src.loc ) + if(reinf) new /obj/item/stack/rods( src.loc) + index++ + else + new /obj/item/weapon/shard( src.loc ) + if(reinf) new /obj/item/stack/rods( src.loc) + src.density = 0 + del(src) + return + /obj/structure/window/verb/rotate() set name = "Rotate Window Counter-Clockwise" @@ -413,6 +418,11 @@ return +/obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > T0C + 600) + hit(round(exposed_volume / 100), 0) + ..() + /obj/structure/window/basic diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index a788dd81ecc..aa6c71d05b9 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -429,4 +429,9 @@ - item.throw_at(target, item.throw_range, item.throw_speed) \ No newline at end of file + item.throw_at(target, item.throw_range, item.throw_speed) + +/mob/living/carbon/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > CARBON_LIFEFORM_FIRE_RESISTANCE) + adjustFireLoss(CARBON_LIFEFORM_FIRE_DAMAGE) + ..() \ No newline at end of file diff --git a/code/setup.dm b/code/setup.dm index 6e2e84b0555..eabb476fa11 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -16,7 +16,7 @@ #define MOLES_O2STANDARD MOLES_CELLSTANDARD*O2STANDARD // O2 standard value (21%) #define MOLES_N2STANDARD MOLES_CELLSTANDARD*N2STANDARD // N2 standard value (79%) -#define MOLES_PLASMA_VISIBLE 0.5 //Moles in a standard cell after which plasma is visible +#define MOLES_PLASMA_VISIBLE 0.7 //Moles in a standard cell after which plasma is visible #define BREATH_VOLUME 0.5 //liters in a normal breath #define BREATH_PERCENTAGE BREATH_VOLUME/CELL_VOLUME @@ -25,8 +25,8 @@ //Amount of air needed before pass out/suffocation commences // Pressure limits. -#define HAZARD_HIGH_PRESSURE 750 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) -#define WARNING_HIGH_PRESSURE 525 //This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) +#define HAZARD_HIGH_PRESSURE 550 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) +#define WARNING_HIGH_PRESSURE 325 //This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) #define WARNING_LOW_PRESSURE 50 //This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) #define HAZARD_LOW_PRESSURE 20 //This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) @@ -81,11 +81,12 @@ #define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION T20C+10 #define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION T20C+200 -#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.08 -#define WALL_HEAT_TRANSFER_COEFFICIENT 0.03 -#define SPACE_HEAT_TRANSFER_COEFFICIENT 0.20 //a hack to partly simulate radiative heat -#define OPEN_HEAT_TRANSFER_COEFFICIENT 0.40 -#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.10 //a hack for now +#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.4 +#define WALL_HEAT_TRANSFER_COEFFICIENT 0.0 +#define DOOR_HEAT_TRANSFER_COEFFICIENT 0.0 +#define SPACE_HEAT_TRANSFER_COEFFICIENT 0.2 //a hack to partly simulate radiative heat +#define OPEN_HEAT_TRANSFER_COEFFICIENT 0.4 +#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 //a hack for now //Must be between 0 and 1. Values closer to 1 equalize temperature faster //Should not exceed 0.4 else strange heat flow occur @@ -94,7 +95,11 @@ #define FIRE_SPREAD_RADIOSITY_SCALE 0.85 #define FIRE_CARBON_ENERGY_RELEASED 500000 //Amount of heat released per mole of burnt carbon into the tile #define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile -#define FIRE_GROWTH_RATE 25000 //For small fires +#define FIRE_GROWTH_RATE 40000 //For small fires + +// Fire Damage +#define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C +#define CARBON_LIFEFORM_FIRE_DAMAGE 4 //Plasma fire properties #define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C diff --git a/html/changelog.html b/html/changelog.html index fec5564970e..642c9bc3159 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -48,19 +48,22 @@ Stuff which is in development and not yet visible to players or just code relate should be listed in the changelog upon commit tho. Thanks. --> -
-

10 October 2012

-

Giacom updated:

- -
-

13 October 2012

Giacom updated:

+
+ +
+

10 October 2012

+

Giacom updated:

+