Bileworm post-merge feedback and qol (#69007)
* Bileworm now has a deathsound, and deathsounds now properly play on simplemobs. * AI-controlled Bileworms now have night vision abilities
@@ -440,7 +440,7 @@
|
||||
"PQ" = (
|
||||
/obj/effect/decal/cleanable/blood/splatter,
|
||||
/mob/living/simple_animal/hostile/illusion{
|
||||
deathmessage = "disperses into the air in a cloud of red mist, you feel slightly more at ease.";
|
||||
death_message = "disperses into the air in a cloud of red mist, you feel slightly more at ease.";
|
||||
desc = "You can't quite make out what you're seeing.";
|
||||
faction = list("cult");
|
||||
health = 500;
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
/datum/action/adjust_vision
|
||||
name = "Adjust Vision"
|
||||
desc = "See better in the dark. Or don't. Your advanced vision allows either."
|
||||
icon_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
button_icon_state = "adjust_vision"
|
||||
background_icon_state = "bg_default"
|
||||
|
||||
/datum/action/adjust_vision/Grant(mob/living/grant_to)
|
||||
. = ..()
|
||||
grant_to.see_in_dark = NIGHTVISION_FOV_RANGE
|
||||
grant_to.lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
|
||||
grant_to.update_sight()
|
||||
|
||||
/datum/action/adjust_vision/Remove(mob/living/remove_from)
|
||||
. = ..()
|
||||
remove_from.see_in_dark = initial(remove_from.see_in_dark)
|
||||
remove_from.lighting_alpha = initial(remove_from.lighting_alpha)
|
||||
remove_from.update_sight()
|
||||
|
||||
/datum/action/adjust_vision/Trigger(trigger_flags)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
|
||||
var/mob/living/living_owner = owner
|
||||
living_owner.sight = initial(living_owner.sight)
|
||||
switch(living_owner.lighting_alpha)
|
||||
if (LIGHTING_PLANE_ALPHA_VISIBLE)
|
||||
living_owner.lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
|
||||
if (LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE)
|
||||
living_owner.lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
if (LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE)
|
||||
living_owner.lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE
|
||||
else
|
||||
living_owner.lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE
|
||||
living_owner.sight &= ~SEE_BLACKNESS
|
||||
living_owner.update_sight()
|
||||
@@ -473,7 +473,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
|
||||
new_race = mrace
|
||||
else
|
||||
return
|
||||
deathsound = new_race.deathsound
|
||||
death_sound = new_race.death_sound
|
||||
dna.species.on_species_loss(src, new_race, pref_load)
|
||||
var/datum/species/old_species = dna.species
|
||||
dna.species = new_race
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
attack_verb_simple = "hit"
|
||||
attack_sound = 'sound/weapons/genhit1.ogg'
|
||||
del_on_death = TRUE
|
||||
deathmessage = "explodes into a cloud of gas!"
|
||||
death_message = "explodes into a cloud of gas!"
|
||||
gold_core_spawnable = NO_SPAWN //gold slime cores should only spawn the independent subtype
|
||||
var/death_cloud_size = 1 //size of cloud produced from a dying spore
|
||||
var/mob/living/carbon/human/oldguy
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
melee_damage_lower = 12
|
||||
melee_damage_upper = 16
|
||||
sight = SEE_MOBS | SEE_OBJS | SEE_TURFS
|
||||
deathmessage = "shatters and vanishes, releasing a gust of cold air."
|
||||
death_message = "shatters and vanishes, releasing a gust of cold air."
|
||||
loot = list(
|
||||
/obj/item/shard,
|
||||
/obj/effect/decal/cleanable/ash,
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
see_in_dark = NIGHTVISION_FOV_RANGE
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
del_on_death = TRUE
|
||||
deathmessage = "screams in agony as it sublimates into a sulfurous smoke."
|
||||
deathsound = 'sound/magic/demon_dies.ogg'
|
||||
death_message = "screams in agony as it sublimates into a sulfurous smoke."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
|
||||
//////////////////The Man Behind The Slaughter
|
||||
|
||||
@@ -206,11 +206,11 @@
|
||||
|
||||
attack_sound = 'sound/items/bikehorn.ogg'
|
||||
attack_vis_effect = null
|
||||
deathsound = 'sound/misc/sadtrombone.ogg'
|
||||
death_sound = 'sound/misc/sadtrombone.ogg'
|
||||
|
||||
icon_state = "bowmon"
|
||||
icon_living = "bowmon"
|
||||
deathmessage = "fades out, as all of its friends are released from its \
|
||||
death_message = "fades out, as all of its friends are released from its \
|
||||
prison of hugs."
|
||||
loot = list(/mob/living/simple_animal/pet/cat/kitten{name = "Laughter"})
|
||||
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
to_chat(occupant, span_deadsay("<b>Your eternal soul has been sacrificed to restore the soul of a toolbox. Them's the breaks!</b>"))
|
||||
|
||||
occupant.client?.give_award(/datum/award/achievement/misc/toolbox_soul, occupant)
|
||||
occupant.deathmessage = "shrieks out in unholy pain as [occupant.p_their()] soul is absorbed into [target_toolbox]!"
|
||||
occupant.death_message = "shrieks out in unholy pain as [occupant.p_their()] soul is absorbed into [target_toolbox]!"
|
||||
release_shades(user, TRUE)
|
||||
occupant.death()
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
if(stored_gun)
|
||||
for(var/obj/item/borg/upgrade/modkit/modkit as anything in stored_gun.modkits)
|
||||
modkit.uninstall(stored_gun)
|
||||
deathmessage = "blows apart!"
|
||||
death_message = "blows apart!"
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/user, list/modifiers)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
/obj/effect/gibspawner/generic = 1,
|
||||
/obj/item/stack/sheet/animalhide/bileworm = 1,
|
||||
)
|
||||
death_message = "seizes up and falls limp, slowly receeding into its burrow with a dying gurgle..."
|
||||
|
||||
//it can't be dragged, just butcher it
|
||||
move_resist = INFINITY
|
||||
@@ -51,6 +52,8 @@
|
||||
resurface.Grant(src)
|
||||
var/datum/action/cooldown/mob_cooldown/devour/devour = new(src)
|
||||
devour.Grant(src)
|
||||
var/datum/action/adjust_vision/adjust_vision = new(src)
|
||||
adjust_vision.Grant(src)
|
||||
ai_controller.blackboard[BB_BILEWORM_SPEW_BILE] = spew_bile
|
||||
ai_controller.blackboard[BB_BILEWORM_RESURFACE] = resurface
|
||||
ai_controller.blackboard[BB_BILEWORM_DEVOUR] = devour
|
||||
|
||||
@@ -13,7 +13,10 @@
|
||||
var/turf/unburrow_turf = get_unburrow_turf(burrower, target)
|
||||
if(!unburrow_turf) // means all the turfs nearby are station turfs or something, not lavaland
|
||||
to_chat(burrower, span_warning("Couldn't burrow anywhere near the target!"))
|
||||
return //just put it on cooldown and let the other ability reactivate, you couldn't burrow and that's okay.
|
||||
if(burrower.ai_controller?.ai_status == AI_STATUS_ON)
|
||||
//this is a valid reason to give up on a target
|
||||
burrower.ai_controller.blackboard[BB_BASIC_MOB_CURRENT_TARGET] = null
|
||||
return
|
||||
playsound(burrower, 'sound/effects/break_stone.ogg', 50, TRUE)
|
||||
new /obj/effect/temp_visual/mook_dust(get_turf(burrower))
|
||||
burrower.status_flags |= GODMODE
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/leap_on_click = 0
|
||||
var/pounce_cooldown = 0
|
||||
var/pounce_cooldown_time = 30
|
||||
deathsound = 'sound/voice/hiss6.ogg'
|
||||
death_sound = 'sound/voice/hiss6.ogg'
|
||||
bodyparts = list(
|
||||
/obj/item/bodypart/chest/alien,
|
||||
/obj/item/bodypart/head/alien,
|
||||
|
||||
@@ -135,8 +135,8 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
var/fixed_mut_color = ""
|
||||
///Special mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache
|
||||
var/inert_mutation = /datum/mutation/human/dwarfism
|
||||
///Used to set the mob's deathsound upon species change
|
||||
var/deathsound
|
||||
///Used to set the mob's death_sound upon species change
|
||||
var/death_sound
|
||||
///Sounds to override barefeet walking
|
||||
var/list/special_step_sounds
|
||||
///Special sound for grabbing
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
disliked_food = GRAIN | DAIRY | CLOTH
|
||||
liked_food = GROSS | MEAT | SEAFOOD | NUTS | BUGS
|
||||
inert_mutation = /datum/mutation/human/firebreath
|
||||
deathsound = 'sound/voice/lizard/deathsound.ogg'
|
||||
death_sound = 'sound/voice/lizard/deathsound.ogg'
|
||||
wings_icons = list("Dragon")
|
||||
species_language_holder = /datum/language_holder/lizard
|
||||
digitigrade_customization = DIGITIGRADE_OPTIONAL
|
||||
|
||||
@@ -98,4 +98,7 @@
|
||||
if (client)
|
||||
client.move_delay = initial(client.move_delay)
|
||||
|
||||
if(!gibbed && (death_sound || death_message))
|
||||
INVOKE_ASYNC(src, /mob.proc/emote, "deathgasp")
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -113,18 +113,15 @@
|
||||
cooldown = (15 SECONDS)
|
||||
stat_allowed = HARD_CRIT
|
||||
|
||||
/datum/emote/living/deathgasp/run_emote(mob/user, params, type_override, intentional)
|
||||
var/mob/living/simple_animal/S = user
|
||||
if(istype(S) && S.deathmessage)
|
||||
message_simple = S.deathmessage
|
||||
/datum/emote/living/deathgasp/run_emote(mob/living/user, params, type_override, intentional)
|
||||
if(user.death_message)
|
||||
message_simple = user.death_message
|
||||
. = ..()
|
||||
message_simple = initial(message_simple)
|
||||
if(. && user.deathsound)
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
if(!L.can_speak_vocal() || L.oxyloss >= 50)
|
||||
return //stop the sound if oxyloss too high/cant speak
|
||||
playsound(user, user.deathsound, 200, TRUE, TRUE)
|
||||
if(. && user.death_sound)
|
||||
if(!user.can_speak_vocal() || user.oxyloss >= 50)
|
||||
return //stop the sound if oxyloss too high/cant speak
|
||||
playsound(user, user.death_sound, 200, TRUE, TRUE)
|
||||
|
||||
/datum/emote/living/drool
|
||||
key = "drool"
|
||||
|
||||
@@ -62,6 +62,12 @@
|
||||
var/last_special = 0
|
||||
var/timeofdeath = 0
|
||||
|
||||
///A message sent when the mob dies, with the *deathgasp emote
|
||||
var/death_message = ""
|
||||
///A sound sent when the mob dies, with the *deathgasp emote
|
||||
var/death_sound
|
||||
|
||||
|
||||
/// Helper vars for quick access to firestacks, these should be updated every time firestacks are adjusted
|
||||
var/on_fire = FALSE
|
||||
var/fire_stacks = 0
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
see_in_dark = NIGHTVISION_FOV_RANGE
|
||||
bubble_icon = "machine"
|
||||
mob_biotypes = MOB_ROBOTIC
|
||||
deathsound = 'sound/voice/borg_deathsound.ogg'
|
||||
death_sound = 'sound/voice/borg_deathsound.ogg'
|
||||
speech_span = SPAN_ROBOT
|
||||
flags_1 = PREVENT_CONTENTS_EXPLOSION_1
|
||||
examine_cursor_icon = null
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
loot = list(/obj/item/ectoplasm)
|
||||
del_on_death = TRUE
|
||||
initial_language_holder = /datum/language_holder/construct
|
||||
deathmessage = "collapses in a shattered heap."
|
||||
death_message = "collapses in a shattered heap."
|
||||
var/list/construct_spells = list()
|
||||
var/playstyle_string = "<span class='big bold'>You are a generic construct!</span><b> Your job is to not exist, and you should probably adminhelp this.</b>"
|
||||
var/master = null
|
||||
|
||||
@@ -286,8 +286,8 @@
|
||||
response_harm_continuous = "takes a bite out of"
|
||||
response_harm_simple = "take a bite out of"
|
||||
attacked_sound = 'sound/items/eatfood.ogg'
|
||||
deathmessage = "loses her false life and collapses!"
|
||||
deathsound = SFX_BODYFALL
|
||||
death_message = "loses her false life and collapses!"
|
||||
death_sound = SFX_BODYFALL
|
||||
held_state = "cak"
|
||||
|
||||
/mob/living/simple_animal/pet/cat/cak/add_cell_sample()
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
movement_type = GROUND
|
||||
pressure_resistance = 100
|
||||
del_on_death = TRUE
|
||||
deathmessage = "implodes into itself."
|
||||
death_message = "implodes into itself."
|
||||
loot = list(/obj/effect/gibspawner/human)
|
||||
faction = list(FACTION_HERETIC)
|
||||
simple_mob_flags = SILENCE_RANGED_MESSAGE
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
unique_name = 1
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
deathsound = 'sound/voice/hiss6.ogg'
|
||||
deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..."
|
||||
death_sound = 'sound/voice/hiss6.ogg'
|
||||
death_message = "lets out a waning guttural screech, green blood bubbling from its maw..."
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/drone
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
response_harm_continuous = "takes a bite out of"
|
||||
response_harm_simple = "take a bite out of"
|
||||
attacked_sound = 'sound/items/eatfood.ogg'
|
||||
deathmessage = "loses its false life and collapses!"
|
||||
death_message = "loses its false life and collapses!"
|
||||
butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1)
|
||||
attack_sound = 'sound/weapons/slap.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_DISARM
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/goose/proc/suffocate()
|
||||
if(!choking)
|
||||
return
|
||||
deathmessage = "lets out one final oxygen-deprived honk before [p_they()] go[p_es()] limp and lifeless.."
|
||||
death_message = "lets out one final oxygen-deprived honk before [p_they()] go[p_es()] limp and lifeless.."
|
||||
death()
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit()
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/Initialize(mapload)
|
||||
. = ..()
|
||||
deathmessage = "[src] blows apart!"
|
||||
death_message = "[src] blows apart!"
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/Aggro()
|
||||
. = ..()
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/mob/living/parent_mob
|
||||
var/multiply_chance = 0 //if we multiply on hit
|
||||
del_on_death = 1
|
||||
deathmessage = "vanishes into thin air! It was a fake!"
|
||||
death_message = "vanishes into thin air! It was a fake!"
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/illusion/Life(delta_time = SSMOBS_DT, times_fired)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
stat_attack = HARD_CRIT
|
||||
attack_sound = 'sound/weapons/rapierhit.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_SLASH
|
||||
deathsound = 'sound/voice/mook_death.ogg'
|
||||
death_sound = 'sound/voice/mook_death.ogg'
|
||||
aggro_vision_range = 15 //A little more aggressive once in combat to balance out their really low HP
|
||||
var/attack_state = MOOK_ATTACK_NEUTRAL
|
||||
var/struck_target_leap = FALSE
|
||||
|
||||
@@ -48,8 +48,8 @@ Difficulty: Medium
|
||||
score_achievement_type = /datum/award/score/blood_miner_score
|
||||
var/obj/item/melee/cleaving_saw/miner/miner_saw
|
||||
var/guidance = FALSE
|
||||
deathmessage = "falls to the ground, decaying into glowing particles."
|
||||
deathsound = SFX_BODYFALL
|
||||
death_message = "falls to the ground, decaying into glowing particles."
|
||||
death_sound = SFX_BODYFALL
|
||||
footstep_type = FOOTSTEP_MOB_HEAVY
|
||||
move_force = MOVE_FORCE_NORMAL //Miner beeing able to just move structures like bolted doors and glass looks kinda strange
|
||||
/// Dash ability
|
||||
|
||||
@@ -65,8 +65,8 @@ Difficulty: Hard
|
||||
achievement_type = /datum/award/achievement/boss/bubblegum_kill
|
||||
crusher_achievement_type = /datum/award/achievement/boss/bubblegum_crusher
|
||||
score_achievement_type = /datum/award/score/bubblegum_score
|
||||
deathmessage = "sinks into a pool of blood, fleeing the battle. You've won, for now... "
|
||||
deathsound = 'sound/magic/enter_blood.ogg'
|
||||
death_message = "sinks into a pool of blood, fleeing the battle. You've won, for now... "
|
||||
death_sound = 'sound/magic/enter_blood.ogg'
|
||||
small_sprite_type = /datum/action/small_sprite/megafauna/bubblegum
|
||||
faction = list("mining", "boss", "hell")
|
||||
/// Check to see if we should spawn blood
|
||||
@@ -326,8 +326,8 @@ Difficulty: Hard
|
||||
achievement_type = null
|
||||
crusher_achievement_type = null
|
||||
score_achievement_type = null
|
||||
deathmessage = "Explodes into a pool of blood!"
|
||||
deathsound = 'sound/effects/splat.ogg'
|
||||
death_message = "Explodes into a pool of blood!"
|
||||
death_sound = 'sound/effects/splat.ogg'
|
||||
true_spawn = FALSE
|
||||
var/move_through_mob
|
||||
|
||||
|
||||
@@ -35,8 +35,8 @@ I'd rather there be something than the clockwork ruin be entirely empty though s
|
||||
crusher_loot = list(/obj/item/clockwork_alloy)
|
||||
wander = FALSE
|
||||
del_on_death = TRUE
|
||||
deathmessage = "falls, quickly decaying into centuries old dust."
|
||||
deathsound = SFX_BODYFALL
|
||||
death_message = "falls, quickly decaying into centuries old dust."
|
||||
death_sound = SFX_BODYFALL
|
||||
footstep_type = FOOTSTEP_MOB_HEAVY
|
||||
attack_action_types = list()
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@
|
||||
score_achievement_type = /datum/award/score/colussus_score
|
||||
crusher_loot = list(/obj/structure/closet/crate/necropolis/colossus/crusher)
|
||||
loot = list(/obj/structure/closet/crate/necropolis/colossus)
|
||||
deathmessage = "disintegrates, leaving a glowing core in its wake."
|
||||
deathsound = 'sound/magic/demon_dies.ogg'
|
||||
death_message = "disintegrates, leaving a glowing core in its wake."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
small_sprite_type = /datum/action/small_sprite/megafauna/colossus
|
||||
/// Spiral shots ability
|
||||
var/datum/action/cooldown/mob_cooldown/projectile_attack/spiral_shots/colossus/spiral_shots
|
||||
|
||||
@@ -40,8 +40,8 @@ Difficulty: Extremely Hard
|
||||
achievement_type = /datum/award/achievement/boss/demonic_miner_kill
|
||||
crusher_achievement_type = /datum/award/achievement/boss/demonic_miner_crusher
|
||||
score_achievement_type = /datum/award/score/demonic_miner_score
|
||||
deathmessage = "falls to the ground, decaying into plasma particles."
|
||||
deathsound = SFX_BODYFALL
|
||||
death_message = "falls to the ground, decaying into plasma particles."
|
||||
death_sound = SFX_BODYFALL
|
||||
footstep_type = FOOTSTEP_MOB_HEAVY
|
||||
/// If the demonic frost miner is in its enraged state
|
||||
var/enraged = FALSE
|
||||
|
||||
@@ -70,8 +70,8 @@
|
||||
achievement_type = /datum/award/achievement/boss/drake_kill
|
||||
crusher_achievement_type = /datum/award/achievement/boss/drake_crusher
|
||||
score_achievement_type = /datum/award/score/drake_score
|
||||
deathmessage = "collapses into a pile of bones, its flesh sloughing away."
|
||||
deathsound = 'sound/magic/demon_dies.ogg'
|
||||
death_message = "collapses into a pile of bones, its flesh sloughing away."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
footstep_type = FOOTSTEP_MOB_HEAVY
|
||||
small_sprite_type = /datum/action/small_sprite/megafauna/drake
|
||||
/// Fire cone ability
|
||||
|
||||
@@ -66,7 +66,7 @@ Difficulty: Hard
|
||||
crusher_achievement_type = /datum/award/achievement/boss/hierophant_crusher
|
||||
score_achievement_type = /datum/award/score/hierophant_score
|
||||
del_on_death = TRUE
|
||||
deathsound = 'sound/magic/repulse.ogg'
|
||||
death_sound = 'sound/magic/repulse.ogg'
|
||||
attack_action_types = list(/datum/action/innate/megafauna_attack/blink,
|
||||
/datum/action/innate/megafauna_attack/chaser_swarm,
|
||||
/datum/action/innate/megafauna_attack/cross_blasts,
|
||||
|
||||
@@ -50,8 +50,8 @@ Difficulty: Hard
|
||||
achievement_type = /datum/award/achievement/boss/wendigo_kill
|
||||
crusher_achievement_type = /datum/award/achievement/boss/wendigo_crusher
|
||||
score_achievement_type = /datum/award/score/wendigo_score
|
||||
deathmessage = "falls, shaking the ground around it"
|
||||
deathsound = 'sound/effects/gravhit.ogg'
|
||||
death_message = "falls, shaking the ground around it"
|
||||
death_sound = 'sound/effects/gravhit.ogg'
|
||||
footstep_type = FOOTSTEP_MOB_HEAVY
|
||||
attack_action_types = list(/datum/action/innate/megafauna_attack/heavy_stomp,
|
||||
/datum/action/innate/megafauna_attack/teleport,
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
loot = list()
|
||||
robust_searching = TRUE
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
deathmessage = "wails as infernal energy escapes from its wounds, leaving it an empty husk."
|
||||
deathsound = 'sound/magic/demon_dies.ogg'
|
||||
death_message = "wails as infernal energy escapes from its wounds, leaving it an empty husk."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
light_color = LIGHT_COLOR_BLOOD_MAGIC
|
||||
light_power = 5
|
||||
light_range = 1.4
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
move_to_delay = 5
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
deathmessage = "explodes into gore!"
|
||||
death_message = "explodes into gore!"
|
||||
loot_drop = /obj/item/crusher_trophy/broodmother_tongue
|
||||
|
||||
attack_action_types = list(/datum/action/innate/elite_attack/tentacle_patch,
|
||||
@@ -181,7 +181,7 @@
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
butcher_results = list()
|
||||
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1)
|
||||
deathmessage = "falls to the ground."
|
||||
death_message = "falls to the ground."
|
||||
status_flags = CANPUSH
|
||||
var/mob/living/simple_animal/hostile/asteroid/elite/broodmother/mother = null
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
speed = 2
|
||||
move_to_delay = 10
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
deathsound = 'sound/magic/demon_dies.ogg'
|
||||
deathmessage = "begins to shudder as it becomes transparent..."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
death_message = "begins to shudder as it becomes transparent..."
|
||||
loot_drop = /obj/item/clothing/neck/cloak/herald_cloak
|
||||
|
||||
can_talk = 1
|
||||
@@ -199,8 +199,8 @@
|
||||
maxHealth = 60
|
||||
icon_state = "herald_mirror"
|
||||
icon_aggro = "herald_mirror"
|
||||
deathmessage = "shatters violently!"
|
||||
deathsound = 'sound/effects/glassbr1.ogg'
|
||||
death_message = "shatters violently!"
|
||||
death_sound = 'sound/effects/glassbr1.ogg'
|
||||
del_on_death = TRUE
|
||||
is_mirror = TRUE
|
||||
move_resist = MOVE_FORCE_OVERPOWERING // no dragging your mirror around
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
speed = 1
|
||||
move_to_delay = 3
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
deathsound = 'sound/magic/curse.ogg'
|
||||
deathmessage = "'s arms reach out before it falls apart onto the floor, lifeless."
|
||||
death_sound = 'sound/magic/curse.ogg'
|
||||
death_message = "'s arms reach out before it falls apart onto the floor, lifeless."
|
||||
loot_drop = /obj/item/crusher_trophy/legionnaire_spine
|
||||
|
||||
attack_action_types = list(/datum/action/innate/elite_attack/legionnaire_charge,
|
||||
@@ -255,7 +255,7 @@
|
||||
speed = 0
|
||||
move_to_delay = 2
|
||||
del_on_death = 1
|
||||
deathmessage = "crumbles away!"
|
||||
death_message = "crumbles away!"
|
||||
faction = list()
|
||||
ranged = FALSE
|
||||
var/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/body = null
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
speed = 3
|
||||
move_to_delay = 10
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
deathsound = 'sound/magic/repulse.ogg'
|
||||
deathmessage = "'s lights flicker, before its top part falls down."
|
||||
death_sound = 'sound/magic/repulse.ogg'
|
||||
death_message = "'s lights flicker, before its top part falls down."
|
||||
loot_drop = /obj/item/clothing/accessory/pandora_hope
|
||||
|
||||
attack_action_types = list(/datum/action/innate/elite_attack/singular_shot,
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
combat_mode = FALSE
|
||||
speak_emote = list("screeches")
|
||||
throw_message = "sinks in slowly, before being pushed out of "
|
||||
deathmessage = "stops moving as green liquid oozes from the carcass!"
|
||||
death_message = "stops moving as green liquid oozes from the carcass!"
|
||||
status_flags = CANPUSH
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
search_objects = 1
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
search_objects = 3 //Ancient simplemob AI shitcode. This makes them ignore all other mobs.
|
||||
del_on_death = TRUE
|
||||
loot = list(/obj/effect/decal/cleanable/blood/gibs)
|
||||
deathmessage = "is pulped into bugmash."
|
||||
death_message = "is pulped into bugmash."
|
||||
|
||||
animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch
|
||||
childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/grublunch = 100)
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
del_on_death = TRUE
|
||||
loot = list()
|
||||
crusher_loot = /obj/item/crusher_trophy/watcher_wing/ice_wing
|
||||
deathmessage = "fades as the energies that tied it to this world dissipate."
|
||||
deathsound = 'sound/magic/demon_dies.ogg'
|
||||
death_message = "fades as the energies that tied it to this world dissipate."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
stat_attack = HARD_CRIT
|
||||
robust_searching = TRUE
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
butcher_results = list(/obj/item/stack/ore/diamond = 3, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 10, /obj/item/stack/sheet/animalhide/ashdrake = 1)
|
||||
loot = list()
|
||||
crusher_loot = /obj/item/crusher_trophy/tail_spike
|
||||
deathmessage = "collapses on its side."
|
||||
deathsound = 'sound/magic/demon_dies.ogg'
|
||||
death_message = "collapses on its side."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
stat_attack = HARD_CRIT
|
||||
robust_searching = TRUE
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
robust_searching = 1
|
||||
unique_name = 1
|
||||
speak_emote = list("squeaks")
|
||||
deathmessage = "fainted."
|
||||
death_message = "fainted."
|
||||
var/cap_color = "#ffffff"
|
||||
var/powerlevel = 0 //Tracks our general strength level gained from eating other shrooms
|
||||
var/bruised = 0 //If someone tries to cheat the system by attacking a shroom to lower its health, punish them so that it won't award levels to shrooms that eat it
|
||||
|
||||
@@ -99,8 +99,8 @@
|
||||
attack_verb_simple = "lacerate"
|
||||
speed = -0.5
|
||||
var/static/list/migo_sounds
|
||||
deathmessage = "wails as its form turns into a pulpy mush."
|
||||
deathsound = 'sound/voice/hiss6.ogg'
|
||||
death_message = "wails as its form turns into a pulpy mush."
|
||||
death_sound = 'sound/voice/hiss6.ogg'
|
||||
phaser = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/netherworld/migo/Initialize(mapload)
|
||||
@@ -135,7 +135,7 @@
|
||||
melee_damage_upper = 10
|
||||
attack_verb_continuous = "punches"
|
||||
attack_verb_simple = "punch"
|
||||
deathmessage = "falls apart into a fine dust."
|
||||
death_message = "falls apart into a fine dust."
|
||||
phaser = FALSE
|
||||
|
||||
/obj/structure/spawner/nether
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
melee_damage_upper = 20
|
||||
armour_penetration = 15
|
||||
obj_damage = 20
|
||||
deathmessage = "collapses into a pile of goo!"
|
||||
death_message = "collapses into a pile of goo!"
|
||||
///The ability to give yourself a metabolic speed boost which raises heat
|
||||
var/datum/action/cooldown/metabolicboost/boost
|
||||
///The ability to consume mobs
|
||||
@@ -280,7 +280,7 @@
|
||||
melee_damage_lower = 12
|
||||
melee_damage_upper = 12
|
||||
obj_damage = 15
|
||||
deathmessage = "deflates and spills its vital juices!"
|
||||
death_message = "deflates and spills its vital juices!"
|
||||
edible_food_types = MEAT | VEGETABLES
|
||||
|
||||
/mob/living/simple_animal/hostile/ooze/grapes/Initialize(mapload)
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
attack_verb_continuous = "slams"
|
||||
attack_verb_simple = "slam"
|
||||
loot = list(/obj/effect/gibspawner/xeno/bodypartless, /obj/effect/gibspawner/generic, /obj/effect/gibspawner/generic/animal, /obj/effect/gibspawner/human/bodypartless)
|
||||
deathsound = 'sound/misc/sadtrombone.ogg'
|
||||
death_sound = 'sound/misc/sadtrombone.ogg'
|
||||
///This is the list of items we are ready to regurgitate,
|
||||
var/list/prank_pouch = list()
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
attack_verb_simple = "grip"
|
||||
attack_sound = 'sound/hallucinations/growl1.ogg'
|
||||
speak_emote = list("weeps")
|
||||
deathmessage = "wails, disintegrating into a pile of ectoplasm!"
|
||||
death_message = "wails, disintegrating into a pile of ectoplasm!"
|
||||
loot = list(/obj/item/ectoplasm)
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
faction = list("skeleton")
|
||||
see_in_dark = NIGHTVISION_FOV_RANGE
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
deathmessage = "collapses into a pile of bones!"
|
||||
death_message = "collapses into a pile of bones!"
|
||||
del_on_death = 1
|
||||
loot = list(/obj/effect/decal/remains/human)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
weather_immunities = list(TRAIT_SNOWSTORM_IMMUNE)
|
||||
melee_damage_lower = 17
|
||||
melee_damage_upper = 20
|
||||
deathmessage = "collapses into a pile of bones, its gear falling to the floor!"
|
||||
death_message = "collapses into a pile of bones, its gear falling to the floor!"
|
||||
loot = list(/obj/effect/decal/remains/human,
|
||||
/obj/item/spear,
|
||||
/obj/item/clothing/shoes/winterboots,
|
||||
@@ -71,7 +71,7 @@
|
||||
obj_damage = 50
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 30
|
||||
deathmessage = "collapses into a pile of bones, its gear clanging as it hits the ground!"
|
||||
death_message = "collapses into a pile of bones, its gear clanging as it hits the ground!"
|
||||
loot = list(/obj/effect/decal/remains/human,
|
||||
/obj/item/clothing/suit/chaplainsuit/armor/templar,
|
||||
/obj/item/clothing/head/helmet/chaplain,
|
||||
@@ -99,7 +99,7 @@
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
light_color = LIGHT_COLOR_PURPLE
|
||||
deathmessage = "collapses into a pile of bones, their suit dissolving among the plasma!"
|
||||
death_message = "collapses into a pile of bones, their suit dissolving among the plasma!"
|
||||
loot = list(/obj/effect/decal/remains/plasma)
|
||||
|
||||
/mob/living/simple_animal/hostile/skeleton/plasmaminer/jackhammer
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
faction = list("hostile")
|
||||
see_in_dark = NIGHTVISION_FOV_RANGE
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
deathmessage = "falls to the ground, its shard dulling to a miserable grey!"
|
||||
death_message = "falls to the ground, its shard dulling to a miserable grey!"
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
var/overcharged = FALSE // if true, spider will not die if it dusts a limb
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
attack_verb_simple = "chomp"
|
||||
attack_sound = 'sound/magic/demon_attack1.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_BITE
|
||||
deathsound = 'sound/creatures/space_dragon_roar.ogg'
|
||||
death_sound = 'sound/creatures/space_dragon_roar.ogg'
|
||||
icon = 'icons/mob/spacedragon.dmi'
|
||||
icon_state = "spacedragon"
|
||||
icon_living = "spacedragon"
|
||||
@@ -61,7 +61,7 @@
|
||||
ranged = TRUE
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30)
|
||||
deathmessage = "screeches as its wings turn to dust and it collapses on the floor, its life extinguished."
|
||||
death_message = "screeches as its wings turn to dust and it collapses on the floor, its life extinguished."
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
|
||||
@@ -314,7 +314,7 @@
|
||||
bubble_icon = "syndibot"
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
del_on_death = 1
|
||||
deathmessage = "is smashed into pieces!"
|
||||
death_message = "is smashed into pieces!"
|
||||
|
||||
/mob/living/simple_animal/hostile/viscerator/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1200
|
||||
|
||||
deathmessage = "is hacked into pieces!"
|
||||
death_message = "is hacked into pieces!"
|
||||
loot = list(/obj/item/stack/sheet/mineral/wood)
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
del_on_death = 1
|
||||
|
||||
@@ -136,9 +136,9 @@
|
||||
combat_mode = TRUE
|
||||
ranged_cooldown_time = 4 SECONDS
|
||||
del_on_death = TRUE
|
||||
deathmessage = "collapses into bits of plant matter."
|
||||
death_message = "collapses into bits of plant matter."
|
||||
attacked_sound = 'sound/creatures/venus_trap_hurt.ogg'
|
||||
deathsound = 'sound/creatures/venus_trap_death.ogg'
|
||||
death_sound = 'sound/creatures/venus_trap_death.ogg'
|
||||
attack_sound = 'sound/creatures/venus_trap_hit.ogg'
|
||||
unsuitable_heat_damage = 5 // heat damage is different from cold damage since coldmos is significantly more common than plasmafires
|
||||
unsuitable_cold_damage = 2 // they now do take cold damage, but this should be sufficiently small that it does not cause major issues
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT)
|
||||
|
||||
/mob/living/simple_animal/shade/death()
|
||||
if(deathmessage == initial(deathmessage))
|
||||
deathmessage = "lets out a contented sigh as [p_their()] form unwinds."
|
||||
if(death_message == initial(death_message))
|
||||
death_message = "lets out a contented sigh as [p_their()] form unwinds."
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/shade/canSuicide()
|
||||
|
||||
@@ -129,7 +129,6 @@
|
||||
var/list/loot = list()
|
||||
///Causes mob to be deleted on death, useful for mobs that spawn lootable corpses.
|
||||
var/del_on_death = 0
|
||||
var/deathmessage = ""
|
||||
|
||||
var/allow_movement_on_non_turfs = FALSE
|
||||
|
||||
@@ -430,12 +429,6 @@
|
||||
verb_say = pick(speak_emote)
|
||||
return ..()
|
||||
|
||||
|
||||
/mob/living/simple_animal/emote(act, m_type=1, message = null, intentional = FALSE, force_silence = FALSE)
|
||||
if(stat)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/proc/set_varspeed(var_value)
|
||||
speed = var_value
|
||||
update_simplemob_varspeed()
|
||||
@@ -462,9 +455,6 @@
|
||||
drop_loot()
|
||||
if(dextrous)
|
||||
drop_all_held_items()
|
||||
if(!gibbed)
|
||||
if(deathsound || deathmessage || !del_on_death)
|
||||
emote("deathgasp")
|
||||
if(del_on_death)
|
||||
..()
|
||||
//Prevent infinite loops if the mob Destroy() is overridden in such
|
||||
|
||||
@@ -176,13 +176,6 @@
|
||||
///Calls relay_move() to whatever this is set to when the mob tries to move
|
||||
var/atom/movable/remote_control
|
||||
|
||||
/**
|
||||
* The sound made on death
|
||||
*
|
||||
* leave null for no sound. used for *deathgasp
|
||||
*/
|
||||
var/deathsound
|
||||
|
||||
///the current turf being examined in the stat panel
|
||||
var/turf/listed_turf = null
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.2 KiB |
@@ -648,6 +648,7 @@
|
||||
#include "code\datums\actions\items\summon_stickmen.dm"
|
||||
#include "code\datums\actions\items\toggles.dm"
|
||||
#include "code\datums\actions\items\vortex_recall.dm"
|
||||
#include "code\datums\actions\mobs\adjust_vision.dm"
|
||||
#include "code\datums\actions\mobs\blood_warp.dm"
|
||||
#include "code\datums\actions\mobs\charge.dm"
|
||||
#include "code\datums\actions\mobs\dash.dm"
|
||||
|
||||