Snaxi Cabin Update (#28432)

* Snaxi Cabin Update

* New gear
This commit is contained in:
Kurfursten
2020-12-22 05:03:31 -06:00
committed by GitHub
parent ef40ae25e4
commit 7c41613c52
15 changed files with 176 additions and 4 deletions

View File

@@ -331,6 +331,12 @@
..()
/obj/machinery/atmospherics/pipe/ex_act(severity)
if(isturf(loc))
var/turf/T = loc
if(T.protect_infrastructure)
return
..()
/obj/machinery/atmospherics/pipe/simple/pipeline_expansion()
return list(node1, node2)

View File

@@ -209,6 +209,44 @@
qdel(src)
return
/obj/machinery/door/mineral/wood/log
prefix = "log"
icon_state = "logdoor_closed"
soundeffect = 'sound/effects/wood_door_slam.ogg'
animation_delay = 0
var/try_closing = FALSE //while true, repeatedly try to close
/obj/machinery/door/mineral/wood/log/New()
..()
fast_machines += src
/obj/machinery/door/mineral/wood/log/Destroy()
fast_machines -= src
..()
/obj/machinery/door/mineral/wood/log/open()
..()
spawn(5) //Don't attempt closing until half a second after it opens
if(!try_closing)
try_closing = TRUE
process()
/obj/machinery/door/mineral/wood/log/close()
..()
if(density) //successful, cease processing
try_closing = FALSE
/obj/machinery/door/mineral/wood/log/process()
if(!density && try_closing)
close()
visible_message("\The [src] slams shut!", "You hear a slamming of wood.")
/obj/machinery/door/mineral/wood/log/Dismantle(devestated = 0)
if(!devestated)
new /obj/item/weapon/grown/log/tree(src)
new /obj/item/weapon/grown/log/tree(src)
qdel(src)
/obj/machinery/door/mineral/resin
prefix = "resin"
icon_state = "resindoor_closed"

View File

@@ -3541,3 +3541,48 @@ var/global/num_vending_terminals = 1
pack = /obj/structure/vendomatpack/telecomms
machine_flags = SCREWTOGGLE | WRENCHMOVE | FIXED2WORK | CROWDESTROY | EJECTNOTDEL | EMAGGABLE
/obj/machinery/vending/snowgear
name = "\improper Snow Man's Land"
desc = "A vending machine for the intrepid snow-settler or pioneer."
icon_state = "snow"
vend_reply = "To the Pole!"
product_ads = list(
"You wouldn't let a little snow stop you.",
"Beware the yeti.",
"I fear no bear.",
"Ride out in style. Now cross-promoting with snowmobiles!"
)
product_slogans = list(
"Winter is coming.",
"Become strong enough to survive.",
"Bobsled teams from Jamaica need not apply.",
"Is that all you can hit me with, a moose and a blizzard?",
"Beware the yeti that stalks these snows!"
)
products = list(
/obj/item/clothing/shoes/winterboots = 10,
/obj/item/clothing/suit/storage/wintercoat = 10,
/obj/item/clothing/head/ushanka = 10,
/obj/item/clothing/mask/scarf/blue = 6,
/obj/item/clothing/mask/scarf/red = 6,
/obj/item/clothing/mask/scarf/green = 6,
/obj/item/clothing/gloves/black = 6,
/obj/item/device/flashlight/lantern = 6,
/obj/item/weapon/hatchet = 6,
/obj/item/weapon/pickaxe/shovel = 6,
/obj/item/weapon/lighter = 6,
/obj/machinery/cart/cargo/toboggan = 2,
/obj/item/blueprints/construction_permit = 4,
/obj/item/weapon/cell/high = 4
)
contraband = list(
/obj/item/clothing/mask/balaclava/skimask = 2,
/obj/item/clothing/mask/neorussian = 2,
)
premium = list(
/obj/item/stack/sheet/mineral/brick/bigstack = 1,
/obj/item/binoculars = 2,
/obj/item/clothing/suit/storage/wintercoat/fur = 1,
)

View File

@@ -37,4 +37,10 @@
/obj/item/stack/sheet/ralloy/bigstack/New()
..()
new /obj/item/stack/sheet/ralloy(loc, 50)
qdel(src)
/obj/item/stack/sheet/mineral/brick/bigstack
name = "stack of bricks"
/obj/item/stack/sheet/mineral/brick/bigstack/New()
..()
new /obj/item/stack/sheet/mineral/brick(loc,20)
qdel(src)

View File

@@ -69,6 +69,14 @@ var/list/datum/stack_recipe/sandstone_recipes = list ( \
melt_temperature = 2473.15
sheettype = "brick"
var/list/datum/stack_recipe/brick_recipes = list ( \
new/datum/stack_recipe("fireplace", /obj/machinery/space_heater/campfire/stove/fireplace, 15, time = 10 SECONDS, one_per_turf = 1, on_floor = 1)
)
/obj/item/stack/sheet/mineral/brick/New(var/loc, var/amount=null)
recipes = brick_recipes
..()
/*
* Diamond
*/

View File

@@ -31,6 +31,25 @@
new /obj/item/stack/sheet/wood(src, 2)
..()
/turf/simulated/wall/mineral/wood/log
name = "log wall"
desc = "A log wall, ideal for a cabin."
girder_type = null
walltype = "log"
mineral = "log"
icon_state = "log0"
/turf/simulated/wall/mineral/wood/log/dismantle_wall()
new /obj/item/weapon/grown/log/tree(src)
for(var/obj/O in src.contents)
if(istype(O,/obj/effect/cult_shortcut))
qdel(O)
if(istype(O,/obj/structure/sign/poster))
var/obj/structure/sign/poster/P = O
P.roll_and_drop(src)
ChangeTurf(/turf/unsimulated/floor/snow/empty)
update_near_walls()
/turf/simulated/wall/mineral/brick
name = "brick wall"
desc = "A wall with brick siding, it looks nice"

View File

@@ -36,6 +36,8 @@
// Powernet /datum/power_connections. *Uninitialized until used to conserve memory*
var/list/power_connections = null
var/protect_infrastructure = FALSE //protect cables/pipes from explosive damage
// holy water
var/holy = 0
@@ -373,7 +375,7 @@
//Rebuild turf
var/turf/T = src
env = T.air //Get the air before the change
env = T.return_air() //Better than just getting the air var because this factors in unsimmed turfs
if(istype(src,/turf/simulated))
var/turf/simulated/S = src
if(S.zone)

View File

@@ -216,7 +216,30 @@
"<span class='notice'>You reach down and bolster your snowball.</span>")
user.delayNextAttack(10)
extract_snowballs(1, TRUE, user, W)
else if(istype(W,/obj/item/weapon/grown/log))
var/buildtime = 3 SECONDS
if(snowballs)
user.visible_message("<span class='notice'>[user] begins building a log wall.</span>", \
"<span class='notice'>You start to build a log wall, slowed by the presence of the snow.</span>")
buildtime += 3 SECONDS
else
user.visible_message("<span class='notice'>[user] begins building a log wall.</span>", \
"<span class='notice'>You start to build a log wall over the clear ground.</span>")
if(do_after(user,src, buildtime))
var/found_on_ground = FALSE
var/list/places_to_search = contents + user.loc.contents
for(var/obj/item/weapon/grown/log/L in places_to_search)
qdel(L)
found_on_ground = TRUE
break
if(!found_on_ground)
qdel(W)
user.visible_message("<span class='notice'>[user] finishes \the log wall.</span>", \
"<span class='notice'>You finish the log wall.</span>")
var/turf/simulated/wall/X = ChangeTurf(/turf/simulated/wall/mineral/wood/log)
if(X)
X.add_hiddenprint(user)
X.add_fingerprint(user)
/turf/unsimulated/floor/snow/CtrlClick(mob/user)
@@ -302,12 +325,16 @@
name = "asphalt"
desc = "Specially treated Centcomm asphalt, designed to disintegrate all snow that touches it."
holomap_draw_override = HOLOMAP_DRAW_HALLWAY
protect_infrastructure = TRUE
/turf/unsimulated/floor/snow/asphalt/mine
name = "mine road"
desc = "Made of asphalt. If you get lost, just follow the old mining road..."
ignore_blizzard_updates = TRUE
/turf/unsimulated/floor/snow/empty
initial_snowballs = 0
/turf/unsimulated/floor/snow/permafrost
icon_state = "permafrost_full"
real_snow_tile = FALSE

View File

@@ -63,11 +63,13 @@
origin_tech = Tc_MATERIALS + "=1"
attack_verb = list("bashes", "batters", "bludgeons", "whacks")
var/planks = 2
/obj/item/weapon/grown/log/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.sharpness_flags & CHOPWOOD) // I considered adding serrated to this but c'mon, making planks out of a serrated blade sounds like an awful idea
user.show_message("<span class='notice'>You make two planks out of \the [src].</span>", MESSAGE_SEE)
playsound(loc, 'sound/effects/woodcutting.ogg', 50, 1)
drop_stack(/obj/item/stack/sheet/wood, get_turf(user), 2, user)
drop_stack(/obj/item/stack/sheet/wood, get_turf(user), planks, user)
qdel(src)
return
@@ -79,6 +81,18 @@
force = 10
w_class = W_CLASS_LARGE
planks = 4
/obj/item/weapon/grown/log/tree/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/grown/log/tree) && isturf(loc))
to_chat(user,"<span class='notice'>You begin building a storm door out of the heavy tree logs.</span>")
if(do_after(user,src,4 SECONDS))
to_chat(user,"<span class='notice'>You finish the door.</span>")
new /obj/machinery/door/mineral/wood/log(loc)
qdel(src)
else
..()
/obj/item/weapon/grown/sunflower // FLOWER POWER!
plantname = "sunflowers"
name = "sunflower"

View File

@@ -281,6 +281,10 @@ By design, d1 is the smallest direction and d2 is the highest
// explosion handling
/obj/structure/cable/ex_act(severity)
if(isturf(loc))
var/turf/T = loc
if(T.protect_infrastructure)
return
switch(severity)
if(1.0)
qdel(src)

View File

@@ -922,7 +922,10 @@
// pipe affected by explosion
/obj/structure/disposalpipe/ex_act(severity)
if(isturf(loc))
var/turf/T = loc
if(T.protect_infrastructure)
return
for(var/atom/movable/A in src)
A.ex_act(severity)
switch(severity)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.