mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
@@ -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)
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 |
BIN
sound/effects/wood_door_slam.ogg
Normal file
BIN
sound/effects/wood_door_slam.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user