Merge branch 'Khaira-Hol:master' into bluespace_belts_changes

This commit is contained in:
Phantastic-Swan
2025-04-28 15:27:05 +02:00
committed by GitHub
32 changed files with 1210 additions and 5 deletions
@@ -0,0 +1,92 @@
#define SINGLE "single"
#define VERTICAL "vertical"
#define HORIZONTAL "horizontal"
#define METAL 1
#define WOOD 2
#define SAND 3
/obj/structure/barricade/shadoww //GS13 wood barricades
name = "Shadow barricade"
desc = "This space is blocked off by a shadow wood barricade."
icon = 'GainStation13/icons/obj/structures.dmi'
icon_state = "shadowwbarricade"
max_integrity = 50
bar_material = WOOD
var/drop_amount = 3
/obj/structure/barricade/shadoww/attackby(obj/item/I, mob/user)
if(istype(I,/obj/item/stack/sheet/mineral/shadoww))
var/obj/item/stack/sheet/mineral/shadoww/W = I
if(W.amount < 5)
to_chat(user, "<span class='warning'>You need at least five shadown planks to make a wall!</span>")
return
else
to_chat(user, "<span class='notice'>You start adding [I] to [src]...</span>")
if(do_after(user, 50, target=src))
W.use(5)
new /turf/closed/wall/mineral/shadoww/nonmetal(get_turf(src))
qdel(src)
return
return ..()
/obj/structure/barricade/shadoww/make_debris()
new /obj/item/stack/sheet/mineral/shadoww(get_turf(src), drop_amount)
/obj/structure/barricade/plaswood
name = "Plaswood barricade"
desc = "This space is blocked off by a plaswood barricade."
icon = 'GainStation13/icons/obj/structures.dmi'
icon_state = "plaswoodwbarricade"
max_integrity = 180
bar_material = WOOD
var/drop_amount = 3
/obj/structure/barricade/plaswood/attackby(obj/item/I, mob/user)
if(istype(I,/obj/item/stack/sheet/mineral/plaswood))
var/obj/item/stack/sheet/mineral/plaswood/W = I
if(W.amount < 5)
to_chat(user, "<span class='warning'>You need at least five plaswood planks to make a wall!</span>")
return
else
to_chat(user, "<span class='notice'>You start adding [I] to [src]...</span>")
if(do_after(user, 50, target=src))
W.use(5)
new /turf/closed/wall/mineral/plaswood/nonmetal(get_turf(src))
qdel(src)
return
return ..()
/obj/structure/barricade/plaswood/make_debris()
new /obj/item/stack/sheet/mineral/plaswood(get_turf(src), drop_amount)
/obj/structure/barricade/gmushroom
name = "Mushroom barricade"
desc = "This space is blocked off by a mushroom barricade."
icon = 'GainStation13/icons/obj/structures.dmi'
icon_state = "gmushroombarricade"
max_integrity = 50
bar_material = WOOD
var/drop_amount = 3
/obj/structure/barricade/gmushroom/attackby(obj/item/I, mob/user)
if(istype(I,/obj/item/stack/sheet/mineral/gmushroom))
var/obj/item/stack/sheet/mineral/gmushroom/W = I
if(W.amount < 5)
to_chat(user, "<span class='warning'>You need at least five mushroom planks to make a wall!</span>")
return
else
to_chat(user, "<span class='notice'>You start adding [I] to [src]...</span>")
if(do_after(user, 50, target=src))
W.use(5)
new /turf/closed/wall/mineral/gmushroom/nonmetal(get_turf(src))
qdel(src)
return
return ..()
/obj/structure/barricade/gmushroom/make_debris()
new /obj/item/stack/sheet/mineral/gmushroom(get_turf(src), drop_amount)
//GS13 wood barricades
@@ -0,0 +1,146 @@
//GS13: Shadow Wood
GLOBAL_LIST_INIT(shadoww_recipes, list ( \
new/datum/stack_recipe("Shadow wood floor tile", /obj/item/stack/tile/shadoww, 1, 4, 20), \
new/datum/stack_recipe("Shadow wood table frame", /obj/structure/table_frame/shadoww, 2, time = 10), \
new/datum/stack_recipe("Shadow wood barricade", /obj/structure/barricade/shadoww, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Shadow wood chair", /obj/structure/chair/shadoww, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Shadow wood barricade", /obj/structure/barricade/shadoww, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Dog bed", /obj/structure/bed/shadowwdogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("Dresser", /obj/structure/shadowwdresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("shadow wood crate", /obj/structure/closet/crate/shadoww, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
))
/obj/item/stack/sheet/mineral/shadoww
name = "shadow wood"
desc = "An purplish wood, it's nothing special besides its color."
singular_name = "shadow wood plank"
icon_state = "sheet-shadoww"
item_state = "sheet-shadoww"
icon = 'GainStation13/icons/obj/stack_objects.dmi'
custom_materials = list(/datum/material/wood=MINERAL_MATERIAL_AMOUNT)
sheettype = "shadoww"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/sheet/mineral/shadoww
novariants = TRUE
grind_results = list(/datum/reagent/carbon = 20)
walltype = /turf/closed/wall/mineral/shadoww
/obj/item/stack/sheet/mineral/shadoww/get_main_recipes()
. = ..()
. += GLOB.shadoww_recipes
/obj/item/stack/sheet/mineral/shadoww/fifty
amount = 50
/obj/item/stack/sheet/mineral/shadoww/twenty
amount = 20
/obj/item/stack/sheet/mineral/shadoww/ten
amount = 10
/obj/item/stack/sheet/mineral/shadoww/five
amount = 5
//GS13: Giant mushroom
GLOBAL_LIST_INIT(gmushroom_recipes, list ( \
new/datum/stack_recipe("Mushroom floor tile", /obj/item/stack/tile/gmushroom, 1, 4, 20), \
new/datum/stack_recipe("Mushroom table frame", /obj/structure/table_frame/gmushroom, 2, time = 10), \
new/datum/stack_recipe("Mushroom barricade", /obj/structure/barricade/gmushroom, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Mushroom chair", /obj/structure/chair/gmushroom, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Mushroom barricade", /obj/structure/barricade/gmushroom, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Dog bed", /obj/structure/bed/gmushroomdogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("Dresser", /obj/structure/gmushroomdresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("Mushroom crate", /obj/structure/closet/crate/gmushroom, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
null, \
))
/obj/item/stack/sheet/mineral/gmushroom
name = "mushroom 'wood'"
desc = "A material similar to wood, except for being fireproof."
singular_name = "mushroom plank"
icon_state = "sheet-gmushroom"
item_state = "sheet-gmushroom"
icon = 'GainStation13/icons/obj/stack_objects.dmi'
sheettype = "gmushroom"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 0)
resistance_flags = FIRE_PROOF
merge_type = /obj/item/stack/sheet/mineral/gmushroom
novariants = TRUE
grind_results = list(/datum/reagent/carbon = 20)
walltype = /turf/closed/wall/mineral/gmushroom
/obj/item/stack/sheet/mineral/gmushroom/get_main_recipes()
. = ..()
. += GLOB.gmushroom_recipes
/obj/item/stack/sheet/mineral/gmushroom/fifty
amount = 50
/obj/item/stack/sheet/mineral/gmushroom/twenty
amount = 20
/obj/item/stack/sheet/mineral/gmushroom/ten
amount = 10
/obj/item/stack/sheet/mineral/gmushroom/five
amount = 5
//GS13: Plaswood
GLOBAL_LIST_INIT(plaswood_recipes, list ( \
new/datum/stack_recipe("Plaswood floor tile", /obj/item/stack/tile/plaswood, 1, 4, 20), \
new/datum/stack_recipe("Plaswood table frame", /obj/structure/table_frame/plaswood, 2, time = 10), \
null, \
new/datum/stack_recipe("Plaswood chair", /obj/structure/chair/plaswood, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Plaswood barricade", /obj/structure/barricade/plaswood, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("Dog bed", /obj/structure/bed/plaswooddogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("Dresser", /obj/structure/plaswooddresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("Plaswood crate", /obj/structure/closet/crate/plaswood, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
null, \
))
/obj/item/stack/sheet/mineral/plaswood
name = "plaswood"
desc = "A type of resistant wood acquired from Plasma Trees. It amost looks like metal!"
singular_name = "plaswood plank"
icon_state = "sheet-plaswood"
item_state = "sheet-plaswood"
icon = 'GainStation13/icons/obj/stack_objects.dmi'
sheettype = "plaswood"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 80)
resistance_flags = FLAMMABLE | ACID_PROOF
throwforce = 10
merge_type = /obj/item/stack/sheet/mineral/plaswood
novariants = TRUE
grind_results = list(/datum/reagent/carbon = 20, /datum/reagent/toxin/plasma = 20)
point_value = 23
walltype = /turf/closed/wall/mineral/plaswood
/obj/item/stack/sheet/mineral/plaswood/get_main_recipes()
. = ..()
. += GLOB.plaswood_recipes
/obj/item/stack/sheet/mineral/plaswood/fifty
amount = 50
/obj/item/stack/sheet/mineral/plaswood/twenty
amount = 20
/obj/item/stack/sheet/mineral/plaswood/ten
amount = 10
/obj/item/stack/sheet/mineral/plaswood/five
amount = 5
@@ -0,0 +1,29 @@
//Mushroom
/obj/item/stack/tile/gmushroom
name = "mushroom floor tile"
singular_name = "mushroom floor tile"
desc = "An easy to fit mushroom floor tile."
icon = 'GainStation13/icons/obj/tiles.dmi'
icon_state = "tile-gmushroom"
turf_type = /turf/open/floor/gmushroom
resistance_flags = FIRE_PROOF
//Shadow Wood
/obj/item/stack/tile/shadoww
name = "shadow wood floor tile"
singular_name = "shadow wood floor tile"
desc = "An easy to fit wood floor tile."
icon = 'GainStation13/icons/obj/tiles.dmi'
icon_state = "tile-shadoww"
turf_type = /turf/open/floor/shadoww
resistance_flags = FLAMMABLE
//Plaswood
/obj/item/stack/tile/plaswood
name = "plaswood floor tile"
singular_name = "plaswood floor tile"
desc = "An easy to fit wood floor tile."
icon = 'GainStation13/icons/obj/tiles.dmi'
icon_state = "tile-plaswood"
turf_type = /turf/open/floor/plaswood
resistance_flags = FLAMMABLE | ACID_PROOF
@@ -0,0 +1,30 @@
//GS13: pet beds
/obj/structure/bed/shadowwdogbed
name = "dog bed"
icon = 'GainStation13/icons/obj/objects.dmi'
icon_state = "shadowwdogbed"
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
anchored = FALSE
buildstacktype = /obj/item/stack/sheet/mineral/shadoww
buildstackamount = 10
var/mob/living/owner = null
/obj/structure/bed/plaswooddogbed
name = "dog bed"
icon = 'GainStation13/icons/obj/objects.dmi'
icon_state = "plaswooddogbed"
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
anchored = FALSE
buildstacktype = /obj/item/stack/sheet/mineral/plaswood
buildstackamount = 10
var/mob/living/owner = null
/obj/structure/bed/gmushroomdogbed
name = "dog bed"
icon = 'GainStation13/icons/obj/objects.dmi'
icon_state = "gmushroomdogbed"
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
anchored = FALSE
buildstacktype = /obj/item/stack/sheet/mineral/gmushroom
buildstackamount = 10
var/mob/living/owner = null
@@ -0,0 +1,69 @@
//Shadow
/obj/structure/chair/shadoww
name = "shadow wood chair"
desc = "Fashionable dark."
icon = 'GainStation13/icons/obj/chairs.dmi'
icon_state = "shadoww_chair"
resistance_flags = FLAMMABLE
max_integrity = 70
buildstacktype = /obj/item/stack/sheet/mineral/shadoww
buildstackamount = 3
item_chair = /obj/item/chair/shadoww
//Plaswood
/obj/structure/chair/plaswood
name = "plaswood chair"
desc = "Hard but confortable to sit."
icon = 'GainStation13/icons/obj/chairs.dmi'
icon_state = "plaswood_chair"
resistance_flags = FLAMMABLE | ACID_PROOF
max_integrity = 90
buildstacktype = /obj/item/stack/sheet/mineral/plaswood
buildstackamount = 3
item_chair = /obj/item/chair/plaswood
//Mushroom
/obj/structure/chair/gmushroom
name = "mushroom chair"
desc = "You don't need to worry about losing your seat in case of fire!"
icon = 'GainStation13/icons/obj/chairs.dmi'
icon_state = "gmushroom_chair"
resistance_flags = FIRE_PROOF
max_integrity = 70
buildstacktype = /obj/item/stack/sheet/mineral/gmushroom
buildstackamount = 3
item_chair = /obj/item/chair/gmushroom
//Toppled chairs
/obj/item/chair/shadoww
name = "shadow wood chair"
icon = 'GainStation13/icons/obj/chairs.dmi'
icon_state = "shadoww_chair_toppled"
item_state = "shadowwchair"
resistance_flags = FLAMMABLE
max_integrity = 70
hitsound = 'sound/weapons/genhit1.ogg'
origin_type = /obj/structure/chair/shadoww
break_chance = 50
/obj/item/chair/plaswood
name = "plaswood chair"
icon = 'GainStation13/icons/obj/chairs.dmi'
icon_state = "plaswood_chair_toppled"
item_state = "plaswoodchair"
resistance_flags = FLAMMABLE | ACID_PROOF
max_integrity = 90
hitsound = 'sound/weapons/genhit1.ogg'
origin_type = /obj/structure/chair/plaswood
break_chance = 70
/obj/item/chair/gmushroom
name = "mushroom chair"
icon = 'GainStation13/icons/obj/chairs.dmi'
icon_state = "gmushroom_chair_toppled"
item_state = "gmushroomchair"
resistance_flags = FIRE_PROOF
max_integrity = 70
hitsound = 'sound/weapons/genhit1.ogg'
origin_type = /obj/structure/chair/gmushroom
break_chance = 50
@@ -0,0 +1,24 @@
//Wood crates
/obj/structure/closet/crate/shadoww
name = "shadown wood crate"
desc = "Works just as well as a metal one."
material_drop = /obj/item/stack/sheet/mineral/shadoww
material_drop_amount = 6
icon = 'GainStation13/icons/obj/crates.dmi'
icon_state = "shadoww"
/obj/structure/closet/crate/plaswood
name = "plaswood crate"
desc = "Works just as well as a metal one."
material_drop = /obj/item/stack/sheet/mineral/plaswood
material_drop_amount = 6
icon = 'GainStation13/icons/obj/crates.dmi'
icon_state = "plaswood"
/obj/structure/closet/crate/gmushroom
name = "mushroom crate"
desc = "Works just as well as a metal one."
material_drop = /obj/item/stack/sheet/mineral/gmushroom
material_drop_amount = 6
icon = 'GainStation13/icons/obj/crates.dmi'
icon_state = "gmushroom"
@@ -0,0 +1,249 @@
//GS13 Shadow/Mushroom/Plasma dressers
/obj/structure/gmushroomdresser
name = "dresser"
desc = "A nicely-crafted mushroom dresser. It's filled with lots of undies."
icon = 'GainStation13/icons/obj/stationobjs.dmi'
icon_state = "gmushroomdresser"
density = TRUE
anchored = TRUE
/obj/structure/gmushroomdresser/attackby(obj/item/I, mob/user, params)
if(I.tool_behaviour == TOOL_WRENCH)
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
if(I.use_tool(src, user, 20, volume=50))
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
setAnchored(!anchored)
else
return ..()
/obj/structure/gmushroomdresser/deconstruct(disassembled = TRUE)
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
qdel(src)
/obj/structure/gmushroomdresser/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
. = ..()
if(. || !ishuman(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
var/mob/living/carbon/human/H = user
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
to_chat(H, "<span class='warning'>You are not capable of wearing underwear.</span>")
return
var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color")
if(!(GLOB.underwear_list[H.underwear]?.has_color))
undergarment_choices -= "Underwear Color"
if(!(GLOB.undershirt_list[H.undershirt]?.has_color))
undergarment_choices -= "Undershirt Color"
if(!(GLOB.socks_list[H.socks]?.has_color))
undergarment_choices -= "Socks Color"
var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices
if(!H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
var/dye_undie = FALSE
var/dye_shirt = FALSE
var/dye_socks = FALSE
switch(choice)
if("Underwear")
var/new_undies = input(H, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
if(new_undies)
H.underwear = new_undies
H.saved_underwear = new_undies
var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[new_undies]
dye_undie = B?.has_color
if("Undershirt")
var/new_undershirt = input(H, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
if(new_undershirt)
H.undershirt = new_undershirt
H.saved_undershirt = new_undershirt
var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[new_undershirt]
dye_shirt = T?.has_color
if("Socks")
var/new_socks = input(H, "Select your socks", "Changing") as null|anything in GLOB.socks_list
if(new_socks)
H.socks = new_socks
H.saved_socks = new_socks
var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[new_socks]
dye_socks = S?.has_color
if(dye_undie || choice == "Underwear Color")
H.undie_color = recolor_undergarment(H, "underwear", H.undie_color)
if(dye_shirt || choice == "Undershirt Color")
H.shirt_color = recolor_undergarment(H, "undershirt", H.shirt_color)
if(dye_socks || choice == "Socks Color")
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
add_fingerprint(H)
H.update_body(TRUE)
/obj/structure/gmushroomdresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return default_color
return sanitize_hexcolor(n_color, 3, FALSE, default_color)
/obj/structure/plaswooddresser
name = "dresser"
desc = "A nicely-crafted plaswood dresser. It's filled with lots of undies."
icon = 'GainStation13/icons/obj/stationobjs.dmi'
icon_state = "plaswooddresser"
density = TRUE
anchored = TRUE
/obj/structure/plaswooddresser/attackby(obj/item/I, mob/user, params)
if(I.tool_behaviour == TOOL_WRENCH)
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
if(I.use_tool(src, user, 20, volume=50))
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
setAnchored(!anchored)
else
return ..()
/obj/structure/plaswooddresser/deconstruct(disassembled = TRUE)
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
qdel(src)
/obj/structure/plaswooddresser/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
. = ..()
if(. || !ishuman(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
var/mob/living/carbon/human/H = user
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
to_chat(H, "<span class='warning'>You are not capable of wearing underwear.</span>")
return
var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color")
if(!(GLOB.underwear_list[H.underwear]?.has_color))
undergarment_choices -= "Underwear Color"
if(!(GLOB.undershirt_list[H.undershirt]?.has_color))
undergarment_choices -= "Undershirt Color"
if(!(GLOB.socks_list[H.socks]?.has_color))
undergarment_choices -= "Socks Color"
var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices
if(!H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
var/dye_undie = FALSE
var/dye_shirt = FALSE
var/dye_socks = FALSE
switch(choice)
if("Underwear")
var/new_undies = input(H, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
if(new_undies)
H.underwear = new_undies
H.saved_underwear = new_undies
var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[new_undies]
dye_undie = B?.has_color
if("Undershirt")
var/new_undershirt = input(H, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
if(new_undershirt)
H.undershirt = new_undershirt
H.saved_undershirt = new_undershirt
var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[new_undershirt]
dye_shirt = T?.has_color
if("Socks")
var/new_socks = input(H, "Select your socks", "Changing") as null|anything in GLOB.socks_list
if(new_socks)
H.socks = new_socks
H.saved_socks = new_socks
var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[new_socks]
dye_socks = S?.has_color
if(dye_undie || choice == "Underwear Color")
H.undie_color = recolor_undergarment(H, "underwear", H.undie_color)
if(dye_shirt || choice == "Undershirt Color")
H.shirt_color = recolor_undergarment(H, "undershirt", H.shirt_color)
if(dye_socks || choice == "Socks Color")
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
add_fingerprint(H)
H.update_body(TRUE)
/obj/structure/plaswooddresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return default_color
return sanitize_hexcolor(n_color, 3, FALSE, default_color)
/obj/structure/shadowwdresser
name = "dresser"
desc = "A nicely-crafted shadow wood dresser. It's filled with lots of undies."
icon = 'GainStation13/icons/obj/stationobjs.dmi'
icon_state = "shadowwdresser"
density = TRUE
anchored = TRUE
/obj/structure/shadowwdresser/attackby(obj/item/I, mob/user, params)
if(I.tool_behaviour == TOOL_WRENCH)
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
if(I.use_tool(src, user, 20, volume=50))
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
setAnchored(!anchored)
else
return ..()
/obj/structure/shadowwdresser/deconstruct(disassembled = TRUE)
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
qdel(src)
/obj/structure/shadowwdresser/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
. = ..()
if(. || !ishuman(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
var/mob/living/carbon/human/H = user
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
to_chat(H, "<span class='warning'>You are not capable of wearing underwear.</span>")
return
var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color")
if(!(GLOB.underwear_list[H.underwear]?.has_color))
undergarment_choices -= "Underwear Color"
if(!(GLOB.undershirt_list[H.undershirt]?.has_color))
undergarment_choices -= "Undershirt Color"
if(!(GLOB.socks_list[H.socks]?.has_color))
undergarment_choices -= "Socks Color"
var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices
if(!H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
var/dye_undie = FALSE
var/dye_shirt = FALSE
var/dye_socks = FALSE
switch(choice)
if("Underwear")
var/new_undies = input(H, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
if(new_undies)
H.underwear = new_undies
H.saved_underwear = new_undies
var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[new_undies]
dye_undie = B?.has_color
if("Undershirt")
var/new_undershirt = input(H, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
if(new_undershirt)
H.undershirt = new_undershirt
H.saved_undershirt = new_undershirt
var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[new_undershirt]
dye_shirt = T?.has_color
if("Socks")
var/new_socks = input(H, "Select your socks", "Changing") as null|anything in GLOB.socks_list
if(new_socks)
H.socks = new_socks
H.saved_socks = new_socks
var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[new_socks]
dye_socks = S?.has_color
if(dye_undie || choice == "Underwear Color")
H.undie_color = recolor_undergarment(H, "underwear", H.undie_color)
if(dye_shirt || choice == "Undershirt Color")
H.shirt_color = recolor_undergarment(H, "undershirt", H.shirt_color)
if(dye_socks || choice == "Socks Color")
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
add_fingerprint(H)
H.update_body(TRUE)
/obj/structure/shadowwdresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return default_color
return sanitize_hexcolor(n_color, 3, FALSE, default_color)
@@ -0,0 +1,27 @@
//Shadow/Mushroom/Plasma false walls
/obj/structure/falsewall/gmushroom
name = "mushroom wall"
desc = "A wall with mushroom plating."
icon = 'GainStation13/icons/turf/walls/gmushroom_wall.dmi'
icon_state = "gmushroom"
mineral = /obj/item/stack/sheet/mineral/gmushroom
walltype = /turf/closed/wall/mineral/gmushroom
canSmoothWith = list(/obj/structure/falsewall/gmushroom, /turf/closed/wall/mineral/gmushroom)
/obj/structure/falsewall/plaswood
name = "plaswood wall"
desc = "A wall with plaswood plating."
icon = 'GainStation13/icons/turf/walls/plaswood_wall.dmi'
icon_state = "plaswood"
mineral = /obj/item/stack/sheet/mineral/plaswood
walltype = /turf/closed/wall/mineral/plaswood
canSmoothWith = list(/obj/structure/falsewall/plaswood, /turf/closed/wall/mineral/plaswood)
/obj/structure/falsewall/shadoww
name = "shadow wall"
desc = "A wall with shadow wood plating."
icon = 'GainStation13/icons/turf/walls/shadoww_wall.dmi'
icon_state = "shadoww"
mineral = /obj/item/stack/sheet/mineral/shadoww
walltype = /turf/closed/wall/mineral/shadoww
canSmoothWith = list(/obj/structure/falsewall/shadoww, /turf/closed/wall/mineral/shadoww)
@@ -0,0 +1,88 @@
//Plaswood Frames
/obj/structure/table_frame/plaswood
name = "Plaswood table frame"
desc = "Four wooden legs with four framing wooden rods for a wooden table. You could easily pass through this."
icon = 'GainStation13/icons/obj/structures.dmi'
icon_state = "plaswood_frame"
framestack = /obj/item/stack/sheet/mineral/plaswood
framestackamount = 2
resistance_flags = FLAMMABLE | ACID_PROOF
/obj/structure/table_frame/plaswood/attackby(obj/item/I, mob/user, params)
if (istype(I, /obj/item/stack))
var/obj/item/stack/material = I
var/toConstruct // stores the table variant
if(istype(I, /obj/item/stack/sheet/mineral/plaswood))
toConstruct = /obj/structure/table/plaswood
else if(istype(I, /obj/item/stack/tile/carpet))
toConstruct = /obj/structure/table/plaswood/plaswoodpoker
if (toConstruct)
if(material.get_amount() < 1)
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
return
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
if(do_after(user, 20, target = src) && material.use(1))
make_new_table(toConstruct)
else
return ..()
//Mushroom Frames
/obj/structure/table_frame/gmushroom
name = "mushroom table frame"
desc = "Four wooden legs with four framing wooden rods for a wooden table. You could easily pass through this."
icon = 'GainStation13/icons/obj/structures.dmi'
icon_state = "gmushroom_frame"
framestack = /obj/item/stack/sheet/mineral/gmushroom
framestackamount = 2
resistance_flags = FIRE_PROOF
/obj/structure/table_frame/gmushroom/attackby(obj/item/I, mob/user, params)
if (istype(I, /obj/item/stack))
var/obj/item/stack/material = I
var/toConstruct // stores the table variant
if(istype(I, /obj/item/stack/sheet/mineral/gmushroom))
toConstruct = /obj/structure/table/gmushroom
else if(istype(I, /obj/item/stack/tile/carpet))
toConstruct = /obj/structure/table/gmushroom/gmushroompoker
if (toConstruct)
if(material.get_amount() < 1)
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
return
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
if(do_after(user, 20, target = src) && material.use(1))
make_new_table(toConstruct)
else
return ..()
//Shadow Wood Frames
/obj/structure/table_frame/shadoww
name = "shadow wood frame"
desc = "Four wooden legs with four framing wooden rods for a wooden table. You could easily pass through this."
icon = 'GainStation13/icons/obj/structures.dmi'
icon_state = "shadoww_frame"
framestack = /obj/item/stack/sheet/mineral/shadoww
framestackamount = 2
resistance_flags = FLAMMABLE
/obj/structure/table_frame/shadoww/attackby(obj/item/I, mob/user, params)
if (istype(I, /obj/item/stack))
var/obj/item/stack/material = I
var/toConstruct // stores the table variant
if(istype(I, /obj/item/stack/sheet/mineral/shadoww))
toConstruct = /obj/structure/table/shadoww
else if(istype(I, /obj/item/stack/tile/carpet))
toConstruct = /obj/structure/table/shadoww/shadowwpoker
if (toConstruct)
if(material.get_amount() < 1)
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
return
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
if(do_after(user, 20, target = src) && material.use(1))
make_new_table(toConstruct)
else
return ..()
@@ -0,0 +1,68 @@
//Shadowwood tables
/obj/structure/table/shadoww
name = "Shadow wood table"
desc = "Do not apply fire to this. Rumour says it burns easily."
icon = 'GainStation13/icons/obj/smooth_structures/shadoww_table.dmi'
icon_state = "shadoww_table"
frame = /obj/structure/table_frame/shadoww
framestack = /obj/item/stack/sheet/mineral/shadoww
buildstack = /obj/item/stack/sheet/mineral/shadoww
resistance_flags = FLAMMABLE
max_integrity = 70
canSmoothWith = list(/obj/structure/table/shadoww,
/obj/structure/table/shadoww/shadowwpoker)
/obj/structure/table/shadoww/shadowwpoker
name = "gambling table"
desc = "A seedy table for seedy dealings in seedy places."
icon = 'GainStation13/icons/obj/smooth_structures/shadowwpoker_table.dmi'
icon_state = "shadowwpoker_table"
frame = /obj/structure/table_frame/shadoww
buildstack = /obj/item/stack/tile/carpet
//Plaswood tables
/obj/structure/table/plaswood
name = "plaswood table"
desc = "An strong and grey wooden table."
icon = 'GainStation13/icons/obj/smooth_structures/plaswood_table.dmi'
icon_state = "plaswood_table"
frame = /obj/structure/table_frame/plaswood
framestack = /obj/item/stack/sheet/mineral/plaswood
buildstack = /obj/item/stack/sheet/mineral/plaswood
resistance_flags = FLAMMABLE
max_integrity = 200
integrity_failure = 50
armor = list("melee" = 10, "bullet" = 30, "laser" = 30, "energy" = 100, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
canSmoothWith = list(/obj/structure/table/plaswood,
/obj/structure/table/plaswood/plaswoodpoker)
/obj/structure/table/plaswood/plaswoodpoker
name = "gambling table"
desc = "A seedy table for seedy dealings in seedy places."
icon = 'GainStation13/icons/obj/smooth_structures/plaswoodpoker_table.dmi'
icon_state = "plaswoodpoker_table"
frame = /obj/structure/table_frame/plaswood
buildstack = /obj/item/stack/tile/carpet
//Mushroom tables
/obj/structure/table/gmushroom
name = "Mushroom table"
desc = "A pinkish table. And is fireproof!"
icon = 'GainStation13/icons/obj/smooth_structures/gmushroom_table.dmi'
icon_state = "gmushroom_table"
frame = /obj/structure/table_frame/gmushroom
framestack = /obj/item/stack/sheet/mineral/gmushroom
buildstack = /obj/item/stack/sheet/mineral/gmushroom
resistance_flags = FIRE_PROOF
max_integrity = 70
canSmoothWith = list(/obj/structure/table/gmushroom,
/obj/structure/table/gmushroom/gmushroompoker)
/obj/structure/table/gmushroom/gmushroompoker
name = "gambling table"
desc = "A seedy table for seedy dealings in seedy places."
icon = 'GainStation13/icons/obj/smooth_structures/gmushroompoker_table.dmi'
icon_state = "gmushroompoker_table"
frame = /obj/structure/table_frame/gmushroom
buildstack = /obj/item/stack/tile/carpet
+27
View File
@@ -25,3 +25,30 @@
desc = "Somehow, it doesn't melt at all..."
icon = 'Gainstation13/icons/turf/walls/wall_candy.dmi'
icon_state = "choco_wall1"
/turf/closed/indestructible/shadoww
name = "shadow wall"
desc = "A wall with shadow wood plating."
icon = 'GainStation13/icons/turf/walls/shadoww_wall.dmi'
icon_state = "shadoww"
baseturfs = /turf/closed/indestructible/shadoww
smooth = SMOOTH_TRUE
canSmoothWith = list(/turf/closed/wall/mineral/shadoww, /obj/structure/falsewall/shadoww, /turf/closed/indestructible/shadoww)
/turf/closed/indestructible/plaswood
name = "plaswood wall"
desc = "A wall with plaswood plating."
icon = 'GainStation13/icons/turf/walls/plaswood_wall.dmi'
icon_state = "plaswood"
baseturfs = /turf/closed/indestructible/plaswood
smooth = SMOOTH_TRUE
canSmoothWith = list(/turf/closed/wall/mineral/plaswood, /obj/structure/falsewall/plaswood, /turf/closed/indestructible/shadoww)
/turf/closed/indestructible/gmushroom
name = "mushroom wall"
desc = "A wall with mushroom plating."
icon = 'GainStation13/icons/turf/walls/gmushroom_wall.dmi'
icon_state = "gmushroom"
baseturfs = /turf/closed/indestructible/gmushroom
smooth = SMOOTH_TRUE
canSmoothWith = list(/turf/closed/wall/mineral/gmushroom, /obj/structure/falsewall/gmushroom, /turf/closed/indestructible/gmushroom)
@@ -0,0 +1,164 @@
//Shadow wood
/turf/open/floor/shadoww
desc = "Stylish shadow wood."
icon_state = "shadoww"
floor_tile = /obj/item/stack/tile/shadoww
broken_states = list("shadoww-broken", "shadoww-broken2", "shadoww-broken3", "shadoww-broken4", "shadoww-broken5", "shadoww-broken6", "shadoww-broken7")
footstep = FOOTSTEP_WOOD
barefootstep = FOOTSTEP_WOOD_BAREFOOT
clawfootstep = FOOTSTEP_WOOD_CLAW
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
/turf/open/floor/shadoww/examine(mob/user)
. = ..()
. += "<span class='notice'>There's a few <b>screws</b> and a <b>small crack</b> visible.</span>"
/turf/open/floor/shadoww/screwdriver_act(mob/living/user, obj/item/I)
if(..())
return TRUE
return pry_tile(I, user)
/turf/open/floor/shadoww/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
if(T.turf_type == type)
return
var/obj/item/tool = user.is_holding_item_of_type(/obj/item/screwdriver)
if(!tool)
tool = user.is_holding_item_of_type(/obj/item/crowbar)
if(!tool)
return
var/turf/open/floor/plating/P = pry_tile(tool, user, TRUE)
if(!istype(P))
return
P.attackby(T, user, params)
/turf/open/floor/shadoww/pry_tile(obj/item/C, mob/user, silent = FALSE)
C.play_tool_sound(src, 80)
return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER))
/turf/open/floor/shadoww/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE)
if(broken || burnt)
broken = 0
burnt = 0
if(user && !silent)
to_chat(user, "<span class='notice'>You remove the broken planks.</span>")
else
if(make_tile)
if(user && !silent)
to_chat(user, "<span class='notice'>You unscrew the planks.</span>")
if(floor_tile)
new floor_tile(src)
else
if(user && !silent)
to_chat(user, "<span class='notice'>You forcefully pry off the planks, destroying them in the process.</span>")
return make_plating()
//Mushroom wood
/turf/open/floor/gmushroom
desc = "Stylish mushroom 'wood'."
icon_state = "gmushroom"
floor_tile = /obj/item/stack/tile/gmushroom
broken_states = list("gmushroom-broken", "gmushroom-broken2", "gmushroom-broken3", "gmushroom-broken4", "gmushroom-broken5", "gmushroom-broken6", "gmushroom-broken7")
footstep = FOOTSTEP_WOOD
barefootstep = FOOTSTEP_WOOD_BAREFOOT
clawfootstep = FOOTSTEP_WOOD_CLAW
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
/turf/open/floor/gmushroom/examine(mob/user)
. = ..()
. += "<span class='notice'>There's a few <b>screws</b> and a <b>small crack</b> visible.</span>"
/turf/open/floor/gmushroom/screwdriver_act(mob/living/user, obj/item/I)
if(..())
return TRUE
return pry_tile(I, user)
/turf/open/floor/gmushroom/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
if(T.turf_type == type)
return
var/obj/item/tool = user.is_holding_item_of_type(/obj/item/screwdriver)
if(!tool)
tool = user.is_holding_item_of_type(/obj/item/crowbar)
if(!tool)
return
var/turf/open/floor/plating/P = pry_tile(tool, user, TRUE)
if(!istype(P))
return
P.attackby(T, user, params)
/turf/open/floor/gmushroom/pry_tile(obj/item/C, mob/user, silent = FALSE)
C.play_tool_sound(src, 80)
return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER))
/turf/open/floor/gmushroom/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE)
if(broken || burnt)
broken = 0
burnt = 0
if(user && !silent)
to_chat(user, "<span class='notice'>You remove the broken planks.</span>")
else
if(make_tile)
if(user && !silent)
to_chat(user, "<span class='notice'>You unscrew the planks.</span>")
if(floor_tile)
new floor_tile(src)
else
if(user && !silent)
to_chat(user, "<span class='notice'>You forcefully pry off the planks, destroying them in the process.</span>")
return make_plating()
//Plaswood
/turf/open/floor/plaswood
desc = "Stylish plaswood."
icon_state = "plaswood"
floor_tile = /obj/item/stack/tile/plaswood
broken_states = list("plaswood-broken", "plaswood-broken2", "plaswood-broken3", "plaswood-broken4", "plaswood-broken5", "plaswood-broken6", "plaswood-broken7")
footstep = FOOTSTEP_WOOD
barefootstep = FOOTSTEP_WOOD_BAREFOOT
clawfootstep = FOOTSTEP_WOOD_CLAW
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
/turf/open/floor/plaswood/examine(mob/user)
. = ..()
. += "<span class='notice'>There's a few <b>screws</b> and a <b>small crack</b> visible.</span>"
/turf/open/floor/plaswood/screwdriver_act(mob/living/user, obj/item/I)
if(..())
return TRUE
return pry_tile(I, user)
/turf/open/floor/plaswood/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
if(T.turf_type == type)
return
var/obj/item/tool = user.is_holding_item_of_type(/obj/item/screwdriver)
if(!tool)
tool = user.is_holding_item_of_type(/obj/item/crowbar)
if(!tool)
return
var/turf/open/floor/plating/P = pry_tile(tool, user, TRUE)
if(!istype(P))
return
P.attackby(T, user, params)
/turf/open/floor/plaswood/pry_tile(obj/item/C, mob/user, silent = FALSE)
C.play_tool_sound(src, 80)
return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER))
/turf/open/floor/plaswood/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE)
if(broken || burnt)
broken = 0
burnt = 0
if(user && !silent)
to_chat(user, "<span class='notice'>You remove the broken planks.</span>")
else
if(make_tile)
if(user && !silent)
to_chat(user, "<span class='notice'>You unscrew the planks.</span>")
if(floor_tile)
new floor_tile(src)
else
if(user && !silent)
to_chat(user, "<span class='notice'>You forcefully pry off the planks, destroying them in the process.</span>")
return make_plating()
@@ -0,0 +1,78 @@
// GS13: Extra wood walls
/turf/closed/wall/mineral/gmushroom
name = "mushroom wall"
desc = "A wall with mushroom plating."
icon = 'GainStation13/icons/turf/walls/gmushroom_wall.dmi'
icon_state = "gmushroom"
sheet_type = /obj/item/stack/sheet/mineral/gmushroom
hardness = 70
explosion_block = 0
canSmoothWith = list(/turf/closed/wall/mineral/gmushroom, /obj/structure/falsewall/gmushroom, /turf/closed/wall/mineral/gmushroom/nonmetal)
/turf/closed/wall/mineral/gmushroom/attackby(obj/item/W, mob/user)
if(W.sharpness && W.force)
var/duration = (48/W.force) * 2 //In seconds, for now.
if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe))
duration /= 4 //Much better with hatchets and axes.
if(do_after(user, duration*10, target=src)) //Into deciseconds.
dismantle_wall(FALSE,FALSE)
return
return ..()
/turf/closed/wall/mineral/gmushroom/nonmetal
desc = "A solidly mushroom wall. It's a bit weaker than a wall made with metal."
girder_type = /obj/structure/barricade/gmushroom
hardness = 50
canSmoothWith = list(/turf/closed/wall/mineral/gmushroom, /obj/structure/falsewall/gmushroom, /turf/closed/wall/mineral/gmushroom/nonmetal)
/turf/closed/wall/mineral/plaswood
name = "plaswood wall"
desc = "A wall with plaswood plating."
icon = 'GainStation13/icons/turf/walls/plaswood_wall.dmi'
icon_state = "plaswood"
sheet_type = /obj/item/stack/sheet/mineral/plaswood
hardness = 90
explosion_block = 35
canSmoothWith = list(/turf/closed/wall/mineral/plaswood, /obj/structure/falsewall/plaswood, /turf/closed/wall/mineral/plaswood/nonmetal)
/turf/closed/wall/mineral/plaswood/attackby(obj/item/W, mob/user)
if(W.sharpness && W.force)
var/duration = (48/W.force) * 2 //In seconds, for now.
if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe))
duration /= 4 //Much better with hatchets and axes.
if(do_after(user, duration*10, target=src)) //Into deciseconds.
dismantle_wall(FALSE,FALSE)
return
return ..()
/turf/closed/wall/mineral/plaswood/nonmetal
desc = "A solidly plaswood wall. It's a bit weaker than a wall made with metal."
girder_type = /obj/structure/barricade/plaswood
hardness = 70
canSmoothWith = list(/turf/closed/wall/mineral/plaswood, /obj/structure/falsewall/plaswood, /turf/closed/wall/mineral/plaswood/nonmetal)
/turf/closed/wall/mineral/shadoww
name = "shadow wall"
desc = "A wall with shadow wood plating."
icon = 'GainStation13/icons/turf/walls/shadoww_wall.dmi'
icon_state = "shadoww"
sheet_type = /obj/item/stack/sheet/mineral/shadoww
hardness = 70
explosion_block = 0
canSmoothWith = list(/turf/closed/wall/mineral/shadoww, /obj/structure/falsewall/shadoww, /turf/closed/wall/mineral/shadoww/nonmetal)
/turf/closed/wall/mineral/shadoww/attackby(obj/item/W, mob/user)
if(W.sharpness && W.force)
var/duration = (48/W.force) * 2 //In seconds, for now.
if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe))
duration /= 4 //Much better with hatchets and axes.
if(do_after(user, duration*10, target=src)) //Into deciseconds.
dismantle_wall(FALSE,FALSE)
return
return ..()
/turf/closed/wall/mineral/shadoww/nonmetal
desc = "A solidly shadow wall. It's a bit weaker than a wall made with metal."
girder_type = /obj/structure/barricade/shadoww
hardness = 50
canSmoothWith = list(/turf/closed/wall/mineral/shadoww, /obj/structure/falsewall/shadoww, /turf/closed/wall/mineral/shadoww/nonmetal)
@@ -0,0 +1,21 @@
//Wood chair bounties
/datum/bounty/item/assistant/shadow_wood_chair
name = "Shadow Wood Chairs"
description = "One of the Commanders is unhappy with his chair. He claims it hurts his back. Ship some shadow wood chairs to humor him."
reward = 1000
required_count = 5
wanted_types = list(/obj/structure/chair/shadoww)
/datum/bounty/item/assistant/mushroom_chair
name = "Mushroom Chairs"
description = "One of the Commanders is unhappy with his chair. He claims it hurts his back. Ship some mushroom chairs to humor him."
reward = 1500
required_count = 5
wanted_types = list(/obj/structure/chair/gmushroom)
/datum/bounty/item/assistant/plaswood_chair
name = "Plaswood Chairs"
description = "One of the Commanders is unhappy with his chair. He claims it hurts his back. Ship some shadow wood chairs to humor him."
reward = 2250
required_count = 5
wanted_types = list(/obj/structure/chair/plaswood)
@@ -0,0 +1,21 @@
//Wood plank bounties
/datum/bounty/item/mining/plaswood
name = "Plaswood Planks"
description = "Central Command's carpentry department needs more exotic wood, send us some plaswood planks!"
reward = 5500
required_count = 100
wanted_types = list(/obj/item/stack/sheet/mineral/plaswood)
/datum/bounty/item/mining/gmushroom
name = "Mushroom Planks"
description = "Central Command's carpentry department needs more exotic 'wood', send us some mushroom planks!"
reward = 1100
required_count = 100
wanted_types = list(/obj/item/stack/sheet/mineral/gmushroom)
/datum/bounty/item/mining/shadoww
name = "Shadow Planks"
description = "Central Command's carpentry department needs more exotic wood, send us some shadow planks!"
reward = 900
required_count = 100
wanted_types = list(/obj/item/stack/sheet/mineral/shadoww)
+21
View File
@@ -52,3 +52,24 @@
cost = 1500
contains = list(/obj/item/vending_refill/clothing)
crate_name = "clothesmate supply crate"
/datum/supply_pack/materials/gmushroom50 //buyable special wood planks
name = "50 Mushroom Planks"
desc = "Looks like wood AND is fire proof? Of course you need fifty mushroom planks!"
cost = 1700
crate_type = /obj/structure/closet/secure_closet/cargo
contains = list(/obj/item/stack/sheet/mineral/gmushroom/fifty)
/datum/supply_pack/materials/plaswood50
name = "50 Plaswood Planks"
desc = "Who need metal when you can have fifty plaswood planks?"
cost = 6000
crate_type = /obj/structure/closet/secure_closet/cargo
contains = list(/obj/item/stack/sheet/mineral/plaswood/fifty)
/datum/supply_pack/materials/shadoww50
name = "50 Shadow Wood Planks"
desc = "Time to bring the dark side with fifty shadow wooden planks!"
cost = 1450
crate_type = /obj/structure/closet/secure_closet/cargo
contains = list(/obj/item/stack/sheet/mineral/shadoww/fifty)
@@ -0,0 +1,36 @@
//extra chopped wood logs
/obj/item/grown/log/gmushroom
seed = null
name = "mushroom log"
desc = "Looks like candy! Do not eat it."
icon = 'GainStation13/icons/obj/hydroponics/harvest.dmi'
icon_state = "mushroom_log"
plank_type = /obj/item/stack/sheet/mineral/gmushroom
plank_name = "mushroom planks"
/obj/item/grown/log/gmushroom/CheckAccepted(obj/item/I)
return FALSE
/obj/item/grown/log/shadowtree
seed = null
name = "shadow log"
desc = "A piece of dark log."
icon = 'GainStation13/icons/obj/hydroponics/harvest.dmi'
icon_state = "shadow_log"
plank_type = /obj/item/stack/sheet/mineral/shadoww
plank_name = "shadow planks"
/obj/item/grown/log/gmushroom/CheckAccepted(obj/item/I)
return FALSE
/obj/item/grown/log/plasmatree
seed = null
name = "plasma tree log"
desc = "A heavy piece log."
icon = 'GainStation13/icons/obj/hydroponics/harvest.dmi'
icon_state = "plasmatree_log"
plank_type = /obj/item/stack/sheet/mineral/plaswood
plank_name = "plaswood planks"
/obj/item/grown/log/plasmatree/CheckAccepted(obj/item/I)
return FALSE
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

+3 -3
View File
@@ -39,7 +39,7 @@
user.visible_message("<span class='notice'>[user] fells [src] with the [W].</span>","<span class='notice'>You fell [src] with the [W].</span>", "You hear the sound of a tree falling.")
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
for(var/i=1 to log_amount)
new /obj/item/grown/log(get_turf(src))
new /obj/item/grown/log/gmushroom(get_turf(src))
var/obj/structure/gmushroom/gmushroomstump/S = new(loc)
S.name = "[name] stump"
@@ -91,7 +91,7 @@
user.visible_message("<span class='notice'>[user] fells [src] with the [W].</span>","<span class='notice'>You fell [src] with the [W].</span>", "You hear the sound of a tree falling.")
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
for(var/i=1 to log_amount)
new /obj/item/grown/log(get_turf(src))
new /obj/item/grown/log/shadowtree(get_turf(src))
var/obj/structure/shadowtree/shadowtreestump/S = new(loc)
S.name = "[name] stump"
@@ -142,7 +142,7 @@
user.visible_message("<span class='notice'>[user] fells [src] with the [W].</span>","<span class='notice'>You fell [src] with the [W].</span>", "You hear the sound of a tree falling.")
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
for(var/i=1 to log_amount)
new /obj/item/grown/log(get_turf(src))
new /obj/item/grown/log/plasmatree(get_turf(src))
var/obj/structure/plasmatree/plasmatreestump/S = new(loc)
S.name = "[name] stump"
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

+1 -1
View File
@@ -41,7 +41,7 @@
if(!megafauna_spawn_list)
megafauna_spawn_list = GLOB.megafauna_spawn_list
if(!flora_spawn_list)
flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2)
flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/gmushroom/gggmushroom = 2, /obj/structure/flora/shadowtree/shadowtreee = 2, /obj/structure/flora/plasmatree/plasmatreee = 2) //GS13 Edit: trees in caves
if(!feature_spawn_list)
feature_spawn_list = list(/obj/structure/geyser/random = 1)
@@ -7,7 +7,7 @@
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random = 40, /obj/structure/spawner/lavaland = 2, \
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/random = 30, /obj/structure/spawner/lavaland/legion = 3, \
SPAWN_MEGAFAUNA = 4, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10)
flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/ashtree = 1)
flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/ashtree = 1, /obj/structure/flora/gmushroom/gggmushroom = 2, /obj/structure/flora/shadowtree/shadowtreee = 2, /obj/structure/flora/plasmatree/plasmatreee = 2) //GS13 Edit: trees in lavaland
feature_spawn_list = list(/obj/structure/geyser/random = 1)
initial_closed_chance = 45
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

+15
View File
@@ -3963,6 +3963,7 @@
#include "GainStation13\code\game\plushes.dm"
#include "GainStation13\code\game\sound.dm"
#include "GainStation13\code\game\area\ruins.dm"
#include "GainStation13\code\game\machinery\deployable.dm"
#include "GainStation13\code\game\objects\tiles.dm"
#include "GainStation13\code\game\objects\turfs.dm"
#include "GainStation13\code\game\objects\effects\landmarks.dm"
@@ -3975,14 +3976,25 @@
#include "GainStation13\code\game\objects\items\toys.dm"
#include "GainStation13\code\game\objects\items\storage\bags.dm"
#include "GainStation13\code\game\objects\items\storage\firstaid.dm"
#include "GainStation13\code\game\objects\items\stacks\sheets\sheet_types.dm"
#include "GainStation13\code\game\objects\items\stacks\tiles\tile_types.dm"
#include "GainStation13\code\game\objects\structures\barsigns.dm"
#include "GainStation13\code\game\objects\structures\crate.dm"
#include "GainStation13\code\game\objects\structures\false_walls.dm"
#include "GainStation13\code\game\objects\structures\dresser.dm"
#include "GainStation13\code\game\objects\structures\medikit.dm"
#include "GainStation13\code\game\objects\structures\sofa.dm"
#include "GainStation13\code\game\objects\structures\statues.dm"
#include "GainStation13\code\game\objects\structures\table_frames.dm"
#include "GainStation13\code\game\objects\structures\table_racks.dm"
#include "GainStation13\code\game\objects\structures\beds_chairs\bed.dm"
#include "GainStation13\code\game\objects\structures\beds_chairs\chair.dm"
#include "GainStation13\code\game\objects\structures\crates_lockers\crates\wooden.dm"
#include "GainStation13\code\game\objects\structures\crates_lockers\closets\secure\psychology.dm"
#include "GainStation13\code\game\turfs\closed.dm"
#include "GainStation13\code\game\turfs\open.dm"
#include "GainStation13\code\game\turfs\simulated\floor\fancy_floor.dm"
#include "GainStation13\code\game\turfs\simulated\wall\mineral_walls.dm"
#include "GainStation13\code\machinery\adipoelectric_generator.dm"
#include "GainStation13\code\machinery\adipoelectric_transformer.dm"
#include "GainStation13\code\machinery\cryogenic.dm"
@@ -4023,6 +4035,8 @@
#include "GainStation13\code\modules\atmospherics\gasmixtures\reactions.dm"
#include "GainStation13\code\modules\atmospherics\machinery\portable\canister.dm"
#include "GainStation13\code\modules\cargo\packs.dm"
#include "GainStation13\code\modules\cargo\bounties\assistant.dm"
#include "GainStation13\code\modules\cargo\bounties\mining.dm"
#include "GainStation13\code\modules\client\border_control.dm"
#include "GainStation13\code\modules\client\loadout\head.dm"
#include "GainStation13\code\modules\client\loadout\uniform.dm"
@@ -4045,6 +4059,7 @@
#include "GainStation13\code\modules\hydroponics\lipoplant.dm"
#include "GainStation13\code\modules\hydroponics\munchies_weed.dm"
#include "GainStation13\code\modules\hydroponics\grown\berries.dm"
#include "GainStation13\code\modules\hydroponics\grown\towercap.dm"
#include "GainStation13\code\modules\jobs\job_types\psychologist.dm"
#include "GainStation13\code\modules\loadout\backpack.dm"
#include "GainStation13\code\modules\loadout\gloves.dm"