Files
Bubberstation/code/modules/mob/living/basic/alien/_alien.dm
SmArtKar eb69c087f1 Gibs you leave are now based on your biotype/chest bodypart, improves gibber VFX (#91421)
## About The Pull Request

* When gibbing mobs, spawned gib type is now based on mob's biotypes if
they're not a carbon, or their chest (or first) bodypart if they are,
rather than requiring a proc override for every single mob. This means
that a few robotic mobs no longer drop meaty gibs, and that gibbing
androids now produces cyborg gibs instead of a meaty surprise, plus they
should no longer runtime when trying to gib a robot. Gibs also are now
spawned around the gibber and streak outwards instead of magically
teleporting a few tiles away, for some visual flair.
* Fixed meat not overriding blood DNA on blood_walk component which made
xeno and lizard meat leave behind orange trails instead of proper
lime/dark green blood colors (due to them keeping human meat DNA).
* Brightened up the gibber blood overlay I've missed, so it should be
consistent with old blood colors now.
* Also cleaned up the gibspawner code.

## Why It's Good For The Game

Biotype/chest changes should make devs lives easier and gameplay a bit
more consistent, and streaking just makes the process look slightly
better.

## Changelog
🆑
add: Androids and fully augmented humans now drop robotic gibs instead
of meat
add: Improved gibber VFX
fix: Fixed gibber overlays being darker than intended
fix: Fixed xenomorph and lizard meat leaving orange trails behind
code: Improved gibs and gibspawner code
/🆑
2025-06-07 13:04:28 -06:00

95 lines
2.8 KiB
Plaintext

/mob/living/basic/alien
name = "alien hunter"
desc = "Hiss!"
icon = 'icons/mob/nonhuman-player/alien.dmi'
icon_state = "alienh"
icon_living = "alienh"
icon_dead = "alienh_dead"
icon_gib = "syndicate_gib"
gender = FEMALE
status_flags = CANPUSH
butcher_results = list(
/obj/item/food/meat/slab/xeno = 4,
/obj/item/stack/sheet/animalhide/xeno = 1,
)
maxHealth = 125
health = 125
bubble_icon = "alien"
combat_mode = TRUE
faction = list(ROLE_ALIEN)
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, STAMINA = 0, OXY = 1)
// Going for a dark purple here
lighting_cutoff_red = 30
lighting_cutoff_green = 15
lighting_cutoff_blue = 50
unique_name = TRUE
basic_mob_flags = FLAMMABLE_MOB
speed = 0
obj_damage = 60
speak_emote = list("hisses")
melee_damage_lower = 25
melee_damage_upper = 25
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
gold_core_spawnable = NO_SPAWN
death_sound = 'sound/mobs/non-humanoids/hiss/hiss6.ogg'
death_message = "lets out a waning guttural screech, green blood bubbling from its maw..."
habitable_atmos = null
unsuitable_atmos_damage = FALSE
unsuitable_heat_damage = 20
ai_controller = /datum/ai_controller/basic_controller/alien
blood_volume = BLOOD_VOLUME_NORMAL
///List of loot items to drop when deleted, if this is set then we apply DEL_ON_DEATH
var/list/loot
///Boolean on whether the xeno can plant weeds.
var/can_plant_weeds = TRUE
///Boolean on whether the xeno can lay eggs.
var/can_lay_eggs = FALSE
/mob/living/basic/alien/Initialize(mapload)
. = ..()
if(length(loot))
basic_mob_flags |= DEL_ON_DEATH
loot = string_list(loot)
AddElement(/datum/element/death_drops, loot)
AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW)
/mob/living/basic/alien/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_XENOMORPH)
///Places alien weeds on the turf the mob is currently standing on.
/mob/living/basic/alien/proc/place_weeds()
if(!isturf(loc) || isspaceturf(loc))
return
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
return
visible_message(span_alertalien("[src] plants some alien weeds!"))
new /obj/structure/alien/weeds/node(loc)
///Lays an egg on the turf the mob is currently standing on.
/mob/living/basic/alien/proc/lay_alien_egg()
if(!isturf(loc) || isspaceturf(loc))
return
if(locate(/obj/structure/alien/egg) in get_turf(src))
return
visible_message(span_alertalien("[src] lays an egg!"))
new /obj/structure/alien/egg(loc)
/mob/living/basic/alien/get_bloodtype()
return get_blood_type(BLOOD_TYPE_XENO)
/mob/living/basic/alien/get_gibs_type(drop_bitflags = NONE)
if(drop_bitflags & DROP_BODYPARTS)
return /obj/effect/gibspawner/xeno
return /obj/effect/gibspawner/xeno/bodypartless