Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync

This commit is contained in:
xPokee
2025-10-03 07:05:54 -04:00
517 changed files with 24339 additions and 21253 deletions
@@ -13,6 +13,7 @@
attack_verb_simple = list("attack", "saw", "slice", "tear", "lacerate", "rip", "dice", "cut")
force = 15
attack_speed = 6
resistance_flags = FIRE_PROOF | LAVA_PROOF
actions_types = list(/datum/action/cooldown/dagger_swing)
hitsound = 'sound/items/weapons/bladeslice.ogg'
w_class = WEIGHT_CLASS_SMALL
@@ -114,14 +114,17 @@
fire = 100
acid = 30
/obj/item/clothing/gloves/gauntlets/Initialize(mapload)
. = ..()
AddComponent(/datum/component/martial_art_giver, /datum/martial_art/boxing/hunter)
/obj/item/clothing/gloves/gauntlets/equipped(mob/user, slot)
. = ..()
if(slot & ITEM_SLOT_GLOVES)
tool_behaviour = TOOL_MINING
RegisterSignal(user, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(rocksmash))
RegisterSignal(user, COMSIG_MOVABLE_BUMP, PROC_REF(rocksmash))
else
stopmining(user)
if(!(slot & ITEM_SLOT_GLOVES))
return
tool_behaviour = TOOL_MINING
RegisterSignal(user, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(rocksmash))
RegisterSignal(user, COMSIG_MOVABLE_BUMP, PROC_REF(rocksmash))
/obj/item/clothing/gloves/gauntlets/dropped(mob/user)
. = ..()
@@ -373,7 +373,7 @@
if(isanimal_or_basicmob(loc))
holder_animal = loc
RegisterSignal(holder_animal, COMSIG_LIVING_DEATH, PROC_REF(on_holder_animal_death))
AddElement(/datum/element/empprotection, EMP_PROTECT_ALL)
AddElement(/datum/element/empprotection, EMP_PROTECT_ALL|EMP_NO_EXAMINE)
/obj/structure/closet/stasis/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
. = ..()
@@ -37,7 +37,7 @@
/obj/item/organ/brain/cybernetic/ai/on_mob_insert(mob/living/carbon/brain_owner, special, movement_flags)
. = ..()
brain_owner.add_traits(list(HUMAN_SENSORS_VISIBLE_WITHOUT_SUIT, TRAIT_NO_MINDSWAP, TRAIT_CORPSELOCKED), REF(src))
brain_owner.add_traits(list(TRAIT_BASIC_HEALTH_HUD_VISIBLE, TRAIT_NO_MINDSWAP, TRAIT_CORPSELOCKED), REF(src))
update_med_hud_status(brain_owner)
RegisterSignal(brain_owner, COMSIG_LIVING_HEALTH_UPDATE, PROC_REF(update_med_hud_status))
RegisterSignal(brain_owner, COMSIG_CLICK, PROC_REF(owner_clicked))
@@ -53,7 +53,7 @@
/obj/item/organ/brain/cybernetic/ai/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
undeploy()
. = ..()
organ_owner.remove_traits(list(HUMAN_SENSORS_VISIBLE_WITHOUT_SUIT, TRAIT_NO_MINDSWAP, TRAIT_CORPSELOCKED), REF(src))
organ_owner.remove_traits(list(TRAIT_BASIC_HEALTH_HUD_VISIBLE, TRAIT_NO_MINDSWAP, TRAIT_CORPSELOCKED), REF(src))
UnregisterSignal(organ_owner, list(COMSIG_LIVING_HEALTH_UPDATE, COMSIG_CLICK, COMSIG_MOB_GET_STATUS_TAB_ITEMS, COMSIG_MOB_MIND_BEFORE_MIDROUND_ROLL, COMSIG_QDELETING, COMSIG_LIVING_PRE_WABBAJACKED))
var/obj/item/implant/radio/radio = radio_weakref.resolve()
@@ -15,69 +15,14 @@
integrity_failure = 0 //prevents bust_open from firing
/// var to check if it got opened by a key
var/spawned_loot = FALSE
/// What random loot spawner our chest uses
var/loot_to_spawn = /obj/effect/spawner/random/mining_loot
/obj/structure/closet/crate/necropolis/tendril/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers)
if(!istype(item, /obj/item/skeleton_key) || spawned_loot)
return ..()
var/loot = rand(1,21)
var/mod
switch(loot)
if(1)
new /obj/item/shared_storage/red(src)
if(2)
new /obj/item/soulstone/anybody/mining(src)
if(3)
new /obj/item/organ/cyberimp/arm/toolkit/shard/katana(src)
if(4)
new /obj/item/clothing/glasses/godeye(src)
if(5)
new /obj/item/reagent_containers/cup/bottle/potion/flight(src)
if(6)
new /obj/item/clothing/gloves/gauntlets(src)
if(7)
mod = rand(1,4)
switch(mod)
if(1)
new /obj/item/disk/design_disk/modkit_disc/resonator_blast(src)
if(2)
new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src)
if(3)
new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src)
if(4)
new /obj/item/disk/design_disk/modkit_disc/bounty(src)
if(8)
new /obj/item/rod_of_asclepius(src)
if(9)
new /obj/item/organ/heart/cursed/wizard(src)
if(10)
new /obj/item/ship_in_a_bottle(src)
if(11)
new /obj/item/clothing/suit/hooded/berserker(src)
if(12)
new /obj/item/jacobs_ladder(src)
if(13)
new /obj/item/guardian_creator/miner(src)
if(14)
new /obj/item/warp_cube/red(src)
if(15)
new /obj/item/wisp_lantern(src)
if(16)
new /obj/item/immortality_talisman(src)
if(17)
new /obj/item/book/granter/action/spell/summonitem(src)
if(18)
new /obj/item/book_of_babel(src)
if(19)
new /obj/item/borg/upgrade/modkit/lifesteal(src)
new /obj/item/bedsheet/cult(src)
if(20)
new /obj/item/clothing/neck/necklace/memento_mori(src)
if(21)
new /obj/item/clothing/gloves/fingerless/punch_mitts(src)
new /obj/item/clothing/head/cowboy(src)
if(!contents.len)
to_chat(user, span_warning("[src] makes a clunking sound as you try to open it. You feel compelled to let the gods know! (Please open an adminhelp and try again!)"))
CRASH("Failed to generate loot. loot number: [loot][mod ? "subloot: [mod]" : null]")
new loot_to_spawn(src)
spawned_loot = TRUE
qdel(item)
to_chat(user, span_notice("You disable the magic lock, revealing the loot."))
@@ -95,6 +40,10 @@
//Megafauna chests
/obj/structure/closet/crate/necropolis/tendril/demonic
name = "demonic chest"
loot_to_spawn = /obj/effect/spawner/random/mining_loot/demonic
/obj/structure/closet/crate/necropolis/dragon
name = "dragon chest"