diff --git a/code/game/gamemodes/cult/blood_magic.dm b/code/game/gamemodes/cult/blood_magic.dm index c393585ddfe..4c66de40606 100644 --- a/code/game/gamemodes/cult/blood_magic.dm +++ b/code/game/gamemodes/cult/blood_magic.dm @@ -395,6 +395,12 @@ source.UpdateButtonIcon() return ..() +/obj/item/melee/blood_magic/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left hand" : "right hand"] is burning in blood-red fire." + /obj/item/melee/blood_magic/attack_self(mob/living/user) afterattack(user, user, TRUE) diff --git a/code/game/gamemodes/wizard/godhand.dm b/code/game/gamemodes/wizard/godhand.dm index 86a590c3e51..edfe5d8f41b 100644 --- a/code/game/gamemodes/wizard/godhand.dm +++ b/code/game/gamemodes/wizard/godhand.dm @@ -23,6 +23,12 @@ attached_spell.UnregisterSignal(attached_spell.action.owner, COMSIG_MOB_WILLINGLY_DROP) return ..() +/obj/item/melee/touch_attack/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left hand" : "right hand"] is burning in magic fire." + /obj/item/melee/touch_attack/attack(mob/target, mob/living/carbon/user) if(!iscarbon(user)) //Look ma, no hands return diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9ccf16d7f53..bad62caa116 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -153,6 +153,10 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons if(isstorage(loc)) //marks all items in storage as being such in_storage = TRUE +// this proc is used to add text for items with ABSTRACT flag after default examine text +/obj/item/proc/customised_abstract_text() + return + /obj/item/proc/determine_move_resist() switch(w_class) if(WEIGHT_CLASS_TINY) diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index d2c10361f3f..3cc8b79492c 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -122,6 +122,12 @@ damtype = BURN attack_verb = list("punched", "cross countered", "pummeled") +/obj/item/nullrod/godhand/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left hand" : "right hand"] is burning in holy fire." + /obj/item/nullrod/staff name = "red holy staff" desc = "It has a mysterious, protective aura." @@ -429,6 +435,12 @@ w_class = WEIGHT_CLASS_HUGE sharp = TRUE +/obj/item/nullrod/armblade/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left arm" : "right arm"] has been turned into a grotesque meat-blade." + /obj/item/nullrod/armblade/mining flags = NODROP reskin_selectable = FALSE //So 2 of the same nullrod doesnt show up. diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index f5632d29db9..f4e1ffcc2b8 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -749,6 +749,12 @@ STOP_PROCESSING(SSobj, src) return ..() +/obj/item/pyro_claws/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_they(TRUE)] [owner.p_have(FALSE)] energy claws extending [owner.p_their(FALSE)] wrists." + /obj/item/pyro_claws/process() lifetime -= 2 SECONDS if(lifetime <= 0) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 6381788c97b..a112f6d01c4 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -160,6 +160,12 @@ var/obj/machinery/computer/C = target C.attack_alien(user) //muh copypasta +/obj/item/melee/arm_blade/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left arm" : "right arm"] has been turned into a grotesque meat-blade." + /***************************************\ |***********COMBAT TENTACLES*************| \***************************************/ @@ -201,6 +207,12 @@ throw_speed = 0 var/datum/action/changeling/weapon/parent_action +/obj/item/gun/magic/tentacle/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left arm" : "right arm"] has been turned into a grotesque tentacle." + /obj/item/gun/magic/tentacle/Initialize(mapload, silent, new_parent_action) . = ..() parent_action = new_parent_action diff --git a/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm b/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm index 56d6fd41f73..9bde4fb3a18 100644 --- a/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm +++ b/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm @@ -68,6 +68,12 @@ parent_spell = null return ..() +/obj/item/vamp_claws/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_they(TRUE)] [owner.p_have(FALSE)] bloodied claws extending from [owner.p_their(FALSE)] wrists." + /obj/item/vamp_claws/afterattack(atom/target, mob/user, proximity) if(!proximity) return diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index ecc2e693862..f9991c2e714 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -125,6 +125,8 @@ // All the things wielded/worn that can be reasonably described with a common template: var/list/message_parts = examine_visible_clothing(skipgloves, skipsuitstorage, skipjumpsuit, skipshoes, skipmask, skipears, skipeyes, skipface) + var/list/abstract_items = list() + for(var/parts in message_parts) var/action = parts[1] var/obj/item/item = parts[2] @@ -134,20 +136,23 @@ if(length(parts) >= 5) accessories = parts[5] - if(item && !(item.flags & ABSTRACT)) - var/item_words = item.name - if(item.blood_DNA) - item_words = "[item.blood_color != "#030303" ? "blood-stained" : "oil-stained"] [item_words]" - var/submsg = "[p_they(TRUE)] [action] [bicon(item)] \a [item_words]" - if(accessories) - submsg += " with [accessories]" - if(limb_name) - submsg += " [preposition] [p_their()] [limb_name]" - if(item.blood_DNA) - submsg = "[submsg]!\n" + if(item) + if(item.flags & ABSTRACT) + abstract_items |= item else - submsg = "[submsg].\n" - msg += submsg + var/item_words = item.name + if(item.blood_DNA) + item_words = "[item.blood_color != "#030303" ? "blood-stained" : "oil-stained"] [item_words]" + var/submsg = "[p_they(TRUE)] [action] [bicon(item)] \a [item_words]" + if(accessories) + submsg += " with [accessories]" + if(limb_name) + submsg += " [preposition] [p_their()] [limb_name]" + if(item.blood_DNA) + submsg = "[submsg]!\n" + else + submsg = "[submsg].\n" + msg += submsg else // add any extra info on the limbs themselves msg += examine_handle_individual_limb(limb_name) @@ -170,6 +175,12 @@ else msg += "[p_they(TRUE)] [p_are()] [bicon(legcuffed)] legcuffed!\n" + for(var/obj/item/abstract_item in abstract_items) + var/text = abstract_item.customised_abstract_text() + if(!text) + continue + msg += "[text]\n" + //Jitters switch(AmountJitter()) if(600 SECONDS to INFINITY) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 65a98fed5d9..a085a613f57 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -484,6 +484,11 @@ var/disabled = FALSE var/force_when_disabled = 5 //still basically a metal pipe, just hard to move +/obj/item/shield/v1_arm/customised_abstract_text() + if(!ishuman(loc)) + return + var/mob/living/carbon/human/owner = loc + return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left arm" : "right arm"] is covered in metal." /obj/item/shield/v1_arm/emp_act(severity) if(disabled)