Tweaking drake AI.

This commit is contained in:
MistakeNot4892
2022-08-17 00:03:05 +10:00
parent 1f0cf3c2cb
commit 0561e2a3c8
4 changed files with 25 additions and 13 deletions
@@ -80,8 +80,8 @@
if(length(MED.apply_sounds))
playsound(user, pick(MED.apply_sounds), 25)
if(do_mob(user, src, 1 SECOND) && MED.get_amount() >= 1 && health < getMaxHealth())
heal_organ_damage(MED.heal_brute * 5, MED.heal_burn * 5)
if(do_mob(user, src, 2 SECONDS) && MED.get_amount() >= 1 && health < getMaxHealth())
heal_organ_damage(MED.heal_brute * 25, MED.heal_burn * 25)
visible_message(SPAN_NOTICE("\The [user] applies \the [MED] to \the [src]."))
MED.use(1)
return
@@ -3,8 +3,8 @@
desc = "Your wounds have been salved with Sivian sap."
mob_overlay_state = "cyan_sparkles"
stacks = MODIFIER_STACK_FORBID
on_created_text = "<span class = 'notice'>The glowing sap seethes and bubbles in your wounds, tingling and stinging as infection is burned away.</span>"
on_expired_text = "<span class = 'notice'>The last of the sap in your wounds is absorbed by your body.</span>"
on_created_text = "<span class = 'notice'>The glowing sap seethes and bubbles in your wounds, tingling and stinging.</span>"
on_expired_text = "<span class = 'notice'>The last of the sap in your wounds fizzles away.</span>"
/datum/modifier/sifsap_salve/tick()
@@ -351,6 +351,11 @@ var/global/list/last_drake_howl = list()
/mob/living/simple_mob/animal/sif/grafadreka/get_eye_color()
return eye_colour
/mob/living/simple_mob/animal/sif/grafadreka/do_tame(var/obj/O, var/mob/user)
. = ..()
if(attacked_by_human && ishuman(user) && ((user in tamers) || (user in friends)))
attacked_by_human = FALSE
/mob/living/simple_mob/animal/sif/grafadreka/handle_special()
..()
if(client || world.time >= next_alpha_check)
@@ -421,9 +426,12 @@ var/global/list/last_drake_howl = list()
var/mob/living/carbon/human/H = friend
for(var/obj/item/organ/external/E in H.organs)
if(E.status & ORGAN_BLEEDING)
E.organ_clamp()
H.bloodstr.add_reagent("sifsap", rand(1,2))
for(var/datum/wound/W in E.wounds)
W.salve()
for(var/datum/wound/W in E.wounds)
W.salve()
W.disinfect()
// Everyone else is just poisoned.
else if(!istype(friend, /mob/living/simple_mob/animal/sif))
friend.adjustToxLoss(rand(10,20))
@@ -1,5 +1,4 @@
/mob/living/simple_mob/animal/sif/grafadreka/ICheckRangedAttack(atom/A)
/mob/living/simple_mob/animal/sif/grafadreka
// Some mobtypes are immune to stun, so trying to incapacitate them
// is pointless. Track them here so we don't endlessly run away from
// Beepsky until he beats us to death.
@@ -8,7 +7,8 @@
/mob/living/simple_mob/humanoid/merc
)
. = ..() && isliving(A)
/mob/living/simple_mob/animal/sif/grafadreka/ICheckRangedAttack(atom/A)
. = ..() && isliving(A) && has_sap(2) && (world.time >= next_spit)
if(.)
var/mob/living/M = A
@@ -17,7 +17,7 @@
for(var/mobtype in stun_immune_types)
if(istype(A, mobtype))
return FALSE // bots are immune to stuns
return FALSE
/mob/living/simple_mob/animal/sif/grafadreka/IIsAlly(mob/living/L)
. = ..()
@@ -57,7 +57,11 @@
if(!istype(drake) || prey.lying || prey.incapacitated())
return FALSE
// We can spit at them - disengage so you can pew pew.
if(get_dist(target, holder) <= 1 && drake.has_sap(2))
if(get_dist(target, holder) <= 1 && drake.has_sap(2) && (world.time >= drake.next_spit))
// No point spitting at immune mobs.
for(var/mobtype in drake.stun_immune_types)
if(istype(target, mobtype))
return FALSE
return TRUE
/datum/ai_holder/simple_mob/intentional/grafadreka/pre_ranged_attack(atom/A)