Merge pull request #7722 from Verkister/moremobfixy

Another bunch of simplemob fixes
This commit is contained in:
Aronai Sieyes
2020-05-08 19:39:19 -04:00
committed by GitHub
12 changed files with 32 additions and 14 deletions
+18 -2
View File
@@ -27,6 +27,16 @@
QDEL_NULL(ai_holder)
return ..()
/mob/living/Login()
if(!stat && ai_holder)
ai_holder.manage_processing(AI_NO_PROCESS)
return ..()
/mob/living/Logout()
if(!stat && !key && ai_holder)
ai_holder.manage_processing(AI_PROCESSING)
return ..()
/datum/ai_holder
var/mob/living/holder = null // The mob this datum is going to control.
var/stance = STANCE_IDLE // Determines if the mob should be doing a specific thing, e.g. attacking, following, standing around, etc.
@@ -145,11 +155,15 @@
// 'Tactical' processes such as moving a step, meleeing an enemy, firing a projectile, and other fairly cheap actions that need to happen quickly.
/datum/ai_holder/proc/handle_tactics()
if(holder.key && !autopilot)
return
handle_special_tactic()
handle_stance_tactical()
// 'Strategical' processes that are more expensive on the CPU and so don't get run as often as the above proc, such as A* pathfinding or robust targeting.
/datum/ai_holder/proc/handle_strategicals()
if(holder.key && !autopilot)
return
handle_special_strategical()
handle_stance_strategical()
@@ -160,6 +174,8 @@
// For setting the stance WITHOUT processing it
/datum/ai_holder/proc/set_stance(var/new_stance)
if(holder.key && !autopilot)
return
if(stance == new_stance)
ai_log("set_stance() : Ignoring change stance to same stance request.", AI_LOG_INFO)
return
@@ -277,11 +293,11 @@
if(STANCE_IDLE)
if(speak_chance) // In the long loop since otherwise it wont shut up.
handle_idle_speaking()
if(hostile)
ai_log("handle_stance_strategical() : STANCE_IDLE, going to find_target().", AI_LOG_TRACE)
find_target()
if(should_go_home())
ai_log("handle_stance_tactical() : STANCE_IDLE, going to go home.", AI_LOG_TRACE)
go_home()
@@ -65,7 +65,7 @@
if(!eye_layer)
eye_layer = image(icon, "[icon_state]-eyes")
eye_layer.plane = PLANE_LIGHTING_ABOVE
eye_layer.appearance_flags = appearance_flags //VOREStation Edit. Make eye overlays respect the mob's scaling settings.
add_overlay(eye_layer)
/mob/living/simple_mob/proc/remove_eyes()
@@ -66,6 +66,7 @@
var/obj/belly/B = belly
for(var/mob/living/M in B)
new_fullness += M.size_multiplier
new_fullness = new_fullness / size_multiplier //Divided by pred's size so a macro mob won't get macro belly from a regular prey.
new_fullness = round(new_fullness, 1) // Because intervals of 0.25 are going to make sprite artists cry.
vore_fullness = min(vore_capacity, new_fullness)
@@ -430,4 +431,4 @@
var/armor_soak = get_armor_soak(T, "melee")
T.apply_damage(20, HALLOSS,, armor_block, armor_soak)
if(prob(33))
T.apply_effect(3, WEAKEN, armor_block)
T.apply_effect(3, WEAKEN, armor_block)
@@ -113,7 +113,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/vore/aggressive/corrupthound/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -56,7 +56,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/vore/aggressive/deathclaw/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -80,7 +80,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/vore/aggressive/dragon/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -72,7 +72,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/vore/hippo/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -46,7 +46,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/vore/horse/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -285,7 +285,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/otie/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -51,7 +51,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/vore/aggressive/panther/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -197,7 +197,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 3
/mob/living/simple_mob/vore/aggressive/rat/MouseDrop_T(mob/living/M, mob/living/user)
return
@@ -236,4 +236,4 @@
say_got_target = list("SQUEEK!")
/datum/ai_holder/simple_mob/melee/rat
speak_chance = 3
speak_chance = 2
@@ -91,6 +91,7 @@
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
vore_icons = SA_ICON_LIVING | SA_ICON_REST
/mob/living/simple_mob/animal/wolf/direwolf/Login()
. = ..()
@@ -98,7 +99,7 @@
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 0
movement_cooldown = 2
/mob/living/simple_mob/animal/wolf/direwolf/MouseDrop_T(mob/living/M, mob/living/user)
return