The winter update, part 2-2

This commit is contained in:
DeityLink
2014-12-14 07:33:53 +01:00
parent b2ae754aca
commit bd5d9968a8
27 changed files with 975 additions and 242 deletions

View File

@@ -5,6 +5,78 @@
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
#define FILE_DIR "code"
#define FILE_DIR "code/libs"
#define FILE_DIR "code/libs/Get Flat Icon"
#define FILE_DIR "code/libs/Get Flat Icon/demo"
#define FILE_DIR "code/TriDimension"
#define FILE_DIR "code/unused"
#define FILE_DIR "code/unused/goonheist"
#define FILE_DIR "code/WorkInProgress"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
#define FILE_DIR "code/WorkInProgress/Susan"
#define FILE_DIR "html"
#define FILE_DIR "icons"
#define FILE_DIR "icons/48x48"
#define FILE_DIR "icons/adminbus"
#define FILE_DIR "icons/ass"
#define FILE_DIR "icons/effects"
#define FILE_DIR "icons/mecha"
#define FILE_DIR "icons/misc"
#define FILE_DIR "icons/mob"
#define FILE_DIR "icons/mob/custom"
#define FILE_DIR "icons/mob/custom/N3X15"
#define FILE_DIR "icons/mob/human_races"
#define FILE_DIR "icons/mob/in-hand"
#define FILE_DIR "icons/mob/in-hand/left"
#define FILE_DIR "icons/mob/in-hand/right"
#define FILE_DIR "icons/mob/species"
#define FILE_DIR "icons/mob/species/vox"
#define FILE_DIR "icons/obj"
#define FILE_DIR "icons/obj/assemblies"
#define FILE_DIR "icons/obj/atmospherics"
#define FILE_DIR "icons/obj/clothing"
#define FILE_DIR "icons/obj/doors"
#define FILE_DIR "icons/obj/flora"
#define FILE_DIR "icons/obj/machines"
#define FILE_DIR "icons/obj/map"
#define FILE_DIR "icons/obj/pipes"
#define FILE_DIR "icons/pda_icons"
#define FILE_DIR "icons/pods"
#define FILE_DIR "icons/spideros_icons"
#define FILE_DIR "icons/splashworks"
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
#define FILE_DIR "icons/vending_icons"
#define FILE_DIR "icons/xenoarch_icons"
#define FILE_DIR "nano"
#define FILE_DIR "nano/images"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/effects"
#define FILE_DIR "sound/effects/turret"
#define FILE_DIR "sound/effects/wind"
#define FILE_DIR "sound/hallucinations"
#define FILE_DIR "sound/items"
#define FILE_DIR "sound/machines"
#define FILE_DIR "sound/mecha"
#define FILE_DIR "sound/misc"
#define FILE_DIR "sound/music"
#define FILE_DIR "sound/piano"
#define FILE_DIR "sound/scp"
#define FILE_DIR "sound/violin"
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/voice/Serithi"
#define FILE_DIR "sound/vox"
#define FILE_DIR "sound/vox_fem"
#define FILE_DIR "sound/weapons"
#define FILE_DIR "tools"
#define FILE_DIR "tools/AddToChangelog"
#define FILE_DIR "tools/AddToChangelog/AddToChangelog"
// END_FILE_DIR
// BEGIN_PREFERENCES
#define DEBUG
@@ -276,6 +348,7 @@
#include "code\game\gamemodes\events\biomass.dm"
#include "code\game\gamemodes\events\black_hole.dm"
#include "code\game\gamemodes\events\clang.dm"
#include "code\game\gamemodes\events\cosmic_freeze.dm"
#include "code\game\gamemodes\events\dust.dm"
#include "code\game\gamemodes\events\miniblob.dm"
#include "code\game\gamemodes\events\ninja_abilities.dm"
@@ -708,6 +781,7 @@
#include "code\game\objects\structures\noticeboard.dm"
#include "code\game\objects\structures\safe.dm"
#include "code\game\objects\structures\signs.dm"
#include "code\game\objects\structures\snow.dm"
#include "code\game\objects\structures\support_rail.dm"
#include "code\game\objects\structures\tables_racks.dm"
#include "code\game\objects\structures\tank_dispenser.dm"
@@ -1244,6 +1318,7 @@
#include "code\modules\mob\living\simple_animal\hostile\retaliate\cluwne.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\snowman.dm"
#include "code\modules\mob\new_player\login.dm"
#include "code\modules\mob\new_player\logout.dm"
#include "code\modules\mob\new_player\new_player.dm"

View File

@@ -136,6 +136,9 @@
/atom/proc/singuloCanEat()
return 1
/atom/proc/freeze()
return
/atom/proc/bullet_act(var/obj/item/projectile/Proj)
return 0

View File

@@ -0,0 +1,15 @@
/proc/cosmic_freeze_event()
spawn() //to stop the secrets panel hanging
var/list/turf/simulated/floor/turfs = list()
for(var/areapath in typesof(/area/hallway,/area/crew_quarters,/area/maintenance))
var/area/A = locate(areapath)
for(var/area/B in A.related)
for(var/turf/simulated/floor/F in B.contents)
if(!F.contents.len)
turfs += F
if(turfs.len) //Pick a turf to spawn at if we can
var/turf/simulated/floor/T = pick(turfs)
new/obj/structure/snow/cosmic(T)
message_admins("\blue Event: Cosmic snow spawned at [T.loc] ([T.x],[T.y],[T.z])")

View File

@@ -181,15 +181,21 @@
/obj/machinery/alarm/process()
var/turf/simulated/location = loc
if(!istype(location)) return//returns if loc is not simulated
var/datum/gas_mixture/environment = location.return_air()
if(stat & (FROZEN))
if(environment.temperature >= 300)
visible_message("The ice on \the [src] melts away. it should be operational once again.")
stat &= ~FROZEN
update_icon()
return
if((stat & (NOPOWER|BROKEN)) || shorted || buildstage != 2)
use_power = 0
return
var/turf/simulated/location = loc
if(!istype(location)) return//returns if loc is not simulated
var/datum/gas_mixture/environment = location.return_air()
// Handle temperature adjustment here.
if(environment.temperature < target_temperature - 2 || environment.temperature > target_temperature + 2 || regulating_temperature)
//If it goes too far, we should adjust ourselves back before stopping.
@@ -313,9 +319,14 @@
return 0
/obj/machinery/alarm/update_icon()
overlays = 0
if(stat & FROZEN)
overlays += image(icon,"alarmf")
if(wiresexposed)
icon_state = "alarmx"
return
if((stat & (NOPOWER|BROKEN)) || shorted)
icon_state = "alarmp"
return
@@ -644,6 +655,10 @@
/obj/machinery/alarm/interact(mob/user)
if(stat & FROZEN)
user << "If only you could somehow melt the ice covering the alarm's interface..."
return
user.set_machine(src)
if(buildstage!=2)
@@ -830,6 +845,24 @@
*/
src.add_fingerprint(user)
if(stat & FROZEN)
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.isOn()) return
if (WT.get_fuel() < 5) // uses up 5 fuel.
user << "<span class='warning'>You need more fuel to complete this task.</span>"
return
user << "You begin melting the ice on \the [src]."
playsound(get_turf(src), pick('sound/items/Welder.ogg', 'sound/items/Welder2.ogg'), 50, 1)
if(do_after(user, 50))
if(!src || !WT.remove_fuel(5, user)) return
user << "You melt the ice. \the [src] should be operational once again."
stat &= ~FROZEN
update_icon()
return ..()
switch(buildstage)
if(2)
if(istype(W, /obj/item/weapon/screwdriver)) // Opening that Air Alarm up.

View File

@@ -133,6 +133,7 @@
/obj/item/clothing/tie/horrible,
/obj/item/device/maracas,
/obj/item/weapon/gun/energy/temperature,
/obj/item/weapon/shovel/spade,
)
var/obj/item/I = new gift_type(M)
@@ -143,6 +144,7 @@
qdel(src)
return
//christmas and festive food
/obj/item/weapon/winter_gift/food/attack_self(mob/M as mob)
var/gift_type = pick(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake,
@@ -158,10 +160,18 @@
qdel(src)
return
//warm clothes
/obj/item/weapon/winter_gift/cloth/attack_self(mob/M as mob)
if(prob(30))
cloth_bundle()
M << "<span class='notice'>You unwrapped a bundle of clothes! Looks comfy!</span>"
qdel(src)
return
var/gift_type = pick(
/obj/item/clothing/gloves/black,
/obj/item/clothing/head/ushanka,
/obj/item/clothing/head/bearpelt,
)
var/obj/item/I = new gift_type(M)
@@ -172,6 +182,40 @@
qdel(src)
return
/obj/item/weapon/winter_gift/cloth/proc/cloth_bundle()
var/bundle = pick(
3;"batman",
10;"russian fur",
10;"chicken",
8;"pirate captain",
2;"cuban pete"
)
switch(bundle)
if("batman")
new /obj/item/weapon/storage/belt/security/batmanbelt(get_turf(loc))
new /obj/item/clothing/head/batman(get_turf(loc))
new /obj/item/clothing/gloves/batmangloves(get_turf(loc))
new /obj/item/clothing/shoes/jackboots/batmanboots(get_turf(loc))
new /obj/item/clothing/under/batmansuit(get_turf(loc))
if("russian fur")
new /obj/item/clothing/suit/russofurcoat(get_turf(loc))
new /obj/item/clothing/head/russofurhat(get_turf(loc))
if("chicken")
new /obj/item/clothing/head/chicken(get_turf(loc))
new /obj/item/clothing/suit/chickensuit(get_turf(loc))
if("pirate captain")
new /obj/item/clothing/glasses/eyepatch(get_turf(loc))
new /obj/item/clothing/head/hgpiratecap(get_turf(loc))
new /obj/item/clothing/suit/hgpirate(get_turf(loc))
new /obj/item/clothing/under/captain_fly(get_turf(loc))
new /obj/item/clothing/shoes/jackboots(get_turf(loc))
if("cuban pete")
new /obj/item/clothing/head/collectable/petehat(get_turf(loc))
new /obj/item/device/maracas(get_turf(loc))
new /obj/item/device/maracas(get_turf(loc))
//dangerous items
/obj/item/weapon/winter_gift/special/attack_self(mob/M as mob)
var/gift_type = pick(
/obj/item/device/fuse_bomb,
@@ -205,6 +249,16 @@
qdel(src)
return
//black gifts have 2% chance to spawn by default.
/obj/item/weapon/winter_gift/proc/pick_a_gift(var/turf/T,var/special_chance = 2)
var/gift_type = pick(
50;/obj/item/weapon/winter_gift/regular,
25;/obj/item/weapon/winter_gift/food,
25;/obj/item/weapon/winter_gift/cloth,
special_chance;/obj/item/weapon/winter_gift/special,
)
new gift_type(T)
////STRANGE PRESENTS(wrapped people)////
/obj/effect/spresent

View File

@@ -0,0 +1,535 @@
//////SNOW//////(winter 2014, by Deity Link)
/obj/structure/snow
name = "snow"
layer = 2.5//above the plating and the vents, bellow most items and structures
icon = 'icons/turf/snow.dmi'
icon_state = "snow"
alpha = 230
anchored = 1
density = 0
mouse_opacity = 1
var/dug = 0
var/list/foliage = list(
"snowgrass1bb",
"snowgrass2bb",
"snowgrass3bb",
"snowgrass1gb",
"snowgrass2gb",
"snowgrass3gb",
"snowgrassall1",
"snowgrassall2",
"snowgrassall3",
)
/obj/structure/snow/New()
..()
if(prob(17))
overlays += image('icons/obj/flora/snowflora.dmi',pick(foliage))
/obj/structure/snow/attackby(obj/item/W,mob/user)
if(istype(W,/obj/item/weapon/shovel))//using a shovel or spade harvests some snow and let's you click on the lower layers
if(dug < 2)
dug = 2
icon_state = "snow_dug"
mouse_opacity = 0
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
sleep(400)
icon_state = "snow_grabbed"
dug = 1
mouse_opacity = 1
sleep(400)
if(dug != 2)
icon_state = "snow"
dug = 0
else
user << "There isn't much snow left to dig. It might come back later."
/obj/structure/snow/attack_hand(mob/user)
if(dug > 0) return
playsound(get_turf(src), "rustle", 50, 1)
user << "<span class='notice'>You start digging the snow with your hands.</span>"
if(do_after(user,30))
dug = 1
user << "<span class='notice'>You form a snowball in your hands.</span>"
user.put_in_hands(new /obj/item/stack/sheet/snow())
icon_state = "snow_grabbed"
sleep(400)
if(dug != 2)
icon_state = "snow"
dug = 0
return
//////COSMIC SNOW(the one that spreads everywhere)//////
/obj/structure/snow/cosmic
desc = "Winter is coming."
var/list/block_spread_turf = list(
/turf/space,
/turf/unsimulated,
)
var/list/block_spread_obj = list( //these objects always block the spread of the snow
/obj/structure/plasticflaps/mining,
/obj/structure/snow,
/obj/effect/forcefield,
)
var/list/block_spread_density = list( //these objects only block the spread of the snow if they are dense
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock,
/obj/machinery/door/morgue,
/obj/machinery/door/poddoor,
)
var/datum/gas_mixture/env = null
/obj/structure/snow/cosmic/New()
..()
snow_tiles++
var/blocked = 0
for(var/atom/A in get_turf(src))
if(A.density)
blocked = 1
if((snow_tiles >= 200) && !blocked && prob(15))
if(prob(30))
new/obj/structure/snow_flora/sappling/pine(get_turf(src))
else
new/obj/structure/snow_flora/sappling(get_turf(src))
if((snow_tiles >= 400) && !blocked && prob(2))
new/mob/living/simple_animal/hostile/retaliate/snowman(get_turf(src))
if(!bear_invasion && (snow_tiles >= 800))
bear_invasion = 1
for(var/obj/effect/landmark/C in landmarks_list)
if(C.name == "carpspawn")
if(prob(50))
new /mob/living/simple_animal/hostile/bear(C.loc)
var/turf/simulated/TS = get_turf(src)
if(!istype(TS)) return
env = TS.return_air()
chill()
spawn(5)//so the parent snow doesn't have to wait for its children's spread to finish, to prevent some sort of gigantic recursion that only lets snow duplicate toward North.
if(src)
spread()
for(var/obj/machinery/alarm/A in get_turf(src))
A.stat |= FROZEN
A.rcon_setting = RCON_NO
A.update_icon()
/obj/structure/snow/cosmic/proc/update_env_air()
var/turf/simulated/TS = get_turf(src)
if(!istype(TS)) return
env = TS.return_air()
/obj/structure/snow/cosmic/proc/spread()
update_env_air()
if(!env) return
if(env.temperature > MELTPOINT_SNOW)//above 30<33>C, the snow melts away)
var/turf/simulated/TS = get_turf(src)
if(!istype(TS)) return
TS.wet(800)
snow_tiles--
qdel(src)
return
if(env.temperature < 296.15)//the cosmic snow only spreads when the temperature is bellow 23<32>C
for(var/i in cardinal)
var/turf/T = get_step(src,i)
if(is_type_in_list(T,block_spread_turf))
continue
if(T.density)
continue //walls, duh
var/can_spread = 1
for(var/blockingA in block_spread_obj)
if(locate(blockingA) in T)
can_spread = 0
break
for(var/blockingB in block_spread_density)
var/obj/BB = (locate(blockingB) in T)
if(BB && BB.density)
can_spread = 0
break
//checking for windows and windoors on the source tile
for(var/obj/structure/window/WA in get_turf(src))
if(WA.dir & get_dir(get_turf(src),T))
can_spread = 0
break
for(var/obj/machinery/door/window/WB in get_turf(src))
if((WB.dir & get_dir(get_turf(src),T)) && WB.density)
can_spread = 0
break
//checking for windows and windoors on the destination tile
for(var/obj/structure/window/WA in T)
if(WA.is_fulltile())
can_spread = 0
break
if(WA.dir & get_dir(T,get_turf(src)))
can_spread = 0
break
for(var/obj/machinery/door/window/WB in T)
if((WB.dir & get_dir(T,get_turf(src))) && WB.density)
can_spread = 0
break
var/datum/gas_mixture/env2 = T.return_air()
if(can_spread && (env2.temperature < MELTPOINT_SNOW))
new/obj/structure/snow/cosmic(T)
spawn(5)
if(src)
spread()
/obj/structure/snow/cosmic/proc/chill()
if(env.temperature > 233)//the snow will slowly lower the temperature until -40<34>C.
env.temperature -= 0.02
spawn(20)
if(src)
chill()
//////SNOWBALLS//////
/obj/item/stack/sheet/snow
name = "snow"
desc = "Technically water."
singular_name = "snow ball"
icon_state = "snow"
melt_temperature = MELTPOINT_SNOW
force = 0
throwforce = 1
throw_speed = 3
throw_range = 6
/obj/item/stack/sheet/snow/New(var/loc, var/amount=null)
recipes = snow_recipes
pixel_x = rand(-13,13)
pixel_y = rand(-13,13)
return ..()
/obj/item/stack/sheet/snow/melt()
var/turf/T = get_turf(src)
if(istype(T,/turf/simulated))
var/turf/simulated/TS = T
TS.wet(800)
qdel(src)
/obj/item/stack/sheet/snow/throw_at(atom/target, range, speed)
playsound(src.loc, 'sound/weapons/punchmiss.ogg', 50, 1)
..()
/obj/item/stack/sheet/snow/throw_impact(atom/hit_atom)
if(istype(hit_atom,/mob/living/carbon/))
var/mob/living/carbon/C = hit_atom
if(C.stuttering < 1 && (!(M_HULK in C.mutations)))
C.stuttering = 1
C.Weaken(1)
C.Stun(1)
playsound(C.loc, "swing_hit", 50, 1)
if(C.bodytemperature >= 265)
C.bodytemperature -= 5
else if(istype(hit_atom,/mob/living/simple_animal/hostile/retaliate/snowman))
var/mob/living/simple_animal/hostile/retaliate/snowman/S = hit_atom
playsound(S.loc, "swing_hit", 50, 1)
if(S.enemies.len)
if(prob(10))
S.enemies = list()
S.LoseTarget()
S.say("Ah, I give up, you've got a pretty good swing.")
call(/obj/item/weapon/winter_gift/proc/pick_a_gift)(S.loc)
else
S.say(pick("Didn't feel anything","You call that snowballing?"))
else
S.say(pick("A fight? With pleasure.","Don't forget that you're the one who started it all."))
S.Retaliate()
if(S.bodytemperature >= 232)
S.bodytemperature -= 5
else ..()
var/global/list/datum/stack_recipe/snow_recipes = list (
new/datum/stack_recipe("snowman", /mob/living/simple_animal/hostile/retaliate/snowman, 10, time = 50, one_per_turf = 0, on_floor = 1),
new/datum/stack_recipe("snow barricade", /obj/structure/barricade/snow, 20, time = 50, one_per_turf = 1, on_floor = 1),
)
//////BARRICADE//////
/obj/structure/barricade/snow
name = "snow barricade"
desc = "This space is blocked off by a snow barricade."
icon = 'icons/obj/structures.dmi'
icon_state = "snowbarricade"
anchored = 1.0
density = 1.0
var/health = 50.0
var/maxhealth = 50.0
/obj/structure/barricade/snow/attackby(obj/item/W as obj, mob/user as mob)
if (istype(W, /obj/item/stack/sheet/snow))
if (src.health < src.maxhealth)
visible_message("<span class='warning'>[user] begins to repair the [src]!</span>")
if(do_after(user,20))
src.health = src.maxhealth
W:use(1)
visible_message("<span class='warning'>[user] repairs the [src]</span>")
return
else
return
return
else
switch(W.damtype)
if("fire")
src.health -= W.force * 1
if("brute")
src.health -= W.force * 0.75
else
if (src.health <= 0)
visible_message("<span class='danger'>\the [src] is smashed apart!</span>")
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
del(src)
..()
/obj/structure/barricade/snow/ex_act(severity)
switch(severity)
if(1.0)
visible_message("<span class='danger'>\the [src] is blown apart!</span>")
qdel(src)
return
if(2.0)
src.health -= 25
if (src.health <= 0)
visible_message("<span class='danger'>\the [src] is blown apart!</span>")
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
qdel(src)
return
/obj/structure/barricade/snow/meteorhit()
visible_message("<span class='danger'>\the [src] is blown apart!</span>")
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
new /obj/item/stack/sheet/snow(get_turf(src), 1)
del(src)
return
/obj/structure/barricade/snow/blob_act()
src.health -= 25
if (src.health <= 0)
visible_message("<span class='danger'>The blob eats through \the [src]!</span>")
del(src)
return
/obj/structure/barricade/snow/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)//So bullets will fly over and stuff.
if(air_group || (height==0))
return 1
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
else
return 0
//////TREES//////
/obj/structure/snow_flora/sappling
name = "sappling"
desc = "Shh, it's growing..."
density = 0
anchored = 1
icon = 'icons/obj/flora/snowflora.dmi'
icon_state = "snowbush1"
var/growth = 0
/obj/structure/snow_flora/sappling/New()
..()
icon_state = pick(
"snowbush1",
"snowbush2",
"snowbush3",
"snowbush4",
"snowbush5",
"snowbush6",
)
growing()
/obj/structure/snow_flora/sappling/proc/growing()
if(growth > 20)
new/obj/structure/snow_flora/tree(get_turf(src))
qdel(src)
if(locate(/obj/structure/snow) in get_turf(src))
growth++
spawn(40)
growing()
else
qdel(src)
/obj/structure/snow_flora/sappling/attackby(obj/item/W,mob/user)
var/list/cutting = list(
/obj/item/weapon/minihoe,
/obj/item/weapon/scythe,
)
if(is_type_in_list(W,cutting))
qdel(src)
/obj/structure/snow_flora/sappling/pine/growing()
if(growth > 30)
if(prob(20))
new/obj/structure/snow_flora/tree/pine/xmas(get_turf(src))
else
new/obj/structure/snow_flora/tree/pine(get_turf(src))
qdel(src)
if(locate(/obj/structure/snow) in get_turf(src))
growth++
spawn(40)
growing()
else
qdel(src)
/obj/structure/snow_flora/tree
name = "tree"
desc = "Where's my axe when I need it?"
density = 0
anchored = 1
layer = FLY_LAYER
icon = 'icons/obj/flora/deadtrees.dmi'
icon_state = "tree_1"
var/axe_hits = 0
/obj/structure/snow_flora/tree/New()
..()
icon_state = pick(
"tree_1",
"tree_2",
"tree_3",
"tree_4",
"tree_5",
"tree_6",
)
idle()
/obj/structure/snow_flora/tree/proc/idle()
if(!(locate(/obj/structure/snow) in get_turf(src)))
axe_hits++
if(axe_hits >= 3)
new/obj/item/weapon/grown/log(get_turf(src))
qdel(src)
return
spawn(50)
if(src)
idle()
/obj/structure/snow_flora/tree/attackby(obj/item/W,mob/user)
var/list/cutting = list(
/obj/item/weapon/hatchet,
/obj/item/weapon/twohanded/fireaxe,
)
if(is_type_in_list(W,cutting))
axe_hits++
user.visible_message("<span class='warning'>[user] hits \the [src] with \the [W].</span>")
if(axe_hits >= 3)
new/obj/item/weapon/grown/log(get_turf(src))
qdel(src)
/obj/structure/snow_flora/tree/pine
name = "pine tree"
desc = "O Tannenbaum..."
icon = 'icons/obj/flora/pinetrees.dmi'
icon_state = "pine_1"
density = 1
pixel_x = -16
/obj/structure/snow_flora/tree/pine/New()
..()
icon_state = pick(
"pine_1",
"pine_2",
"pine_3",
)
if((snow_tiles >= 600) && prob(20))
new /mob/living/simple_animal/hostile/giant_spider/spiderling(get_turf(src))
if((snow_tiles >= 1000) && prob(20))
new /mob/living/simple_animal/hostile/bear(get_turf(src))
/obj/structure/snow_flora/tree/pine/attackby(obj/item/W,mob/user)
var/list/cutting = list(
/obj/item/weapon/hatchet,
/obj/item/weapon/twohanded/fireaxe,
)
if(is_type_in_list(W,cutting))
axe_hits++
user.visible_message("<span class='warning'>[user] hits \the [src] with \the [W].</span>")
if(axe_hits >= 5)
new/obj/item/weapon/grown/log(get_turf(src))
new/obj/item/weapon/grown/log(get_turf(src))
new/obj/item/weapon/grown/log(get_turf(src))
qdel(src)
/obj/structure/snow_flora/tree/pine/idle()
if(!(locate(/obj/structure/snow) in get_turf(src)))
axe_hits++
if(axe_hits >= 5)
new/obj/item/weapon/grown/log(get_turf(src))
new/obj/item/weapon/grown/log(get_turf(src))
new/obj/item/weapon/grown/log(get_turf(src))
qdel(src)
return
spawn(50)
if(src)
idle()
/obj/structure/snow_flora/tree/pine/xmas
name = "christmas tree"
desc = "Heck yeah!"
icon = 'icons/obj/flora/pinetrees.dmi'
icon_state = "pine_c"
/obj/structure/snow_flora/tree/pine/xmas/New()
for(var/turf/simulated/floor/T in orange(1,src))
var/blocked = 0
for(var/atom/A in T)
if(A.density)
blocked = 1
if(blocked) continue
for(var/i=1,i<=rand(1,3),i++)
call(/obj/item/weapon/winter_gift/proc/pick_a_gift)(T,5)

View File

@@ -706,6 +706,7 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];secretsfun=spacevines'>Spawn Space-Vines</A><BR>
<A href='?src=\ref[src];secretsfun=comms_blackout'>Trigger a communication blackout</A><BR>
<A href='?src=\ref[src];secretsfun=pda_spam'>Trigger a wave of PDA spams</A><BR>
<A href='?src=\ref[src];secretsfun=freeze'>Spawn a cosmic snow storm</A><BR>
<BR>
<B>Fun Secrets</B><BR>
<BR>

View File

@@ -2370,6 +2370,11 @@
feedback_add_details("admin_secrets_fun_used","PDA")
new /datum/event/pda_spam
if("freeze")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","CF")
new /datum/event/cosmic_freeze
if("spaceninja")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","SN")

View File

@@ -3,6 +3,12 @@
var/list/species_restricted = null //Only these species can wear this kit.
var/wizard_garb = 0 // Wearing this empowers a wizard.
//temperatures in Kelvin. These default values won't affect protections in any way.
var/cold_breath_protection = 300 //that cloth protects its wearer's breath from cold air down to that temperature
var/hot_breath_protection = 300 //that cloth protects its wearer's breath from hot air up to that temperature
var/cold_speed_protection = 300 //that cloth allows its wearer to keep walking at normal speed at lower temperatures
//BS12: Species-restricted clothing check.
/obj/item/clothing/mob_can_equip(M as mob, slot)
@@ -221,6 +227,8 @@ BLIND // can't see anything
siemens_coefficient = 0.9
species_restricted = list("exclude","Diona","Muton")
cold_breath_protection = 230
/obj/item/clothing/suit/space
name = "Space suit"
desc = "A suit that protects against low pressure environments. Has a big 13 on the back."

View File

@@ -235,6 +235,8 @@
flags = FPRINT | TABLEPASS | BLOCKHAIR
siemens_coefficient = 2.0
cold_breath_protection = 230
/obj/item/clothing/head/bearpelt
name = "bear pelt hat"
desc = "Fuzzy."
@@ -243,6 +245,8 @@
flags = FPRINT | TABLEPASS | BLOCKHEADHAIR
siemens_coefficient = 2.0
cold_breath_protection = 230
/obj/item/clothing/head/xenos
name = "xenos helmet"
icon_state = "xenos"
@@ -297,3 +301,5 @@
item_state = "russofurhat"
flags = FPRINT | TABLEPASS | BLOCKHEADHAIR
flags_inv = HIDEEARS
cold_breath_protection = 230

View File

@@ -104,6 +104,8 @@
item_state = "ushankadown"
flags_inv = HIDEEARS
cold_breath_protection = 230
/obj/item/clothing/head/ushanka/attack_self(mob/user as mob)
if(src.icon_state == "ushankadown")
src.icon_state = "ushankaup"

View File

@@ -8,6 +8,8 @@
w_class = 2
species_fit = list("Vox")
cold_breath_protection = 230
/obj/item/clothing/mask/luchador
name = "Luchador Mask"
desc = "Worn by robust fighters, flying high to defeat their foes!"

View File

@@ -38,7 +38,12 @@
//scarves (fit in in mask slot)
/obj/item/clothing/mask/bluescarf
/obj/item/clothing/mask/scarf
name = "scarf"
cold_breath_protection = 230
/obj/item/clothing/mask/scarf/blue
name = "blue neck scarf"
desc = "A blue neck scarf."
icon_state = "blueneckscarf"
@@ -47,7 +52,7 @@
w_class = 2
gas_transfer_coefficient = 0.90
/obj/item/clothing/mask/redscarf
/obj/item/clothing/mask/scarf/redwhite
name = "red scarf"
desc = "A red and white checkered neck scarf."
icon_state = "redwhite_scarf"
@@ -56,7 +61,7 @@
w_class = 2
gas_transfer_coefficient = 0.90
/obj/item/clothing/mask/greenscarf
/obj/item/clothing/mask/scarf/green
name = "green scarf"
desc = "A green neck scarf."
icon_state = "green_scarf"
@@ -65,7 +70,7 @@
w_class = 2
gas_transfer_coefficient = 0.90
/obj/item/clothing/mask/ninjascarf
/obj/item/clothing/mask/scarf/ninja
name = "ninja scarf"
desc = "A stealthy, dark scarf."
icon_state = "ninja_scarf"
@@ -114,6 +119,8 @@
w_class = 1
can_flip = 1
cold_breath_protection = 230
obj/item/clothing/mask/bandana/red
name = "red bandana"
icon_state = "bandred"

View File

@@ -91,6 +91,8 @@
siemens_coefficient = 0.7
species_fit = list("Vox")
cold_speed_protection = 230
/obj/item/clothing/shoes/jackboots/batmanboots
name = "batboots"
desc = "Criminal stomping boots for fighting crime and looking good."

View File

@@ -49,6 +49,7 @@
flags_inv = HIDEJUMPSUIT
species_fit = list("Vox")
cold_speed_protection = 230
/obj/item/clothing/suit/cyborg_suit
name = "cyborg suit"
@@ -151,6 +152,8 @@
flags_inv = HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 2.0
cold_speed_protection = 230
/obj/item/clothing/suit/monkeysuit
name = "Monkey Suit"
@@ -380,15 +383,21 @@
icon_state = "officersuit"
item_state = "officersuit"
cold_speed_protection = 230
/obj/item/clothing/suit/soldiercoat
name = "Soldier's Coat"
desc = "Ein Mantel gemacht, um die Verb<72>ndeten zu zerst<73>ren."
icon_state = "soldiersuit"
item_state = "soldiersuit"
cold_speed_protection = 230
/obj/item/clothing/suit/russofurcoat
name = "russian fur coat"
desc = "Let the land do the fighting for you."
icon_state = "russofurcoat"
item_state = "russofurcoat"
allowed = list(/obj/item/weapon/gun)
cold_speed_protection = 230

View File

@@ -1,183 +1,25 @@
/obj/structure/snow
name = "snow"
layer = 2.5//above the plating and the vents, bellow most items and structures
icon = 'icons/turf/snow.dmi'
icon_state = "snow"
alpha = 230
anchored = 1
density = 0
mouse_opacity = 1
/var/global/snow_tiles = 0
/var/global/bear_invasion = 0
var/has_sappling = 0
var/dug = 0
var/caught = 0
/datum/event/cosmic_freeze
var/list/foliage = list(
"snowgrass1bb",
"snowgrass2bb",
"snowgrass3bb",
"snowgrass1gb",
"snowgrass2gb",
"snowgrass3gb",
"snowgrassall1",
"snowgrassall2",
"snowgrassall3",
)
/datum/event/cosmic_freeze/start()
cosmic_freeze_event()
var/list/sappling = list(
"snowbush1",
"snowbush2",
"snowbush3",
"snowbush4",
"snowbush5",
"snowbush6",
)
/datum/event/cosmic_freeze/announce()
command_alert("Thermal scans suggest that the close approach of a comet has somehow manifested a snow storm aboard the station. Allowing that storm to propagate through the station might have unforeseen consequences.", "Cosmic freeze")
var/list/trees = list(
"tree_1",
"tree_2",
"tree_3",
"tree_4",
"tree_5",
"tree_6",
)
var/list/pinetrees = list(
"pine_1",
"pine_2",
"pine_3",
)
/obj/structure/snow/New()
..()
if(prob(17))
overlays += image('icons/obj/flora/snowflora.dmi',pick(foliage))
/*
/obj/structure/snowreader
name = "snowreader"
/obj/structure/snow/attackby(obj/item/W,mob/user)
if(istype(W,/obj/item/weapon/minihoe))
if(has_sappling)
has_sappling = 0
overlays = 0
/obj/structure/snowreader/New()
read_snow()
if(istype(W,/obj/item/weapon/shovel))//using a shovel or spade harvests some snow and let's you click on the lower layers
icon_state = "snow_dug"
mouse_opacity = 0
/obj/structure/snow/attack_hand(mob/user)
if(dug || caught) return
playsound(get_turf(src), "rustle", 50, 1)
user << "<span class='notice'>You start digging the snow with your hands.</span>"
if(do_after(user,30))
caught = 1
user << "<span class='notice'>You pick.</span>"
user.put_in_hands(new /obj/item/stack/sheet/snow())
icon_state = "snow_grabbed"
sleep(400)
if(!dug)
icon_state = "snow"
caught = 0
return
/obj/item/stack/sheet/snow
name = "snow"
desc = "Technically water."
singular_name = "snow ball"
icon_state = "snow"
melt_temperature = MELTPOINT_SNOW
/obj/item/stack/sheet/snow/New(var/loc, var/amount=null)
recipes = snow_recipes
pixel_x = rand(-13,13)
pixel_y = rand(-13,13)
return ..()
/obj/item/stack/sheet/snow/melt()
var/turf/T = get_turf(src)
T.wet(800)
qdel(src)
var/global/list/datum/stack_recipe/snow_recipes = list (
new/datum/stack_recipe("snowman", /mob/living/simple_animal, 10, time = 50, one_per_turf = 0, on_floor = 1),
)
/obj/structure/barricade/snow
name = "snow barricade"
desc = "This space is blocked off by a snow barricade."
icon = 'icons/obj/structures.dmi'
icon_state = "snowbarricade"
anchored = 1.0
density = 1.0
var/health = 50.0
var/maxhealth = 50.0
/obj/structure/barricade/snow/attackby(obj/item/W as obj, mob/user as mob)
if (istype(W, /obj/item/stack/sheet/snow))
if (src.health < src.maxhealth)
visible_message("<span class='warning'>[user] begins to repair the [src]!</span>")
if(do_after(user,20))
src.health = src.maxhealth
W:use(1)
visible_message("<span class='warning'>[user] repairs the [src]</span>")
return
else
return
return
else
switch(W.damtype)
if("fire")
src.health -= W.force * 1
if("brute")
src.health -= W.force * 0.75
else
if (src.health <= 0)
visible_message("<span class='danger'>The barricade is smashed apart!</span>")
new /obj/item/stack/sheet/snow(get_turf(src, 1))
new /obj/item/stack/sheet/snow(get_turf(src, 1))
new /obj/item/stack/sheet/snow(get_turf(src, 1))
del(src)
..()
/obj/structure/barricade/snow/ex_act(severity)
switch(severity)
if(1.0)
visible_message("<span class='danger'>\the [src] is blown apart!</span>")
qdel(src)
return
if(2.0)
src.health -= 25
if (src.health <= 0)
visible_message("<span class='danger'>\the [src] is blown apart!</span>")
new /obj/item/stack/sheet/snow(get_turf(src, 1))
new /obj/item/stack/sheet/snow(get_turf(src, 1))
new /obj/item/stack/sheet/snow(get_turf(src, 1))
qdel(src)
return
/obj/structure/barricade/snow/meteorhit()
visible_message("<span class='danger'>\the [src] is blown apart!</span>")
new /obj/item/stack/sheet/snow(get_turf(src, 1))
new /obj/item/stack/sheet/snow(get_turf(src, 1))
new /obj/item/stack/sheet/snow(get_turf(src, 1))
del(src)
return
/obj/structure/barricade/snow/blob_act()
src.health -= 25
if (src.health <= 0)
visible_message("<span class='danger'>The blob eats through \the [src]!</span>")
del(src)
return
/obj/structure/barricade/snow/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)//So bullets will fly over and stuff.
if(air_group || (height==0))
return 1
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
else
return 0
/obj/structure/tree
name = "tree"
layer = FLY_LAYER
icon = 'icons/obj/flora/deadtrees.dmi'
icon_state = "tree_1"
/obj/structure/snowreader/proc/read_snow()
world << "there are [snow_tiles] tiles covered in snow"
sleep(30)
read_snow()
*/

View File

@@ -47,6 +47,15 @@ var/list/event_last_fired = list()
possibleEvents[/datum/event/electrical_storm] = 10
possibleEvents[/datum/event/wallrot] = 30
var/current_month = text2num(time2text(world.timeofday, "MM"))
switch(current_month)
if(12,1,2)
if(snow_tiles <= 10)
possibleEvents[/datum/event/cosmic_freeze] = 30
if(3 to 11)
if(snow_tiles == 0)
possibleEvents[/datum/event/cosmic_freeze] = 15
if(!spacevines_spawned)
possibleEvents[/datum/event/spacevine] = 15
if(minutes_passed >= 30 && active_with_role["Engineer"] > 1) // Give engineers time to not set up the engine

View File

@@ -53,7 +53,7 @@
return -1 // slimes become supercharged at high temperatures
if (bodytemperature < 183.222)
tally += (283.222 - bodytemperature) / 10 * 1.75
else if (bodytemperature < 283.222)
else if ((bodytemperature < 283.222) && !check_speed_protections())
tally += (283.222 - bodytemperature) / 10 * 1.75
@@ -62,6 +62,15 @@
return (tally+config.human_delay)
/mob/living/carbon/human/proc/check_speed_protections()
var/list/human_slots = get_cloth_slots()
for(var/obj/item/clothing/C in human_slots)
if(C.cold_speed_protection < bodytemperature)
return 1
return 0
/mob/living/carbon/human/Process_Spacemove(var/check_drift = 0)
//Can we act
if(restrained()) return 0

View File

@@ -37,6 +37,21 @@
r_store,
s_store)
/mob/living/carbon/human/proc/get_cloth_slots()
return list(
back,
wear_mask,
belt,
wear_id,
ears,
glasses,
gloves,
head,
shoes,
wear_suit,
w_uniform,
)
/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/W, list/slots, act_on_fail = 1)
for (var/slot in slots)
if (equip_to_slot_if_possible(W, slots[slot], 0))

View File

@@ -256,14 +256,14 @@ var/global/list/whitelisted_species = list("Human")
if( (abs(310.15 - breath.temperature) > 50) && !(M_RESIST_HEAT in H.mutations)) // Hot air hurts :(
if(H.status_flags & GODMODE) return 1 //godmode
if(breath.temperature < cold_level_1)
if(prob(20))
H << "\red You feel your face freezing and an icicle forming in your lungs!"
if(prob(20) && !check_breath_protections(H,breath.temperature))
H << "<span class='warning'>You feel your face freezing and an icicle forming in your lungs!</span>"
else if(breath.temperature > heat_level_1)
if(prob(20))
if(H.dna.mutantrace == "slime")
H << "\red You feel supercharged by the extreme heat!"
H << "<span class='warning'>You feel supercharged by the extreme heat!</span>"
else
H << "\red You feel your face burning and a searing heat in your lungs!"
H << "<span class='warning'>You feel your face burning and a searing heat in your lungs!</span>"
if(H.dna.mutantrace == "slime")
if(breath.temperature < cold_level_1)
@@ -271,6 +271,7 @@ var/global/list/whitelisted_species = list("Human")
H.fire_alert = max(H.fire_alert, 1)
if(H.dna.mutantrace != "slime")
if(!check_breath_protections(H,breath.temperature))
switch(breath.temperature)
if(-INFINITY to cold_level_3)
H.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Cold")
@@ -297,6 +298,15 @@ var/global/list/whitelisted_species = list("Human")
H.fire_alert = max(H.fire_alert, 2)
return 1
/datum/species/proc/check_breath_protections(var/mob/living/carbon/human/H,var/temperature)
var/list/human_slots = H.get_cloth_slots()
for(var/obj/item/clothing/C in human_slots)
if((C.cold_breath_protection < temperature) || (C.hot_breath_protection > temperature))
return 1
return 0
// Used for species-specific names (Vox, etc)
/datum/species/proc/makeName(var/gender,var/mob/living/carbon/C=null)
if(gender==FEMALE) return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))

View File

@@ -1,31 +0,0 @@
/mob/living/simple_animal/snowman
name = "snowman"
desc = "Good day sir."
icon_state = "crab"
icon_living = "crab"
icon_dead = "crab_dead"
small = 1
speak_emote = list("clicks")
emote_hear = list("clicks")
emote_see = list("clacks")
speak_chance = 1
turns_per_move = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
stop_automated_movement = 1
friendly = "pinches"
var/obj/item/inventory_head
var/obj/item/inventory_mask
/mob/living/simple_animal/snowman/Life()
..()
//CRAB movement
if(!ckey && !stat)
if(isturf(src.loc) && !resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc.
turns_since_move++
if(turns_since_move >= turns_per_move)
Move(get_step(src,pick(4,8)))
turns_since_move = 0
regenerate_icons()

View File

@@ -0,0 +1,116 @@
/mob/living/simple_animal/hostile/retaliate/snowman
name = "snowman"
desc = "Good day sir."
icon_state = "snowman"
icon_living = "snowman"
icon_dead = ""
speak = list("Good day sir.","Would you happen to have a carrot for my nose?","Cold day, isn't it?","What a pleasant weather.")
speak_emote = list("says")
emote_hear = list("says")
emote_see = list("hums")
speak_chance = 2.5
turns_per_move = 3
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "hugs"
response_disarm = "gently pushes aside"
response_harm = "stomps"
friendly = "hugs"
faction = "snow"
health = 40
ranged = 1
retreat_distance = 5
minimum_distance = 3
projectilesound = 'sound/weapons/punchmiss.ogg'
projectiletype = /obj/item/projectile/snowball
environment_smash = 0
minbodytemp = 0
maxbodytemp = MELTPOINT_SNOW
heat_damage_per_tick = 5
bodytemperature = 270
var/obj/item/hat = null
var/obj/item/carrot = null
/mob/living/simple_animal/hostile/retaliate/snowman/Life()
..()
if(!ckey && !stat)
if(isturf(src.loc) && !resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc.
turns_since_move++
if(turns_since_move >= turns_per_move)
Move(get_step(src,pick(4,8)))
turns_since_move = 0
if(enemies.len && prob(5))
enemies = list()
LoseTarget()
src.say("Whatever.")
if(stat)
visible_message("<span class='game say'><span class='name'>[src.name]</span> murmurs, [pick("Oh my snowballs...","I will...be back...")]</span>")
visible_message("\the [src] collapses in a pile of snow.")
var/turf/T = get_turf(src)
new /obj/item/stack/sheet/snow(T, 1)
new /obj/item/stack/sheet/snow(T, 1)
new /obj/item/stack/sheet/snow(T, 1)
if(hat)
hat.loc = T
if(carrot)
carrot.loc = T
del(src)
else if(fire_alert)
src.say(pick("Oh god the heat...","I'm meltiiinggg...","Someone turn off the heater!"))
regenerate_icons()
/mob/living/simple_animal/hostile/retaliate/snowman/Retaliate()
..()
if(!stat)
src.say(pick("You, come fight me!","I say!","Coward!"))
/mob/living/simple_animal/hostile/retaliate/snowman/attackby(var/obj/item/W, var/mob/user)
if(!carrot && istype(W, /obj/item/weapon/reagent_containers/food/snacks/grown/carrot))
visible_message("<span class='notice'>[user] puts \a [W] on \the [src]'s nose.</span>")
user.drop_item()
carrot = W
carrot.loc = src
overlays += "snowman_carrot"
speak -= "Would you happen to have a carrot for my nose?"
src.say("Ah, most excellent!")
if(prob(30))
call(/obj/item/weapon/winter_gift/proc/pick_a_gift)(src.loc)
else if(istype(W,/obj/item/clothing/head/))
if(hat)
hat.loc = get_turf(src)
overlays -= image('icons/mob/head.dmi', hat.icon_state)
hat = null
else
speak += "I feel so dandy!"
user.drop_item()
hat = W
hat.loc = src
overlays += image('icons/mob/head.dmi', hat.icon_state)
else ..()
/obj/item/projectile/snowball
name = "flying snowball"
desc = "Think fast!"
icon = 'icons/obj/items.dmi'
icon_state = "snow"
nodamage = 1
stun = 1
weaken = 1
stutter = 1
/obj/item/projectile/snowball/Bump(atom/A as mob|obj|turf|area)
.=..()
if(.)
playsound(A.loc, "swing_hit", 50, 1)
if(istype(A,/mob/living/carbon/))
var/mob/living/carbon/C = A
if(C.bodytemperature >= 265)
C.bodytemperature -= 5

View File

@@ -3,6 +3,8 @@
icon = 'icons/mob/animal.dmi'
health = 20
maxHealth = 20
fire_dmi = 'icons/mob/OnFire.dmi'
fire_sprite = "Generic_mob_burning"
var/icon_living = ""
var/icon_dead = ""

View File

@@ -58,7 +58,7 @@
if(200 to 260)
name = "cold beam" //temp at which mobs start taking COLD_DAMAGE_LEVEL_1
icon_state = "temp_2"
if(120 to 260)
if(120 to 200)
name = "ice beam" //temp at which mobs start taking COLD_DAMAGE_LEVEL_2
icon_state = "temp_1"
if(-INFINITY to 120)
@@ -78,6 +78,9 @@
if(temperature > 500)//emagged
M.adjust_fire_stacks(0.5)
M.on_fire = 1
if(M.fire_dmi && M.fire_sprite)
M.fire_overlay = image(M.fire_dmi,M.fire_sprite)
M.overlays += M.fire_overlay
M.update_icon = 1
playsound(M.loc, 'sound/effects/bamf.ogg', 50, 0)
return 1

View File

@@ -419,6 +419,7 @@ var/MAX_EXPLOSION_RANGE = 14
#define POWEROFF 4 // tbd
#define MAINT 8 // under maintaince
#define EMPED 16 // temporary broken by EMP pulse
#define FROZEN 32 // frozen by cosmic snow
//bitflags for door switches.
#define OPEN 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 49 KiB