diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm index 28a963ed476a..add7c0f50743 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm @@ -84,8 +84,8 @@ "cN" = ( /obj/structure/safe/floor, /obj/item/hand_tele, -/obj/item/stack/sheet/mineral/adamantine, -/obj/item/stack/sheet/mineral/adamantine, +/obj/item/stack/sheet/mineral/hidden/hellstone, +/obj/item/stack/sheet/mineral/hidden/hellstone, /turf/open/floor/plating/asteroid/snow/icemoon, /area/ruin/unpowered/corprejectrooms) "cP" = ( @@ -1726,11 +1726,11 @@ /obj/item/spacecash/bundle/c1000, /obj/item/spacecash/bundle/c1000, /obj/item/stack/sheet/bluespace_crystal/five, -/obj/item/stack/sheet/mineral/bananium{ +/obj/item/stack/sheet/mineral/hidden/hellstone{ amount = 15 }, /obj/item/stack/sheet/mineral/gold/twenty, -/obj/item/stack/sheet/mineral/runite/ten, +/obj/item/stack/sheet/mineral/hidden/hellstone/ten, /obj/item/toy/figure/captain, /obj/item/organ/cyberimp/brain/anti_stun, /obj/item/disk/design_disk/adv/knight_gear, diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index 9a154053c0bf..358b08790095 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -2232,7 +2232,7 @@ /turf/closed/mineral/diamond, /area/awaymission/BMPship) "hw" = ( -/turf/closed/mineral/bananium, +/turf/closed/mineral/bscrystal, /area/awaymission/BMPship) "hE" = ( /turf/closed/wall/mineral/titanium/nodiagonal, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm index ae2434a3ca45..11c0ecc1a2ff 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_clowncrash.dmm @@ -96,7 +96,7 @@ /area/overmap_encounter/planetoid/cave/explored) "r" = ( /obj/structure/table/reinforced, -/obj/item/stack/ore/bananium, +/obj/item/stack/ore/hellstone, /turf/open/floor/plating/asteroid, /area/overmap_encounter/planetoid/cave/explored) "s" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm index 73735c65542b..227bbf0c0338 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_fortress_of_solitide.dmm @@ -342,7 +342,7 @@ "cX" = ( /obj/structure/statue/bananium/clown, /obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "dg" = ( /obj/structure/sign/poster/contraband/eat, @@ -430,7 +430,7 @@ /area/ruin/powered) "ed" = ( /obj/item/trash/cheesie, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "ee" = ( /obj/machinery/photocopier, @@ -578,12 +578,8 @@ /turf/open/floor/plating/rust, /area/ruin/powered) "fk" = ( -/obj/machinery/door/airlock/bananium{ - name = "Clown Embassy"; - dir = 4 - }, /obj/item/grown/bananapeel, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "fn" = ( /obj/effect/gibspawner/human, @@ -695,7 +691,7 @@ /area/ruin/powered) "go" = ( /obj/machinery/light/small/directional/west, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "gp" = ( /mob/living/simple_animal/hostile/rat, @@ -735,7 +731,7 @@ /turf/open/floor/plating, /area/ruin/powered) "gL" = ( -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "gM" = ( /obj/structure/rack, @@ -762,7 +758,7 @@ /area/ruin/powered) "hd" = ( /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "he" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -1123,7 +1119,7 @@ /obj/effect/decal/cleanable/blood, /obj/effect/mob_spawn/human/clown/corpse, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "kO" = ( /obj/item/trash/chips, @@ -1133,7 +1129,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "kS" = ( /obj/effect/decal/cleanable/blood, @@ -1507,7 +1503,7 @@ /obj/item/pneumatic_cannon/pie, /obj/item/reagent_containers/spray/waterflower/lube, /obj/machinery/light/small/directional/east, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "nK" = ( /obj/structure/table, @@ -2375,7 +2371,7 @@ /obj/effect/decal/cleanable/blood, /obj/effect/mob_spawn/human/clown/corpse, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "vX" = ( /obj/item/ammo_casing, @@ -2773,7 +2769,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/generic, /obj/item/trash/cheesie, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "Aa" = ( /obj/effect/decal/cleanable/dirt/dust, @@ -3113,7 +3109,7 @@ /area/ruin/powered) "Cy" = ( /obj/structure/closet/cardboard, -/obj/item/coin/bananium, +/obj/item/coin/hellstone, /obj/item/reagent_containers/food/snacks/soup/clownstears, /turf/open/floor/plating, /area/ruin/powered) @@ -4333,7 +4329,7 @@ "Ow" = ( /obj/structure/table/wood/fancy/orange, /obj/item/clothing/under/rank/civilian/clown/rainbow, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "Ox" = ( /obj/effect/decal/cleanable/dirt/dust, @@ -4422,7 +4418,7 @@ /area/ruin/powered) "Pr" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/bananium, +/turf/open/floor/mineral/gold, /area/ruin/powered) "Px" = ( /mob/living/simple_animal/hostile/rat, diff --git a/_maps/configs/independent_beluga.json b/_maps/configs/independent_beluga.json index 64230b0dc797..6d7926a8e845 100644 --- a/_maps/configs/independent_beluga.json +++ b/_maps/configs/independent_beluga.json @@ -13,7 +13,6 @@ ], "starting_funds": 4000, "limit": 2, - "roundstart": true, "job_slots": { "Captain": { "outfit": "/datum/outfit/job/independent/captain", diff --git a/_maps/configs/independent_dwayne.json b/_maps/configs/independent_dwayne.json index 1cd4a3683f0f..64f68af68752 100644 --- a/_maps/configs/independent_dwayne.json +++ b/_maps/configs/independent_dwayne.json @@ -15,7 +15,6 @@ "Mining", "Generalist" ], - "roundstart": true, "limit": 1, "job_slots": { "Captain": { diff --git a/_maps/configs/independent_mudskipper.json b/_maps/configs/independent_mudskipper.json index 1dfd48861d13..9f4cf32e0cf8 100644 --- a/_maps/configs/independent_mudskipper.json +++ b/_maps/configs/independent_mudskipper.json @@ -14,7 +14,6 @@ "SPACE" ], "map_path": "_maps/shuttles/independent/independent_mudskipper.dmm", - "roundstart": true, "limit": 2, "starting_funds": 1500, "job_slots": { diff --git a/_maps/configs/independent_rigger.json b/_maps/configs/independent_rigger.json index 3550773cc0e4..e36b57ca750a 100644 --- a/_maps/configs/independent_rigger.json +++ b/_maps/configs/independent_rigger.json @@ -15,7 +15,6 @@ "Generalist" ], "map_path": "_maps/shuttles/independent/independent_rigger.dmm", - "roundstart": true, "limit": 1, "job_slots": { "Captain": { diff --git a/_maps/configs/independent_shetland.json b/_maps/configs/independent_shetland.json index 344f9a99ee50..de5873f80d75 100644 --- a/_maps/configs/independent_shetland.json +++ b/_maps/configs/independent_shetland.json @@ -14,7 +14,6 @@ ], "map_path": "_maps/shuttles/independent/independent_shetland.dmm", "map_id": "independent_shetland", - "roundstart": true, "job_slots": { "Captain": { "outfit": "/datum/outfit/job/independent/captain/cheap", diff --git a/_maps/configs/nanotrasen_skipper.json b/_maps/configs/nanotrasen_skipper.json index 9ced4c28038c..2f61c3afa601 100644 --- a/_maps/configs/nanotrasen_skipper.json +++ b/_maps/configs/nanotrasen_skipper.json @@ -17,7 +17,6 @@ "Mining" ], "starting_funds": 4500, - "roundstart": true, "job_slots": { "Captain": { "outfit": "/datum/outfit/job/nanotrasen/captain", diff --git a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm index 436d6185ee54..93c59445ee41 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm @@ -2868,7 +2868,7 @@ pixel_x = 4; pixel_y = 8 }, -/obj/item/coin/adamantine{ +/obj/item/coin/hellstone{ pixel_x = -12; pixel_y = -3 }, diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index 6c07dd234392..ff1072ffdbad 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -99,7 +99,6 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SMOOTH_GROUP_SILVER_WALLS S_OBJ(3) ///turf/closed/wall/mineral/silver, /obj/structure/falsewall/silver #define SMOOTH_GROUP_DIAMOND_WALLS S_OBJ(4) ///turf/closed/wall/mineral/diamond, /obj/structure/falsewall/diamond #define SMOOTH_GROUP_PLASMA_WALLS S_OBJ(5) ///turf/closed/wall/mineral/plasma, /obj/structure/falsewall/plasma -#define SMOOTH_GROUP_BANANIUM_WALLS S_OBJ(6) ///turf/closed/wall/mineral/bananium, /obj/structure/falsewall/bananium #define SMOOTH_GROUP_SANDSTONE_WALLS S_OBJ(7) ///turf/closed/wall/mineral/sandstone, /obj/structure/falsewall/sandstone #define SMOOTH_GROUP_WOOD_WALLS S_OBJ(8) ///turf/closed/wall/mineral/wood, /obj/structure/falsewall/wood #define SMOOTH_GROUP_IRON_WALLS S_OBJ(9) ///turf/closed/wall/mineral/iron, /obj/structure/falsewall/iron diff --git a/code/controllers/subsystem/overmap.dm b/code/controllers/subsystem/overmap.dm index 93852230b244..1304eeeb34ea 100644 --- a/code/controllers/subsystem/overmap.dm +++ b/code/controllers/subsystem/overmap.dm @@ -133,7 +133,7 @@ SUBSYSTEM_DEF(overmap) spawn_ruin_levels() spawn_outpost() - spawn_initial_ships() + //spawn_initial_ships() /** * VERY Simple random generation for overmap events, spawns the event in a random turf and sometimes spreads it out similar to ores @@ -212,6 +212,7 @@ SUBSYSTEM_DEF(overmap) new found_type(location) return +/* /datum/controller/subsystem/overmap/proc/spawn_initial_ships() #ifndef UNIT_TESTS var/datum/map_template/shuttle/selected_template = SSmapping.maplist[pick(SSmapping.maplist)] @@ -224,10 +225,11 @@ SUBSYSTEM_DEF(overmap) query_round_map_name.Execute() qdel(query_round_map_name) #endif +*/ /** * Spawns a controlled ship with the passed template at the template's preferred spawn location. - * Inteded for ship purchases, etc. + * Intended for ship purchases, etc. */ /datum/controller/subsystem/overmap/proc/spawn_ship_at_start(datum/map_template/shuttle/template) //Should never happen, but just in case. This'll delay the next spawn until the current one is done. diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 06d437049e35..1ac6cb5a50e6 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -128,7 +128,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/melee/cultblade, /obj/item/cult_bastard, /obj/item/restraints/legcuffs/bola/cult, /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune, - /obj/item/stack/sheet/runed_metal, /obj/machinery/door/airlock/cult, /obj/singularity/narsie, + /obj/machinery/door/airlock/cult, /obj/singularity/narsie, /obj/item/soulstone, /obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard, diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index 4df0521bcff3..0ed4acb5be78 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -211,3 +211,10 @@ /obj/item/organ/heart = 1, /obj/item/stack/sheet/cotton/cloth = 3) category = CAT_MISC + +/datum/crafting_recipe/candorupgrade + name = "Candor Upgrade" + result = /obj/item/gun/ballistic/automatic/pistol/candor/phenex + reqs = list(/obj/item/stack/sheet/mineral/hidden = 4, + /obj/item/gun/ballistic/automatic/pistol/candor = 1) + category = CAT_MISC diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index 3c006073304c..6f2a34e50ea5 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -192,4 +192,4 @@ return if(isitem(parent)) var/obj/item/I = parent - I.AddElement(/datum/element/decal/blood, initial(I.icon) || I.icon, initial(I.icon_state) || I.icon_state, _color = get_blood_dna_color(blood_DNA)) + I.AddElement(/datum/element/decal/blood, I.icon, I.icon_state, _color = get_blood_dna_color(blood_DNA)) diff --git a/code/datums/components/remote_materials.dm b/code/datums/components/remote_materials.dm index de61c13ae295..2f3aa79749b2 100644 --- a/code/datums/components/remote_materials.dm +++ b/code/datums/components/remote_materials.dm @@ -52,7 +52,7 @@ handles linking back and forth. /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, - /datum/material/bananium, + /datum/material/hellstone, /datum/material/titanium, /datum/material/bluespace, /datum/material/plastic, diff --git a/code/datums/elements/decals/blood.dm b/code/datums/elements/decals/blood.dm index 85f75bef2416..0a3ca8ce59a3 100644 --- a/code/datums/elements/decals/blood.dm +++ b/code/datums/elements/decals/blood.dm @@ -6,9 +6,11 @@ . = ..() RegisterSignal(target, COMSIG_ATOM_GET_EXAMINE_NAME, PROC_REF(get_examine_name), TRUE) + RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), PROC_REF(redraw), TRUE) /datum/element/decal/blood/Detach(atom/source, force) UnregisterSignal(source, COMSIG_ATOM_GET_EXAMINE_NAME) + UnregisterSignal(source, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) return ..() /datum/element/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color, _alpha, source) @@ -30,3 +32,11 @@ override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a" override[EXAMINE_POSITION_BEFORE] = " blood-stained " return COMPONENT_EXNAME_CHANGED + +///this is probably quite bad, let me know if you have a better solution for this -S +/datum/element/decal/blood/proc/redraw(datum/source, mob/user) + SIGNAL_HANDLER + + var/atom/bloodsource = source + Detach(source) + bloodsource.AddElement(/datum/element/decal/blood, bloodsource.icon, bloodsource.icon_state, _color = get_blood_dna_color(bloodsource.return_blood_DNA())) diff --git a/code/datums/elements/world_icon.dm b/code/datums/elements/world_icon.dm new file mode 100644 index 000000000000..bcb0129c6c68 --- /dev/null +++ b/code/datums/elements/world_icon.dm @@ -0,0 +1,121 @@ +///////////////////////////////////////////////////////////// +////////// WORLD ICON ELEMENT DIRECTORY ////////// +///////////////////////////////////////////////////////////// +//PORTED FROM MOJAVE SUN// + +// Slap onto something to give it a world icon that differs from the inventory one (allows for realistically sized objects and all that) // +// To fix 25/06/2021 : Blood Decals, Mutable Overlays and other baked in bitch ass overlays that need to be remade when the icon changes // +// Fixed 07/05/2022: Now you can deal with the above by handling everything with attached_proc instead +// Fixed 12/04/2023: Icon states, Needs major tuning up by someone who can properly make it work + +/datum/element/world_icon + id_arg_index = 2 + element_flags = ELEMENT_BESPOKE | ELEMENT_DETACH + //If we want COMPLEX world icon behavior, this proc will handle icon updating when the item is NOT in the inventory. + //I just assumed that the default update_icon is for inventory sprites because ss13 basically focuses on how the sprites + //look on your hand, not how they realistically look in the world. + var/attached_proc + /// Only used if attached_proc doesn't exist, simply changes the icon of target to this when it's in the inventory + var/inventory_icon + /// Only used if attached_proc doesn't exist, simply changes the icon of target to this when it's NOT in the inventory + var/world_icon + /// Only used when inventory state icon is different from original + var/inventory_icon_state + /// Only used when world state icon is different from original, pretty much just the original "icon_state" but if you for some reason need to flip the standard icon states for this element around you can use this + var/world_icon_state + +/datum/element/world_icon/Attach(obj/item/target, attached_proc, world_icon, inventory_icon, world_icon_state, inventory_icon_state) + . = ..() + if(!istype(target)) + return ELEMENT_INCOMPATIBLE + + src.attached_proc = attached_proc + src.world_icon = world_icon + src.world_icon_state = world_icon_state + src.inventory_icon = inventory_icon + src.inventory_icon_state = inventory_icon_state + RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON, PROC_REF(update_icon)) + RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON_STATE, PROC_REF(update_icon_state)) + RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_STORAGE_ENTERED, COMSIG_ITEM_DROPPED, COMSIG_STORAGE_EXITED), PROC_REF(inventory_updated)) + target.update_appearance(UPDATE_ICON) + target.update_appearance(UPDATE_ICON_STATE) + +/datum/element/world_icon/Detach(obj/item/source) + . = ..() + UnregisterSignal(source, COMSIG_ATOM_UPDATE_ICON) + UnregisterSignal(source, COMSIG_ATOM_UPDATE_ICON_STATE, PROC_REF(update_icon_state)) + UnregisterSignal(source, list(COMSIG_ITEM_EQUIPPED, COMSIG_STORAGE_ENTERED, COMSIG_ITEM_DROPPED, COMSIG_STORAGE_EXITED)) + source.update_appearance(UPDATE_ICON) + source.update_appearance(UPDATE_ICON_STATE) + +/datum/element/world_icon/proc/update_icon(obj/item/source, updates) + SIGNAL_HANDLER + + if((source.item_flags & IN_INVENTORY) || (source.loc && SEND_SIGNAL(source.loc, COMSIG_CONTAINS_STORAGE))) + if(attached_proc) + return + return default_inventory_icon(source) + + if(attached_proc) + return call(source, attached_proc)(updates) + else + return default_world_icon(source) + +/datum/element/world_icon/proc/update_icon_state(obj/item/source, updates) + SIGNAL_HANDLER + + if((source.item_flags & IN_INVENTORY) || (source.loc && SEND_SIGNAL(source.loc, COMSIG_CONTAINS_STORAGE))) + if(attached_proc) + return + return default_inventory_icon_state(source) + + if(attached_proc) + return call(source, attached_proc)(updates) + else + return default_world_icon_state(source) + +/datum/element/world_icon/proc/inventory_updated(obj/item/source) + SIGNAL_HANDLER + + source.update_appearance(UPDATE_ICON) + source.update_appearance(UPDATE_ICON_STATE) + +/datum/element/world_icon/proc/default_inventory_icon(obj/item/source) + SIGNAL_HANDLER + + source.icon = inventory_icon + +/datum/element/world_icon/proc/default_world_icon(obj/item/source) + SIGNAL_HANDLER + + source.icon = world_icon + +/datum/element/world_icon/proc/default_inventory_icon_state(obj/item/source) + SIGNAL_HANDLER + + if(!inventory_icon_state) + source.icon_state = source.icon_state + return + + INVOKE_ASYNC(src, PROC_REF(check_inventory_state), source) + +/datum/element/world_icon/proc/default_world_icon_state(obj/item/source) + SIGNAL_HANDLER + + if(!world_icon_state) + source.icon_state = source.icon_state + return + + INVOKE_ASYNC(src, PROC_REF(check_world_icon_state), source) + +/datum/element/world_icon/proc/check_inventory_state(obj/item/source) + SIGNAL_HANDLER + + inventory_icon_state = source.inventory_state + source.icon_state = inventory_icon_state + +/datum/element/world_icon/proc/check_world_icon_state(obj/item/source) + SIGNAL_HANDLER + + world_icon_state = source.world_state + source.icon_state = world_icon_state diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 98db1541c953..ed8dd509ec3b 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -127,30 +127,6 @@ Unless you know what you're doing, only use the first three numbers. They're in ore_type = /obj/item/stack/ore/bluespace_crystal value_per_unit = 0.15 -///Honks and slips -/datum/material/bananium - name = "bananium" - id = "bananium" - desc = "Material with hilarious properties" - color = "#ffff00" //obnoxiously bright yellow - categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE) - sheet_type = /obj/item/stack/sheet/mineral/bananium - ore_type = /obj/item/stack/ore/bananium - value_per_unit = 0.5 - beauty_modifier = 0.5 - armor_modifiers = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) //Clowns cant be blown away. - -/datum/material/bananium/on_applied(atom/source, amount, material_flags) - . = ..() - source.LoadComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50, falloff_exponent = 20) - source.AddComponent(/datum/component/slippery, min(amount / 10, 80)) - - -/datum/material/bananium/on_removed(atom/source, amount, material_flags) - . = ..() - qdel(source.GetComponent(/datum/component/slippery)) - qdel(source.GetComponent(/datum/component/squeak)) - ///Mediocre force increase /datum/material/titanium @@ -166,18 +142,6 @@ Unless you know what you're doing, only use the first three numbers. They're in beauty_modifier = 0.05 armor_modifiers = list("melee" = 1.35, "bullet" = 1.3, "laser" = 1.3, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1) -/datum/material/runite - name = "runite" - id = "runite" - desc = "Runite" - color = "#3F9995" - strength_modifier = 1.3 - categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE) - sheet_type = /obj/item/stack/sheet/mineral/runite - value_per_unit = 0.3 - beauty_modifier = 0.5 - armor_modifiers = list("melee" = 1.35, "bullet" = 2, "laser" = 0.5, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 1.4, "acid" = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle. - ///Force decrease /datum/material/plastic name = "plastic" @@ -224,42 +188,20 @@ Unless you know what you're doing, only use the first three numbers. They're in var/obj/wooden = source wooden.resistance_flags &= ~FLAMMABLE -///Stronk force increase -/datum/material/adamantine - name = "adamantine" - id = "adamantine" - desc = "A powerful material made out of magic, I mean science!" - color = "#6d7e8e" +//Remember when the theme used to be "Eerie" before 1.3? Good times. +/datum/material/hellstone + name = "hellstone" + id = "hellstone" + desc = "A colloquialism given to millenia-old slag, heat-treated through the eons in deep magma." + color = "#ffaf5e" strength_modifier = 1.5 categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE) - sheet_type = /obj/item/stack/sheet/mineral/adamantine + sheet_type = /obj/item/stack/sheet/mineral/hidden/hellstone + ore_type = /obj/item/stack/ore/hellstone value_per_unit = 0.25 beauty_modifier = 0.4 armor_modifiers = list("melee" = 1.5, "bullet" = 1.5, "laser" = 1.3, "energy" = 1.3, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 2.5, "acid" = 1) -///RPG Magic. -/datum/material/mythril - name = "mythril" - id = "mythril" - desc = "How this even exists is byond me" - color = "#f2d5d7" - categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE) - sheet_type = /obj/item/stack/sheet/mineral/mythril - value_per_unit = 0.75 - strength_modifier = 1.2 - armor_modifiers = list("melee" = 1.5, "bullet" = 1.5, "laser" = 1.5, "energy" = 1.5, "bomb" = 1.5, "bio" = 1.5, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5) - beauty_modifier = 0.5 - -/datum/material/mythril/on_applied_obj(atom/source, amount, material_flags) - . = ..() - if(istype(source, /obj/item)) - source.AddComponent(/datum/component/fantasy) - -/datum/material/mythril/on_removed_obj(atom/source, material_flags) - . = ..() - if(istype(source, /obj/item)) - qdel(source.GetComponent(/datum/component/fantasy)) - //formed when freon react with o2, emits a lot of plasma when heated /datum/material/hot_ice name = "hot ice" @@ -323,18 +265,6 @@ Unless you know what you're doing, only use the first three numbers. They're in turf_sound_override = FOOTSTEP_SAND texture_layer_icon_state = "sand" -/datum/material/runedmetal - name = "runed metal" - id = "runed metal" - desc = "Mir'ntrath barhah Nar'sie." - color = "#3C3434" - categories = list(MAT_CATEGORY_RIGID = TRUE) - sheet_type = /obj/item/stack/sheet/runed_metal - value_per_unit = 0.75 - armor_modifiers = list("melee" = 1.2, "bullet" = 1.2, "laser" = 1, "energy" = 1, "bomb" = 1.2, "bio" = 1.2, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5) - beauty_modifier = -0.15 - texture_layer_icon_state = "runed" - /datum/material/bronze name = "bronze" id = "bronze" diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 964c269b5f43..34771af91ed2 100644 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -104,6 +104,9 @@ /// Set to FALSE if your outfit requires runtime parameters var/can_be_admin_equipped = TRUE + // Used to determine if it should be ignored in unit tests due to being to dynamic to always spawn backpack contents right + var/random = FALSE + /** * extra types for chameleon outfit changes, mostly guns * diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 4b0afce14b47..3cbc091cc62a 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -430,11 +430,6 @@ /datum/quirk/insanity/proc/madness() quirk_holder.hallucination += rand(10, 25) -/datum/quirk/insanity/post_add() //I don't /think/ we'll need this but for newbies who think "roleplay as insane" = "license to kill" it's probably a good thing to have - if(!quirk_holder.mind || quirk_holder.mind.special_role) - return - to_chat(quirk_holder, "Please note that your dissociation syndrome does NOT give you the right to attack people or otherwise cause any interference to \ - the round. You are not an antagonist, and the rules will treat you the same as other crewmembers.") /datum/quirk/social_anxiety name = "Social Anxiety" diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index fe95ea3c5988..3064a52a48ad 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -40,14 +40,14 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/Initialize() . = ..() var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - bananium.insert_amount_mat(max_recharge, /datum/material/bananium) + bananium.insert_amount_mat(max_recharge, /datum/material/hellstone) START_PROCESSING(SSobj, src) /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/process() var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - var/bananium_amount = bananium.get_material_amount(/datum/material/bananium) + var/bananium_amount = bananium.get_material_amount(/datum/material/hellstone) if(bananium_amount < max_recharge) - bananium.insert_amount_mat(min(recharge_rate, max_recharge - bananium_amount), /datum/material/bananium) + bananium.insert_amount_mat(min(recharge_rate, max_recharge - bananium_amount), /datum/material/hellstone) /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/attack_self(mob/user) ui_action_click(user) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index b10dba436e0d..f6c004ddca71 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -68,34 +68,40 @@ default_deconstruction_screwdriver(user, "button-open", "[skin]",W) update_appearance() else - to_chat(user, "Maintenance Access Denied.") + to_chat(user, span_alert("Maintenance Access Denied.")) flick("[skin]-denied", src) return if(panel_open) if(!device && istype(W, /obj/item/assembly)) if(!user.transferItemToLoc(W, src)) - to_chat(user, "\The [W] is stuck to you!") + to_chat(user, span_warning("\The [W] is stuck to you!")) return device = W - to_chat(user, "You add [W] to the button.") + to_chat(user, span_notice("You add [W] to the button.")) if(!board && istype(W, /obj/item/electronics/airlock)) if(!user.transferItemToLoc(W, src)) - to_chat(user, "\The [W] is stuck to you!") + to_chat(user, span_warning("\The [W] is stuck to you!")) return board = W if(board.one_access) req_one_access = board.accesses else req_access = board.accesses - to_chat(user, "You add [W] to the button.") + to_chat(user, span_notice("You add [W] to the button.")) + + if(device && W.tool_behaviour == TOOL_MULTITOOL) + var/obj/item/multitool/multi = W + if(istype(device, /obj/item/assembly/control)) + multi.buffer = device + to_chat(user, span_notice("You copy the [device] to your multitool's buffer.")) if(!device && !board && W.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start unsecuring the button frame...") + to_chat(user, span_notice("You start unsecuring the button frame...")) W.play_tool_sound(src) if(W.use_tool(src, user, 40)) - to_chat(user, "You unsecure the button frame.") + to_chat(user, span_notice("You unsecure the button frame.")) transfer_fingerprints_to(new /obj/item/wallframe/button(get_turf(src))) playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) qdel(src) @@ -153,14 +159,14 @@ req_one_access = list() board = null update_appearance() - to_chat(user, "You remove electronics from the button frame.") + to_chat(user, span_notice("You remove electronics from the button frame.")) else if(skin == "doorctrl") skin = "launcher" else skin = "doorctrl" - to_chat(user, "You change the button frame's front panel.") + to_chat(user, span_notice("You change the button frame's front panel.")) return if((machine_stat & (NOPOWER|BROKEN))) @@ -170,7 +176,7 @@ return if(!allowed(user)) - to_chat(user, "Access Denied.") + to_chat(user, span_alert("Access Denied.")) flick("[skin]-denied", src) return diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 8e0ed982b501..492ce30f6ac4 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -264,17 +264,7 @@ opacity = FALSE glass = TRUE -/obj/machinery/door/airlock/bananium - name = "bananium airlock" - desc = "Honkhonkhonk" - icon = 'icons/obj/doors/airlocks/station/bananium.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_bananium - doorOpen = 'sound/items/bikehorn.ogg' - has_hatch = FALSE -/obj/machinery/door/airlock/bananium/glass - opacity = FALSE - glass = TRUE /obj/machinery/door/airlock/sandstone name = "sandstone airlock" diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 4e846c26f14a..ce705c71e434 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -23,26 +23,32 @@ /obj/machinery/door/poddoor/attackby(obj/item/W, mob/user, params) . = ..() if((resistance_flags & INDESTRUCTIBLE) && W.tool_behaviour == TOOL_SCREWDRIVER) // This makes it so ERT members cannot cheese by opening their blast doors. - to_chat(user, "You can't find the panel!") + to_chat(user, span_warning("You can't find the panel!")) return if(W.tool_behaviour == TOOL_SCREWDRIVER) if(density) - to_chat(user, "You need to open [src] to access the maintenance panel!") + to_chat(user, span_warning("You need to open [src] to access the maintenance panel")) return else if(default_deconstruction_screwdriver(user, icon_state, icon_state, W)) - to_chat(user, "You [panel_open ? "open" : "close"] the maintenance hatch of [src].") + to_chat(user, span_notice("You [panel_open ? "open" : "close"] the maintenance hatch of [src].")) return TRUE if(panel_open && !density) if(W.tool_behaviour == TOOL_MULTITOOL) - var/change_id = input("Set [src]'s ID. It must be a number between 1 and 100.", "ID", id) as num|null - if(change_id) - id = clamp(round(change_id, 1), 1, 100) - to_chat(user, "You change the ID to [id].") + var/obj/item/multitool/multi = W + if (istype(multi.buffer,/obj/item/assembly/control)) + var/obj/item/assembly/control/controller = multi.buffer + id = controller.id + to_chat(user, span_notice("You copy the ID in your multitool's buffer into the [src].")) + else + var/change_id = input("Set [src]'s ID. It must be a number between 1 and 100.", "ID", id) as num|null + if(change_id) + id = clamp(round(change_id, 1), 1, 100) + to_chat(user, span_notice("You change the ID to [id].")) if(W.tool_behaviour == TOOL_CROWBAR) - to_chat(user, "You start to remove the airlock electronics.") + to_chat(user, span_notice("You start to remove the airlock electronics.")) if(!(machine_stat & NOPOWER)) do_sparks(5, TRUE, src) electrocute_mob(user, get_area(src), src, 1, TRUE) //fuck this fella @@ -52,9 +58,9 @@ /obj/machinery/door/poddoor/examine(mob/user) . = ..() - . += "The maintenance panel is [panel_open ? "opened" : "closed"]." + . += span_notice("The maintenance panel is [panel_open ? "opened" : "closed"].") if(panel_open) - . += "The airlock electronics are exposed and could be pried out." + . += span_notice("The airlock electronics are exposed and could be pried out.") /obj/machinery/door/poddoor/deconstruct(disassembled = TRUE, mob/user) if(!(flags_1 & NODECONSTRUCT_1)) @@ -142,9 +148,9 @@ /obj/machinery/door/poddoor/attack_alien(mob/living/carbon/alien/humanoid/user) if(density & !(resistance_flags & INDESTRUCTIBLE)) add_fingerprint(user) - user.visible_message("[user] begins prying open [src].",\ - "You begin digging your claws into [src] with all your might!",\ - "You hear groaning metal...") + user.visible_message(span_warning("[user] begins prying open [src]."),\ + span_noticealien("You begin digging your claws into [src] with all your might"),\ + span_warning("You hear groaning metal...")) playsound(src, 'sound/machines/creaking.ogg', 100, TRUE) var/time_to_open = 5 SECONDS @@ -153,7 +159,7 @@ if(do_after(user, time_to_open, TRUE, src)) if(density && !open(TRUE)) //The airlock is still closed, but something prevented it opening. (Another player noticed and bolted/welded the airlock in time!) - to_chat(user, "Despite your efforts, [src] managed to resist your attempts to open it!") + to_chat(user, span_warning("Despite your efforts, [src] managed to resist your attempts to open it!")) else return ..() diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index af0c08162311..82265e244448 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -21,7 +21,7 @@ /obj/machinery/recycler/Initialize() AddComponent(/datum/component/butchering/recycler, 1, amount_produced,amount_produced/5) - AddComponent(/datum/component/material_container, list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/plasma, /datum/material/gold, /datum/material/diamond, /datum/material/plastic, /datum/material/uranium, /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace), INFINITY, FALSE, null, null, null, TRUE) + AddComponent(/datum/component/material_container, list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/plasma, /datum/material/gold, /datum/material/diamond, /datum/material/plastic, /datum/material/uranium, /datum/material/hellstone, /datum/material/titanium, /datum/material/bluespace), INFINITY, FALSE, null, null, null, TRUE) . = ..() update_appearance() req_one_access = get_all_accesses() + get_all_centcom_access() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 9f2f56e2e1ce..df865aee82e5 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -122,25 +122,23 @@ if(.) return if(locked && !issilicon(user)) - to_chat(user, "The machine is locked, you are unable to use it!") + to_chat(user, span_notice("The machine is locked, you are unable to use it!")) return if(panel_open) - to_chat(user, "The panel must be closed before operating this machine!") + to_chat(user, span_warning("The panel must be closed before operating this machine!")) return if (active) - user.visible_message("[user] deactivated \the [src].", \ - "You deactivate \the [src].", \ - "You hear heavy droning fade out.") + user.visible_message(span_notice("[user] deactivated \the [src]."), span_notice("You deactivate \the [src]."), span_hear("You hear heavy droning fade out")) shields_down() else if(anchored) - user.visible_message("[user] activated \the [src].", \ - "You activate \the [src].", \ - "You hear heavy droning.") + user.visible_message(span_notice("[user] activated \the [src]."), \ + span_notice("You activate \the [src]."), \ + span_hear("You hear heavy droning.")) shields_up() else - to_chat(user, "The device must first be secured to the floor!") + to_chat(user, span_warning("The device must first be secured to the floor!")) return /obj/machinery/shieldgen/attackby(obj/item/W, mob/user, params) @@ -148,60 +146,60 @@ W.play_tool_sound(src, 100) panel_open = !panel_open if(panel_open) - to_chat(user, "You open the panel and expose the wiring.") + to_chat(user, span_notice("You open the panel and expose the wiring.")) else - to_chat(user, "You close the panel.") + to_chat(user, span_notice("You close the panel.")) else if(istype(W, /obj/item/stack/cable_coil) && (machine_stat & BROKEN) && panel_open) var/obj/item/stack/cable_coil/coil = W if (coil.get_amount() < 1) - to_chat(user, "You need one length of cable to repair [src]!") + to_chat(user, span_warning("You need one length of cable to repair [src]!")) return - to_chat(user, "You begin to replace the wires...") + to_chat(user, span_notice("You begin to replace the wires...")) if(do_after(user, 30, target = src)) if(coil.get_amount() < 1) return coil.use(1) obj_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) - to_chat(user, "You repair \the [src].") + to_chat(user, span_notice("You repair \the [src].")) update_appearance() else if(W.tool_behaviour == TOOL_WRENCH) if(locked) - to_chat(user, "The bolts are covered! Unlocking this would retract the covers.") + to_chat(user, span_warning("The bolts are covered! Unlocking this would retract the covers.")) return if(!anchored && !isinspace()) W.play_tool_sound(src, 100) - to_chat(user, "You secure \the [src] to the floor!") + to_chat(user, span_notice("You secure \the [src] to the floor!")) set_anchored(TRUE) else if(anchored) W.play_tool_sound(src, 100) - to_chat(user, "You unsecure \the [src] from the floor!") + to_chat(user, span_notice("You unsecure \the [src] from the floor!")) if(active) - to_chat(user, "\The [src] shuts off!") + to_chat(user, span_notice("\The [src] shuts off!")) shields_down() set_anchored(FALSE) else if(W.GetID()) if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked - to_chat(user, "You [locked ? "lock" : "unlock"] the controls.") + to_chat(user, span_notice("You [locked ? "lock" : "unlock"] the controls.")) else if(obj_flags & EMAGGED) - to_chat(user, "Error, access controller damaged!") + to_chat(user, span_danger("Error, access controller damaged!")) else - to_chat(user, "Access denied.") + to_chat(user, span_danger("Access denied.")) else return ..() /obj/machinery/shieldgen/emag_act(mob/user) if(obj_flags & EMAGGED) - to_chat(user, "The access controller is damaged!") + to_chat(user, span_warning("The access controller is damaged!")) return obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - to_chat(user, "You short out the access controller.") + to_chat(user, span_warning("You short out the access controller.")) /obj/machinery/shieldgen/update_icon_state() icon_state = "shield[active ? "on" : "off"][(machine_stat & BROKEN) ? "br" : null]" @@ -275,9 +273,7 @@ if(!active_power_usage || surplus() >= active_power_usage) add_load(active_power_usage) else - visible_message("The [src.name] shuts down due to lack of power!", \ - "If this message is ever seen, something is wrong.", - "You hear heavy droning fade out.") + visible_message(span_danger("The [src.name] shuts down due to lack of power!"), "If this message is ever seen, something is wrong.",span_hear("You hear heavy droning fade out.Turn off the shield generator first!") + to_chat(user, span_warning("Turn off the shield generator first!")) return FAILED_UNFASTEN return ..() @@ -388,11 +384,11 @@ if(item.GetID()) if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked - to_chat(user, "You [src.locked ? "lock" : "unlock"] the controls.") + to_chat(user, span_notice("You [src.locked ? "lock" : "unlock"] the controls.")) else if(obj_flags & EMAGGED) - to_chat(user, "Error, access controller damaged!") + to_chat(user, span_danger("Error, access controller damaged!")) else - to_chat(user, "Access denied.") + to_chat(user, span_danger("Access denied.")) else add_fingerprint(user) @@ -406,25 +402,23 @@ shock(user,50) return if(!anchored) - to_chat(user, "\The [src] needs to be firmly secured to the floor first!") + to_chat(user, span_warning("\The [src] needs to be firmly secured to the floor first!")) return if(locked && !issilicon(user)) - to_chat(user, "The controls are locked!") + to_chat(user, span_warning("The controls are locked!")) return if(!powernet) - to_chat(user, "\The [src] needs to be powered by a wire!") + to_chat(user, span_warning("\The [src] needs to be powered by a wire!")) return if(active) - user.visible_message("[user] turned \the [src] off.", \ - "You turn off \the [src].", \ - "You hear heavy droning fade out.") + user.visible_message(span_notice("[user] turned \the [src] off."), \ + span_notice("You turn off \the [src]."), \ + span_hear("You hear heavy droning fade out.")) active = FALSE log_game("[src] was deactivated by [key_name(user)] at [AREACOORD(src)]") else - user.visible_message("[user] turned \the [src] on.", \ - "You turn on \the [src].", \ - "You hear heavy droning.") + user.visible_message(span_notice("[user] turned \the [src] on."), span_notice("ou turn on \the [src]."), span_hear("ou hear heavy droning.")) active = ACTIVE_SETUPFIELDS log_game("[src] was activated by [key_name(user)] at [AREACOORD(src)]") add_fingerprint(user) @@ -435,28 +429,28 @@ if(!powernet) return if(active) - visible_message("The [src.name] hums as it powers down.", \ + visible_message(span_notice("The [src.name] hums as it powers down."), \ "If this message is ever seen, something is wrong.", \ - "You hear heavy droning fade out.") + span_notice("You hear heavy droning fade out.")) playsound(src, 'sound/machines/synth_no.ogg', 50, TRUE, frequency = 6120) active = FALSE log_game("[src] was deactivated by wire pulse at [AREACOORD(src)]") else - visible_message("The [src.name] beeps as it powers up.", \ + visible_message(span_notice("The [src.name] beeps as it powers up."), \ "If this message is ever seen, something is wrong.", \ - "You hear heavy droning.") + span_notice("You hear heavy droning.")) playsound(src, 'sound/machines/synth_yes.ogg', 50, TRUE, frequency = 6120) active = ACTIVE_SETUPFIELDS log_game("[src] was activated by wire pulse at [AREACOORD(src)]") /obj/machinery/power/shieldwallgen/emag_act(mob/user) if(obj_flags & EMAGGED) - to_chat(user, "The access controller is damaged!") + to_chat(user, span_warning("The access controller is damaged!")) return obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - to_chat(user, "You short out the access controller.") + to_chat(user, span_warning("You short out the access controller.")) /obj/machinery/power/shieldwallgen/proc/shock(mob/user, prb) if(machine_stat & (BROKEN|NOPOWER)) // unpowered, no shock @@ -511,10 +505,31 @@ /obj/machinery/power/shieldwallgen/atmos/proc/can_be_rotated(mob/user, rotation_type) if (anchored) - to_chat(user, "It is fastened to the floor!") + to_chat(user, span_warning("It is fastened to the floor!")) return FALSE return TRUE +/obj/machinery/power/shieldwallgen/atmos/attacked_by(obj/item/I, mob/living/user) + if(I.tool_behaviour == TOOL_MULTITOOL) + var/obj/item/multitool/multi = I + if(!panel_open && !locked) + if(istype(multi.buffer,/obj/item/assembly/control/shieldwallgen)) + var/obj/item/assembly/control/shieldwallgen/controller = multi.buffer + to_chat(user, span_notice("You copy the ID in your multitool's buffer to the [src].")) + id = controller.id + return TRUE + + else + to_chat(user, span_warning("The controls are locked!")) + return + + return ..() + +/obj/machinery/power/shieldwallgen/atmos/multitool_act(mob/living/user, obj/item/I) + . = ..() + + + /// Same as in the normal shieldwallgen, but with the shieldwalls replaced with atmos shieldwalls /obj/machinery/power/shieldwallgen/atmos/setup_field(direction) if(!direction) @@ -586,7 +601,7 @@ setDir(get_dir(gen_primary, gen_secondary)) if(hardshield == TRUE) for(var/mob/living/victim in get_turf(src)) - visible_message("\The [src] is suddenly occupying the same space as \the [victim]!") + visible_message(span_danger("\The [src] is suddenly occupying the same space as \the [victim]!")) victim.gib() /obj/machinery/shieldwall/Destroy() diff --git a/code/game/machinery/shuttle/shuttle_engine_types.dm b/code/game/machinery/shuttle/shuttle_engine_types.dm index e5e3d812c098..de9992e106d1 100644 --- a/code/game/machinery/shuttle/shuttle_engine_types.dm +++ b/code/game/machinery/shuttle/shuttle_engine_types.dm @@ -29,7 +29,7 @@ if(heat_creation) heat_engine() var/to_use = fuel_use * (percentage / 100) * deltatime - return resolved_heater.consume_fuel(to_use, fuel_type) / to_use * thrust //This proc returns how much was actually burned, so let's use that and multiply it by the thrust to get all the thrust we CAN give. + return resolved_heater.consume_fuel(to_use, fuel_type) / to_use * percentage / 100 * thrust //This proc returns how much was actually burned, so let's use that and multiply it by the thrust to get all the thrust we CAN give. /obj/machinery/power/shuttle/engine/fueled/return_fuel() . = ..() diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 960df9263c81..ed734453202b 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -1,3 +1,5 @@ +#define BASE_UV_CYCLES 7 + // SUIT STORAGE UNIT ///////////////// /obj/machinery/suit_storage_unit name = "suit storage unit" @@ -9,6 +11,7 @@ use_power = IDLE_POWER_USE idle_power_usage = IDLE_DRAW_MINIMAL max_integrity = 250 + circuit = /obj/item/circuitboard/machine/suit_storage_unit var/obj/item/clothing/suit/space/suit = null var/obj/item/clothing/head/helmet/space/helmet = null @@ -42,7 +45,9 @@ */ var/uv_super = FALSE /// How many cycles remain for the decontamination sequence. - var/uv_cycles = 6 + var/uv_cycles = 7 + /// Time reduction from stock parts + var/lasers_bonus = 0 /// Cooldown for occupant breakout messages via relaymove() var/message_cooldown /// How long it takes to break out of the SSU. @@ -193,6 +198,19 @@ storage = new storage_type(src) update_appearance() +/obj/machinery/suit_storage_unit/examine(mob/user) + . = ..() + . += span_notice("Number of UV cycles reduced by [lasers_bonus].") + if(locked) + . += span_notice("The locking bolts on \the [src] are engaged, preventing it from being pried open.") + +/obj/machinery/suit_storage_unit/RefreshParts() + lasers_bonus = 0 + for(var/obj/item/stock_parts/micro_laser/lasers in component_parts) + lasers_bonus += ((lasers.rating) * 0.25) + + uv_cycles = BASE_UV_CYCLES - lasers_bonus + /obj/machinery/suit_storage_unit/Destroy() QDEL_NULL(suit) QDEL_NULL(helmet) @@ -252,7 +270,15 @@ if(!(flags_1 & NODECONSTRUCT_1)) open_machine() dump_contents() - new /obj/item/stack/sheet/metal (loc, 2) + on_deconstruction() + if(circuit) + circuit.forceMove(loc) + circuit = null + if(length(component_parts)) + spawn_frame(disassembled) + for(var/obj/item/I in component_parts) + I.forceMove(loc) + component_parts.Cut() qdel(src) /obj/machinery/suit_storage_unit/interact(mob/living/user) @@ -320,7 +346,7 @@ else if (occupant) var/mob/living/mob_occupant = occupant - to_chat(mob_occupant, "[src]'s confines grow warm, then hot, then scorching. You're being burned [!mob_occupant.stat ? "alive" : "away"]!") + to_chat(mob_occupant, span_userdanger("[src]'s confines grow warm, then hot, then scorching. You're being burned [!mob_occupant.stat ? "alive" : "away"]!")) cook() if ("lock", "unlock") if (!state_open) @@ -366,27 +392,27 @@ return var/mob/living/target = A if(!state_open) - to_chat(user, "The unit's doors are shut!") + to_chat(user, span_warning("The unit's doors are shut!")) return if(!is_operational) - to_chat(user, "The unit is not operational!") + to_chat(user, span_warning("The unit is not operational!")) return if(occupant || helmet || suit || storage) - to_chat(user, "It's too cluttered inside to fit in!") + to_chat(user, span_warning("It's too cluttered inside to fit in!")) return if(target == user) - user.visible_message("[user] starts squeezing into [src]!", "You start working your way into [src]...") + user.visible_message(span_warning("[user] starts squeezing into [src]!"), span_notice("You start working your way into [src]...")) else - target.visible_message("[user] starts shoving [target] into [src]!", "[user] starts shoving you into [src]!") + target.visible_message(span_warning("[user] starts shoving [target] into [src]!"), span_userdanger("[user] starts shoving you into [src]!")) if(do_mob(user, target, 30)) if(occupant || helmet || suit || storage) return if(target == user) - user.visible_message("[user] slips into [src] and closes the door behind [user.p_them()]!", "You slip into [src]'s cramped space and shut its door.") + user.visible_message(span_warning("[user] slips into [src] and closes the door behind [user.p_them()]!"), span_notice("You slip into [src]'s cramped space and shut its door.")) else - target.visible_message("[user] pushes [target] into [src] and shuts its door!", "[user] shoves you into [src] and shuts the door!") + target.visible_message(span_warning("[user] pushes [target] into [src] and shuts its door!"), span_userdanger("[user] shoves you into [src] and shuts the door!")) close_machine(target) add_fingerprint(user) @@ -400,7 +426,7 @@ */ /obj/machinery/suit_storage_unit/proc/cook() var/mob/living/mob_occupant = occupant - if(uv_cycles) + if(uv_cycles > 0) uv_cycles-- uv = TRUE locked = TRUE @@ -414,11 +440,11 @@ mob_occupant.emote("scream") addtimer(CALLBACK(src, PROC_REF(cook)), 50) else - uv_cycles = initial(uv_cycles) + uv_cycles = (BASE_UV_CYCLES - lasers_bonus) uv = FALSE locked = FALSE if(uv_super) - visible_message("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber.") + visible_message(span_warning("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber.")) playsound(src, 'sound/machines/creaking.ogg', 50, TRUE) helmet = null qdel(helmet) @@ -432,9 +458,9 @@ wires.cut_all() else if(!occupant) - visible_message("[src]'s door slides open. The glowing yellow lights dim to a gentle green.") + visible_message(span_notice("[src]'s door slides open. The glowing yellow lights dim to a gentle green.")) else - visible_message("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.") + visible_message(span_warning("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.")) mob_occupant.radiation = 0 playsound(src, 'sound/machines/airlocks/standard/close.ogg', 25, TRUE) var/list/things_to_clear = list() //Done this way since using GetAllContents on the SSU itself would include circuitry and such. @@ -472,7 +498,7 @@ if(locked) if(message_cooldown <= world.time) message_cooldown = world.time + 50 - to_chat(user, "[src]'s door won't budge!") + to_chat(user, span_warning("[src]'s door won't budge!")) return open_machine() dump_contents() @@ -484,21 +510,21 @@ return user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message("You see [user] kicking against the doors of [src]!", \ - "You start kicking against the doors... (this will take about [DisplayTimeText(breakout_time)].)", \ - "You hear a thump from [src].") + user.visible_message(span_notice("You see [user] kicking against the doors of [src]!"), \ + span_notice("You start kicking against the doors... (this will take about [DisplayTimeText(breakout_time)].)"), \ + span_hear("You hear a thump from [src].")) if(do_after(user,(breakout_time), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src) return - user.visible_message("[user] successfully broke out of [src]!", \ - "You successfully break out of [src]!") + user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ + span_notice("You successfully break out of [src]!")) open_machine() dump_contents() add_fingerprint(user) if(locked) - visible_message("You see [user] kicking against the doors of [src]!", \ - "You start kicking against the doors...") + visible_message(span_notice("You see [user] kicking against the doors of [src]!"), \ + span_notice("You start kicking against the doors...")) addtimer(CALLBACK(src, PROC_REF(resist_open), user), 300) else open_machine() @@ -506,42 +532,42 @@ /obj/machinery/suit_storage_unit/proc/resist_open(mob/user) if(!state_open && occupant && (user in src) && user.stat == 0) // Check they're still here. - visible_message("You see [user] burst out of [src]!", \ - "You escape the cramped confines of [src]!") + visible_message(span_notice("You see [user] burst out of [src]!"), \ + span_notice("You escape the cramped confines of [src]!")) open_machine() /obj/machinery/suit_storage_unit/attackby(obj/item/I, mob/user, params) if(state_open && is_operational) if(istype(I, /obj/item/clothing/suit)) if(suit) - to_chat(user, "The unit already contains a suit!.") + to_chat(user, span_warning("The unit already contains a suit!.")) return if(!user.transferItemToLoc(I, src)) return suit = I else if(istype(I, /obj/item/clothing/head)) if(helmet) - to_chat(user, "The unit already contains a helmet!") + to_chat(user, span_warning("The unit already contains a helmet!")) return if(!user.transferItemToLoc(I, src)) return helmet = I else if(istype(I, /obj/item/clothing/mask)) if(mask) - to_chat(user, "The unit already contains a mask!") + to_chat(user, span_warning("The unit already contains a mask!")) return if(!user.transferItemToLoc(I, src)) return mask = I else if(storage) - to_chat(user, "The auxiliary storage compartment is full!") + to_chat(user, span_warning("The auxiliary storage compartment is full!")) return if(!user.transferItemToLoc(I, src)) return storage = I - visible_message("[user] inserts [I] into [src]", "You load [I] into [src].") + visible_message(span_notice("[user] inserts [I] into [src]"), span_notice("You load [I] into [src].")) update_appearance() return @@ -564,7 +590,7 @@ */ /obj/machinery/suit_storage_unit/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/I) if(!(flags_1 & NODECONSTRUCT_1) && I.tool_behaviour == TOOL_SCREWDRIVER && uv) - to_chat(user, "It might not be wise to fiddle with [src] while it's running...") + to_chat(user, span_warning("It might not be wise to fiddle with [src] while it's running...")) return TRUE return ..() @@ -573,8 +599,12 @@ . = !(state_open || panel_open || is_operational || locked || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR if(.) I.play_tool_sound(src, 50) - visible_message("[usr] pries open \the [src].", "You pry open \the [src].") + visible_message(span_notice("[usr] pries open \the [src]."), span_notice("You pry open \the [src].")) open_machine() + // todo, make it not deconstruct while locked + if(!locked) + if(default_deconstruction_crowbar(I)) + return TRUE // Mapping helper unit takes whatever lies on top of it /obj/machinery/suit_storage_unit/inherit/Initialize(mapload) @@ -599,3 +629,6 @@ AM.forceMove(src) storage = AM update_appearance() + + +#undef BASE_UV_CYCLES diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 75cc7c0556fb..7e64ce658e8b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -202,6 +202,10 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb var/canMouseDown = FALSE + //for setting world icons on the go + var/inventory_state + var/world_state + /obj/item/Initialize() if(attack_verb) @@ -518,12 +522,12 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item/proc/equipped(mob/user, slot, initial = FALSE) SHOULD_CALL_PARENT(1) visual_equipped(user, slot, initial) - SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED, user, slot) for(var/X in actions) var/datum/action/A = X if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot. A.Grant(user) item_flags |= IN_INVENTORY + SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED, user, slot) if(!initial) if(equip_sound && (slot_flags & slot)) playsound(src, equip_sound, EQUIP_SOUND_VOLUME, TRUE, ignore_walls = FALSE) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 1b8ffef10cd5..1a4a57d5cbb1 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1543,3 +1543,9 @@ /obj/item/stock_parts/capacitor = 1, /obj/item/stock_parts/micro_laser = 2, ) + +/obj/item/circuitboard/machine/suit_storage_unit + name = "Suit Storage Unit" + icon_state = "engineering" + build_path = /obj/machinery/suit_storage_unit + req_components = list(/obj/item/stock_parts/micro_laser = 4) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 1475ae88f8dd..c8c9a0f96b96 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -179,6 +179,7 @@ /obj/item/kitchen/knife/combat name = "combat knife" + icon = 'icons/obj/world/melee.dmi' icon_state = "combatknife" item_state = "combatknife" desc = "A military combat utility survival knife." @@ -188,6 +189,10 @@ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") bayonet = TRUE +/obj/item/kitchen/knife/combat/Initialize() + . = ..() + AddElement(/datum/element/world_icon, null, icon, 'icons/obj/kitchen.dmi') + /obj/item/kitchen/knife/combat/survival name = "survival knife" icon_state = "survivalknife" diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index e3ef63e116d4..9fc6fa808a46 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -332,32 +332,6 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ /obj/item/stack/sheet/mineral/silver/five amount = 5 -/* - * Clown - */ -/obj/item/stack/sheet/mineral/bananium - name = "bananium" - icon_state = "sheet-bananium" - item_state = "sheet-bananium" - singular_name = "bananium sheet" - sheettype = "bananium" - custom_materials = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT) - - grind_results = list(/datum/reagent/consumable/banana = 20) - point_value = 50 - merge_type = /obj/item/stack/sheet/mineral/bananium - material_type = /datum/material/bananium - walltype = /turf/closed/wall/mineral/bananium - -GLOBAL_LIST_INIT(bananium_recipes, list ( \ - new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \ - new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \ - )) - -/obj/item/stack/sheet/mineral/bananium/get_main_recipes() - . = ..() - . += GLOB.bananium_recipes - /* * Titanium */ @@ -436,7 +410,6 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ . = ..() . += GLOB.plastitanium_recipes - /* * Snow */ @@ -465,56 +438,6 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \ . = ..() . += GLOB.snow_recipes -/****************************** Others ****************************/ - -/* - * Adamantine -*/ - -/obj/item/stack/sheet/mineral/adamantine - name = "adamantine" - icon_state = "sheet-adamantine" - item_state = "sheet-adamantine" - singular_name = "adamantine sheet" - custom_materials = list(/datum/material/adamantine=MINERAL_MATERIAL_AMOUNT) - merge_type = /obj/item/stack/sheet/mineral/adamantine - grind_results = list(/datum/reagent/liquidadamantine = 10) - -/obj/item/stack/sheet/mineral/adamantine/ten - amount = 10 - -/* - * Runite - */ - -/obj/item/stack/sheet/mineral/runite - name = "runite" - desc = "Rare material found in distant lands." - singular_name = "runite bar" - icon_state = "sheet-runite" - item_state = "sheet-runite" - custom_materials = list(/datum/material/runite=MINERAL_MATERIAL_AMOUNT) - merge_type = /obj/item/stack/sheet/mineral/runite - material_type = /datum/material/runite - -/obj/item/stack/sheet/mineral/runite/ten - amount = 10 - -/* - * Mythril - */ -/obj/item/stack/sheet/mineral/mythril - name = "mythril" - icon_state = "sheet-mythril" - item_state = "sheet-mythril" - singular_name = "mythril sheet" - novariants = TRUE - custom_materials = list(/datum/material/mythril=MINERAL_MATERIAL_AMOUNT) - merge_type = /obj/item/stack/sheet/mineral/mythril - -/obj/item/stack/sheet/mineral/mythril/ten - amount = 10 - /* * Alien Alloy */ @@ -573,3 +496,35 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ /obj/item/stack/sheet/mineral/coal/ten amount = 10 + +/* + * Hellstone + */ +/obj/item/stack/sheet/mineral/hidden + name = "????????" + singular_name = "????????" + +/obj/item/stack/sheet/mineral/hidden/hellstone + name = "hellstone" + icon_state = "sheet-hellstone" + item_state = "sheet-hellstone" + singular_name = "hellstone bar" + sheettype = "hellstone" + resistance_flags = FIRE_PROOF | LAVA_PROOF + custom_materials = list(/datum/material/hellstone=MINERAL_MATERIAL_AMOUNT) + grind_results = list(/datum/reagent/clf3 = 5) + point_value = 20 + merge_type = /obj/item/stack/sheet/mineral/hidden/hellstone + material_type = /datum/material/hellstone + +/obj/item/stack/sheet/mineral/hidden/hellstone/fifty + amount = 50 + +/obj/item/stack/sheet/mineral/hidden/hellstone/twenty + amount = 20 + +/obj/item/stack/sheet/mineral/hidden/hellstone/ten + amount = 10 + +/obj/item/stack/sheet/mineral/hidden/hellstone/five + amount = 5 diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 00f995ed70dd..68a6772bb4e4 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -31,10 +31,6 @@ tableVariant = /obj/structure/table material_type = /datum/material/iron -/obj/item/stack/sheet/metal/narsie_act() - new /obj/item/stack/sheet/runed_metal(loc, amount) - qdel(src) - /obj/item/stack/sheet/metal/fifty amount = 50 @@ -444,52 +440,6 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ else . = ..() - -/* - * Runed Metal - */ - -GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ - new/datum/stack_recipe("runed door", /obj/machinery/door/airlock/cult, 1, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("runed girder", /obj/structure/girder/cult, 1, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("pylon", /obj/structure/destructible/cult/pylon, 4, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("forge", /obj/structure/destructible/cult/forge, 3, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("archives", /obj/structure/destructible/cult/tome, 3, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("altar", /obj/structure/destructible/cult/talisman, 3, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ - )) - -/obj/item/stack/sheet/runed_metal - name = "runed metal" - desc = "Sheets of cold metal with shifting inscriptions writ upon them." - singular_name = "runed metal sheet" - icon_state = "sheet-runed" - item_state = "sheet-runed" - icon = 'icons/obj/stack_objects.dmi' - custom_materials = list(/datum/material/runedmetal = MINERAL_MATERIAL_AMOUNT) - merge_type = /obj/item/stack/sheet/runed_metal - novariants = TRUE - grind_results = list(/datum/reagent/iron = 5, /datum/reagent/blood = 15) - material_type = /datum/material/runedmetal - -/obj/item/stack/sheet/runed_metal/attack_self(mob/living/user) - if(!iscultist(user)) - to_chat(user, "Only one with forbidden knowledge could hope to work this metal...") - return FALSE - return ..() - -/obj/item/stack/sheet/runed_metal/get_main_recipes() - . = ..() - . += GLOB.runed_metal_recipes - -/obj/item/stack/sheet/runed_metal/fifty - amount = 50 - -/obj/item/stack/sheet/runed_metal/ten - amount = 10 - -/obj/item/stack/sheet/runed_metal/five - amount = 5 - /* * Bronze */ diff --git a/code/game/objects/items/stacks/tiles/tile_mineral.dm b/code/game/objects/items/stacks/tiles/tile_mineral.dm index c5e05b5212fc..ad00f3902c50 100644 --- a/code/game/objects/items/stacks/tiles/tile_mineral.dm +++ b/code/game/objects/items/stacks/tiles/tile_mineral.dm @@ -48,16 +48,6 @@ mineralType = "diamond" custom_materials = list(/datum/material/diamond=500) -/obj/item/stack/tile/mineral/bananium - name = "bananium tile" - singular_name = "bananium floor tile" - desc = "A tile made out of bananium, HOOOOOOOOONK!" - icon_state = "tile_bananium" - item_state = "tile-bananium" - turf_type = /turf/open/floor/mineral/bananium - mineralType = "bananium" - custom_materials = list(/datum/material/bananium=500) - /obj/item/stack/tile/mineral/abductor name = "alien floor tile" singular_name = "alien floor tile" diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index fb001b2eb56b..a7fdbc05691a 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1370,10 +1370,10 @@ /obj/item/stack/sheet/mineral/uranium=20,\ /obj/item/stack/sheet/mineral/diamond=50,\ /obj/item/stack/sheet/bluespace_crystal=50,\ - /obj/item/stack/sheet/mineral/bananium=50,\ + /obj/item/stack/sheet/mineral/hidden/hellstone=50,\ /obj/item/stack/sheet/mineral/wood=50,\ /obj/item/stack/sheet/plastic/fifty=1,\ - /obj/item/stack/sheet/runed_metal/fifty=1 + /obj/item/stack/sheet/mineral/hidden/hellstone/fifty=1 ) generate_items_inside(items_inside,src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index a11e647a706d..f3aca3e96a98 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -5,11 +5,9 @@ /obj/structure/closet/secure_closet/engineering_chief/PopulateContents() ..() - //WS Begin new /obj/item/clothing/head/beret/ce(src) //Berets new /obj/item/clothing/under/rank/command(src) //Better command uniforms new /obj/item/stack/tape/industrial/pro(src) //Better tape - //WS End new /obj/item/clothing/neck/cloak/ce(src) new /obj/item/clothing/under/rank/engineering/chief_engineer(src) new /obj/item/clothing/under/rank/engineering/chief_engineer/skirt(src) @@ -40,9 +38,7 @@ /obj/structure/closet/secure_closet/engineering_electrical/PopulateContents() ..() var/static/items_inside = list( - //WS Begin /obj/item/stack/tape/industrial/electrical = 1, // Better tape - //WS End /obj/item/clothing/gloves/color/yellow = 2, /obj/item/storage/toolbox/electrical = 3, /obj/item/electronics/apc = 3, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index cfdcca348b14..6c01be326e7a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -79,13 +79,11 @@ /obj/structure/closet/secure_closet/CMO/PopulateContents() ..() - //WS Begin new /obj/item/storage/belt/medical(src) //Gives the CMO a belt new /obj/item/storage/bag/medical(src) //Medibags new /obj/item/clothing/head/beret/cmo(src) //Berets new /obj/item/clothing/under/rank/command(src) //Better command uniforms new /obj/item/storage/box/hypospray/CMO(src) //Hypo mk. 2s - //WS End new /obj/item/clothing/neck/cloak/cmo(src) new /obj/item/clothing/suit/bio_suit/cmo(src) new /obj/item/clothing/head/bio_hood/cmo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index ee9a29945aa0..fc0aae860782 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -105,7 +105,7 @@ /obj/item/stack/sheet/mineral/plasma, /obj/item/stack/sheet/mineral/uranium, /obj/item/stack/sheet/mineral/diamond, - /obj/item/stack/sheet/mineral/bananium, + /obj/item/stack/sheet/mineral/hidden/hellstone, /obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/mineral/titanium, /obj/item/stack/sheet/mineral/plastitanium, diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm index 2558993a5278..d2bcf77cfda7 100644 --- a/code/game/objects/structures/door_assembly_types.dm +++ b/code/game/objects/structures/door_assembly_types.dm @@ -214,14 +214,6 @@ mineral = "plasma" glass_type = /obj/machinery/door/airlock/plasma/glass -/obj/structure/door_assembly/door_assembly_bananium - name = "bananium airlock assembly" - desc = "Honk." - icon = 'icons/obj/doors/airlocks/station/bananium.dmi' - base_name = "bananium airlock" - airlock_type = /obj/machinery/door/airlock/bananium - mineral = "bananium" - glass_type = /obj/machinery/door/airlock/bananium/glass /obj/structure/door_assembly/door_assembly_sandstone name = "sandstone airlock assembly" diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index a0097504c1d3..d5a8c3e496c1 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -269,19 +269,6 @@ if(exposed_temperature > 300) burnbabyburn() -/obj/structure/falsewall/bananium - name = "bananium wall" - desc = "A wall with bananium plating. Honk!" - icon = 'icons/turf/walls/bananium_wall.dmi' - icon_state = "bananium_wall-0" - base_icon_state = "bananium_wall" - mineral = /obj/item/stack/sheet/mineral/bananium - walltype = /turf/closed/wall/mineral/bananium - smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS) - canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS) - - /obj/structure/falsewall/sandstone name = "sandstone wall" desc = "A wall with sandstone plating. Rough." diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 25822d69ff00..6463282eb6df 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -364,7 +364,7 @@ add_fingerprint(user) if(istype(W, /obj/item/melee/cultblade/dagger) && iscultist(user)) //Cultists can demolish cult girders instantly with their tomes user.visible_message("[user] strikes [src] with [W]!", "You demolish [src].") - new /obj/item/stack/sheet/runed_metal(drop_location(), 1) + new /obj/item/stack/sheet/mineral/hidden/hellstone(drop_location(), 1) qdel(src) else if(W.tool_behaviour == TOOL_WELDER) @@ -374,19 +374,19 @@ to_chat(user, "You start slicing apart the girder...") if(W.use_tool(src, user, 40, volume=50)) to_chat(user, "You slice apart the girder.") - var/obj/item/stack/sheet/runed_metal/R = new(drop_location(), 1) + var/obj/item/stack/sheet/mineral/hidden/hellstone/R = new(drop_location(), 1) transfer_fingerprints_to(R) qdel(src) else if(istype(W, /obj/item/pickaxe/drill/jackhammer)) to_chat(user, "Your jackhammer smashes through the girder!") - var/obj/item/stack/sheet/runed_metal/R = new(drop_location(), 2) + var/obj/item/stack/sheet/mineral/hidden/hellstone/R = new(drop_location(), 2) transfer_fingerprints_to(R) W.play_tool_sound(src) qdel(src) - else if(istype(W, /obj/item/stack/sheet/runed_metal)) - var/obj/item/stack/sheet/runed_metal/R = W + else if(istype(W, /obj/item/stack/sheet/mineral/hidden/hellstone)) + var/obj/item/stack/sheet/mineral/hidden/hellstone/R = W if(R.get_amount() < 1) to_chat(user, "You need at least one sheet of runed metal to construct a runed wall!") return 0 @@ -408,7 +408,7 @@ /obj/structure/girder/cult/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) - new /obj/item/stack/sheet/runed_metal(drop_location(), 1) + new /obj/item/stack/sheet/mineral/hidden/hellstone(drop_location(), 1) qdel(src) /obj/structure/girder/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index 2eff7f22567e..33f02ef0dc0d 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -5,7 +5,6 @@ GLOBAL_LIST_INIT(ore_probability, list( /obj/item/stack/ore/silver = 50, /obj/item/stack/ore/gold = 50, /obj/item/stack/ore/diamond = 25, - /obj/item/stack/ore/bananium = 5, /obj/item/stack/ore/titanium = 75, /obj/item/pickaxe/diamond = 15, /obj/item/borg/upgrade/modkit/cooldown = 5, @@ -258,8 +257,7 @@ GLOBAL_LIST_INIT(ore_probability, list( new /mob/living/simple_animal/hostile/clown/fleshclown(loc) if(prob(25))//you lost new /obj/item/circlegame(loc) - new /obj/item/stack/sheet/mineral/bananium(loc) - new /turf/open/floor/mineral/bananium(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone(loc) if(2)//basic demonic incursion visible_message("You glimpse an indescribable abyss in the portal. Horrifying monsters appear in a gout of flame.") playsound(loc,'sound/hallucinations/wail.ogg', 200, FALSE, 50, TRUE, TRUE) @@ -618,19 +616,19 @@ GLOBAL_LIST_INIT(ore_probability, list( visible_message("You catch a brief glimpse of a vast production complex. One of the assembly lines outputs through the portal!") playsound(loc,'sound/ambience/antag/clockcultalr.ogg', 100, FALSE, 50, TRUE, TRUE) if(prob(45)) - new /obj/item/stack/sheet/mineral/adamantine/ten(loc) - new /obj/item/stack/sheet/mineral/runite/ten(loc) - new /obj/item/stack/sheet/mineral/mythril/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) new /mob/living/simple_animal/hostile/hivebot(loc) if(prob(35)) - new /obj/item/stack/sheet/mineral/adamantine/ten(loc) - new /obj/item/stack/sheet/mineral/runite/ten(loc) - new /obj/item/stack/sheet/mineral/mythril/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) new /mob/living/simple_animal/hostile/hivebot(loc) if(prob(25)) - new /obj/item/stack/sheet/mineral/adamantine/ten(loc) - new /obj/item/stack/sheet/mineral/runite/ten(loc) - new /obj/item/stack/sheet/mineral/mythril/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) new /mob/living/simple_animal/hostile/hivebot/strong(loc) if(prob(35)) new /obj/item/stack/sheet/mineral/silver/twenty(loc) @@ -665,9 +663,9 @@ GLOBAL_LIST_INIT(ore_probability, list( new /obj/item/circuitboard/machine/ore_silo(loc) new /mob/living/simple_animal/hostile/hivebot/mechanic(loc) if(prob(35)) - new /obj/item/stack/sheet/mineral/adamantine/ten(loc) - new /obj/item/stack/sheet/mineral/runite/ten(loc) - new /obj/item/stack/sheet/mineral/mythril/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) new /mob/living/simple_animal/hostile/hivebot/strong(loc) if(prob(35)) new /obj/item/circuitboard/machine/medipen_refiller(loc) @@ -837,7 +835,7 @@ GLOBAL_LIST_INIT(ore_probability, list( new /obj/item/bedsheet/cult(loc) new /mob/living/simple_animal/hostile/construct/wraith/hostile(loc) if(prob(50)) - new /obj/item/stack/sheet/runed_metal/ten(loc) + new /obj/item/stack/sheet/mineral/hidden/hellstone/ten(loc) if(prob(35)) new /obj/item/sharpener/cult(loc) new /mob/living/simple_animal/hostile/construct/artificer/hostile(loc) diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index 9773221f0c22..c3c8e07cc3ab 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -5,7 +5,7 @@ GLOBAL_LIST_INIT(astroloot, list( /obj/item/stack/ore/silver = 50, /obj/item/stack/ore/gold = 50, /obj/item/stack/ore/diamond = 25, - /obj/item/stack/ore/bananium = 5, + /obj/item/stack/ore/hellstone = 5, /obj/item/stack/ore/titanium = 75, /obj/item/pickaxe/diamond = 15, /obj/item/borg/upgrade/modkit/cooldown = 5, diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 642c2c2efdd4..9f51ba34476a 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -224,7 +224,7 @@ /obj/structure/statue/bananium max_integrity = 300 - material_drop_type = /obj/item/stack/sheet/mineral/bananium + material_drop_type = /obj/item/stack/sheet/mineral/hidden/hellstone impressiveness = 50 desc = "A bananium statue with a small engraving:'HOOOOOOONK'." var/spam_flag = 0 diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index cfede10541d4..bb5d6f7311c0 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -86,47 +86,6 @@ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS) canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS) -/turf/closed/indestructible/riveted/supermatter - name = "wall" - desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern." - icon = 'icons/turf/walls/bananium_wall.dmi' - icon_state = "bananium_wall-0" - base_icon_state = "bananium_wall" - smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS) - canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS) - -/turf/closed/indestructible/riveted/supermatter/Bumped(atom/movable/AM) - if(isliving(AM)) - AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [AM.p_their()] body starts to glow and burst into flames before flashing into dust!",\ - "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ - "You hear an unearthly noise as a wave of heat washes over you.") - else if(isobj(AM) && !iseffect(AM)) - AM.visible_message("\The [AM] smacks into \the [src] and rapidly flashes to ash.", null,\ - "You hear a loud crack as you are washed with a wave of heat.") - else - return - - playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, TRUE) - Consume(AM) - -/turf/closed/indestructible/riveted/supermatter/proc/Consume(atom/movable/AM) - if(isliving(AM)) - var/mob/living/user = AM - if(user.status_flags & GODMODE) - return - message_admins("[src] has consumed [key_name_admin(user)] [ADMIN_JMP(src)].") - investigate_log("has consumed [key_name(user)].", INVESTIGATE_SUPERMATTER) - user.dust(force = TRUE) - else if(isobj(AM)) - if(!iseffect(AM)) - var/suspicion = "" - if(AM.fingerprintslast) - suspicion = "last touched by [AM.fingerprintslast]" - message_admins("[src] has consumed [AM], [suspicion] [ADMIN_JMP(src)].") - investigate_log("has consumed [AM] - [suspicion].", INVESTIGATE_SUPERMATTER) - qdel(AM) - /turf/closed/indestructible/syndicate icon = 'icons/turf/walls/plastitanium_wall.dmi' icon_state = "plastitanium_wall-0" diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index ab46afa7e884..370afeaeedf2 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -281,14 +281,13 @@ light_range = 2 light_power = 1 - /turf/closed/mineral/random/snow/underground baseturfs = /turf/open/floor/plating/asteroid/snow/icemoon // abundant ore mineralChance = 10 mineralSpawnChanceList = list( /obj/item/stack/ore/uranium = 10, /obj/item/stack/ore/diamond = 4, /obj/item/stack/ore/gold = 20, /obj/item/stack/ore/titanium = 22, - /obj/item/stack/ore/silver = 24, /obj/item/stack/ore/plasma = 20, /obj/item/stack/ore/iron = 20, /obj/item/stack/ore/bananium = 1, + /obj/item/stack/ore/silver = 24, /obj/item/stack/ore/plasma = 20, /obj/item/stack/ore/iron = 20, /turf/closed/mineral/gibtonite/ice/icemoon = 8, /obj/item/stack/ore/bluespace_crystal = 2) /turf/closed/mineral/random/snow/high_chance @@ -404,11 +403,6 @@ initial_gas_mix = FROZEN_ATMOS defer_change = TRUE -/turf/closed/mineral/bananium - mineralType = /obj/item/stack/ore/bananium - mineralAmt = 3 - scan_state = "rock_Bananium" - /turf/closed/mineral/bscrystal mineralType = /obj/item/stack/ore/bluespace_crystal mineralAmt = 1 @@ -650,10 +644,7 @@ H.mind.adjust_experience(/datum/skill/mining, 100) //yay! /turf/closed/mineral/strong/proc/drop_ores() - if(prob(10)) - new /obj/item/stack/sheet/mineral/mythril(src, 5) - else - new /obj/item/stack/sheet/mineral/adamantine(src, 5) + new /obj/item/stack/sheet/mineral/hidden/hellstone(src, 5) /turf/closed/mineral/strong/acid_melt() return diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 720a95afd0e1..89a00d04c142 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -68,24 +68,6 @@ icon_state = "diamond_wall-255" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS -/turf/closed/wall/mineral/bananium - name = "bananium wall" - desc = "A wall with bananium plating. Honk!" - icon = 'icons/turf/walls/bananium_wall.dmi' - icon_state = "bananium_wall-0" - base_icon_state = "bananium_wall" - sheet_type = /obj/item/stack/sheet/mineral/bananium - smoothing_flags = SMOOTH_BITMASK | SMOOTH_CONNECTORS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS) - canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS, SMOOTH_GROUP_WALLS,SMOOTH_GROUP_AIRLOCK) - connector_icon = 'icons/turf/connectors/bananium_wall_connector.dmi' - connector_icon_state = "bananium_wall_connector" - no_connector_typecache = list(/turf/closed/wall/mineral/bananium, /obj/structure/falsewall/bananium) - -/turf/closed/wall/mineral_bananium/yesdiag - icon_state = "bananium_wall-255" - smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - /turf/closed/wall/mineral/sandstone name = "sandstone wall" desc = "A wall with sandstone plating. Rough." diff --git a/code/game/turfs/closed/wall/misc_walls.dm b/code/game/turfs/closed/wall/misc_walls.dm index e6e5c8f0c557..20fcb2cb9f57 100644 --- a/code/game/turfs/closed/wall/misc_walls.dm +++ b/code/game/turfs/closed/wall/misc_walls.dm @@ -6,7 +6,7 @@ base_icon_state = "cult_wall" smoothing_flags = SMOOTH_BITMASK canSmoothWith = null - sheet_type = /obj/item/stack/sheet/runed_metal + sheet_type = /obj/item/stack/sheet/mineral/hidden/hellstone sheet_amount = 1 girder_type = /obj/structure/girder/cult diff --git a/code/game/turfs/open/floor/mineral_floor.dm b/code/game/turfs/open/floor/mineral_floor.dm index 476a69fa468d..5d53a162b087 100644 --- a/code/game/turfs/open/floor/mineral_floor.dm +++ b/code/game/turfs/open/floor/mineral_floor.dm @@ -172,48 +172,6 @@ /turf/open/floor/mineral/plastitanium/red/brig name = "brig floor" -//BANANIUM - -/turf/open/floor/mineral/bananium - name = "bananium floor" - icon_state = "bananium" - floor_tile = /obj/item/stack/tile/mineral/bananium - icons = list("bananium","bananium_dam") - var/spam_flag = 0 - -/turf/open/floor/mineral/bananium/Entered(atom/movable/AM) - .=..() - if(!.) - if(isliving(AM)) - squeak() - -/turf/open/floor/mineral/bananium/attackby(obj/item/W, mob/user, params) - .=..() - if(!.) - honk() - -/turf/open/floor/mineral/bananium/attack_hand(mob/user) - .=..() - if(!.) - honk() - -/turf/open/floor/mineral/bananium/attack_paw(mob/user) - .=..() - if(!.) - honk() - -/turf/open/floor/mineral/bananium/proc/honk() - if(spam_flag < world.time) - playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE) - spam_flag = world.time + 20 - -/turf/open/floor/mineral/bananium/proc/squeak() - if(spam_flag < world.time) - playsound(src, "clownstep", 50, TRUE) - spam_flag = world.time + 10 - -/turf/open/floor/mineral/bananium/airless - initial_gas_mix = AIRLESS_ATMOS //DIAMOND diff --git a/code/game/turfs/open/lava.dm b/code/game/turfs/open/lava.dm index 99f1d590c05a..eb2132940bd9 100644 --- a/code/game/turfs/open/lava.dm +++ b/code/game/turfs/open/lava.dm @@ -18,6 +18,8 @@ heavyfootstep = FOOTSTEP_LAVA var/particle_emitter = /obj/effect/particle_emitter/lava + /// Whether the lava has been dug with hellstone found successfully + var/is_mined = FALSE /turf/open/lava/Initialize(mapload) . = ..() @@ -100,10 +102,10 @@ /turf/open/lava/TakeTemperature(temp) -/turf/open/lava/attackby(obj/item/C, mob/user, params) +/turf/open/lava/attackby(obj/item/attacking_item, mob/user, params) ..() - if(istype(C, /obj/item/stack/rods/lava)) - var/obj/item/stack/rods/lava/R = C + if(istype(attacking_item, /obj/item/stack/rods/lava)) + var/obj/item/stack/rods/lava/R = attacking_item var/obj/structure/lattice/lava/H = locate(/obj/structure/lattice/lava, src) if(H) to_chat(user, "There is already a lattice here!") @@ -115,6 +117,19 @@ else to_chat(user, "You need one rod to build a heatproof lattice.") return + if(attacking_item.tool_behaviour == TOOL_MINING && (attacking_item.custom_materials[SSmaterials.GetMaterialRef(/datum/material/diamond)])) + if(is_mined) + to_chat(user, span_notice("This has already been cleared out of hellstone...")) + return FALSE + to_chat(user, span_notice("You start parting away [src]...")) + if(attacking_item.use_tool(src, user, 175, volume=30)) + to_chat(user, span_notice("You part away [src].")) + playsound(src, 'sound/effects/break_stone.ogg', 30, TRUE) + if (prob(10)) + new /obj/item/stack/ore/hellstone(src) + is_mined = TRUE + return TRUE + return FALSE /turf/open/lava/proc/is_safe() //if anything matching this typecache is found in the lava, we don't burn things diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 6bfccc48524d..d03da8c26f5e 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -601,7 +601,7 @@ var/quantity = candidate.amount if(candidate.use(quantity)) uses -- - new /obj/item/stack/sheet/runed_metal(T,quantity) + new /obj/item/stack/sheet/mineral/hidden/hellstone(T,quantity) to_chat(user, "A dark cloud emanates from you hand and swirls around the plasteel, transforming it into runed metal!") SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) else if(istype(target,/mob/living/silicon/robot)) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index e7f37d37f4a6..406c51956035 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -61,7 +61,7 @@ var/mob/living/current = owner.current add_objectives() if(give_equipment) - equip_cultist(TRUE) + equip_cultist() SSticker.mode.cult += owner // Only add after they've been given objectives current.log_message("has been converted to the cult of Nar'Sie!", LOG_ATTACK, color="#960000") @@ -69,13 +69,11 @@ current.client.images += cult_team.blood_target_image -/datum/antagonist/cult/proc/equip_cultist(metal=TRUE) +/datum/antagonist/cult/proc/equip_cultist() var/mob/living/carbon/H = owner.current if(!istype(H)) return . += cult_give_item(/obj/item/melee/cultblade/dagger, H) - if(metal) - . += cult_give_item(/obj/item/stack/sheet/runed_metal/ten, H) to_chat(owner, "These will help you jumpstart a cult of your own in this sector. Use them well, and remember - you are not the only one.") @@ -163,21 +161,16 @@ /datum/antagonist/cult/get_admin_commands() . = ..() .["Dagger"] = CALLBACK(src, PROC_REF(admin_give_dagger)) - .["Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_give_metal)) - .["Remove Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_take_all)) + .["Metal"] = CALLBACK(src, PROC_REF(admin_take_all)) /datum/antagonist/cult/proc/admin_give_dagger(mob/admin) - if(!equip_cultist(metal=FALSE)) + if(!equip_cultist()) to_chat(admin, "Spawning dagger failed!") -/datum/antagonist/cult/proc/admin_give_metal(mob/admin) - if (!equip_cultist(metal=TRUE)) - to_chat(admin, "Spawning runed metal failed!") - /datum/antagonist/cult/proc/admin_take_all(mob/admin) var/mob/living/current = owner.current for(var/o in current.GetAllContents()) - if(istype(o, /obj/item/melee/cultblade/dagger) || istype(o, /obj/item/stack/sheet/runed_metal)) + if(istype(o, /obj/item/melee/cultblade/dagger)) qdel(o) /datum/antagonist/cult/master diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 66526d96a34f..60816a90d45d 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -5,7 +5,7 @@ light_power = 2 var/cooldowntime = 0 break_sound = 'sound/hallucinations/veryfar_noise.ogg' - debris = list(/obj/item/stack/sheet/runed_metal = 1) + debris = list(/obj/item/stack/sheet/mineral/hidden/hellstone = 1) /obj/structure/destructible/cult/proc/conceal() //for spells that hide cult presence density = FALSE diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm index af61a6698e44..fa581504ca89 100644 --- a/code/modules/cargo/bounties/special.dm +++ b/code/modules/cargo/bounties/special.dm @@ -19,12 +19,12 @@ return (Copy.copy_type && ispath(Copy.copy_type, /obj/item/documents/syndicate)) return TRUE -/datum/bounty/item/adamantine - name = "Adamantine" - description = "Nanotrasen's anomalous materials division is in desparate need for Adamantine. Send them a large shipment and we'll make it worth your while." +/datum/bounty/item/hellstone + name = "Hellstone" + description = "Nanotrasen's anomalous materials division is in desparate need for Hellstone. Send them a large shipment and we'll make it worth your while." reward = 35000 required_count = 10 - wanted_types = list(/obj/item/stack/sheet/mineral/adamantine) + wanted_types = list(/obj/item/stack/sheet/mineral/hidden/hellstone) /datum/bounty/item/trash name = "Trash" diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index 01efd57be70b..3807e9bd6984 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -166,7 +166,7 @@ GLOBAL_LIST_EMPTY(bounties_list) /********************************Low Priority Gens********************************/ var/list/low_priority_strict_type_list = list( /datum/bounty/item/alien_organs, /datum/bounty/item/syndicate_documents, - /datum/bounty/item/adamantine, + /datum/bounty/item/hellstone, /datum/bounty/item/trash, /datum/bounty/more_bounties) diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 1bf35a94c440..f81654978ac2 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -26,11 +26,6 @@ // Materials. Prices have been heavily nerfed from the original values; mining is boring, so it shouldn't be a good way to make money. -/datum/export/material/bananium - cost = 250 - material_id = /datum/material/bananium - message = "cm3 of bananium" - /datum/export/material/diamond cost = 125 material_id = /datum/material/diamond @@ -62,15 +57,10 @@ material_id = /datum/material/titanium message = "cm3 of titanium" -/datum/export/material/adamantine +/datum/export/material/hellstone cost = 125 - material_id = /datum/material/adamantine - message = "cm3 of adamantine" - -/datum/export/material/mythril - cost = 375 - material_id = /datum/material/mythril - message = "cm3 of mythril" + material_id = /datum/material/hellstone + message = "cm3 of hellstone" /datum/export/material/bscrystal cost = 75 @@ -82,11 +72,6 @@ message = "cm3 of plastic" material_id = /datum/material/plastic -/datum/export/material/runite - cost = 150 - message = "cm3 of runite" - material_id = /datum/material/runite - /datum/export/material/metal cost = 2 message = "cm3 of metal" diff --git a/code/modules/client/loadout/loadout_accessories.dm b/code/modules/client/loadout/loadout_accessories.dm index 40702e5fc2be..b81588c8e72e 100644 --- a/code/modules/client/loadout/loadout_accessories.dm +++ b/code/modules/client/loadout/loadout_accessories.dm @@ -77,6 +77,11 @@ description = "Standard hand coverings for everyday use." path = /obj/item/clothing/gloves/color/white +/datum/gear/accessory/gloves/fingerless + display_name = "fingerless gloves" + description = "Radical hand coverings for everyday use." + path = /obj/item/clothing/gloves/fingerless + /datum/gear/accessory/gloves/evening display_name = "evening gloves" description = "Excessively fancy elbow-length gloves." diff --git a/code/modules/client/loadout/loadout_general.dm b/code/modules/client/loadout/loadout_general.dm index d9e6d8f13020..265a7728d2ab 100644 --- a/code/modules/client/loadout/loadout_general.dm +++ b/code/modules/client/loadout/loadout_general.dm @@ -36,7 +36,7 @@ /datum/gear/mug display_name = "coffee mug" - path = /obj/item/reagent_containers/food/drinks/britcup + path = /obj/item/reagent_containers/food/drinks/mug /datum/gear/rilena_mug display_name = "coffee mug, rilena" diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index a09ea07a3250..4ed246a587be 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -16,7 +16,7 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) - AddComponent(/datum/component/material_container, list(/datum/material/bananium), 200000, TRUE, /obj/item/stack) + AddComponent(/datum/component/material_container, list(/datum/material/hellstone), 200000, TRUE, /obj/item/stack) AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75, falloff_exponent = 20) /obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() @@ -24,7 +24,7 @@ var/mob/wearer = loc var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) if(on && istype(wearer)) - if(bananium.get_material_amount(/datum/material/bananium) < 100) + if(bananium.get_material_amount(/datum/material/hellstone) < 100) on = !on if(!always_noslip) clothing_flags &= ~NOSLIP @@ -32,7 +32,7 @@ to_chat(loc, "You ran out of bananium!") else new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(wearer.dir, 180))) //honk - bananium.use_amount_mat(100, /datum/material/bananium) + bananium.use_amount_mat(100, /datum/material/hellstone) /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) @@ -48,7 +48,7 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click(mob/user) var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - if(bananium.get_material_amount(/datum/material/bananium)) + if(bananium.get_material_amount(/datum/material/hellstone)) on = !on update_appearance() to_chat(user, "You [on ? "activate" : "deactivate"] the prototype shoes.") diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index bce5d5bd2445..4e3f6d5e3a9c 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -67,6 +67,11 @@ desc = "Worn by high ranking vampires of the transylvanian society of vampires." icon_state = "trans" +/obj/item/clothing/neck/cloak/bi + name = "solarian marine biologist cloak" + desc = "Commonly worn by members of the Solarian Marine Biologist Society, dedicated to the study and preservation of marine wildlife." + icon_state = "bi" + /obj/item/clothing/suit/hooded/cloak/goliath name = "goliath cloak" icon_state = "goliath_cloak" diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 258e9a56217f..ced086e1dfc6 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -525,11 +525,11 @@ GLOBAL_LIST_INIT(hallucination_list, list( /datum/hallucination/delusion var/list/image/delusions = list() -/datum/hallucination/delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = 300,skip_nearby = TRUE, custom_icon = null, custom_icon_file = null, custom_name = null) +/datum/hallucination/delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = rand(30,300),skip_nearby = TRUE, custom_icon = null, custom_icon_file = null, custom_name = null) set waitfor = FALSE . = ..() var/image/A = null - var/kind = force_kind ? force_kind : pick("nothing","monkey","corgi","carp","skeleton","demon","zombie") + var/kind = force_kind ? force_kind : pick("doe","mi-go","carp","hermit","frontiersman","ramzi") feedback_details += "Type: [kind]" var/list/nearby if(skip_nearby) @@ -540,27 +540,24 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(skip_nearby && (H in nearby)) continue switch(kind) - if("nothing") - A = image('icons/effects/effects.dmi',H,"nothing") - A.name = "..." - if("monkey")//Monkey - A = image('icons/mob/monkey.dmi',H,"monkey1") - A.name = "Monkey ([rand(1,999)])" + if("doe")//Doe + A = image('icons/mob/animal.dmi',H,"deer-doe") + A.name = "Doe" if("carp")//Carp A = image('icons/mob/carp.dmi',H,"carp") A.name = "Space Carp" - if("corgi")//Corgi - A = image('icons/mob/pets.dmi',H,"corgi") - A.name = "Corgi" - if("skeleton")//Skeletons - A = image('icons/mob/human.dmi',H,"skeleton") - A.name = "Skeleton" - if("zombie")//Zombies - A = image('icons/mob/human.dmi',H,"zombie") - A.name = "Zombie" - if("demon")//Demon - A = image('icons/mob/mob.dmi',H,"daemon") - A.name = "Demon" + if("mi-go")//Mi-go + A = image('icons/mob/animal.dmi',H,"mi-go") + A.name = "Mi-go" + if("hermit")//Hermit + A = image('icons/mob/simple_human.dmi',H,"survivor_gunslinger") + A.name = "Hermit Soldier" + if("frontiersman")//Frontiersman + A = image('icons/mob/simple_human.dmi',H,"frontiersmanrangedminigun") + A.name = "Frontiersman" + if("ramzi")//Ramzi + A = image('icons/mob/simple_human.dmi',H,"ramzi_base") + A.name = "Ramzi Commando" if("custom") A = image(custom_icon_file, H, custom_icon) A.name = custom_name @@ -568,8 +565,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(target.client) delusions |= A target.client.images |= A - if(duration) - QDEL_IN(src, duration) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), duration) /datum/hallucination/delusion/Destroy() for(var/image/I in delusions) @@ -580,25 +576,28 @@ GLOBAL_LIST_INIT(hallucination_list, list( /datum/hallucination/self_delusion var/image/delusion -/datum/hallucination/self_delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = 300, custom_icon = null, custom_icon_file = null, wabbajack = TRUE) //set wabbajack to false if you want to use another fake source +/datum/hallucination/self_delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = rand(30,300), custom_icon = null, custom_icon_file = null, wabbajack = TRUE) //set wabbajack to false if you want to use another fake source set waitfor = FALSE ..() var/image/A = null - var/kind = force_kind ? force_kind : pick("monkey","corgi","carp","skeleton","demon","zombie","robot") + var/kind = force_kind ? force_kind : pick("doe","mi-go","carp","hermit","frontiersman","ramzi","pai","robot") feedback_details += "Type: [kind]" switch(kind) - if("monkey")//Monkey - A = image('icons/mob/monkey.dmi',target,"monkey1") + if("doe")//Doe + A = image('icons/mob/animal.dmi',target,"deer-doe") if("carp")//Carp A = image('icons/mob/animal.dmi',target,"carp") - if("corgi")//Corgi - A = image('icons/mob/pets.dmi',target,"corgi") - if("skeleton")//Skeletons - A = image('icons/mob/human.dmi',target,"skeleton") - if("zombie")//Zombies - A = image('icons/mob/human.dmi',target,"zombie") - if("demon")//Demon - A = image('icons/mob/mob.dmi',target,"daemon") + if("mi-go")//Mi-go + A = image('icons/mob/animal.dmi',target,"mi-go") + if("hermit")//Hermit + A = image('icons/mob/simple_human.dmi',target,"survivor_base") + if("frontiersman")//Frontiersman + A = image('icons/mob/simple_human.dmi',target,"frontiersmanranged") + if("ramzi")//Ramzi + A = image('icons/mob/simple_human.dmi',target,"ramzi_base") + if("pai")//pAI + A = image('icons/mob/pai.dmi',target,"repairbot") + target.playsound_local(target,'sound/effects/pai_boot.ogg', 75, 1) if("robot")//Cyborg A = image('icons/mob/robots.dmi',target,"robot") target.playsound_local(target,'sound/voice/liveagain.ogg', 75, 1) @@ -610,7 +609,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( to_chat(target, "...you look down and notice... you aren't the same as you used to be...") delusion = A target.client.images |= A - QDEL_IN(src, duration) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), duration) /datum/hallucination/self_delusion/Destroy() if(target.client) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm index 0d7f403b538d..d0558f94fdb5 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm @@ -152,7 +152,7 @@ /datum/reagent/water = 10, /obj/item/reagent_containers/glass/bowl = 1, /obj/item/reagent_containers/food/snacks/grown/banana = 1, - /obj/item/stack/ore/bananium = 1 + /obj/item/stack/sheet/mineral/hidden/hellstone = 1 ) result = /obj/item/reagent_containers/food/snacks/soup/clownstears subcategory = CAT_SOUP diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 613a68a2de47..d86cfebf1197 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -192,7 +192,7 @@ if(77 to 78) new /obj/item/toy/plush/lizardplushie(src) if(79 to 80) - new /obj/item/stack/sheet/mineral/bananium(src, 10) + new /obj/item/stack/sheet/mineral/hidden/hellstone(src, 10) if(81 to 82) new /obj/item/bikehorn/airhorn(src) if(83 to 84) diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index ed8be5000a66..d38a3ce8b55b 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -53,6 +53,7 @@ force = 19 custom_price = 1500 custom_premium_price = 2000 + custom_materials = list(/datum/material/diamond=2000) /obj/item/pickaxe/drill name = "mining drill" @@ -81,6 +82,7 @@ toolspeed = 0.2 desc = "EXOCOM's improvement on the NT autodrill design, featuring a premium diamond cutting head. Yours is the drill that will pierce the heavens!" force = 20 + custom_materials = list(/datum/material/diamond=2000) /obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version! name = "diamond-tipped integrated mining drill" //To inherit the NODROP_1 flag, and easier to change borg specific drill mechanics. diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 74d35e830a7e..0ae29ca8ee54 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -143,7 +143,7 @@ /obj/machinery/mineral/processing_unit/Initialize() . = ..() proximity_monitor = new(src, 1) - AddComponent(/datum/component/material_container, list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace), INFINITY, TRUE, /obj/item/stack) + AddComponent(/datum/component/material_container, list(/datum/material/iron, /datum/material/glass, /datum/material/silver, /datum/material/gold, /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, /datum/material/hellstone, /datum/material/titanium, /datum/material/bluespace), INFINITY, TRUE, /obj/item/stack) stored_research = new /datum/techweb/specialized/autounlocking/smelter selected_material = SSmaterials.GetMaterialRef(/datum/material/iron) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index fd36a4bb4ab1..65aea8732d03 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -17,7 +17,7 @@ var/points = 0 var/ore_multiplier = 1 var/point_upgrade = 1 - var/list/ore_values = list(/datum/material/iron = 1, /datum/material/glass = 1, /datum/material/plasma = 15, /datum/material/silver = 16, /datum/material/gold = 18, /datum/material/titanium = 30, /datum/material/uranium = 30, /datum/material/diamond = 50, /datum/material/bluespace = 50, /datum/material/bananium = 60) + var/list/ore_values = list(/datum/material/iron = 1, /datum/material/glass = 1, /datum/material/plasma = 15, /datum/material/silver = 16, /datum/material/gold = 18, /datum/material/titanium = 30, /datum/material/uranium = 30, /datum/material/diamond = 50, /datum/material/bluespace = 50, /datum/material/hellstone = 60) /// Variable that holds a timer which is used for callbacks to `send_console_message()`. Used for preventing multiple calls to this proc while the ORM is eating a stack of ores. var/console_notify_timer var/datum/techweb/stored_research diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm index 788d1c102f75..6a210f4d87ff 100644 --- a/code/modules/mining/machine_silo.dm +++ b/code/modules/mining/machine_silo.dm @@ -22,10 +22,10 @@ GLOBAL_LIST_EMPTY(silo_access_logs) /datum/material/diamond, /datum/material/plasma, /datum/material/uranium, - /datum/material/bananium, /datum/material/titanium, /datum/material/bluespace, /datum/material/plastic, + /datum/material/hellstone, ) AddComponent(/datum/component/material_container, materials_list, INFINITY, allowed_types=/obj/item/stack, _disable_attackby=TRUE) diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 707d68a871f7..cc2a9f176c70 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -33,7 +33,7 @@ wanted_objects = list( /obj/item/stack/ore/diamond, /obj/item/stack/ore/gold, /obj/item/stack/ore/silver, /obj/item/stack/ore/plasma, /obj/item/stack/ore/uranium, /obj/item/stack/ore/iron, - /obj/item/stack/ore/bananium, /obj/item/stack/ore/titanium) + /obj/item/stack/ore/hellstone, /obj/item/stack/ore/titanium) healable = 0 loot = list(/obj/effect/decal/cleanable/robot_debris) del_on_death = TRUE diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 33117d99c518..79c2f0d52208 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -24,11 +24,8 @@ /datum/material/uranium, /datum/material/titanium, /datum/material/diamond, - /datum/material/bananium, - /datum/material/adamantine, - /datum/material/mythril, /datum/material/plastic, - /datum/material/runite + /datum/material/hellstone, ), MINERAL_MATERIAL_AMOUNT * 75, FALSE, /obj/item/stack) chosen = SSmaterials.GetMaterialRef(chosen) diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 46011ae8ec7e..2c8ac19a353a 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -26,4 +26,4 @@ new /obj/item/coin/silver(src) new /obj/item/coin/gold(src) new /obj/item/coin/gold(src) - new /obj/item/coin/adamantine(src) + new /obj/item/coin/hellstone(src) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index ec971ed84bed..1dfe590cac0a 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -217,16 +217,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ mine_experience = 10 scan_state = "rock_Diamond" -/obj/item/stack/ore/bananium - name = "bananium ore" - icon_state = "Bananium ore" - item_state = "Bananium ore" - singular_name = "bananium ore chunk" - points = 60 - custom_materials = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT) - refined_type = /obj/item/stack/sheet/mineral/bananium - mine_experience = 15 - scan_state = "rock_Bananium" /obj/item/stack/ore/titanium name = "titanium ore" @@ -240,6 +230,16 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ scan_state = "rock_Titanium" spreadChance = 5 +/obj/item/stack/ore/hellstone + name = "hellstone ore" + icon_state = "hellstone-ore" + item_state = "hellstone-ore" + singular_name = "hellstone ore chunk" + resistance_flags = LAVA_PROOF + points = 50 + custom_materials = list(/datum/material/hellstone=MINERAL_MATERIAL_AMOUNT) + refined_type = /obj/item/stack/sheet/mineral/hidden/hellstone + /obj/item/stack/ore/slag name = "slag" desc = "Completely useless." @@ -458,20 +458,11 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ /obj/item/coin/titanium custom_materials = list(/datum/material/titanium = 400) -/obj/item/coin/bananium - custom_materials = list(/datum/material/bananium = 400) - -/obj/item/coin/adamantine - custom_materials = list(/datum/material/adamantine = 400) - -/obj/item/coin/mythril - custom_materials = list(/datum/material/mythril = 400) - /obj/item/coin/plastic custom_materials = list(/datum/material/plastic = 400) -/obj/item/coin/runite - custom_materials = list(/datum/material/runite = 400) +/obj/item/coin/hellstone + custom_materials = list(/datum/material/hellstone = 400) /obj/item/coin/twoheaded desc = "Hey, this coin's the same on both sides!" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 1cbc7ec58d51..e0c0d8a801ab 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -403,521 +403,38 @@ /obj/effect/mob_spawn/human/corpse/damaged/legioninfested/Initialize() //in an ideal world, these would generate, the legion would overlay over the corpse, and we'd get cool sprites mob_species = pickweight(list( - /datum/species/human = 31, - /datum/species/lizard = 26, - /datum/species/elzuose = 24, - /datum/species/spider = 7, - /datum/species/ipc = 7, - /datum/species/jelly = 4, - /datum/species/fly = 1 + /datum/species/human = 50, + /datum/species/lizard = 20, + /datum/species/ipc = 10, + /datum/species/elzuose = 10, + /datum/species/moth = 5, + /datum/species/spider = 5 ) ) var/type = pickweight(list( - "Miner" = 44, - "Waldo" = 3, - "Ashwalker" = 7, - "Soldier" = 5, - "Oldminer" = 8, - "Kobold" = 5, - "SRM" = 6, - "Operative" = 5, - pick("Shadow", "YeOlde") = 4 + "Miner" = 40, + "Assistant" = 10, + "Engineer" = 5, + "Doctor" = 5, + "Scientist" = 5, + "Cargo" = 5, + "Security" = 5 ) ) + switch(type) if("Miner") - if(prob(2)) - mob_species = /datum/species/plasmaman - uniform = /obj/item/clothing/under/plasmaman - head = /obj/item/clothing/head/helmet/space/plasmaman - belt = /obj/item/tank/internals/plasmaman/belt - else - uniform = /obj/item/clothing/under/rank/cargo/miner/lavaland - if (prob(4)) - belt = pickweight(list( - /obj/item/storage/belt/mining = 2, - /obj/item/storage/belt/mining/alt = 2 - ) - ) - else if(prob(10)) - belt = pickweight(list( - /obj/item/pickaxe = 8, - /obj/item/pickaxe/mini = 4, - /obj/item/pickaxe/silver = 2, - /obj/item/pickaxe/diamond = 1, - /obj/item/gun/energy/kinetic_accelerator = 1 - ) - ) - else - belt = /obj/item/tank/internals/emergency_oxygen/engi - if(mob_species != /datum/species/lizard) - shoes = /obj/item/clothing/shoes/workboots/mining - gloves = /obj/item/clothing/gloves/color/black - mask = /obj/item/clothing/mask/gas/explorer - if(prob(45)) - glasses = /obj/item/clothing/glasses/meson - if(prob(20)) - suit = pickweight(list( - /obj/item/clothing/suit/hooded/explorer = 18, - /obj/item/clothing/suit/hooded/cloak/goliath = 2 - ) - ) - if(prob(30)) - r_pocket = pickweight(list( - /obj/item/stack/marker_beacon = 20, - /obj/item/spacecash/bundle/mediumrand = 7, - /obj/item/reagent_containers/hypospray/medipen/survival = 2, - /obj/item/borg/upgrade/modkit/damage = 1 - ) - ) - if(prob(10)) - l_pocket = pickweight(list( - /obj/item/spacecash/bundle/mediumrand = 7, - /obj/item/reagent_containers/hypospray/medipen/survival = 2, - /obj/item/borg/upgrade/modkit/cooldown = 1 - ) - ) - if(prob(95)) - back = /obj/item/storage/backpack/explorer - backpack_contents = list(/obj/item/radio) - if(prob(70)) - backpack_contents += pickweight(list( - /obj/item/borg/upgrade/modkit/damage = 1, - /obj/item/borg/upgrade/modkit/trigger_guard = 1, - /obj/item/soap/nanotrasen = 1, - /obj/item/wormhole_jaunter = 1, - /obj/item/fulton_core = 1, - /obj/item/extraction_pack = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 3, - /obj/item/hivelordstabilizer = 2, - /obj/item/stack/marker_beacon/ten = 2, - /obj/item/mining_scanner = 2, - /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, - /obj/item/flashlight/seclite=3, - /obj/item/stack/sheet/sinew = 3, - /obj/item/stack/sheet/bone = 3 - ) - ) - if(prob(70)) - backpack_contents += pickweight(list( - /obj/item/borg/upgrade/modkit/damage = 1, - /obj/item/borg/upgrade/modkit/trigger_guard = 1, - /obj/item/soap/nanotrasen = 1, - /obj/item/wormhole_jaunter = 1, - /obj/item/fulton_core = 1, - /obj/item/extraction_pack = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 3, - /obj/item/hivelordstabilizer = 2, - /obj/item/stack/marker_beacon/ten = 2, - /obj/item/mining_scanner = 2, - /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, - /obj/item/flashlight/seclite = 3, - /obj/item/stack/sheet/sinew = 3, - /obj/item/stack/sheet/bone = 3 - ) - ) - if(prob(70)) - backpack_contents += pickweight(list( - /obj/item/borg/upgrade/modkit/damage = 1, - /obj/item/borg/upgrade/modkit/trigger_guard = 1, - /obj/item/soap/nanotrasen = 1, - /obj/item/wormhole_jaunter = 1, - /obj/item/fulton_core = 1, - /obj/item/extraction_pack = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 3, - /obj/item/hivelordstabilizer = 2, - /obj/item/stack/marker_beacon/ten = 2, - /obj/item/mining_scanner = 2, - /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, - /obj/item/flashlight/seclite = 3, - /obj/item/stack/sheet/sinew = 3, - /obj/item/stack/sheet/bone = 3 - ) - ) - if(prob(30)) - backpack_contents += list( - /obj/item/reagent_containers/hypospray/medipen/survival = pickweight(list( - 1 = 3, - 2 = 2, - 3 = 1 - ) - ) - ) - else - back = /obj/item/kinetic_crusher - if("Oldminer") - suit = /obj/item/clothing/suit/hooded/explorer/old - mask = /obj/item/clothing/mask/gas/explorer/old - if(prob(95)) - glasses = /obj/item/clothing/glasses/meson - else - glasses = /obj/item/clothing/glasses/meson/night - suit_store = /obj/item/tank/internals/oxygen - gloves = /obj/item/clothing/gloves/explorer/old - uniform = /obj/item/clothing/under/rank/cargo/miner/lavaland/old - if(prob(85)) - back = /obj/item/storage/backpack/explorer //someone could totally make these backpacks a subtype and just have them be there. It'd cut down this file size a bit. - backpack_contents = list() - if(prob(70)) - backpack_contents += pickweight(list( - /obj/item/borg/upgrade/modkit/damage = 1, - /obj/item/borg/upgrade/modkit/trigger_guard = 1, - /obj/item/soap/nanotrasen = 1, - /obj/item/wormhole_jaunter = 1, - /obj/item/fulton_core = 1, - /obj/item/extraction_pack = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 3, - /obj/item/hivelordstabilizer = 2, - /obj/item/stack/marker_beacon/ten = 2, - /obj/item/mining_scanner = 2, - /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, - /obj/item/flashlight/seclite=3, - /obj/item/stack/sheet/sinew = 3, - /obj/item/stack/sheet/bone = 3 - ) - ) - if(prob(70)) - backpack_contents += pickweight(list( - /obj/item/borg/upgrade/modkit/damage = 1, - /obj/item/borg/upgrade/modkit/trigger_guard = 1, - /obj/item/soap/nanotrasen = 1, - /obj/item/wormhole_jaunter = 1, - /obj/item/fulton_core = 1, - /obj/item/extraction_pack = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 3, - /obj/item/hivelordstabilizer = 2, - /obj/item/stack/marker_beacon/ten = 2, - /obj/item/mining_scanner = 2, - /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, - /obj/item/flashlight/seclite=3, - /obj/item/stack/sheet/sinew = 3, - /obj/item/stack/sheet/bone = 3 - ) - ) - if(prob(70)) - backpack_contents += pickweight(list( - /obj/item/borg/upgrade/modkit/damage = 1, - /obj/item/borg/upgrade/modkit/trigger_guard = 1, - /obj/item/soap/nanotrasen = 1, - /obj/item/wormhole_jaunter = 1, - /obj/item/fulton_core = 1, - /obj/item/extraction_pack = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 3, - /obj/item/hivelordstabilizer = 2, - /obj/item/stack/marker_beacon/ten = 2, - /obj/item/mining_scanner = 2, - /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, - /obj/item/flashlight/seclite=3, - /obj/item/stack/sheet/sinew = 3, - /obj/item/stack/sheet/bone = 3 - ) - ) - if(prob(30)) - backpack_contents += list( - /obj/item/reagent_containers/hypospray/medipen/survival = pickweight(list( - 1 = 3, - 2 = 2, - 3 = 1 - ) - ) - ) - else - back = /obj/item/kinetic_crusher/old - if(prob(30)) - belt = /obj/item/gun/energy/kinetic_accelerator/old - if(prob(30)) - r_pocket = pickweight(list( - /obj/item/stack/marker_beacon = 20, - /obj/item/spacecash/bundle/mediumrand = 7, - /obj/item/reagent_containers/hypospray/medipen/survival = 2, - /obj/item/borg/upgrade/modkit/damage = 1 - ) - ) - if(prob(30)) - l_pocket = pickweight(list( - /obj/item/spacecash/bundle/mediumrand = 5, - /obj/item/reagent_containers/hypospray/medipen/survival = 2, - /obj/item/borg/upgrade/modkit/cooldown = 1 - ) - ) - if("Ashwalker") - mob_species = /datum/species/lizard/ashwalker - uniform = /obj/item/clothing/under/costume/gladiator/ash_walker - if(prob(95)) - head = /obj/item/clothing/head/helmet/gladiator - else - head = /obj/item/clothing/head/helmet/skull - suit = /obj/item/clothing/suit/armor/bone - gloves = /obj/item/clothing/gloves/bracer - if(prob(45)) - back = pickweight(list( - /obj/item/spear/bonespear = 3, - /obj/item/fireaxe/boneaxe = 2 - ) - ) - if(prob(10)) - belt = /obj/item/storage/belt/mining/primitive - if(prob(30)) - r_pocket = /obj/item/restraints/legcuffs/bola/watcher - if(prob(30)) - l_pocket = /obj/item/kitchen/knife/combat/bone - if("Soldier") - mob_species = /datum/species/human - if(prob(90)) - uniform = /obj/item/clothing/under/solgov - suit = /obj/item/clothing/suit/armor/vest/bulletproof/solgov - shoes = /obj/item/clothing/shoes/jackboots - gloves = /obj/item/clothing/gloves/color/black - mask = /obj/item/clothing/mask/gas/sechailer - head = /obj/item/clothing/head/solgov/sonnensoldner - id = /obj/item/card/id/solgov - else - uniform = /obj/item/clothing/under/solgov - suit = /obj/item/clothing/suit/space/hardsuit/solgov - shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat - mask = /obj/item/clothing/mask/gas/sechailer/swat - id = /obj/item/card/id/solgov - if(prob(85)) - back = /obj/item/storage/backpack - backpack_contents = list() - if(prob(75)) - backpack_contents += pickweight(list( - /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor = 1, - /obj/item/storage/firstaid/tactical = 1, - /obj/item/gun/ballistic/automatic/pistol/solgov = 1, - /obj/item/gps = 1, - /obj/item/stock_parts/cell/gun/upgraded = 2, - /obj/item/ammo_box/magazine/pistol556mm = 3, - /obj/item/desk_flag/solgov = 3, - /obj/item/stack/marker_beacon/ten = 3, - /obj/item/detective_scanner = 2, - /obj/item/extinguisher/mini = 3, - /obj/item/kitchen/knife/combat = 3, - /obj/item/flashlight/seclite=3, - /obj/item/ammo_casing/shotgun = 3, - /obj/item/binoculars = 3, - /obj/item/clipboard = 3 - ) - ) - if(prob(75)) - backpack_contents += pickweight(list( - /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor = 1, - /obj/item/storage/firstaid/tactical = 1, - /obj/item/gun/ballistic/automatic/pistol/solgov = 1, - /obj/item/gps = 1, - /obj/item/stock_parts/cell/gun/upgraded = 2, - /obj/item/ammo_box/magazine/pistol556mm = 3, - /obj/item/desk_flag/solgov = 3, - /obj/item/stack/marker_beacon/ten = 3, - /obj/item/detective_scanner = 2, - /obj/item/extinguisher/mini = 3, - /obj/item/kitchen/knife/combat = 3, - /obj/item/flashlight/seclite=3, - /obj/item/ammo_casing/shotgun = 3, - /obj/item/binoculars = 3, - /obj/item/clipboard = 3 - ) - ) - if(prob(75)) - backpack_contents += pickweight(list( - /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor = 1, - /obj/item/storage/firstaid/tactical = 1, - /obj/item/gun/ballistic/automatic/pistol/solgov = 1, - /obj/item/gps = 1, - /obj/item/stock_parts/cell/gun/upgraded = 2, - /obj/item/ammo_box/magazine/pistol556mm = 3, - /obj/item/desk_flag/solgov = 3, - /obj/item/stack/marker_beacon/ten = 3, - /obj/item/detective_scanner = 2, - /obj/item/extinguisher/mini = 3, - /obj/item/kitchen/knife/combat = 3, - /obj/item/flashlight/seclite=3, - /obj/item/ammo_casing/shotgun = 3, - /obj/item/binoculars = 3, - /obj/item/clipboard = 3 - ) - ) - else - back = pickweight(list( - /obj/item/energyhalberd = 5, - /obj/item/gun/ballistic/rocketlauncher = 5 - ) - ) - if(prob(25)) - belt = /obj/item/storage/belt/military - if(prob(50)) - r_pocket = pickweight(list( - /obj/item/reagent_containers/hypospray/medipen/stimpack = 1, - /obj/item/kitchen/knife/letter_opener = 3, - /obj/item/radio = 3, - /obj/item/grenade/syndieminibomb/concussion = 1, - /obj/item/melee/transforming/energy/ctf/solgov = 1 - ) - ) - if(prob(50)) - l_pocket = pickweight(list( - /obj/item/reagent_containers/hypospray/medipen/stimpack = 1, - /obj/item/kitchen/knife/letter_opener = 3, - /obj/item/radio = 3, - /obj/item/grenade/syndieminibomb/concussion = 1, - /obj/item/melee/transforming/energy/ctf/solgov = 1 - ) - ) - if(prob(70)) - glasses = pickweight(list( - /obj/item/clothing/glasses/sunglasses = 3, - /obj/item/clothing/glasses/hud/health = 3, - /obj/item/clothing/glasses/hud/health/night = 1, - /obj/item/clothing/glasses/night = 2 - ) - ) - if("Kobold") - mob_species = /datum/species/lizard/ashwalker/kobold - uniform = /obj/item/clothing/under/costume/gladiator/ash_walker - if(prob(95)) - head = /obj/item/clothing/head/helmet/gladiator - else - head = /obj/item/clothing/head/helmet/skull - suit = /obj/item/clothing/suit/armor/bone - gloves = /obj/item/clothing/gloves/bracer - if(prob(5)) - back = pickweight(list( - /obj/item/spear/bonespear = 3, - /obj/item/fireaxe/boneaxe = 2 - ) - ) - if(prob(10)) - belt = /obj/item/storage/belt/mining/primitive - if(prob(30)) - r_pocket = /obj/item/kitchen/knife/combat/bone - if(prob(30)) - l_pocket = /obj/item/kitchen/knife/combat/bone - if("YeOlde") - mob_gender = FEMALE - uniform = /obj/item/clothing/under/costume/maid - gloves = /obj/item/clothing/gloves/color/white - shoes = /obj/item/clothing/shoes/laceup - head = /obj/item/clothing/head/helmet/knight - suit = /obj/item/clothing/suit/armor/riot/knight - back = /obj/item/shield/riot/buckler - belt = /obj/item/nullrod/claymore - r_pocket = /obj/item/tank/internals/emergency_oxygen - mask = /obj/item/clothing/mask/breath - if("Operative") - id_job = "Operative" - if(prob(40)) - outfit = /datum/outfit/syndicatecommandocorpse - else if(prob(5)) - outfit = /datum/outfit/syndicatestormtroopercorpse - else - outfit = /datum/outfit/syndicateramzicorpse - if("Waldo")//WE FINALLY FOUND HIM - name = "Waldo" - uniform = /obj/item/clothing/under/pants/jeans - suit = /obj/item/clothing/suit/striped_sweater - head = /obj/item/clothing/head/beanie/waldo - shoes = /obj/item/clothing/shoes/sneakers/brown - ears = /obj/item/radio/headset - glasses = /obj/item/clothing/glasses/regular/circle - back = /obj/item/storage/backpack/satchel/leather - backpack_contents = list() - if(prob(50)) - backpack_contents += pickweight(list( - /obj/item/book/granter/spell/knock = 1, - /obj/item/book/granter/spell/blind = 1, - /obj/item/shadowcloak = 1, - /obj/item/book/granter/spell/smoke = 2, - /obj/item/reagent_containers/syringe/mulligan = 2, - /obj/item/dice/d20 = 3, - /obj/item/dice/d20/fate/stealth/one_use = 1, - /obj/item/clothing/head/chameleon/broken = 3, - /obj/item/stack/marker_beacon/ten = 3, - /obj/item/grenade/smokebomb = 3, - /obj/item/grenade/flashbang = 3 - ) - ) - if(prob(50)) - backpack_contents += pickweight(list( - /obj/item/book/granter/spell/knock = 1, - /obj/item/book/granter/spell/blind = 1, - /obj/item/shadowcloak = 1, - /obj/item/book/granter/spell/smoke = 2, - /obj/item/reagent_containers/syringe/mulligan = 2, - /obj/item/dice/d20/fate/stealth/one_use = 1, - /obj/item/dice/d20 = 3, - /obj/item/clothing/head/chameleon/broken = 3, - /obj/item/stack/marker_beacon/ten = 3, - /obj/item/grenade/smokebomb = 3, - /obj/item/grenade/flashbang = 3 - ) - ) - if(prob(50)) - backpack_contents += pickweight(list( - /obj/item/book/granter/spell/knock = 1, - /obj/item/book/granter/spell/blind = 1, - /obj/item/shadowcloak = 1, - /obj/item/book/granter/spell/smoke = 2, - /obj/item/reagent_containers/syringe/mulligan = 2, - /obj/item/dice/d20/fate/stealth/one_use = 1, - /obj/item/clothing/head/chameleon/broken = 3, - /obj/item/stack/marker_beacon/ten = 3, - /obj/item/grenade/smokebomb = 3, - /obj/item/grenade/flashbang = 3 - ) - ) - if(prob(25)) - r_pocket = pickweight(list( - /obj/item/chameleon, - /obj/item/dnainjector/chameleonmut = 1, - /obj/item/flashlight/flashdark = 1 - ) - ) - if(prob(25)) - l_pocket = pickweight(list( - /obj/item/chameleon, - /obj/item/dnainjector/chameleonmut = 1, - /obj/item/flashlight/flashdark = 1 - ) - ) - if("Shadow") - mob_species = /datum/species/shadow - neck = /obj/item/clothing/accessory/medal/plasma/nobel_science - uniform = /obj/item/clothing/under/color/black - shoes = /obj/item/clothing/shoes/sneakers/black - suit = /obj/item/clothing/suit/toggle/labcoat - glasses = /obj/item/clothing/glasses/blindfold - back = /obj/item/tank/internals/oxygen - mask = /obj/item/clothing/mask/breath - if("SRM") - uniform = /obj/item/clothing/under/suit/roumain - shoes = /obj/item/clothing/shoes/workboots/mining - if(prob(50)) - suit = /obj/item/clothing/suit/armor/roumain/shadow - head = /obj/item/clothing/head/cowboy/sec/roumain/shadow - else - suit = /obj/item/clothing/suit/armor/roumain - head = /obj/item/clothing/head/cowboy/sec/roumain - if(prob(25)) - suit_store = /obj/item/gun/ballistic/shotgun/flamingarrow - r_pocket = /obj/item/book/manual/trickwines_4_brewers - belt = pick(list(/obj/item/kitchen/knife/hunting = 1, /obj/item/gun/ballistic/derringer = 1)) - back = /obj/item/storage/backpack/cultpack - backpack_contents = list() - if(prob(75)) - backpack_contents += list(/obj/item/ammo_box/c38_box = 1) - if(prob(75)) - backpack_contents += list(pick( - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/ashwine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/icewine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/shockwine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/hearthwine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/forcewine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/prismwine,) = 2) + outfit = /datum/outfit/generic/miner + if("Assistant") + outfit = /datum/outfit/generic + if("Engineer") + outfit = /datum/outfit/generic/engineer + if("Doctor") + outfit = /datum/outfit/generic/doctor + if("Scientist") + outfit = /datum/outfit/generic/science + if("Cargo") + outfit = /datum/outfit/generic/cargo + if("Security") + outfit = /datum/outfit/generic/security . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm new file mode 100644 index 000000000000..0dca4c21dade --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm @@ -0,0 +1,479 @@ +/datum/outfit/generic/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + uniform = pickweight(list( + /obj/item/clothing/under/utility = 5, + /obj/item/clothing/under/utility/skirt = 5, + /obj/item/clothing/under/color/black = 1, + /obj/item/clothing/under/color/white = 1, + /obj/item/clothing/under/color/random = 1, + /obj/item/clothing/under/suit/white = 1, + /obj/item/clothing/under/suit/tan = 1, + /obj/item/clothing/under/suit/black_really = 1, + /obj/item/clothing/under/suit/navy = 1, + /obj/item/clothing/under/suit/burgundy = 1, + /obj/item/clothing/under/suit/charcoal = 1, + /obj/item/clothing/under/rank/civilian/lawyer/galaxy = 1, + /obj/item/clothing/under/suit/black/skirt = 1, + /obj/item/clothing/under/suit/black = 1, + /obj/item/clothing/under/dress/sailor = 1, + /obj/item/clothing/under/dress/striped = 1, + /obj/item/clothing/under/dress/skirt/blue = 1, + /obj/item/clothing/under/syndicate/tacticool = 1, + ) + ) + suit = pickweight(list( + /obj/item/clothing/suit/hooded/wintercoat = 1, + /obj/item/clothing/suit/jacket = 1, + /obj/item/clothing/suit/jacket/leather = 1, + /obj/item/clothing/suit/jacket/leather/overcoat = 1, + /obj/item/clothing/suit/jacket/leather/duster = 1, + /obj/item/clothing/suit/jacket/miljacket = 1, + /obj/item/clothing/suit/jacket/puffer = 1, + /obj/item/clothing/suit/gothcoat = 1, + /obj/item/clothing/suit/toggle/industrial = 1, + /obj/item/clothing/suit/toggle/hazard = 1, + ) + ) + back = pickweight(list( + /obj/item/storage/backpack = 1, + /obj/item/storage/backpack/satchel = 1, + /obj/item/storage/backpack/duffelbag = 1, + /obj/item/storage/backpack/messenger = 1, + /obj/item/storage/backpack/satchel/leather = 1 + ) + ) + if (prob(10)) + belt = pickweight(list( + /obj/item/gun/ballistic/automatic/pistol/candor = 2, + /obj/item/gun/ballistic/automatic/pistol/commander = 1, + /obj/item/gun/ballistic/automatic/pistol = 1, + /obj/item/gun/ballistic/revolver = 1, + /obj/item/gun/ballistic/revolver/firebrand = 1, + ) + ) + if(prob(50)) + gloves = pickweight(list( + /obj/item/clothing/gloves/color/black = 1, + /obj/item/clothing/gloves/fingerless = 1, + /obj/item/clothing/gloves/color/white = 1, + ) + ) + shoes = pickweight(list( + /obj/item/clothing/shoes/laceup = 1, + /obj/item/clothing/shoes/sandal = 1, + /obj/item/clothing/shoes/winterboots = 1, + /obj/item/clothing/shoes/workboots/mining = 1, + /obj/item/clothing/shoes/workboots = 1, + /obj/item/clothing/shoes/sneakers/black = 1, + /obj/item/clothing/shoes/sneakers/brown = 1, + /obj/item/clothing/shoes/sneakers/white = 1 + ) + ) + if(prob(50)) + head = pickweight(list( + /obj/item/clothing/head/beret = 3, + /obj/item/clothing/head/beret/grey = 3, + /obj/item/clothing/head/flatcap = 3, + /obj/item/clothing/head/beanie = 3, + /obj/item/clothing/head/cowboy = 3, + /obj/item/clothing/head/trapper = 2, + /obj/item/clothing/head/hardhat = 2, + /obj/item/clothing/head/hardhat/orange = 2, + /obj/item/clothing/head/hardhat/dblue = 2, + /obj/item/clothing/head/pirate = 1, + /obj/item/clothing/head/foilhat = 1 + ) + ) + if(prob(50)) + mask = pickweight(list( + /obj/item/clothing/mask/balaclava = 1, + /obj/item/clothing/mask/bandana/red = 1, + /obj/item/clothing/mask/gas = 3, + /obj/item/clothing/mask/breath = 3, + ) + ) + if(prob(25)) + neck = pickweight(list( + /obj/item/clothing/neck/scarf/red = 1, + /obj/item/clothing/neck/scarf/green = 1, + /obj/item/clothing/neck/scarf/darkblue = 1, + /obj/item/clothing/neck/shemagh = 1, + /obj/item/clothing/neck/stripedredscarf = 1, + /obj/item/clothing/neck/stripedgreenscarf = 1, + /obj/item/clothing/neck/stripedbluescarf = 1 + ) + ) + ears = pick(/obj/item/radio/headset, /obj/item/radio/headset/alt) + if(prob(50)) + glasses = pickweight(list( + /obj/item/clothing/glasses/regular = 1, + /obj/item/clothing/glasses/regular/circle = 1, + /obj/item/clothing/glasses/regular/jamjar = 1, + /obj/item/clothing/glasses/eyepatch = 1, + /obj/item/clothing/glasses/cheapsuns = 1, + /obj/item/clothing/glasses/regular/hipster = 1, + /obj/item/clothing/glasses/cold = 1, + /obj/item/clothing/glasses/heat = 1, + /obj/item/clothing/glasses/orange = 1, + ) + ) + if(prob(75)) + r_pocket = /obj/item/tank/internals/emergency_oxygen + if(prob(75)) + l_pocket = pick(/obj/item/radio, /obj/item/flashlight) + id = /obj/item/card/id + backpack_contents = list() + backpack_contents += pickweight(list( + /obj/item/dice/d20 = 1, + /obj/item/lipstick = 1, + /obj/item/clothing/mask/vape = 1, + /obj/item/clothing/mask/vape/cigar = 1, + /obj/item/reagent_containers/food/drinks/flask = 1, + /obj/item/lighter = 1, + /obj/item/toy/cards/deck = 1, + /obj/item/toy/eightball = 1, + /obj/item/storage/wallet = 1, + /obj/item/paicard = 1, + /obj/item/pen/fourcolor = 1, + /obj/item/paper_bin = 1, + /obj/item/cane = 1, + /obj/item/radio = 1, + /obj/item/dyespray = 1, + /obj/item/table_bell/brass = 1, + /obj/item/flashlight = 1, + /obj/item/crowbar/red = 1 + ) + ) + +/datum/outfit/generic + name = "Generic (Legion)" + box = /obj/item/storage/box/survival + random = TRUE + +/datum/outfit/generic/miner/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(prob(75)) + uniform = pickweight(list( + /obj/item/clothing/under/rank/cargo/miner/lavaland = 5, + /obj/item/clothing/under/rank/cargo/miner = 4, + /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 1, + ) + ) + if(prob(25)) + suit = pickweight(list( + /obj/item/clothing/suit/hooded/explorer = 18, + /obj/item/clothing/suit/hooded/explorer/old = 1, + /obj/item/clothing/suit/hooded/cloak/goliath = 1 + ) + ) + if(prob(75)) + back = /obj/item/storage/backpack/explorer + if(prob(75)) + belt = pickweight(list( + /obj/item/storage/belt/mining = 2, + /obj/item/storage/belt/mining/alt = 2 + ) + ) + else if(prob(75)) + belt = pickweight(list( + /obj/item/pickaxe = 16, + /obj/item/pickaxe/mini = 8, + /obj/item/pickaxe/silver = 4, + /obj/item/pickaxe/diamond = 2, + /obj/item/gun/energy/kinetic_accelerator = 2, + /obj/item/kinetic_crusher/old = 1 + ) + ) + if(prob(75)) + gloves = pickweight(list( + /obj/item/clothing/gloves/color/black = 9, + /obj/item/clothing/gloves/explorer/old = 1 + ) + ) + if(prob(75)) + shoes = /obj/item/clothing/shoes/workboots/mining + if(prob(75)) + mask = pickweight(list( + /obj/item/clothing/mask/gas/explorer = 9, + /obj/item/clothing/mask/gas/explorer/old = 1 + ) + ) + if(prob(50)) + glasses = /obj/item/clothing/glasses/meson + if(prob(50)) + r_pocket = pickweight(list( + /obj/item/stack/marker_beacon = 20, + /obj/item/spacecash/bundle/mediumrand = 7, + /obj/item/reagent_containers/hypospray/medipen/survival = 2, + /obj/item/borg/upgrade/modkit/damage = 1 + ) + ) + if(prob(25)) + l_pocket = pickweight(list( + /obj/item/spacecash/bundle/mediumrand = 5, + /obj/item/reagent_containers/hypospray/medipen/survival = 2, + /obj/item/borg/upgrade/modkit/cooldown = 1 + ) + ) + if(prob(75)) + for(var/count in 1 to 3) + if(prob(70)) + backpack_contents += pickweight(list( + /obj/item/borg/upgrade/modkit/damage = 1, + /obj/item/borg/upgrade/modkit/trigger_guard = 1, + /obj/item/soap/nanotrasen = 1, + /obj/item/wormhole_jaunter = 1, + /obj/item/fulton_core = 1, + /obj/item/extraction_pack = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 3, + /obj/item/hivelordstabilizer = 2, + /obj/item/stack/marker_beacon/ten = 2, + /obj/item/mining_scanner = 2, + /obj/item/extinguisher/mini = 2, + /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/flashlight/seclite = 3, + /obj/item/stack/sheet/sinew = 3, + /obj/item/stack/sheet/bone = 3 + ) + ) + if(prob(30)) + backpack_contents += list( + /obj/item/reagent_containers/hypospray/medipen/survival = pickweight(list( + 1 = 3, + 2 = 2, + 3 = 1 + ) + ) + ) + else if (prob(75)) + backpack_contents = list() + back = pickweight(list( + /obj/item/kinetic_crusher = 9, + /obj/item/kinetic_crusher/old = 1 + ) + ) + +/datum/outfit/generic/miner + name = "Miner (Legion)" + +/datum/outfit/generic/engineer/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(prob(75)) + uniform = pick(/obj/item/clothing/under/rank/engineering/engineer, /obj/item/clothing/under/rank/engineering/engineer/hazard, /obj/item/clothing/under/rank/security/officer/military/eng) + if(prob(75)) + suit = pick(/obj/item/clothing/suit/toggle/hazard, /obj/item/clothing/suit/hazardvest, /obj/item/clothing/suit/hooded/wintercoat/engineering) + if(prob(75)) + gloves = pick(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/gloves/color/fyellow/old) + if(prob(75)) + belt = pick(/obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility) + if(prob(50)) + head = /obj/item/clothing/head/welding + if(prob(75)) + ears = /obj/item/radio/headset/headset_eng + else if(prob(50)) + glasses = /obj/item/clothing/glasses/welding + if(prob(75)) + back = pick(/obj/item/storage/backpack/industrial, /obj/item/storage/backpack/satchel/eng, /obj/item/storage/backpack/duffelbag/engineering, /obj/item/storage/backpack/messenger/engi) + if(prob(10)) + back = /obj/item/fireaxe + for(var/i = 1 to 3) + if(prob(75)) + backpack_contents += pickweight(list( + /obj/item/stack/tape/industrial/electrical = 1, + /obj/item/electronics/apc = 1, + /obj/item/multitool = 1, + /obj/item/pipe_dispenser = 1, + /obj/item/tank/internals/emergency_oxygen/engi = 1, + /obj/item/holosign_creator/engineering = 1, + /obj/item/extinguisher/advanced = 1, + /obj/item/stack/sheet/metal/twenty = 1 + ) + ) + if(prob(75)) + accessory = /obj/item/clothing/accessory/armband/engine + +/datum/outfit/generic/engineer + name = "Mechanic (Legion)" + box = /obj/item/storage/box/survival/engineer + +/datum/outfit/generic/doctor/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(prob(75)) + uniform = pick(/obj/item/clothing/under/rank/medical/doctor, /obj/item/clothing/under/rank/medical/doctor/blue) + if(prob(75)) + suit = pick(/obj/item/clothing/suit/toggle/labcoat, /obj/item/clothing/suit/apron/surgical ,/obj/item/clothing/suit/hooded/wintercoat/medical) + if(prob(75)) + back = pick(/obj/item/storage/backpack/medic, /obj/item/storage/backpack/satchel/med, /obj/item/storage/backpack/duffelbag/med, /obj/item/storage/backpack/messenger/med) + else if (prob(75)) + back = /obj/item/defibrillator/loaded + if(prob(75)) + belt = pickweight(list(/obj/item/storage/belt/medical = 5, /obj/item/defibrillator/compact/loaded = 1)) + if(prob(75)) + gloves = pick(/obj/item/clothing/gloves/color/white, /obj/item/clothing/gloves/color/latex/nitrile) + if(prob(75)) + mask = /obj/item/clothing/mask/surgical + if(prob(75)) + shoes = /obj/item/clothing/shoes/sneakers/white + if(prob(75)) + head = /obj/item/clothing/head/beret/med + if(prob(75)) + ears = /obj/item/radio/headset/headset_med + if(prob(75)) + glasses = pick(/obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/hud/health/prescription) + for(var/i = 1 to 3) + if(prob(75)) + backpack_contents += pickweight(list( + /obj/item/reagent_containers/pill/patch/styptic = 5, + /obj/item/reagent_containers/pill/patch/silver_sulf = 5, + /obj/item/storage/firstaid/medical = 3, + /obj/item/reagent_containers/syringe = 3, + /obj/item/reagent_containers/glass/beaker = 2, + /obj/item/reagent_containers/dropper = 2, + /obj/item/reagent_containers/pill/charcoal = 2, + /obj/item/reagent_containers/medigel/styptic = 2, + /obj/item/reagent_containers/medigel/silver_sulf = 2, + /obj/item/reagent_containers/medigel/sterilizine = 1, + /obj/item/flashlight/pen = 1, + /obj/item/hypospray/mkii = 1, + /obj/item/healthanalyzer = 1, + ) + ) + if(prob(75)) + accessory = /obj/item/clothing/accessory/armband/medblue + +/datum/outfit/generic/doctor + name = "Medical Doctor (Legion)" + box = /obj/item/storage/box/survival/medical + +/datum/outfit/generic/science/pre_equip(mob/living/carbon/human/H) + ..() + if(prob(75)) + uniform = pick(/obj/item/clothing/under/rank/rnd/scientist, /obj/item/clothing/under/rank/rnd/roboticist) + if(prob(75)) + suit = pick(/obj/item/clothing/suit/toggle/labcoat/science, /obj/item/clothing/suit/hooded/wintercoat/science) + if(prob(75)) + back = pick(/obj/item/storage/backpack/science, /obj/item/storage/backpack/satchel/tox, /obj/item/storage/backpack/messenger/tox) + if(prob(75)) + shoes = /obj/item/clothing/shoes/sneakers/white + if(prob(75)) + gloves = /obj/item/clothing/gloves/color/white + if(prob(75)) + head = /obj/item/clothing/head/beret/sci + if(prob(75)) + ears = /obj/item/radio/headset/headset_sci + if(prob(75)) + glasses = pick(/obj/item/clothing/glasses/hud/diagnostic, /obj/item/clothing/glasses/science) + if(prob(1)) + neck = /obj/item/clothing/neck/tie/horrible + for(var/i = 1 to 3) + if(prob(75)) + backpack_contents += pickweight(list( + /obj/item/research_notes/loot/tiny = 3, + /obj/item/research_notes/loot/small = 3, + /obj/item/reagent_scanner = 3, + /obj/item/assembly/flash/handheld = 3, + /obj/item/stock_parts/capacitor/adv = 2, + /obj/item/stock_parts/scanning_module/adv = 2, + /obj/item/stock_parts/manipulator/nano = 2, + /obj/item/stock_parts/micro_laser/high = 2, + /obj/item/stock_parts/matter_bin/adv = 2, + /obj/item/survey_handheld = 1, + /obj/item/weldingtool/experimental = 1, + /obj/item/mmi/posibrain = 1, + /obj/item/reagent_containers/glass/beaker/plastic = 1, + /obj/item/organ/eyes/robotic/shield = 1, + /obj/item/organ/eyes/robotic/glow = 1, + ) + ) + if(prob(75)) + accessory = /obj/item/clothing/accessory/armband/science + + +/datum/outfit/generic/science + name = "Scientist (Legion)" + +/datum/outfit/generic/cargo/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(prob(75)) + uniform = pick(/obj/item/clothing/under/rank/cargo/tech, /obj/item/clothing/under/shorts/grey) + if(prob(75)) + suit = pick(/obj/item/clothing/suit/hazardvest, /obj/item/clothing/suit/hooded/wintercoat/cargo) + if(prob(25)) + belt = /obj/item/gun/ballistic/automatic/zip_pistol + if(prob(75)) + gloves = /obj/item/clothing/gloves/fingerless + if(prob(75)) + shoes = /obj/item/clothing/shoes/sneakers/black + if(prob(75)) + head = /obj/item/clothing/head/soft + if(prob(75)) + ears = /obj/item/radio/headset/headset_cargo + for(var/i = 1 to 3) + if(prob(75)) + backpack_contents += pickweight(list( + /obj/item/spacecash/bundle/mediumrand = 5, + /obj/item/ammo_box/magazine/illestren_a850r = 5, + /obj/item/ammo_box/magazine/zip_ammo_9mm = 5, + /obj/item/modular_computer/tablet/preset/cargo = 3, + /obj/item/stack/tape = 3, + /obj/item/stack/tape/industrial = 3, + /obj/item/stack/sheet/plastic/five = 3, + /obj/item/grenade/frag = 1 + ) + ) + if(prob(75)) + accessory = /obj/item/clothing/accessory/armband/cargo + if(prob(25)) + suit = /obj/item/clothing/suit/armor/vest/scrap_armor + suit_store = /obj/item/gun/ballistic/rifle/illestren + +/datum/outfit/generic/cargo + name = "Cargo Technician (Legion)" + +/datum/outfit/generic/security/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(prob(75)) + uniform = /obj/item/clothing/under/rank/security/officer + if(prob(75)) + suit = pick(/obj/item/clothing/suit/armor/vest, /obj/item/clothing/suit/armor/vest/security/officer, /obj/item/clothing/suit/armor/vest/bulletproof, /obj/item/clothing/suit/armor/vest/blueshirt) + if(prob(75)) + back = pick(/obj/item/storage/backpack/security, /obj/item/storage/backpack/satchel/sec, /obj/item/storage/backpack/duffelbag/sec, /obj/item/storage/backpack/messenger/sec) + if(prob(75)) + belt = pick(/obj/item/storage/belt/security, /obj/item/storage/belt/security/webbing) + if(prob(75)) + gloves = pick(/obj/item/clothing/gloves/color/black, /obj/item/clothing/gloves/tackler) + if(prob(75)) + shoes = /obj/item/clothing/shoes/jackboots + if(prob(75)) + head = pick(/obj/item/clothing/head/helmet/sec, /obj/item/clothing/head/helmet/blueshirt, /obj/item/clothing/head/helmet/bulletproof) + if(prob(75)) + mask = /obj/item/clothing/mask/gas/sechailer + if(prob(75)) + ears = /obj/item/radio/headset/headset_sec + if(prob(75)) + glasses = pick(/obj/item/clothing/glasses/hud/security, /obj/item/clothing/glasses/sunglasses) + if(prob(75)) + r_pocket = pick(/obj/item/flashlight/seclite, /obj/item/assembly/flash/handheld, /obj/item/restraints/handcuffs) + if(prob(50)) + suit_store = pick(/obj/item/gun/energy/e_gun, /obj/item/gun/energy/e_gun/smg, /obj/item/gun/energy/e_gun/iot) + for(var/i = 1 to 3) + if(prob(75)) + backpack_contents += pickweight(list( + /obj/item/restraints/handcuffs = 8, + /obj/item/assembly/flash/handheld = 5, + /obj/item/storage/box/evidence = 6, + /obj/item/flashlight/seclite = 4, + /obj/item/ammo_box/c9mm/rubbershot = 3, + /obj/item/ammo_box/c9mm = 1, + /obj/item/stock_parts/cell/gun = 3, + /obj/item/coin/antagtoken = 1, + /obj/item/grenade/stingbang = 1 + ) + ) + if(prob(75)) + accessory = /obj/item/clothing/accessory/armband/deputy + +/datum/outfit/generic/security + name = "Security Officer (Legion)" + box = /obj/item/storage/box/survival/security + diff --git a/code/modules/mob/living/simple_animal/hostile/survivors.dm b/code/modules/mob/living/simple_animal/hostile/survivors.dm index 2f9837c4b1cb..2c350ab5ca55 100644 --- a/code/modules/mob/living/simple_animal/hostile/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/survivors.dm @@ -101,16 +101,15 @@ var/survivor_type //room for alternatives inside the fuckoff grade init. /obj/effect/mob_spawn/human/corpse/damaged/whitesands/Initialize() //everything here should equal out to 100 for the sake of my sanity. - mob_species = pickweight(list( /datum/species/human = 50, - /datum/species/lizard = 25, + /datum/species/lizard = 20, + /datum/species/ipc = 10, /datum/species/elzuose = 10, - /datum/species/moth = 10, - /datum/species/spider = 3, - /datum/species/fly = 2 - ) + /datum/species/moth = 5, + /datum/species/spider = 5 ) + ) //to-do: learn how to make mobsprites for other survivors //gloves are a tossup diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index c6f9eb0e1a97..63e0d014c6bf 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -79,6 +79,12 @@ /obj/item/gun/ballistic/automatic/pistol/candor/factory/no_mag spawnwithmagazine = FALSE +/obj/item/gun/ballistic/automatic/pistol/candor/phenex + name = "\improper HP Phenex" + desc = "A uniquely modified version of the Candor, famously created by Hunter's Pride. Named after the daemonic Phoenix of legend that the Ashen Huntsman had once slain, this hell-kissed weapon is more visually intimidating than its original counterpart, but mechanically acts the same. Chambered in .45." + icon_state = "phenex" + item_state = "hp_phenex" + /obj/item/gun/ballistic/automatic/pistol/deagle name = "\improper Desert Eagle" desc = "An oversized handgun chambered in .50 AE. A true hand cannon." diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 01d7674e116e..967fd9991a92 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -100,7 +100,7 @@ var/doafter_time = 0.4 SECONDS if(!do_mob(user,user,doafter_time)) break - if(!eject_casing()) + if(!eject_casing(user)) doafter_time = 0 SECONDS else num_unloaded++ @@ -122,6 +122,7 @@ to_chat(user, "There's nothing in the gate to eject from [src]!") return FALSE playsound(src, eject_sound, eject_sound_volume, eject_sound_vary) + casing_to_eject.forceMove(drop_location()) var/angle_of_movement =(rand(-3000, 3000) / 100) + dir2angle(turn(user.dir, 180)) casing_to_eject.AddComponent(/datum/component/movable_physics, _horizontal_velocity = rand(350, 450) / 100, _vertical_velocity = rand(400, 450) / 100, _horizontal_friction = rand(20, 24) / 100, _z_gravity = PHYSICS_GRAV_STANDARD, _z_floor = 0, _angle_of_movement = angle_of_movement) @@ -279,7 +280,6 @@ playsound(src, rack_sound, rack_sound_volume, rack_sound_vary) chamber_round(TRUE) - //playsound(src, rack_sound, rack_sound_volume, rack_sound_vary) SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) update_appearance() diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 91927581095c..ab0be2930324 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -259,7 +259,8 @@ taste_description = "sourness" /datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M) - M.hallucination += 5 + if(!M.has_quirk(/datum/quirk/insanity)) + M.hallucination += 5 return ..() /datum/reagent/toxin/plantbgone diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 10cd8ffc72eb..e7494191d1df 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -56,7 +56,7 @@ /datum/chemical_reaction/adamantinesolidification/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) - new /obj/item/stack/sheet/mineral/adamantine(location) + new /obj/item/stack/sheet/mineral/hidden/hellstone(location) /datum/chemical_reaction/silversolidification required_reagents = list(/datum/reagent/silver = 20, /datum/reagent/consumable/frostoil = 5, /datum/reagent/carbon = 10) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 97290d54213f..d3bf1e211290 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -425,7 +425,7 @@ required_other = TRUE /datum/chemical_reaction/slime/adamantine/on_reaction(datum/reagents/holder) - new /obj/item/stack/sheet/mineral/adamantine(get_turf(holder.my_atom)) + new /obj/item/stack/sheet/mineral/hidden/hellstone(get_turf(holder.my_atom)) ..() //Bluespace diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 8a0c572015db..e39d48e5cc77 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -1191,6 +1191,14 @@ build_path = /obj/item/assembly/control category = list("initial","Misc") +/datum/design/holofield_control + name = "Holofield Controller" + id = "holofield" + build_type = AUTOLATHE + materials = list(/datum/material/iron = 100, /datum/material/glass = 50) + build_path = /obj/item/assembly/control/shieldwallgen + category = list("initial","Misc") + /datum/design/trashbag name="Trash Bag" id="trashbag" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index e12db8a59738..6955bf525d29 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -9,6 +9,13 @@ build_path = /obj/item/circuitboard/machine/smes category = list ("Engineering Machinery") +/datum/design/board/ssu + name = "Machine Design (Suit Storage Unit Board)" + desc = "The circuit board for a suit storage unit." + id = "ssu" + build_path = /obj/item/circuitboard/machine/suit_storage_unit + category = list ("Engineering Machinery") + /datum/design/board/circulator name = "Machine Design (Circulator Board)" desc = "The circuit board for a circulator." diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index dfd373dcd3d7..46dddeb0c586 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -445,7 +445,7 @@ id = "honk_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_torso - materials = list(/datum/material/iron=20000,/datum/material/glass = 10000,/datum/material/bananium=10000) + materials = list(/datum/material/iron=20000,/datum/material/glass = 10000,/datum/material/hellstone=10000) construction_time = 300 category = list("H.O.N.K") @@ -454,7 +454,7 @@ id = "honk_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_head - materials = list(/datum/material/iron=10000,/datum/material/glass = 5000,/datum/material/bananium=5000) + materials = list(/datum/material/iron=10000,/datum/material/glass = 5000,/datum/material/hellstone=5000) construction_time = 200 category = list("H.O.N.K") @@ -463,7 +463,7 @@ id = "honk_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_left_arm - materials = list(/datum/material/iron=15000,/datum/material/bananium=5000) + materials = list(/datum/material/iron=15000,/datum/material/hellstone=5000) construction_time = 200 category = list("H.O.N.K") @@ -472,7 +472,7 @@ id = "honk_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_right_arm - materials = list(/datum/material/iron=15000,/datum/material/bananium=5000) + materials = list(/datum/material/iron=15000,/datum/material/hellstone=5000) construction_time = 200 category = list("H.O.N.K") @@ -481,7 +481,7 @@ id = "honk_left_leg" build_type = MECHFAB build_path =/obj/item/mecha_parts/part/honker_left_leg - materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) + materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) construction_time = 200 category = list("H.O.N.K") @@ -490,7 +490,7 @@ id = "honk_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_right_leg - materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) + materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) construction_time = 200 category = list("H.O.N.K") @@ -657,7 +657,7 @@ id = "mech_mousetrap_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar - materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) + materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) construction_time = 300 category = list("Exosuit Equipment") @@ -666,7 +666,7 @@ id = "mech_banana_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar - materials = list(/datum/material/iron=20000,/datum/material/bananium=5000) + materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) construction_time = 300 category = list("Exosuit Equipment") @@ -675,7 +675,7 @@ id = "mech_honker" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker - materials = list(/datum/material/iron=20000,/datum/material/bananium=10000) + materials = list(/datum/material/iron=20000,/datum/material/hellstone=10000) construction_time = 500 category = list("Exosuit Equipment") @@ -684,7 +684,7 @@ id = "mech_punching_face" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove - materials = list(/datum/material/iron=20000,/datum/material/bananium=7500) + materials = list(/datum/material/iron=20000,/datum/material/hellstone=7500) construction_time = 400 category = list("Exosuit Equipment") @@ -769,7 +769,7 @@ id = "borg_transform_clown" build_type = MECHFAB build_path = /obj/item/borg/upgrade/transform/clown - materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/bananium = 1000) + materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/hellstone = 1000) construction_time = 120 category = list("Cyborg Upgrade Modules") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 343ff920df20..95a03b829608 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -476,7 +476,7 @@ desc = "Makes death amusing." id = "implant_trombone" build_type = PROTOLATHE - materials = list(/datum/material/glass = 500, /datum/material/bananium = 500) + materials = list(/datum/material/glass = 500, /datum/material/hellstone = 500) build_path = /obj/item/implantcase/sad_trombone category = list("Medical Designs") diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index eeca189ef2dc..816cd4f9fdbf 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -130,7 +130,7 @@ desc = "Damn son, where'd you find this?" id = "air_horn" build_type = PROTOLATHE - materials = list(/datum/material/iron = 4000, /datum/material/bananium = 1000) + materials = list(/datum/material/iron = 4000, /datum/material/hellstone = 1000) build_path = /obj/item/bikehorn/airhorn category = list("Equipment") diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index af76ef1d00fa..eaa696c8d775 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -183,7 +183,7 @@ prereq_ids = list("base") design_ids = list("solarcontrol", "solarassembly", "recharger", "powermonitor", "rped", "pacman", "adv_capacitor", "adv_scanning", "emitter", "high_cell", "adv_matter_bin", "scanner_gate", "atmosalerts", "atmos_control", "recycler", "autolathe", "high_micro_laser", "nano_mani", "mesons", "welding_goggles", "thermomachine", "rad_collector", "tesla_coil", "grounding_rod", - "apc_control", "cell_charger", "power control", "airlock_board", "firelock_board", "aac_electronics", "airalarm_electronics", "firealarm_electronics", "cell_charger", "stack_console", "stack_machine", + "apc_control", "cell_charger", "ssu", "power control", "airlock_board", "firelock_board", "aac_electronics", "airalarm_electronics", "firealarm_electronics", "cell_charger", "stack_console", "stack_machine", "oxygen_tank", "plasma_tank", "emergency_oxygen", "emergency_oxygen_engi", "plasmaman_tank_belt", "pneumatic_seal", "shieldwallgen", "shieldwallgen_atmos") //WS edit, solar assemblies from lathe research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index 501ff548e08f..25aa79302918 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -146,7 +146,7 @@ Charged extracts: effect_desc = "Creates bananium. Oh no." /obj/item/slimecross/charged/pyrite/do_effect(mob/user) - new /obj/item/stack/sheet/mineral/bananium(get_turf(user), 10) + new /obj/item/stack/sheet/mineral/hidden/hellstone(get_turf(user), 10) user.visible_message("[src] solidifies with a horrifying banana stench!") ..() diff --git a/code/modules/unit_tests/outfit_sanity.dm b/code/modules/unit_tests/outfit_sanity.dm index aca1d210fbf0..4dc12b4dc6e3 100644 --- a/code/modules/unit_tests/outfit_sanity.dm +++ b/code/modules/unit_tests/outfit_sanity.dm @@ -3,7 +3,10 @@ /* We don't check the result of equip_to_slot_or_del because it returns false for random jumpsuits, as they delete themselves on init */ \ var/obj/item/outfit_item = H.get_item_by_slot(##slot_name); \ if (!outfit_item) { \ - TEST_FAIL("[outfit.name]'s [#outfit_key] is invalid! Could not equip a [outfit.##outfit_key] into that slot."); \ + if (outfit.random != TRUE) \ + TEST_FAIL("[outfit.name]'s [#outfit_key] is invalid! Could not equip a [outfit.##outfit_key] into that slot."); \ + else \ + log_world("[outfit.name]'s [#outfit_key] is invalid! Could not equip a [outfit.##outfit_key] into that slot."); \ } \ } @@ -61,6 +64,10 @@ var/number = backpack_contents[path] || 1 for (var/_ in 1 to number) if (!H.equip_to_slot_or_del(new path(H), ITEM_SLOT_BACKPACK, TRUE)) - TEST_FAIL("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + if (outfit.random != TRUE) + TEST_FAIL("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + else + log_world("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + #undef CHECK_OUTFIT_SLOT diff --git a/html/changelogs/AutoChangeLog-pr-2279.yml b/html/changelogs/AutoChangeLog-pr-2279.yml new file mode 100644 index 000000000000..e42dc6fb7a8f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2279.yml @@ -0,0 +1,5 @@ +author: Sun-Soaked +changes: + - {rscadd: World icon element.} + - {rscadd: World icons for combat knives.} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-2543.yml b/html/changelogs/AutoChangeLog-pr-2543.yml new file mode 100644 index 000000000000..c53332a488f1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2543.yml @@ -0,0 +1,7 @@ +author: FalloutFalcon +changes: + - {rscadd: Added new more varied legion corpses} + - {rscdel: Removed lot of the crappy legion corpses} + - {balance: rebalanced most of the old legion corpses} + - {refactor: moved most legion corpse loot behavior to outfits} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-2822.yml b/html/changelogs/AutoChangeLog-pr-2822.yml new file mode 100644 index 000000000000..ffa9649d9669 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2822.yml @@ -0,0 +1,4 @@ +author: thgvr +changes: + - {rscadd: Roundstart ships no longer spawn} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-2980.yml b/html/changelogs/AutoChangeLog-pr-2980.yml new file mode 100644 index 000000000000..d2769b09faf3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2980.yml @@ -0,0 +1,4 @@ +author: SomeguyManperson +changes: + - {bugfix: fueled thruster throttling now works right} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3005.yml b/html/changelogs/AutoChangeLog-pr-3005.yml deleted file mode 100644 index ef27a62d6efc..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3005.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Gristlebee -changes: - - {rscadd: Holopads now display the location of the last holopad that called them - on examine.} - - {code_imp: Span macros for hologram.dm} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3017.yml b/html/changelogs/AutoChangeLog-pr-3017.yml new file mode 100644 index 000000000000..13e3aae87260 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3017.yml @@ -0,0 +1,12 @@ +author: Skies-Of-Blue +changes: + - {bugfix: 'rds based delusions now pass without the player having to relog, thank + god'} + - {bugfix: rds can once again be treated with mindbreaker toxin (hopefully)} + - {tweak: the pool of possible delusions has been changed to better reflect shiptest's + narrative} + - {rscadd: a base ramzi sprite to simple_human.dmi to be used in the changed delusion + pool} + - {rscdel: 'chat warning message for rds users not to grief. Just be cool about + it, okay?'} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3027.yml b/html/changelogs/AutoChangeLog-pr-3027.yml new file mode 100644 index 000000000000..2360e7f949a8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3027.yml @@ -0,0 +1,7 @@ +author: Gristlebee +changes: + - {rscadd: Suit Storage Unit construction} + - {rscadd: Added suit storage unit circuit boards to industrial engineering tech} + - {tweak: Suit storage unit examines} + - {tweak: span class to span macros in suit_storage.dm} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3029.yml b/html/changelogs/AutoChangeLog-pr-3029.yml deleted file mode 100644 index fadc2ae83351..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3029.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Apogee-dev -changes: - - {tweak: Syndicate mobs have been renamed to Ramzi Clique mobs. New sprites will - come later.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3049.yml b/html/changelogs/AutoChangeLog-pr-3049.yml new file mode 100644 index 000000000000..b2f3179c7ceb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3049.yml @@ -0,0 +1,5 @@ +author: INFRARED_BARON +changes: + - {imageadd: 'All mechs have been successfully resprited, including the Mauler, + Marauder and Seraph now!'} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3051.yml b/html/changelogs/AutoChangeLog-pr-3051.yml new file mode 100644 index 000000000000..a9c25f392971 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3051.yml @@ -0,0 +1,5 @@ +author: Skies-Of-Blue +changes: + - {tweak: 'mugs referencing an ancient terran empire have been confiscated by the + confederation. Please enjoy your complementary, generic mug in compensation'} +delete-after: true diff --git a/html/changelogs/archive/2024-05.yml b/html/changelogs/archive/2024-05.yml index 2cab207766bf..9e6c28996774 100644 --- a/html/changelogs/archive/2024-05.yml +++ b/html/changelogs/archive/2024-05.yml @@ -163,3 +163,24 @@ Zevotech: - rscdel: Clown and mime fan quirks have been removed - rscdel: Removes the clown and mime fan pins +2024-05-29: + Apogee-dev: + - tweak: Syndicate mobs have been renamed to Ramzi Clique mobs. New sprites will + come later. + Gristlebee: + - rscadd: Holopads now display the location of the last holopad that called them + on examine. + - code_imp: Span macros for hologram.dm + - rscadd: Autolathe can print holofield controllers. + - rscadd: You can sync blastdoors and holofields to a controller in a button with + a multitool + - code_imp: span macros for blast doors, buttons and holofields +2024-05-30: + PositiveEntropy: + - rscadd: Solarian Marine Bi-ologists now have proper representation in the form + of a cute cloak! +2024-05-31: + Gristlebee: + - bugfix: Auto unloading for gate loaded revolvers + INFRARED_BARON, PositiveEntropy: + - imageadd: Resprites nearly every mech! diff --git a/icons/effects/ore_visuals.dmi b/icons/effects/ore_visuals.dmi index 1353a2d814ad..b64b8f0427e2 100644 Binary files a/icons/effects/ore_visuals.dmi and b/icons/effects/ore_visuals.dmi differ diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 08f0c94505ee..b894d9191225 100644 Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 398d4589ad71..f334af20104e 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi index 6b27c56c8b35..bc048fc920c9 100644 Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi index 9443ebfbc615..a22e958effd8 100644 Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ diff --git a/icons/mob/inhands/misc/sheets_lefthand.dmi b/icons/mob/inhands/misc/sheets_lefthand.dmi index 8a5431217705..4d7c351d35f9 100644 Binary files a/icons/mob/inhands/misc/sheets_lefthand.dmi and b/icons/mob/inhands/misc/sheets_lefthand.dmi differ diff --git a/icons/mob/inhands/misc/sheets_righthand.dmi b/icons/mob/inhands/misc/sheets_righthand.dmi index 24256299f2e8..c19a179e689b 100644 Binary files a/icons/mob/inhands/misc/sheets_righthand.dmi and b/icons/mob/inhands/misc/sheets_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi index ef1b09fccc53..d356f95fd272 100644 Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi index 827bd71ad50e..b69fb6ff8f74 100644 Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ diff --git a/icons/mob/simple_human.dmi b/icons/mob/simple_human.dmi index 8cbc0f841bcb..83729d2a2ba4 100644 Binary files a/icons/mob/simple_human.dmi and b/icons/mob/simple_human.dmi differ diff --git a/icons/obj/clothing/cloaks.dmi b/icons/obj/clothing/cloaks.dmi index 48f09da9a178..4e863875c47f 100644 Binary files a/icons/obj/clothing/cloaks.dmi and b/icons/obj/clothing/cloaks.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 690ed5d86d2f..9068f301647f 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/ores.dmi b/icons/obj/ores.dmi index f3451a8432dd..1e6c41a90c05 100644 Binary files a/icons/obj/ores.dmi and b/icons/obj/ores.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 0989e1834f70..80350d2bfaa3 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/world/melee.dmi b/icons/obj/world/melee.dmi new file mode 100644 index 000000000000..ff8e2114e827 Binary files /dev/null and b/icons/obj/world/melee.dmi differ diff --git a/icons/turf/walls/bananium_wall.dmi b/icons/turf/walls/bananium_wall.dmi deleted file mode 100644 index 48a58fe20619..000000000000 Binary files a/icons/turf/walls/bananium_wall.dmi and /dev/null differ diff --git a/shiptest.dme b/shiptest.dme index 48c1f2069ca7..864381f29e5b 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -655,6 +655,7 @@ #include "code\datums\elements\update_icon_blocker.dm" #include "code\datums\elements\update_icon_updates_onmob.dm" #include "code\datums\elements\waddling.dm" +#include "code\datums\elements\world_icon.dm" #include "code\datums\elements\decals\_decals.dm" #include "code\datums\elements\decals\blood.dm" #include "code\datums\helper_datums\events.dm" @@ -2765,6 +2766,7 @@ #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goldgrub.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goliath.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord_outfits.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\ice demon.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\ice whelp.dm"