mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 01:57:01 +00:00
# Conflicts: # code/game/machinery/Sleeper.dm # code/game/machinery/doors/airlock.dm # code/game/objects/structures/beds_chairs/chair.dm # code/game/objects/structures/lavaland/geyser.dm # code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm # code/modules/antagonists/clockcult/clock_mobs/_eminence.dm # code/modules/paperwork/contract.dm
184 lines
5.3 KiB
Plaintext
184 lines
5.3 KiB
Plaintext
/mob/living/simple_animal/hostile/alien
|
|
name = "alien hunter"
|
|
desc = "Hiss!"
|
|
icon = 'icons/mob/alien.dmi'
|
|
icon_state = "alienh"
|
|
icon_living = "alienh"
|
|
icon_dead = "alienh_dead"
|
|
icon_gib = "syndicate_gib"
|
|
gender = FEMALE
|
|
speed = 0
|
|
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 4,
|
|
/obj/item/stack/sheet/animalhide/xeno = 1)
|
|
maxHealth = 125
|
|
health = 125
|
|
harm_intent_damage = 5
|
|
obj_damage = 60
|
|
melee_damage_lower = 25
|
|
melee_damage_upper = 25
|
|
attack_verb_continuous = "slashes"
|
|
attack_verb_simple = "slash"
|
|
speak_emote = list("hisses")
|
|
bubble_icon = "alien"
|
|
a_intent = INTENT_HARM
|
|
attack_sound = 'sound/weapons/bladeslice.ogg'
|
|
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
|
unsuitable_atmos_damage = 15
|
|
faction = list(ROLE_ALIEN)
|
|
status_flags = CANPUSH
|
|
minbodytemp = 0
|
|
see_in_dark = 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..."
|
|
|
|
/mob/living/simple_animal/hostile/alien/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/footstep, FOOTSTEP_MOB_CLAW)
|
|
|
|
/mob/living/simple_animal/hostile/alien/drone
|
|
name = "alien drone"
|
|
icon_state = "aliend"
|
|
icon_living = "aliend"
|
|
icon_dead = "aliend_dead"
|
|
melee_damage_lower = 15
|
|
melee_damage_upper = 15
|
|
var/plant_cooldown = 30
|
|
var/plants_off = 0
|
|
|
|
/mob/living/simple_animal/hostile/alien/drone/handle_automated_action()
|
|
if(!..()) //AIStatus is off
|
|
return
|
|
plant_cooldown--
|
|
if(AIStatus == AI_IDLE)
|
|
if(!plants_off && prob(10) && plant_cooldown<=0)
|
|
plant_cooldown = initial(plant_cooldown)
|
|
SpreadPlants()
|
|
|
|
/mob/living/simple_animal/hostile/alien/sentinel
|
|
name = "alien sentinel"
|
|
icon_state = "aliens"
|
|
icon_living = "aliens"
|
|
icon_dead = "aliens_dead"
|
|
health = 150
|
|
maxHealth = 150
|
|
melee_damage_lower = 15
|
|
melee_damage_upper = 15
|
|
ranged = 1
|
|
retreat_distance = 5
|
|
minimum_distance = 5
|
|
projectiletype = /obj/projectile/neurotox
|
|
projectilesound = 'sound/weapons/pierce.ogg'
|
|
|
|
|
|
/mob/living/simple_animal/hostile/alien/queen
|
|
name = "alien queen"
|
|
icon_state = "alienq"
|
|
icon_living = "alienq"
|
|
icon_dead = "alienq_dead"
|
|
health = 250
|
|
maxHealth = 250
|
|
melee_damage_lower = 15
|
|
melee_damage_upper = 15
|
|
ranged = 1
|
|
retreat_distance = 5
|
|
minimum_distance = 5
|
|
move_to_delay = 4
|
|
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 4,
|
|
/obj/item/stack/sheet/animalhide/xeno = 1)
|
|
projectiletype = /obj/projectile/neurotox
|
|
projectilesound = 'sound/weapons/pierce.ogg'
|
|
status_flags = 0
|
|
unique_name = 0
|
|
var/sterile = 1
|
|
var/plants_off = 0
|
|
var/egg_cooldown = 30
|
|
var/plant_cooldown = 30
|
|
|
|
/mob/living/simple_animal/hostile/alien/queen/handle_automated_action()
|
|
if(!..()) //AIStatus is off
|
|
return
|
|
egg_cooldown--
|
|
plant_cooldown--
|
|
if(AIStatus == AI_IDLE)
|
|
if(!plants_off && prob(10) && plant_cooldown<=0)
|
|
plant_cooldown = initial(plant_cooldown)
|
|
SpreadPlants()
|
|
if(!sterile && prob(10) && egg_cooldown<=0)
|
|
egg_cooldown = initial(egg_cooldown)
|
|
LayEggs()
|
|
|
|
/mob/living/simple_animal/hostile/alien/proc/SpreadPlants()
|
|
if(!isturf(loc) || isspaceturf(loc))
|
|
return
|
|
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
|
|
return
|
|
visible_message("<span class='alertalien'>[src] has planted some alien weeds!</span>")
|
|
new /obj/structure/alien/weeds/node(loc)
|
|
|
|
/mob/living/simple_animal/hostile/alien/proc/LayEggs()
|
|
if(!isturf(loc) || isspaceturf(loc))
|
|
return
|
|
if(locate(/obj/structure/alien/egg) in get_turf(src))
|
|
return
|
|
visible_message("<span class='alertalien'>[src] has laid an egg!</span>")
|
|
new /obj/structure/alien/egg(loc)
|
|
|
|
/mob/living/simple_animal/hostile/alien/queen/large
|
|
name = "alien empress"
|
|
icon = 'icons/mob/alienqueen.dmi'
|
|
icon_state = "alienq"
|
|
icon_living = "alienq"
|
|
icon_dead = "alienq_dead"
|
|
bubble_icon = "alienroyal"
|
|
move_to_delay = 4
|
|
maxHealth = 400
|
|
health = 400
|
|
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 10,
|
|
/obj/item/stack/sheet/animalhide/xeno = 2)
|
|
mob_size = MOB_SIZE_LARGE
|
|
gold_core_spawnable = NO_SPAWN
|
|
|
|
/obj/projectile/neurotox
|
|
name = "neurotoxin"
|
|
damage = 30
|
|
icon_state = "toxin"
|
|
|
|
/mob/living/simple_animal/hostile/alien/handle_temperature_damage()
|
|
if(bodytemperature < minbodytemp)
|
|
adjustBruteLoss(2)
|
|
else if(bodytemperature > maxbodytemp)
|
|
adjustBruteLoss(20)
|
|
|
|
|
|
/mob/living/simple_animal/hostile/alien/maid
|
|
name = "lusty xenomorph maid"
|
|
melee_damage_lower = 0
|
|
melee_damage_upper = 0
|
|
a_intent = INTENT_HELP
|
|
friendly_verb_continuous = "caresses"
|
|
friendly_verb_simple = "caress"
|
|
obj_damage = 0
|
|
environment_smash = ENVIRONMENT_SMASH_NONE
|
|
gold_core_spawnable = HOSTILE_SPAWN
|
|
icon_state = "maid"
|
|
icon_living = "maid"
|
|
icon_dead = "maid_dead"
|
|
|
|
/mob/living/simple_animal/hostile/alien/maid/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/cleaning)
|
|
|
|
/mob/living/simple_animal/hostile/alien/maid/AttackingTarget()
|
|
if(ismovableatom(target))
|
|
if(istype(target, /obj/effect/decal/cleanable))
|
|
visible_message("<span class='notice'>[src] cleans up \the [target].</span>")
|
|
qdel(target)
|
|
return TRUE
|
|
var/atom/movable/M = target
|
|
SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
|
visible_message("<span class='notice'>[src] polishes \the [target].</span>")
|
|
return TRUE
|