diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 56c8a4807ba..94b36ecbff0 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -91,7 +91,7 @@ MATERIAL_ELECTRICAL = 9, MATERIAL_THERMAL = 4, MATERIAL_CHEMICAL = 4, - MATERIAL_VAMPIRES_BANE = 5, + MATERIAL_VAMPIRES_BANE = 8, ) sheet_type = /obj/item/stack/sheet/mineral/silver ore_type = /obj/item/stack/ore/silver diff --git a/code/datums/materials/properties/optional.dm b/code/datums/materials/properties/optional.dm index 38d5287d3cf..4b5d1aef83b 100644 --- a/code/datums/materials/properties/optional.dm +++ b/code/datums/materials/properties/optional.dm @@ -120,7 +120,7 @@ if (isliving(target)) target.adjust_fire_stacks(source.get_property(id)) -/// Deals additional burn damage to vampires, property value determines damage +/// Deals additional burn damage to vampires, property value times material volume determines damage /datum/material_property/vampires_bane name = "Vampires' Bane" id = MATERIAL_VAMPIRES_BANE @@ -129,7 +129,7 @@ return "vampires' bane" /datum/material_property/vampires_bane/get_tooltip(value) - return "Deals [value] additional burn damage to vampires on contact" + return "Deals [value * 0.5] to [value * 2] additional burn damage to vampires on contact (based on material volume)" /datum/material_property/vampires_bane/attach_to(datum/material/material) . = ..() @@ -145,11 +145,20 @@ /datum/material_property/vampires_bane/proc/on_contact(datum/material/source, atom/object, mob/living/target, mob/living/user, def_zone, skin_contact) SIGNAL_HANDLER - if (!isvampire(target) || (!skin_contact && !source.get_property(MATERIAL_PENETRATING))) + if (!isvampire(target)) + return + + var/burn_damage = source.get_property(id) * clamp((object.custom_materials[source] / (2 * SHEET_MATERIAL_AMOUNT)), 0.5, 2) + var/armor_block = 0 + if(!skin_contact && !source.get_property(MATERIAL_PENETRATING)) + armor_block = target.run_armor_check(def_zone, WOUND, armour_penetration = astype(object, /obj/item)?.armour_penetration || 0, silent = TRUE, weak_against_armour = TRUE) + + if(armor_block > 50) return to_chat(target, span_userdanger("Contact with [object] sears your undead flesh!")) - target.apply_damage(source.get_property(id), BURN, def_zone, wound_bonus = 10, wound_clothing = FALSE) + playsound(target, SFX_SIZZLE, 33, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + target.apply_damage(burn_damage, BURN, def_zone, armor_block, wound_bonus = 10, attacking_item = object, attack_direction = get_dir(user, target), wound_clothing = FALSE) /// Teleports targets who come into active contact with the material around, property value determines teleport radius and damage taken per teleport /datum/material_property/teleporting diff --git a/code/game/objects/items/storage/toolboxes/_toolbox.dm b/code/game/objects/items/storage/toolboxes/_toolbox.dm index 7601e326425..959c3f1ede9 100644 --- a/code/game/objects/items/storage/toolboxes/_toolbox.dm +++ b/code/game/objects/items/storage/toolboxes/_toolbox.dm @@ -13,7 +13,7 @@ throw_range = 7 demolition_mod = 1.25 w_class = WEIGHT_CLASS_BULKY - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.5) attack_verb_continuous = list("robusts") attack_verb_simple = list("robust") hitsound = 'sound/items/weapons/smash.ogg' diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm index fbb870a0670..1c8b298ef0c 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm @@ -523,7 +523,10 @@ GLOBAL_LIST_INIT(nullrod_variants, init_nullrod_variants()) attack_verb_continuous = list("whips", "lashes") attack_verb_simple = list("whip", "lash") hitsound = 'sound/items/weapons/chainhit.ogg' - menu_description = "A whip. Deals extra damage to vampires. Fits in pockets. Can be worn on the belt." + menu_description = "A whip forged from silver. Deals extra damage to vampires. Fits in pockets. Can be worn on the belt." + material_flags = MATERIAL_EFFECTS + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 3, /datum/material/iron = SHEET_MATERIAL_AMOUNT) + material_slots = list(/datum/material_slot/weapon_head = /datum/material/silver, /datum/material_slot/handle = /datum/material/iron) // Atheist's Fedora - Wear it on your head. No melee damage, massive throw force. diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index fa31d7a89cf..038abcc22d9 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -31,7 +31,6 @@ . = ..() to_chat(new_vampire, "[info_text]") new_vampire.skin_tone = "albino" - RegisterSignal(new_vampire, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) RegisterSignal(new_vampire, COMSIG_MOB_HUD_CREATED, PROC_REF(on_hud_created)) RegisterSignal(new_vampire, COMSIG_LIVING_LIFE, PROC_REF(on_life)) if(new_vampire.hud_used) @@ -40,7 +39,6 @@ /datum/species/human/vampire/on_species_loss(mob/living/carbon/human/old_vampire, datum/species/new_species, pref_load) . = ..() UnregisterSignal(old_vampire, list( - COMSIG_ATOM_ATTACKBY, COMSIG_MOB_HUD_CREATED, COMSIG_LIVING_LIFE, )) @@ -73,12 +71,6 @@ SIGNAL_HANDLER source.hud_used.add_screen_object(/atom/movable/screen/blood_level, HUD_MOB_BLOOD_LEVEL, HUD_GROUP_INFO, update_screen = TRUE) -/datum/species/human/vampire/proc/on_attackby(mob/living/source, obj/item/attacking_item, mob/living/attacker, list/modifiers, list/attack_modifiers) - SIGNAL_HANDLER - - if(istype(attacking_item, /obj/item/nullrod/whip)) - MODIFY_ATTACK_FORCE_MULTIPLIER(attack_modifiers, 2) - /datum/species/human/vampire/get_physical_attributes() return "Vampires are afflicted with the Thirst, needing to sate it by draining the blood out of another living creature. However, they do not need to breathe or eat normally. \ They will instantly turn into dust if they run out of blood or enter a holy area. However, coffins stabilize and heal them, and they can transform into bats!"