2029163d33
About The Pull Request Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage. Also changes a couple of places where a list was picked from instead of using get_sfx internal calls This was done via regex: (playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1 (playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0 full sed commands: /(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE /(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE I'm not very good with regex and these could probably be optimized, but they worked. Why It's Good For The Game Code usability
341 lines
13 KiB
Plaintext
341 lines
13 KiB
Plaintext
/* Glass stack types
|
|
* Contains:
|
|
* Glass sheets
|
|
* Reinforced glass sheets
|
|
* Glass shards - TODO: Move this into code/game/object/item/weapons
|
|
*/
|
|
|
|
/*
|
|
* Glass sheets
|
|
*/
|
|
GLOBAL_LIST_INIT(glass_recipes, list ( \
|
|
new/datum/stack_recipe("directional window", /obj/structure/window/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
|
new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
|
))
|
|
|
|
/obj/item/stack/sheet/glass
|
|
name = "glass"
|
|
desc = "HOLY SHEET! That is a lot of glass."
|
|
singular_name = "glass sheet"
|
|
icon_state = "sheet-glass"
|
|
item_state = "sheet-glass"
|
|
materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
|
|
resistance_flags = ACID_PROOF
|
|
merge_type = /obj/item/stack/sheet/glass
|
|
grind_results = list(/datum/reagent/silicon = 20)
|
|
point_value = 1
|
|
|
|
/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user)
|
|
user.visible_message("<span class='suicide'>[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
|
return BRUTELOSS
|
|
|
|
/obj/item/stack/sheet/glass/cyborg
|
|
materials = list()
|
|
is_cyborg = 1
|
|
cost = 500
|
|
|
|
/obj/item/stack/sheet/glass/fifty
|
|
amount = 50
|
|
|
|
/obj/item/stack/sheet/glass/Initialize(mapload, new_amount, merge = TRUE)
|
|
recipes = GLOB.glass_recipes
|
|
return ..()
|
|
|
|
/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user, params)
|
|
add_fingerprint(user)
|
|
if(istype(W, /obj/item/stack/cable_coil))
|
|
var/obj/item/stack/cable_coil/CC = W
|
|
if (get_amount() < 1 || CC.get_amount() < 5)
|
|
to_chat(user, "<span class='warning>You need five lengths of coil and one sheet of glass to make wired glass!</span>")
|
|
return
|
|
CC.use(5)
|
|
use(1)
|
|
to_chat(user, "<span class='notice'>You attach wire to the [name].</span>")
|
|
var/obj/item/stack/light_w/new_tile = new(user.loc)
|
|
new_tile.add_fingerprint(user)
|
|
else if(istype(W, /obj/item/stack/rods))
|
|
var/obj/item/stack/rods/V = W
|
|
if (V.get_amount() >= 1 && get_amount() >= 1)
|
|
var/obj/item/stack/sheet/rglass/RG = new (get_turf(user))
|
|
RG.add_fingerprint(user)
|
|
var/replace = user.get_inactive_held_item()==src
|
|
V.use(1)
|
|
use(1)
|
|
if(QDELETED(src) && replace)
|
|
user.put_in_hands(RG)
|
|
else
|
|
to_chat(user, "<span class='warning'>You need one rod and one sheet of glass to make reinforced glass!</span>")
|
|
return
|
|
else
|
|
return ..()
|
|
|
|
|
|
|
|
GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
|
new/datum/stack_recipe("directional window", /obj/structure/window/plasma/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
|
new/datum/stack_recipe("fulltile window", /obj/structure/window/plasma/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
|
))
|
|
|
|
/obj/item/stack/sheet/plasmaglass
|
|
name = "plasma glass"
|
|
desc = "A glass sheet made out of a plasma-silicate alloy. It looks extremely tough and heavily fire resistant."
|
|
singular_name = "plasma glass sheet"
|
|
icon_state = "sheet-pglass"
|
|
item_state = "sheet-pglass"
|
|
materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100)
|
|
resistance_flags = ACID_PROOF
|
|
merge_type = /obj/item/stack/sheet/plasmaglass
|
|
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
|
|
|
|
/obj/item/stack/sheet/plasmaglass/fifty
|
|
amount = 50
|
|
|
|
/obj/item/stack/sheet/plasmaglass/Initialize(mapload, new_amount, merge = TRUE)
|
|
recipes = GLOB.pglass_recipes
|
|
return ..()
|
|
|
|
/obj/item/stack/sheet/plasmaglass/attackby(obj/item/W, mob/user, params)
|
|
add_fingerprint(user)
|
|
|
|
if(istype(W, /obj/item/stack/rods))
|
|
var/obj/item/stack/rods/V = W
|
|
if (V.get_amount() >= 1 && get_amount() >= 1)
|
|
var/obj/item/stack/sheet/plasmarglass/RG = new (get_turf(user))
|
|
RG.add_fingerprint(user)
|
|
var/replace = user.get_inactive_held_item()==src
|
|
V.use(1)
|
|
use(1)
|
|
if(QDELETED(src) && replace)
|
|
user.put_in_hands(RG)
|
|
else
|
|
to_chat(user, "<span class='warning'>You need one rod and one sheet of plasma glass to make reinforced plasma glass!</span>")
|
|
return
|
|
else
|
|
return ..()
|
|
|
|
|
|
|
|
/*
|
|
* Reinforced glass sheets
|
|
*/
|
|
GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
|
new/datum/stack_recipe("windoor frame", /obj/structure/windoor_assembly, 5, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
|
null, \
|
|
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
|
new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
|
))
|
|
|
|
|
|
/obj/item/stack/sheet/rglass
|
|
name = "reinforced glass"
|
|
desc = "Glass which seems to have rods or something stuck in them."
|
|
singular_name = "reinforced glass sheet"
|
|
icon_state = "sheet-rglass"
|
|
item_state = "sheet-rglass"
|
|
materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
|
|
resistance_flags = ACID_PROOF
|
|
merge_type = /obj/item/stack/sheet/rglass
|
|
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10)
|
|
point_value = 4
|
|
|
|
/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params)
|
|
add_fingerprint(user)
|
|
..()
|
|
|
|
/obj/item/stack/sheet/rglass/cyborg
|
|
materials = list()
|
|
var/datum/robot_energy_storage/glasource
|
|
var/metcost = 250
|
|
var/glacost = 500
|
|
|
|
/obj/item/stack/sheet/rglass/cyborg/get_amount()
|
|
return min(round(source.energy / metcost), round(glasource.energy / glacost))
|
|
|
|
/obj/item/stack/sheet/rglass/cyborg/use(used, transfer = FALSE) // Requires special checks, because it uses two storages
|
|
source.use_charge(used * metcost)
|
|
glasource.use_charge(used * glacost)
|
|
|
|
/obj/item/stack/sheet/rglass/cyborg/add(amount)
|
|
source.add_charge(amount * metcost)
|
|
glasource.add_charge(amount * glacost)
|
|
|
|
/obj/item/stack/sheet/rglass/Initialize(mapload, new_amount, merge = TRUE)
|
|
recipes = GLOB.reinforced_glass_recipes
|
|
return ..()
|
|
|
|
GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
|
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/plasma/reinforced/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
|
new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/plasma/reinforced/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
|
))
|
|
|
|
/obj/item/stack/sheet/plasmarglass
|
|
name = "reinforced plasma glass"
|
|
desc = "A glass sheet made out of a plasma-silicate alloy and a rod matrix. It looks hopelessly tough and nearly fire-proof!"
|
|
singular_name = "reinforced plasma glass sheet"
|
|
icon_state = "sheet-prglass"
|
|
item_state = "sheet-prglass"
|
|
materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT, /datum/material/iron = MINERAL_MATERIAL_AMOUNT * 0.5,)
|
|
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
|
resistance_flags = ACID_PROOF
|
|
merge_type = /obj/item/stack/sheet/plasmarglass
|
|
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10)
|
|
point_value = 23
|
|
|
|
/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE)
|
|
recipes = GLOB.prglass_recipes
|
|
return ..()
|
|
|
|
GLOBAL_LIST_INIT(titaniumglass_recipes, list(
|
|
new/datum/stack_recipe("shuttle window", /obj/structure/window/shuttle/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE)
|
|
))
|
|
|
|
/obj/item/stack/sheet/titaniumglass
|
|
name = "titanium glass"
|
|
desc = "A glass sheet made out of a titanium-silicate alloy."
|
|
singular_name = "titanium glass sheet"
|
|
icon_state = "sheet-titaniumglass"
|
|
item_state = "sheet-titaniumglass"
|
|
materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
|
resistance_flags = ACID_PROOF
|
|
merge_type = /obj/item/stack/sheet/titaniumglass
|
|
|
|
/obj/item/stack/sheet/titaniumglass/Initialize(mapload, new_amount, merge = TRUE)
|
|
recipes = GLOB.titaniumglass_recipes
|
|
return ..()
|
|
|
|
GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
|
new/datum/stack_recipe("plastitanium window", /obj/structure/window/plastitanium/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE)
|
|
))
|
|
|
|
/obj/item/stack/sheet/plastitaniumglass
|
|
name = "plastitanium glass"
|
|
desc = "A glass sheet made out of a plasma-titanium-silicate alloy."
|
|
singular_name = "plastitanium glass sheet"
|
|
icon_state = "sheet-plastitaniumglass"
|
|
item_state = "sheet-plastitaniumglass"
|
|
materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
|
resistance_flags = ACID_PROOF
|
|
merge_type = /obj/item/stack/sheet/plastitaniumglass
|
|
|
|
/obj/item/stack/sheet/plastitaniumglass/Initialize(mapload, new_amount, merge = TRUE)
|
|
recipes = GLOB.plastitaniumglass_recipes
|
|
return ..()
|
|
|
|
/obj/item/shard
|
|
name = "shard"
|
|
desc = "A nasty looking shard of glass."
|
|
icon = 'icons/obj/shards.dmi'
|
|
icon_state = "large"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
force = 5
|
|
throwforce = 10
|
|
item_state = "shard-glass"
|
|
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
|
materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
|
attack_verb = list("stabbed", "slashed", "sliced", "cut")
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
resistance_flags = ACID_PROOF
|
|
armor = list("melee" = 100, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
|
|
max_integrity = 40
|
|
sharpness = IS_SHARP
|
|
var/icon_prefix
|
|
|
|
|
|
/obj/item/shard/suicide_act(mob/user)
|
|
user.visible_message("<span class='suicide'>[user] is slitting [user.p_their()] [pick("wrists", "throat")] with the shard of glass! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
|
return (BRUTELOSS)
|
|
|
|
|
|
/obj/item/shard/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/caltrop, force)
|
|
AddComponent(/datum/component/butchering, 150, 65)
|
|
icon_state = pick("large", "medium", "small")
|
|
switch(icon_state)
|
|
if("small")
|
|
pixel_x = rand(-12, 12)
|
|
pixel_y = rand(-12, 12)
|
|
if("medium")
|
|
pixel_x = rand(-8, 8)
|
|
pixel_y = rand(-8, 8)
|
|
if("large")
|
|
pixel_x = rand(-5, 5)
|
|
pixel_y = rand(-5, 5)
|
|
if (icon_prefix)
|
|
icon_state = "[icon_prefix][icon_state]"
|
|
|
|
var/turf/T = get_turf(src)
|
|
if(T && is_station_level(T.z))
|
|
SSblackbox.record_feedback("tally", "station_mess_created", 1, name)
|
|
|
|
/obj/item/shard/Destroy()
|
|
. = ..()
|
|
|
|
var/turf/T = get_turf(src)
|
|
if(T && is_station_level(T.z))
|
|
SSblackbox.record_feedback("tally", "station_mess_destroyed", 1, name)
|
|
|
|
/obj/item/shard/afterattack(atom/A as mob|obj, mob/user, proximity)
|
|
. = ..()
|
|
if(!proximity || !(src in user))
|
|
return
|
|
if(isturf(A))
|
|
return
|
|
if(istype(A, /obj/item/storage))
|
|
return
|
|
var/hit_hand = ((user.active_hand_index % 2 == 0) ? "r_" : "l_") + "arm"
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
if(!H.gloves && !HAS_TRAIT(H, TRAIT_PIERCEIMMUNE)) // golems, etc
|
|
to_chat(H, "<span class='warning'>[src] cuts into your hand!</span>")
|
|
H.apply_damage(force*0.5, BRUTE, hit_hand)
|
|
else if(ismonkey(user))
|
|
var/mob/living/carbon/monkey/M = user
|
|
if(!HAS_TRAIT(M, TRAIT_PIERCEIMMUNE))
|
|
to_chat(M, "<span class='warning'>[src] cuts into your hand!</span>")
|
|
M.apply_damage(force*0.5, BRUTE, hit_hand)
|
|
|
|
|
|
/obj/item/shard/attackby(obj/item/I, mob/user, params)
|
|
if(istype(I, /obj/item/lightreplacer))
|
|
I.attackby(src, user)
|
|
else
|
|
return ..()
|
|
|
|
/obj/item/shard/welder_act(mob/living/user, obj/item/I)
|
|
..()
|
|
if(I.use_tool(src, user, 0, volume=50))
|
|
var/obj/item/stack/sheet/glass/NG = new (user.loc)
|
|
for(var/obj/item/stack/sheet/glass/G in user.loc)
|
|
if(G == NG)
|
|
continue
|
|
if(G.amount >= G.max_amount)
|
|
continue
|
|
G.attackby(NG, user)
|
|
to_chat(user, "<span class='notice'>You add the newly-formed glass to the stack. It now contains [NG.amount] sheet\s.</span>")
|
|
qdel(src)
|
|
return TRUE
|
|
|
|
/obj/item/shard/Crossed(mob/living/L)
|
|
if(istype(L) && has_gravity(loc))
|
|
if(HAS_TRAIT(L, TRAIT_LIGHT_STEP))
|
|
playsound(loc, 'sound/effects/glass_step.ogg', 30, TRUE)
|
|
else
|
|
playsound(loc, 'sound/effects/glass_step.ogg', 50, TRUE)
|
|
return ..()
|
|
|
|
/obj/item/shard/plasma
|
|
name = "purple shard"
|
|
desc = "A nasty looking shard of plasma glass."
|
|
force = 6
|
|
throwforce = 11
|
|
icon_state = "plasmalarge"
|
|
materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
|
icon_prefix = "plasma"
|