12/21 modernizations from TG live (#103)
* sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes
This commit is contained in:
@@ -46,7 +46,6 @@
|
||||
/obj/effect/hotspot
|
||||
anchored = 1
|
||||
mouse_opacity = 0
|
||||
unacidable = 1//So you can't melt fire with acid.
|
||||
icon = 'icons/effects/fire.dmi'
|
||||
icon_state = "1"
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
@@ -59,7 +58,6 @@
|
||||
|
||||
/obj/effect/hotspot/New()
|
||||
..()
|
||||
set_light(3,1,LIGHT_COLOR_FIRE)
|
||||
SSair.hotspots += src
|
||||
perform_exposure()
|
||||
setDir(pick(cardinal))
|
||||
@@ -71,6 +69,8 @@
|
||||
if(!istype(location) || !(location.air))
|
||||
return 0
|
||||
|
||||
location.active_hotspot = src
|
||||
|
||||
if(volume > CELL_VOLUME*0.95)
|
||||
bypassing = 1
|
||||
else
|
||||
@@ -89,9 +89,9 @@
|
||||
location.assume_air(affected)
|
||||
|
||||
for(var/A in loc)
|
||||
var/atom/item = A
|
||||
if(item && item != src) // It's possible that the item is deleted in temperature_expose
|
||||
item.fire_act(null, temperature, volume)
|
||||
var/atom/AT = A
|
||||
if(AT && AT != src) // It's possible that the item is deleted in temperature_expose
|
||||
AT.fire_act(temperature, volume)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -147,9 +147,10 @@
|
||||
return 1
|
||||
|
||||
/obj/effect/hotspot/Destroy()
|
||||
SetLuminosity(0)
|
||||
SSair.hotspots -= src
|
||||
DestroyTurf()
|
||||
if(istype(loc, /turf))
|
||||
if(isturf(loc))
|
||||
var/turf/open/T = loc
|
||||
if(T.active_hotspot == src)
|
||||
T.active_hotspot = null
|
||||
@@ -158,8 +159,7 @@
|
||||
return QDEL_HINT_PUTINPOOL
|
||||
|
||||
/obj/effect/hotspot/proc/DestroyTurf()
|
||||
|
||||
if(istype(loc, /turf))
|
||||
if(isturf(loc))
|
||||
var/turf/T = loc
|
||||
if(T.to_be_destroyed)
|
||||
var/chance_of_deletion
|
||||
@@ -176,4 +176,4 @@
|
||||
/obj/effect/hotspot/Crossed(mob/living/L)
|
||||
..()
|
||||
if(isliving(L))
|
||||
L.fire_act()
|
||||
L.fire_act(temperature, volume)
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
/turf/proc/CanAtmosPass(turf/T)
|
||||
/atom/var/CanAtmosPass = ATMOS_PASS_YES
|
||||
/atom/proc/CanAtmosPass(turf/T)
|
||||
switch (CanAtmosPass)
|
||||
if (ATMOS_PASS_PROC)
|
||||
return ATMOS_PASS_YES
|
||||
if (ATMOS_PASS_DENSITY)
|
||||
return !density
|
||||
else
|
||||
return CanAtmosPass
|
||||
|
||||
/turf/closed/CanAtmosPass(turf/T)
|
||||
return 0
|
||||
/turf/closed/CanAtmosPass = ATMOS_PASS_NO
|
||||
|
||||
/turf/open/CanAtmosPass = ATMOS_PASS_PROC
|
||||
/turf/open/CanAtmosPass(turf/T)
|
||||
var/R
|
||||
if(blocks_air || T.blocks_air)
|
||||
@@ -10,7 +18,7 @@
|
||||
|
||||
for(var/obj/O in contents+T.contents)
|
||||
var/turf/other = (O.loc == src ? T : src)
|
||||
if(!O.CanAtmosPass(other))
|
||||
if(!CANATMOSPASS(O, other))
|
||||
R = 1
|
||||
if(O.BlockSuperconductivity()) //the direction and open/closed are already checked on CanAtmosPass() so there are no arguments
|
||||
var/D = get_dir(src, T)
|
||||
@@ -24,53 +32,44 @@
|
||||
|
||||
return !R
|
||||
|
||||
/atom/movable/proc/CanAtmosPass()
|
||||
return 1
|
||||
|
||||
/atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5)
|
||||
return (!density || !height)
|
||||
|
||||
/turf/CanPass(atom/movable/mover, turf/target, height=1.5)
|
||||
if(!target) return 0
|
||||
|
||||
if(istype(mover)) // turf/Enter(...) will perform more advanced checks
|
||||
return !density
|
||||
|
||||
else // Now, doing more detailed checks for air movement and air group formation
|
||||
if(target.blocks_air||blocks_air)
|
||||
return 0
|
||||
|
||||
for(var/obj/obstacle in src)
|
||||
if(!obstacle.CanPass(mover, target, height))
|
||||
return 0
|
||||
for(var/obj/obstacle in target)
|
||||
if(!obstacle.CanPass(mover, src, height))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/atom/movable/proc/BlockSuperconductivity() // objects that block air and don't let superconductivity act. Only firelocks atm.
|
||||
return 0
|
||||
|
||||
/turf/proc/CalculateAdjacentTurfs()
|
||||
var/list/atmos_adjacent_turfs = src.atmos_adjacent_turfs
|
||||
for(var/direction in cardinal)
|
||||
var/turf/open/T = get_step(src, direction)
|
||||
if(!istype(T))
|
||||
var/turf/T = get_step(src, direction)
|
||||
if(!T)
|
||||
continue
|
||||
if(CanAtmosPass(T))
|
||||
atmos_adjacent_turfs |= T
|
||||
T.atmos_adjacent_turfs |= src
|
||||
if(CANATMOSPASS(T, src))
|
||||
LAZYINITLIST(atmos_adjacent_turfs)
|
||||
LAZYINITLIST(T.atmos_adjacent_turfs)
|
||||
atmos_adjacent_turfs[T] = TRUE
|
||||
T.atmos_adjacent_turfs[src] = TRUE
|
||||
else
|
||||
atmos_adjacent_turfs -= T
|
||||
T.atmos_adjacent_turfs -= src
|
||||
if (atmos_adjacent_turfs)
|
||||
atmos_adjacent_turfs -= T
|
||||
if (T.atmos_adjacent_turfs)
|
||||
T.atmos_adjacent_turfs -= src
|
||||
UNSETEMPTY(T.atmos_adjacent_turfs)
|
||||
UNSETEMPTY(atmos_adjacent_turfs)
|
||||
src.atmos_adjacent_turfs = atmos_adjacent_turfs
|
||||
|
||||
//returns a list of adjacent turfs that can share air with this one.
|
||||
//alldir includes adjacent diagonal tiles that can share
|
||||
// air with both of the related adjacent cardinal tiles
|
||||
/turf/proc/GetAtmosAdjacentTurfs(alldir = 0)
|
||||
var/adjacent_turfs = atmos_adjacent_turfs.Copy()
|
||||
var/adjacent_turfs
|
||||
if (atmos_adjacent_turfs)
|
||||
adjacent_turfs = atmos_adjacent_turfs.Copy()
|
||||
else
|
||||
adjacent_turfs = list()
|
||||
|
||||
if (!alldir)
|
||||
return adjacent_turfs
|
||||
|
||||
var/turf/curloc = src
|
||||
|
||||
for (var/direction in diagonals)
|
||||
@@ -79,10 +78,10 @@
|
||||
|
||||
for (var/checkDirection in cardinal)
|
||||
var/turf/checkTurf = get_step(S, checkDirection)
|
||||
if(!(checkTurf in S.atmos_adjacent_turfs))
|
||||
if(!S.atmos_adjacent_turfs || !S.atmos_adjacent_turfs[checkTurf])
|
||||
continue
|
||||
|
||||
if (checkTurf in adjacent_turfs)
|
||||
if (adjacent_turfs[checkTurf])
|
||||
matchingDirections++
|
||||
|
||||
if (matchingDirections >= 2)
|
||||
@@ -91,29 +90,29 @@
|
||||
|
||||
return adjacent_turfs
|
||||
|
||||
/atom/movable/proc/air_update_turf(command = 0)
|
||||
if(!istype(loc,/turf) && command)
|
||||
/atom/proc/air_update_turf(command = 0)
|
||||
if(!isturf(loc) && command)
|
||||
return
|
||||
var/turf/T = get_turf(loc)
|
||||
T.air_update_turf(command)
|
||||
|
||||
/turf/proc/air_update_turf(command = 0)
|
||||
/turf/air_update_turf(command = 0)
|
||||
if(command)
|
||||
CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(src,command)
|
||||
|
||||
/atom/movable/proc/move_update_air(turf/T)
|
||||
if(istype(T,/turf))
|
||||
if(isturf(T))
|
||||
T.air_update_turf(1)
|
||||
air_update_turf(1)
|
||||
|
||||
/atom/movable/proc/atmos_spawn_air(text) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires
|
||||
/atom/proc/atmos_spawn_air(text) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires
|
||||
var/turf/open/T = get_turf(src)
|
||||
if(!istype(T))
|
||||
return
|
||||
T.atmos_spawn_air(text)
|
||||
|
||||
/turf/open/proc/atmos_spawn_air(text)
|
||||
/turf/open/atmos_spawn_air(text)
|
||||
if(!text || !air)
|
||||
return
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/temperature_archived
|
||||
|
||||
//list of open turfs adjacent to us
|
||||
var/list/atmos_adjacent_turfs = list()
|
||||
var/list/atmos_adjacent_turfs
|
||||
//bitfield of dirs in which we are superconducitng
|
||||
var/atmos_supeconductivity = 0
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
var/atmos_cooldown = 0
|
||||
var/planetary_atmos = FALSE //air will revert to initial_gas_mix over time
|
||||
|
||||
var/list/atmos_overlay_types = list() //gas IDs of current active gas overlays
|
||||
var/list/atmos_overlay_types //gas IDs of current active gas overlays
|
||||
|
||||
/turf/open/New()
|
||||
..()
|
||||
@@ -98,13 +98,17 @@
|
||||
/turf/open/proc/update_visuals()
|
||||
var/list/new_overlay_types = tile_graphic()
|
||||
|
||||
for(var/overlay in atmos_overlay_types-new_overlay_types) //doesn't remove overlays that would only be added
|
||||
overlays -= overlay
|
||||
atmos_overlay_types -= overlay
|
||||
if (atmos_overlay_types)
|
||||
for(var/overlay in atmos_overlay_types-new_overlay_types) //doesn't remove overlays that would only be added
|
||||
overlays -= overlay
|
||||
|
||||
for(var/overlay in new_overlay_types-atmos_overlay_types) //doesn't add overlays that already exist
|
||||
add_overlay(overlay)
|
||||
if (new_overlay_types.len)
|
||||
if (atmos_overlay_types)
|
||||
add_overlay(new_overlay_types - atmos_overlay_types) //don't add overlays that already exist
|
||||
else
|
||||
add_overlay(new_overlay_types)
|
||||
|
||||
UNSETEMPTY(new_overlay_types)
|
||||
atmos_overlay_types = new_overlay_types
|
||||
|
||||
/turf/open/proc/tile_graphic()
|
||||
@@ -130,7 +134,7 @@
|
||||
//cache for sanic speed
|
||||
var/list/adjacent_turfs = atmos_adjacent_turfs
|
||||
var/datum/excited_group/our_excited_group = excited_group
|
||||
var/adjacent_turfs_length = adjacent_turfs.len
|
||||
var/adjacent_turfs_length = LAZYLEN(adjacent_turfs)
|
||||
atmos_cooldown++
|
||||
if (planetary_atmos)
|
||||
adjacent_turfs_length++
|
||||
@@ -246,16 +250,24 @@
|
||||
for(var/atom/movable/M in src)
|
||||
M.experience_pressure_difference(pressure_difference, pressure_direction)
|
||||
|
||||
/atom/movable/var/pressure_resistance = 5
|
||||
/atom/movable/var/pressure_resistance = 10
|
||||
/atom/movable/var/last_high_pressure_movement_air_cycle = 0
|
||||
/atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
|
||||
|
||||
/atom/movable/proc/experience_pressure_difference(pressure_difference, direction, pressure_resistance_prob_delta = 0)
|
||||
var/const/PROBABILITY_OFFSET = 25
|
||||
var/const/PROBABILITY_BASE_PRECENT = 75
|
||||
set waitfor = 0
|
||||
. = 0
|
||||
if(!anchored && !pulledby)
|
||||
if (!anchored && !pulledby)
|
||||
. = 1
|
||||
if(pressure_difference > pressure_resistance && last_high_pressure_movement_air_cycle < SSair.times_fired)
|
||||
last_high_pressure_movement_air_cycle = SSair.times_fired
|
||||
step(src, direction)
|
||||
if (last_high_pressure_movement_air_cycle < SSair.times_fired)
|
||||
var/move_prob = 100
|
||||
if (pressure_resistance > 0)
|
||||
move_prob = (pressure_difference/pressure_resistance*PROBABILITY_BASE_PRECENT)-PROBABILITY_OFFSET
|
||||
move_prob += pressure_resistance_prob_delta
|
||||
if (move_prob > PROBABILITY_OFFSET && prob(move_prob))
|
||||
step(src, direction)
|
||||
last_high_pressure_movement_air_cycle = SSair.times_fired
|
||||
|
||||
///////////////////////////EXCITED GROUPS/////////////////////////////
|
||||
|
||||
@@ -445,4 +457,4 @@
|
||||
(heat_capacity*sharer.heat_capacity/(heat_capacity+sharer.heat_capacity))
|
||||
|
||||
temperature -= heat/heat_capacity
|
||||
sharer.temperature += heat/sharer.heat_capacity
|
||||
sharer.temperature += heat/sharer.heat_capacity
|
||||
|
||||
Reference in New Issue
Block a user