mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-30 08:38:13 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into woodrat_map
This commit is contained in:
@@ -7,10 +7,10 @@
|
||||
density = 1
|
||||
w_class = ITEMSIZE_HUGE
|
||||
layer = UNDER_JUNK_LAYER
|
||||
|
||||
|
||||
var/opened = 0
|
||||
var/sealed = 0
|
||||
|
||||
|
||||
var/seal_tool = /obj/item/weapon/weldingtool //Tool used to seal the closet, defaults to welder
|
||||
var/wall_mounted = 0 //never solid (You can always pass over it)
|
||||
var/health = 100
|
||||
@@ -35,6 +35,19 @@
|
||||
|
||||
var/closet_appearance = /decl/closet_appearance // The /decl that defines what decals we end up with, that makes our look unique
|
||||
|
||||
/// Currently animating the door transform
|
||||
var/is_animating_door = FALSE
|
||||
/// Length of time (ds) to animate the door transform
|
||||
var/door_anim_time = 2.0
|
||||
/// Amount to 'squish' the full width of the door by
|
||||
var/door_anim_squish = 0.30
|
||||
/// Virtual angle at which the door is opened to (136 by default, so not a full 180)
|
||||
var/door_anim_angle = 136
|
||||
/// Offset for the door hinge location from centerline
|
||||
var/door_hinge = -6.5
|
||||
/// Our visual object for the closet door
|
||||
var/obj/effect/overlay/closet_door/door_obj
|
||||
|
||||
/obj/structure/closet/Initialize()
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
@@ -65,6 +78,10 @@
|
||||
color = null
|
||||
update_icon()
|
||||
|
||||
/obj/structure/closet/Destroy()
|
||||
. = ..()
|
||||
qdel_null(door_obj)
|
||||
|
||||
/obj/structure/closet/examine(mob/user)
|
||||
. = ..()
|
||||
if(Adjacent(user) || isobserver(user))
|
||||
@@ -133,7 +150,7 @@
|
||||
playsound(src, open_sound, 15, 1, -3)
|
||||
if(initial(density))
|
||||
density = !density
|
||||
update_icon()
|
||||
animate_door()
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/proc/close()
|
||||
@@ -158,7 +175,7 @@
|
||||
playsound(src, close_sound, 15, 1, -3)
|
||||
if(initial(density))
|
||||
density = !density
|
||||
update_icon()
|
||||
animate_door(TRUE)
|
||||
return 1
|
||||
|
||||
//Cham Projector Exception
|
||||
@@ -213,10 +230,11 @@
|
||||
|
||||
|
||||
/obj/structure/closet/proc/toggle(mob/user as mob)
|
||||
if(is_animating_door)
|
||||
return
|
||||
if(!(opened ? close() : open()))
|
||||
to_chat(user, "<span class='notice'>It won't budge!</span>")
|
||||
return
|
||||
update_icon()
|
||||
|
||||
// this should probably use dump_contents()
|
||||
/obj/structure/closet/ex_act(severity)
|
||||
@@ -480,8 +498,45 @@
|
||||
spawn(1) qdel(src)
|
||||
return 1
|
||||
|
||||
// Just a generic cabinet for mappers to use
|
||||
/obj/structure/closet/cabinet
|
||||
name = "cabinet"
|
||||
icon = 'icons/obj/closets/bases/cabinet.dmi'
|
||||
closet_appearance = /decl/closet_appearance/cabinet
|
||||
/obj/structure/closet/proc/animate_door(closing = FALSE)
|
||||
if(!door_anim_time)
|
||||
update_icon()
|
||||
return
|
||||
if(!door_obj)
|
||||
door_obj = new
|
||||
vis_contents |= door_obj
|
||||
door_obj.icon = icon
|
||||
door_obj.icon_state = "door_front"
|
||||
is_animating_door = TRUE
|
||||
if(!closing)
|
||||
update_icon()
|
||||
var/num_steps = door_anim_time / world.tick_lag
|
||||
for(var/I in 0 to num_steps)
|
||||
var/angle = door_anim_angle * (closing ? 1 - (I/num_steps) : (I/num_steps))
|
||||
var/matrix/M = get_door_transform(angle)
|
||||
var/door_state = angle >= 90 ? "door_back" : "door_front"
|
||||
var/door_layer = angle >= 90 ? FLOAT_LAYER : ABOVE_MOB_LAYER
|
||||
|
||||
if(I == 0)
|
||||
door_obj.transform = M
|
||||
door_obj.icon_state = door_state
|
||||
door_obj.layer = door_layer
|
||||
else if(I == 1)
|
||||
animate(door_obj, transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag, flags = ANIMATION_END_NOW)
|
||||
else
|
||||
animate(transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag)
|
||||
addtimer(CALLBACK(src,.proc/end_door_animation,closing),door_anim_time,TIMER_UNIQUE|TIMER_OVERRIDE)
|
||||
|
||||
/obj/structure/closet/proc/end_door_animation(closing = FALSE)
|
||||
is_animating_door = FALSE
|
||||
if(closing)
|
||||
// There's not really harm in leaving it on, but, one less atom to send to clients to render when lockers are closed
|
||||
vis_contents -= door_obj
|
||||
update_icon()
|
||||
|
||||
/obj/structure/closet/proc/get_door_transform(angle)
|
||||
var/matrix/M = matrix()
|
||||
M.Translate(-door_hinge, 0)
|
||||
M.Multiply(matrix(cos(angle), 0, 0, -sin(angle) * door_anim_squish, 1, 0))
|
||||
M.Translate(door_hinge, 0)
|
||||
return M
|
||||
@@ -33,6 +33,8 @@
|
||||
var/icon/closed_locked_welded_icon
|
||||
var/icon/closed_unlocked_icon
|
||||
var/icon/closed_unlocked_welded_icon
|
||||
var/icon/door_front_icon
|
||||
var/icon/door_back_icon
|
||||
|
||||
// Create open icon.
|
||||
var/icon/new_icon = new
|
||||
@@ -40,6 +42,8 @@
|
||||
open_icon.Blend(icon(base_icon, "open"), ICON_OVERLAY)
|
||||
open_icon.Blend(color, BLEND_ADD)
|
||||
open_icon.Blend(icon(base_icon, "interior"), ICON_OVERLAY)
|
||||
door_back_icon = icon(base_icon, "door_back")
|
||||
door_back_icon.Blend(color, BLEND_ADD)
|
||||
if(decal_icon)
|
||||
for(var/thing in decals)
|
||||
var/icon/this_decal_icon = icon(decal_icon, "[thing]_open")
|
||||
@@ -47,6 +51,8 @@
|
||||
open_icon.Blend(this_decal_icon, ICON_OVERLAY)
|
||||
|
||||
// Generate basic closed icons.
|
||||
door_front_icon = icon(base_icon, "door_front")
|
||||
door_front_icon.Blend(color, BLEND_ADD)
|
||||
closed_emagged_icon = icon(base_icon, "base")
|
||||
if(can_lock)
|
||||
closed_emagged_icon.Blend(icon(base_icon, "lock"), ICON_OVERLAY)
|
||||
@@ -56,6 +62,10 @@
|
||||
var/icon/this_decal_icon = icon(decal_icon, thing)
|
||||
this_decal_icon.Blend(decals[thing], BLEND_ADD)
|
||||
closed_emagged_icon.Blend(this_decal_icon, ICON_OVERLAY)
|
||||
door_front_icon.Blend(this_decal_icon, ICON_OVERLAY)
|
||||
|
||||
door_front_icon.AddAlphaMask(icon(base_icon, "door_front")) // Remove pesky 'more than just door' decals
|
||||
|
||||
closed_locked_icon = icon(closed_emagged_icon)
|
||||
closed_unlocked_icon = icon(closed_emagged_icon)
|
||||
|
||||
@@ -90,6 +100,8 @@
|
||||
new_icon.Insert(closed_locked_welded_icon, "closed_locked_welded")
|
||||
new_icon.Insert(closed_unlocked_icon, "closed_unlocked")
|
||||
new_icon.Insert(closed_unlocked_welded_icon, "closed_unlocked_welded")
|
||||
new_icon.Insert(door_front_icon, "door_front")
|
||||
new_icon.Insert(door_back_icon, "door_back")
|
||||
|
||||
// Set icon!
|
||||
icon = new_icon
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
name = "coffin"
|
||||
desc = "It's a burial receptacle for the dearly departed."
|
||||
icon = 'icons/obj/closets/coffin.dmi'
|
||||
|
||||
|
||||
icon_state = "closed_unlocked"
|
||||
seal_tool = /obj/item/weapon/tool/screwdriver
|
||||
breakout_sound = 'sound/weapons/tablehit1.ogg'
|
||||
closet_appearance = null // Special icon for us
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
/* Graves */
|
||||
/obj/structure/closet/grave
|
||||
@@ -20,6 +21,7 @@
|
||||
max_closets = 1
|
||||
opened = 1
|
||||
closet_appearance = null // Special icon for us
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
/obj/structure/closet/grave/attack_hand(mob/user as mob)
|
||||
if(opened)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/obj/structure/closet/crate/critter
|
||||
name = "critter crate"
|
||||
desc = "A crate which can sustain life for a while."
|
||||
closet_appearance = /decl/closet_appearance/large_crate/critter
|
||||
closet_appearance = /decl/closet_appearance/large_crate/critter
|
||||
door_anim_time = 0 //Unsupported
|
||||
@@ -3,6 +3,35 @@
|
||||
desc = "It's a storage unit for athletic wear."
|
||||
closet_appearance = /decl/closet_appearance/wardrobe/mixed
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/under/shorts/grey,
|
||||
/obj/item/clothing/under/shorts/black,
|
||||
/obj/item/clothing/under/shorts/red,
|
||||
/obj/item/clothing/under/shorts/blue,
|
||||
/obj/item/clothing/under/shorts/green,
|
||||
/obj/item/clothing/under/shorts/white,
|
||||
/obj/item/clothing/suit/storage/toggle/track,
|
||||
/obj/item/clothing/suit/storage/toggle/track/blue,
|
||||
/obj/item/clothing/suit/storage/toggle/track/green,
|
||||
/obj/item/clothing/suit/storage/toggle/track/red,
|
||||
/obj/item/clothing/suit/storage/toggle/track/white,
|
||||
/obj/item/clothing/under/pants/track,
|
||||
/obj/item/clothing/under/pants/track/blue,
|
||||
/obj/item/clothing/under/pants/track/green,
|
||||
/obj/item/clothing/under/pants/track/white,
|
||||
/obj/item/clothing/under/pants/track/red,
|
||||
/obj/item/clothing/shoes/athletic = 2,
|
||||
/obj/item/clothing/shoes/hitops,
|
||||
/obj/item/clothing/shoes/hitops/red,
|
||||
/obj/item/clothing/shoes/hitops/black,
|
||||
/obj/item/clothing/shoes/hitops/blue
|
||||
)
|
||||
|
||||
/obj/structure/closet/athletic_swimwear
|
||||
name = "athletic wardrobe"
|
||||
desc = "It's a storage unit for swimwear."
|
||||
closet_appearance = /decl/closet_appearance/wardrobe/mixed
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/under/shorts/grey,
|
||||
/obj/item/clothing/under/shorts/black,
|
||||
@@ -17,6 +46,9 @@
|
||||
/obj/item/clothing/under/swimsuit/striped,
|
||||
/obj/item/clothing/under/swimsuit/white,
|
||||
/obj/item/clothing/under/swimsuit/earth,
|
||||
/obj/item/clothing/under/wetsuit,
|
||||
/obj/item/clothing/under/wetsuit_rec,
|
||||
/obj/item/clothing/under/wetsuit_skimpy,
|
||||
/obj/item/clothing/mask/snorkel = 2,
|
||||
/obj/item/clothing/shoes/swimmingfins = 2)
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
/obj/structure/closet/cabinet
|
||||
name = "cabinet"
|
||||
desc = "Old will forever be in fashion."
|
||||
icon = 'icons/obj/closets/bases/cabinet.dmi'
|
||||
closet_appearance = /decl/closet_appearance/cabinet
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
/obj/structure/closet/acloset
|
||||
name = "strange closet"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure/closet/secure_closet/freezer/kitchen
|
||||
name = "kitchen cabinet"
|
||||
req_access = list(access_kitchen)
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/condiment/flour = 7,
|
||||
@@ -16,6 +17,7 @@
|
||||
name = "meat fridge"
|
||||
icon = 'icons/obj/closets/fridge.dmi'
|
||||
closet_appearance = null
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/monkey = 10)
|
||||
@@ -25,6 +27,7 @@
|
||||
name = "refrigerator"
|
||||
icon = 'icons/obj/closets/fridge.dmi'
|
||||
closet_appearance = null
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk = 6,
|
||||
@@ -38,6 +41,7 @@
|
||||
icon = 'icons/obj/closets/fridge.dmi'
|
||||
closet_appearance = null
|
||||
req_access = list(access_heads_vault)
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
|
||||
starts_with = list(
|
||||
|
||||
@@ -227,6 +227,7 @@
|
||||
wall_mounted = 1
|
||||
req_access = list(access_medical_equip)
|
||||
closet_appearance = /decl/closet_appearance/wall/medical
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
/obj/structure/closet/secure_closet/medical_wall/pills
|
||||
name = "pill cabinet"
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
/obj/structure/closet/secure_closet/personal/cabinet
|
||||
closet_appearance = /decl/closet_appearance/cabinet/secure
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/backpack/satchel/withwallet,
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
/obj/item/clothing/under/rank/research_director/rdalt,
|
||||
/obj/item/clothing/under/rank/research_director/dress_rd,
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat,
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/rd,
|
||||
/obj/item/weapon/cartridge/rd,
|
||||
/obj/item/clothing/shoes/white,
|
||||
/obj/item/clothing/shoes/laceup/brown,
|
||||
|
||||
@@ -223,6 +223,7 @@
|
||||
name = "detective's cabinet"
|
||||
req_access = list(access_forensics_lockers)
|
||||
closet_appearance = /decl/closet_appearance/cabinet/secure
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/accessory/badge/holo/detective,
|
||||
@@ -295,6 +296,5 @@ GLOBAL_LIST_BOILERPLATE(all_brig_closets, /obj/structure/closet/secure_closet/br
|
||||
req_access = list(access_security)
|
||||
closet_appearance = /decl/closet_appearance/wall
|
||||
density = 1
|
||||
|
||||
//too small to put a man in
|
||||
large = 0
|
||||
door_anim_time = 0 // Unsupported
|
||||
large = 0 //too small to put a man in
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
density = 1
|
||||
anchored = 1
|
||||
health = 0 //destroying the statue kills the mob within
|
||||
door_anim_time = 0 // Why is this a closet??
|
||||
var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock
|
||||
var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils.
|
||||
var/intialBrute = 0
|
||||
@@ -43,7 +44,7 @@
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
START_PROCESSING(SSobj, src)
|
||||
START_PROCESSING(SSobj, src)
|
||||
..()
|
||||
|
||||
/obj/structure/closet/statue/process()
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
anchored = 1
|
||||
density = 0
|
||||
wall_mounted = 1
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
anchored = 1
|
||||
store_mobs = 0
|
||||
wall_mounted = 1
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
//spawns 2 sets of breathmask, emergency oxy tank and crowbar
|
||||
|
||||
@@ -68,6 +69,7 @@
|
||||
wall_mounted = 1
|
||||
plane = TURF_PLANE
|
||||
layer = ABOVE_TURF_LAYER
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
/obj/structure/closet/walllocker_double/north
|
||||
pixel_y = 32
|
||||
@@ -108,7 +110,7 @@
|
||||
/obj/structure/closet/walllocker_double/kitchen/east
|
||||
pixel_x = 32
|
||||
dir = EAST
|
||||
|
||||
|
||||
/obj/structure/closet/walllocker_double/medical
|
||||
name = "Medical Cabinet"
|
||||
desc = "A wall mounted medical supply cabinet. Probably full of drugs!" //not actually full of drugs, sorry!
|
||||
@@ -129,7 +131,7 @@
|
||||
/obj/structure/closet/walllocker_double/medical/east
|
||||
pixel_x = 32
|
||||
dir = EAST
|
||||
|
||||
|
||||
/obj/structure/closet/walllocker_double/hydrant
|
||||
name = "fire-safety closet"
|
||||
desc = "It's a storage cabinet packed with fire-fighting supplies."
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
closet_appearance = /decl/closet_appearance/crate
|
||||
climbable = 1
|
||||
dir = 4 //Spawn facing 'forward' by default.
|
||||
door_anim_time = 0 //Unsupported until appropriate sprites are available
|
||||
var/points_per_crate = 5
|
||||
var/rigged = 0
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
var/min_x_scale = 0.9
|
||||
var/min_y_scale = 0.9
|
||||
|
||||
var/removal_tool = /obj/item/weapon/shovel
|
||||
var/harvest_tool = null // The type of item used to harvest the plant.
|
||||
var/harvest_count = 0
|
||||
|
||||
@@ -39,21 +40,34 @@
|
||||
. = ..()
|
||||
if(harvest_count < max_harvests)
|
||||
. += get_harvestable_desc()
|
||||
if(harvest_tool)
|
||||
var/obj/item/tool = harvest_tool
|
||||
. += SPAN_NOTICE("\The [src] can be harvested with \a [initial(tool.name)].")
|
||||
|
||||
if(removal_tool)
|
||||
var/obj/item/tool = removal_tool
|
||||
. += SPAN_NOTICE("\The [src] can be removed with \a [initial(tool.name)].")
|
||||
|
||||
/obj/structure/flora/proc/get_harvestable_desc()
|
||||
return "<span class='notice'>\The [src] seems to have something hanging from it.</span>"
|
||||
|
||||
/obj/structure/flora/attackby(var/obj/item/weapon/W, var/mob/living/user)
|
||||
|
||||
if(can_harvest(W))
|
||||
var/harvest_spawn = pickweight(harvest_loot)
|
||||
var/atom/movable/AM = spawn_harvest(harvest_spawn, user)
|
||||
|
||||
if(!AM)
|
||||
to_chat(user, "<span class='notice'>You fail to harvest anything from \the [src].</span>")
|
||||
|
||||
if(AM)
|
||||
to_chat(user, SPAN_NOTICE("You harvest \the [AM] from \the [src]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You harvest \the [AM] from \the [src].</span>")
|
||||
return
|
||||
to_chat(user, SPAN_NOTICE("You fail to harvest anything from \the [src]."))
|
||||
return
|
||||
|
||||
if(removal_tool && istype(W, removal_tool))
|
||||
to_chat(user, SPAN_WARNING("You start uprooting \the [src]..."))
|
||||
if(do_after(user, 30))
|
||||
visible_message(SPAN_NOTICE("\The [user] uproots and discards \the [src]!"))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
..(W, user)
|
||||
|
||||
@@ -408,19 +422,28 @@
|
||||
desc = "This is a tiny well lit decorative christmas tree."
|
||||
icon_state = "plant-xmas"
|
||||
|
||||
/obj/structure/flora/mushroom
|
||||
name = "mushroom"
|
||||
desc = "Hey, this one seems like a fun guy."
|
||||
icon_state = "mush1"
|
||||
icon = 'icons/obj/flora/mushrooms.dmi'
|
||||
harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/mushroomslice = 1)
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = 0
|
||||
|
||||
/obj/structure/flora/mushroom/Initialize()
|
||||
. = ..()
|
||||
icon_state = "mush[rand(1,4)]"
|
||||
if(prob(50))
|
||||
adjust_scale(-1, 1)
|
||||
pixel_x = rand(-4, 4)
|
||||
|
||||
/obj/structure/flora/sif
|
||||
icon = 'icons/obj/flora/sifflora.dmi'
|
||||
|
||||
/obj/structure/flora/sif/attack_hand(mob/user)
|
||||
if (user.a_intent == I_HURT)
|
||||
if(do_after(user, 5 SECONDS))
|
||||
user.visible_message("<span class='filter_notice'>\The [user] digs up \the [src.name].", "You dig up \the [src.name].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user.visible_message("<span class='filter_notice'>\The [user] pokes \the [src.name].", "You poke \the [src.name].</span>")
|
||||
|
||||
/datum/category_item/catalogue/flora/subterranean_bulbs
|
||||
name = "Sivian Flora - Subterranean Bulbs"
|
||||
name = "Sivian Flora - Cavebulbs"
|
||||
desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \
|
||||
are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \
|
||||
known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \
|
||||
@@ -433,19 +456,22 @@
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/subterranean
|
||||
name = "subterranean plant"
|
||||
name = "subterranean bulbs"
|
||||
desc = "This is a subterranean plant. It's bulbous ends glow faintly."
|
||||
icon_state = "glowplant"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#FF6633"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs)
|
||||
harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sif/cavebulbs = 1)
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = 0
|
||||
|
||||
/obj/structure/flora/sif/subterranean/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,2)]"
|
||||
. = ..()
|
||||
|
||||
|
||||
/datum/category_item/catalogue/flora/eyebulbs
|
||||
name = "Sivian Flora - Eyebulbs"
|
||||
desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \
|
||||
@@ -454,10 +480,14 @@
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/eyes
|
||||
name = "mysterious bulbs"
|
||||
desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy."
|
||||
name = "eyebulbs"
|
||||
desc = "This is a mysterious-looking plant. They kind of look like eyeballs. Creepy."
|
||||
icon_state = "eyeplant"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs)
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = 0
|
||||
harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sif/eyebulbs = 1)
|
||||
|
||||
/obj/structure/flora/sif/eyes/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
@@ -471,20 +501,20 @@
|
||||
value = CATALOGUER_REWARD_TRIVIAL
|
||||
|
||||
/obj/structure/flora/sif/tendrils
|
||||
name = "stocky tendrils"
|
||||
name = "wabback tendrils"
|
||||
desc = "A 'plant' made up of hardened moss. It has tiny hairs that bunch together to look like snow."
|
||||
icon_state = "grass"
|
||||
randomize_size = TRUE
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/mosstendrils)
|
||||
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 1
|
||||
min_harvests = -4
|
||||
max_harvests = 3
|
||||
min_harvests = 0
|
||||
harvest_loot = list(
|
||||
/obj/item/seeds/wabback = 15,
|
||||
/obj/item/seeds/blackwabback = 1,
|
||||
/obj/item/seeds/wildwabback = 30
|
||||
)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wabback = 15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/blackwabback = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wildwabback = 30
|
||||
)
|
||||
|
||||
/obj/structure/flora/sif/tendrils/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
@@ -503,26 +533,24 @@
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/obj/structure/flora/sif/frostbelle
|
||||
name = "gnarly shrub"
|
||||
name = "frostbelle shrub"
|
||||
desc = "A stocky plant with fins bearing luminescent veins along its branches."
|
||||
icon_state = "grass"
|
||||
icon_state = "frostbelle"
|
||||
randomize_size = TRUE
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/frostbelle)
|
||||
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = -4
|
||||
min_harvests = 0
|
||||
harvest_loot = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/frostbelle = 1
|
||||
)
|
||||
)
|
||||
|
||||
var/variantnum = null
|
||||
|
||||
/obj/structure/flora/sif/frostbelle/Initialize()
|
||||
. = ..()
|
||||
|
||||
variantnum = rand(1,3)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/structure/flora/sif/frostbelle/update_icon()
|
||||
@@ -530,7 +558,6 @@
|
||||
|
||||
if(max_harvests > 0 && harvest_count < max_harvests)
|
||||
icon_state = "[initial(icon_state)][variantnum]"
|
||||
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
|
||||
@@ -271,12 +271,12 @@
|
||||
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = -4
|
||||
min_harvests = 0
|
||||
harvest_loot = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/siffruit = 20,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sifpod = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/sifpod = 5,
|
||||
/obj/item/seeds/sifbulb = 1
|
||||
)
|
||||
)
|
||||
|
||||
var/light_shift = 0
|
||||
|
||||
|
||||
@@ -126,6 +126,13 @@
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
remove_padding()
|
||||
|
||||
else if(istype(W, /obj/item/weapon/disk) || (istype(W, /obj/item/toy/plushie)))
|
||||
user.drop_from_inventory(W, get_turf(src))
|
||||
W.pixel_x = 10 //make sure they reach the pillow
|
||||
W.pixel_y = -6
|
||||
if(istype(W, /obj/item/weapon/disk))
|
||||
user.visible_message("<span class='notice'>[src] sleeps soundly. Sleep tight, disky.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = W
|
||||
var/mob/living/affecting = G.affecting
|
||||
|
||||
@@ -383,6 +383,41 @@
|
||||
base_icon = "corp_sofacorner"
|
||||
corner_piece = TRUE
|
||||
|
||||
//Metal benches
|
||||
|
||||
/obj/structure/bed/chair/sofa/bench
|
||||
name = "metal bench"
|
||||
desc = "Almost as comfortable as waiting at a shuttle station for hours on end."
|
||||
base_icon = "benchmiddle"
|
||||
icon_state = "benchmiddle"
|
||||
applies_material_colour = FALSE
|
||||
color = null
|
||||
var/padding_color = "#CC0000"
|
||||
|
||||
/obj/structure/bed/chair/sofa/bench/Initialize()
|
||||
. = ..()
|
||||
var/mutable_appearance/MA
|
||||
MA = mutable_appearance(icon, icon_state = "o[icon_state]")
|
||||
// If we're north-facing, metal goes above mob, padding overlay goes below mob.
|
||||
if((dir & NORTH) && !corner_piece)
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
MA.color = padding_color
|
||||
add_overlay(MA)
|
||||
|
||||
/obj/structure/bed/chair/sofa/bench/left
|
||||
icon_state = "bench_left"
|
||||
base_icon = "bench_left"
|
||||
|
||||
/obj/structure/bed/chair/sofa/bench/right
|
||||
icon_state = "bench_right"
|
||||
base_icon = "bench_right"
|
||||
|
||||
/obj/structure/bed/chair/sofa/bench/corner
|
||||
icon_state = "benchcorner"
|
||||
base_icon = "benchcorner"
|
||||
|
||||
|
||||
//color variations
|
||||
|
||||
/obj/structure/bed/chair/sofa
|
||||
@@ -517,4 +552,4 @@
|
||||
icon_state = "sofaend_right"
|
||||
|
||||
/obj/structure/bed/chair/sofa/orange/corner
|
||||
icon_state = "sofacorner"
|
||||
icon_state = "sofacorner"
|
||||
Reference in New Issue
Block a user