Files
MrMelbert 0c3b1b8364 Removes Plasmeme innate damage vulnerability, replaces it with demolition vulnerability (#94328)
## About The Pull Request

Splinter of #94324

Plasmamen no longer take 1.5x brute and burn damgae
Plasmamen are now affected by demolition modifier, meaning they take
less damage from sharp objects and more damage from blunt objects

Skeletons and golems are also affected by demolition modifier

## Why It's Good For The Game

As a part of #94324 I was making `MINERAL` mobs affected by demo mod
But I realized this would absolutely murder the heck out of Plasmamen!
1.5x brute + another 1.25x brute from blunt objects!
But then I realized "wait that kinda makes sense... a lot *more* sense
than the arbitrary damage modifier"
So here we are

Plasmemes are as vulnerable to being smashed to bits as before, but can
now boast a minor resistance to being stabbed due to their lack of
fleshy bits

This feels a bit more appropriate to their skeletal nature without
completely removing that aspect of their character. It also gives them a
very minor upside (they need it)

## Changelog

🆑 Melbert
balance: Plasmamen no longer take flat 1.5x brute and burn damage
balance: Plasmamen are now affected by weapon demolition modifier,
meaning blunt attacks deal more damage but slashing or piercing deal
less damage
balance: Skeletons and Golems are also affected by weapon demolition
modifier, as well as any mineral type mobs (of which none currently
exist)
/🆑
2025-12-19 18:47:55 +00:00

160 lines
4.8 KiB
Plaintext

// A mob which only moves when it isn't being watched by living beings.
/mob/living/basic/statue
name = "statue" // matches the name of the statue with the flesh-to-stone spell
desc = "An incredibly lifelike marble carving. Its eyes seem to follow you..." // same as an ordinary statue with the added "eye following you" description
icon = 'icons/obj/art/statue.dmi'
icon_state = "human_male"
icon_living = "human_male"
icon_dead = "human_male"
gender = NEUTER
combat_mode = TRUE
mob_biotypes = MOB_HUMANOID|MOB_MINERAL
gold_core_spawnable = NO_SPAWN
response_help_continuous = "touches"
response_help_simple = "touch"
response_disarm_continuous = "pushes"
response_disarm_simple = "push"
speed = -1
maxHealth = 50000
health = 50000
obj_damage = 100
melee_damage_lower = 68
melee_damage_upper = 83
attack_verb_continuous = "claws"
attack_verb_simple = "claw"
attack_sound = 'sound/effects/hallucinations/growl1.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
melee_attack_cooldown = 1 SECONDS
status_flags = CANPUSH
faction = list(FACTION_STATUE)
speak_emote = list("screams")
death_message = "falls apart into a fine dust."
unsuitable_atmos_damage = 0
unsuitable_cold_damage = 0
unsuitable_heat_damage = 0
animate_movement = NO_STEPS // Do not animate movement, you jump around as you're a scary statue.
hud_possible = list(ANTAG_HUD)
// Dim purple, I want it to be possible to miss people in the dark but not easy to
lighting_cutoff_red = 15
lighting_cutoff_green = 10
lighting_cutoff_blue = 25
sight = SEE_SELF|SEE_MOBS|SEE_OBJS|SEE_TURFS
move_force = MOVE_FORCE_EXTREMELY_STRONG
move_resist = MOVE_FORCE_EXTREMELY_STRONG
pull_force = MOVE_FORCE_EXTREMELY_STRONG
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, STAMINA = 0, OXY = 1)
ai_controller = /datum/ai_controller/basic_controller/statue
/mob/living/basic/statue/Initialize(mapload)
. = ..()
add_traits(list(TRAIT_MUTE, TRAIT_UNOBSERVANT), INNATE_TRAIT)
AddComponent(/datum/component/unobserved_actor, unobserved_flags = NO_OBSERVED_MOVEMENT | NO_OBSERVED_ATTACKS)
var/static/list/innate_actions = list(
/datum/action/cooldown/spell/aoe/blindness,
/datum/action/cooldown/spell/aoe/flicker_lights,
)
grant_actions_by_list(innate_actions)
/mob/living/basic/statue/med_hud_set_health()
return //we're a statue we're invincible
/mob/living/basic/statue/med_hud_set_status()
return //we're a statue we're invincible
// Cannot talk
// Turn to dust when gibbed
/mob/living/basic/statue/gib()
dust()
// Statue powers
// Flicker lights
/datum/action/cooldown/spell/aoe/flicker_lights
name = "Flicker Lights"
desc = "You will trigger a large amount of lights around you to flicker."
button_icon = 'icons/mob/actions/actions_AI.dmi'
button_icon_state = "blackout"
cooldown_time = 30 SECONDS
spell_requirements = NONE
aoe_radius = 14
/datum/action/cooldown/spell/aoe/flicker_lights/get_things_to_cast_on(atom/center)
var/list/things = list()
for(var/obj/machinery/light/nearby_light in range(aoe_radius, center))
if(!nearby_light.on)
continue
things += nearby_light
return things
/datum/action/cooldown/spell/aoe/flicker_lights/cast_on_thing_in_aoe(obj/machinery/light/victim, atom/caster)
victim.flicker()
//Blind AOE
/datum/action/cooldown/spell/aoe/blindness
name = "Blindness"
desc = "Your prey will be momentarily blind for you to advance on them."
button_icon_state = "blind"
cooldown_time = 1 MINUTES
spell_requirements = NONE
aoe_radius = 14
/datum/action/cooldown/spell/aoe/blindness/cast(atom/cast_on)
cast_on.visible_message(span_danger("[cast_on] glares their eyes."))
return ..()
/datum/action/cooldown/spell/aoe/blindness/get_things_to_cast_on(atom/center)
var/list/things = list()
for(var/mob/living/nearby_mob in range(aoe_radius, center))
if(nearby_mob == owner || nearby_mob == center)
continue
things += nearby_mob
return things
/datum/action/cooldown/spell/aoe/blindness/cast_on_thing_in_aoe(mob/living/victim, atom/caster)
victim.adjust_temp_blindness(8 SECONDS)
/datum/ai_controller/basic_controller/statue
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
)
ai_movement = /datum/ai_movement/basic_avoidance
planning_subtrees = list(
/datum/ai_planning_subtree/escape_captivity,
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
/datum/ai_planning_subtree/find_and_hunt_target/look_for_light_fixtures,
)
/mob/living/basic/statue/frosty
name = "Frosty"
desc = "Just a snowman. Just a snowman. Oh god, it's just a snowman."
icon_dead = "snowman"
icon_living = "snowman"
icon_state = "snowman"
health = 5000
maxHealth = 5000
melee_damage_lower = 65
melee_damage_upper = 65
faction = list(FACTION_STATUE,FACTION_MINING)
/mob/living/basic/statue/frosty/Initialize(mapload)
. = ..()
AddElement(/datum/element/death_drops, /obj/item/dnainjector/geladikinesis)