mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 20:47:43 +01:00
Merge pull request #7722 from Verkister/moremobfixy
Another bunch of simplemob fixes
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user