This commit is contained in:
VerySoft
2023-07-30 21:37:39 -04:00
parent d3e6f2b7ab
commit bb37b7609a
6 changed files with 78 additions and 22 deletions
+1 -1
View File
@@ -447,7 +447,7 @@
if(speak_chance) // In the long loop since otherwise it wont shut up.
handle_idle_speaking()
if(hostile)
if(hostile || vore_hostile)
ai_log("handle_stance_strategical() : STANCE_IDLE, going to find_target().", AI_LOG_TRACE)
find_target()
+16
View File
@@ -6,6 +6,9 @@
var/mauling = FALSE // Attacks unconscious mobs
var/unconscious_vore = FALSE //VOREStation Add - allows a mob to go for unconcious targets IF their vore prefs align
var/handle_corpse = FALSE // Allows AI to acknowledge corpses (e.g. nurse spiders)
var/vore_hostile = FALSE // The same as hostile, but with vore pref checks
var/micro_hunt = FALSE // Will target mobs at or under the micro_hunt_size size, requires vore_hostile to be true
var/micro_hunt_size = 0.25
var/atom/movable/target = null // The thing (mob or object) we're trying to kill.
var/atom/movable/preferred_target = null// If set, and if given the chance, we will always prefer to target this over other options.
@@ -312,3 +315,16 @@
/datum/ai_holder/proc/lose_taunt()
ai_log("lose_taunt() : Resetting preferred_target.", AI_LOG_INFO)
preferred_target = null
/datum/ai_holder/proc/vore_check(mob/living/L)
if(!holder.vore_selected) //We probably don't have a belly so don't even try
return FALSE
if(!isliving(L)) //We only want mob/living
return FALSE
if(!L.devourable || !L.allowmobvore) //Check their prefs
return FALSE
if(micro_hunt && !(L.get_effective_size(TRUE) <= micro_hunt_size)) //Are they small enough to get?
to_world("[holder]'s micro hunt failed against [L]: micro_hunt = [micro_hunt]: [L] effective_size = [L.get_effective_size(TRUE)]: Hunting sizes under [micro_hunt_size]")
return FALSE
to_world("micro hunt passed")
return TRUE // Let's go!
@@ -1,21 +1,9 @@
/datum/category_item/catalogue/fauna/abyss_lurker
name = "Alien Wildlife - Teppi"
desc = "Teppi are large omnivorous quadrupeds with long fur.\
Unlike many horned mammals, Teppi have developed paws with four toes rather than hooves.\
This coupled with a thick, powerful tail makes them quite capable and balanced on many\
kinds of terrain. A recently discovered species, their origins are something of a\
mystery, but they have been discovered in more different regions of space with no apparent\
connection to one another. Teppi are known to reproduce and grow rather quickly, which if\
left unchecked can lead to serious problems for local ecology.\
Teppi are very hardy, engaging them in combat is not recommended.\
Teppi can be a good source of protein and materials for crafts and clothing in emergency\
situations. They are not especially picky eaters, and have a rather mild temperament.\
A pair of well fed Teppi can rather quickly become a small horde, so it is generally\
advised to keep an eye on their numbers."
name = "Alien Wildlife - Abyss Lurker"
desc = "REPLACE ME"
value = CATALOGUER_REWARD_MEDIUM
/mob/living/simple_mob/vore/alienanimals/abyss_lurker
/mob/living/simple_mob/vore/vore_hostile/abyss_lurker
name = "abyss lurker"
desc = "A pale mass of heaving flesh that gropes around in the gloom. It doesn't appear to have any eyes."
icon = 'icons/mob/alienanimals_x64.dmi'
@@ -23,6 +11,7 @@
icon_living = "abyss_lurker"
icon_dead = "abyss_lurker-dead"
icon_rest = "abyss_lurker"
vore_icons = 0
faction = "macrobacteria"
maxHealth = 600
@@ -37,11 +26,16 @@
pixel_x = -16
default_pixel_x = -16
mob_bump_flag = HEAVY
mob_swap_flags = HEAVY
mob_push_flags = HEAVY
mob_size = MOB_LARGE
attacktext = list("flashes", "slaps", "smothers", "grapples")
attack_sound = 'sound/effects/attackblob.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/say_hostile
ai_holder_type = /datum/ai_holder/simple_mob/say_aggro
mob_size = MOB_LARGE
@@ -62,7 +56,7 @@
vore_pounce_maxhealth = 100
vore_standing_too = TRUE
/mob/living/simple_mob/vore/alienanimals/abyss_lurker/init_vore()
/mob/living/simple_mob/vore/vore_hostile/abyss_lurker/init_vore()
..()
var/obj/belly/B = vore_selected
B.name = "interior"
@@ -75,11 +69,53 @@
B.absorbchance = 0
B.escapechance = 25
/datum/ai_holder/simple_mob/say_hostile
/mob/living/simple_mob/vore/vore_hostile
name = "peeb"
desc = "REPLACE ME"
ai_holder_type = /datum/ai_holder/simple_mob/vore
/datum/ai_holder/simple_mob/vore
hostile = FALSE
retaliate = TRUE
vore_hostile = TRUE
forgive_resting = TRUE
/datum/ai_holder/simple_mob/say_hostile/on_hear_say(mob/living/speaker, message)
/datum/ai_holder/simple_mob/vore/micro_hunter
micro_hunt = TRUE
micro_hunt_size = 0.8
/datum/ai_holder/simple_mob/vore/hostile
hostile = TRUE
/datum/ai_holder/simple_mob/vore/find_target(list/possible_targets, has_targets_list)
if(!vore_hostile)
return ..()
ai_log("find_target() : Entered.", AI_LOG_TRACE)
. = list()
if(!has_targets_list)
possible_targets = list_targets()
var/list/valid_mobs = list()
for(var/mob/living/possible_target in possible_targets)
if(!can_attack(possible_target))
continue
. |= possible_target
if(!isliving(possible_target))
continue
if(vore_check(possible_target))
valid_mobs |= possible_target
var/new_target
if(valid_mobs.len)
new_target = pick(valid_mobs)
else if(hostile)
new_target = pick(.)
if(!new_target)
return null
give_target(new_target)
return new_target
/datum/ai_holder/simple_mob/say_aggro/on_hear_say(mob/living/speaker, message)
. = ..()
if(holder.client || !speaker.client)
return
@@ -651,7 +651,7 @@
semirandom_group_min = 1
semirandom_group_max = 3
mob_intent = "retaliate"
valid_mobs = list(list(/mob/living/simple_mob/vore/alienanimals/abyss_lurker = 100))
valid_mobs = list(list(/mob/living/simple_mob/vore/vore_hostile/abyss_lurker = 100))
var/mob_chance = 10
var/treasure_chance = 50
@@ -124,7 +124,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
attack_sound = 'sound/voice/teppi/roar.ogg' // make a better one idiot
friendly = list("snoofs", "nuzzles", "nibbles", "smooshes on")
ai_holder_type = /datum/ai_holder/simple_mob/teppi
ai_holder_type = /datum/ai_holder/simple_mob/vore/micro_hunter
mob_size = MOB_LARGE
@@ -160,6 +160,10 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
vore_default_contamination_flavor = "Wet"
vore_default_contamination_color = "grey"
vore_default_item_mode = IM_DIGEST
vore_bump_chance = 5
vore_pounce_chance = 35
vore_pounce_falloff = 0
vore_standing_too = TRUE
/mob/living/simple_mob/vore/alienanimals/teppi/init_vore()
..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 84 KiB