Monke Business - Ports monkey AI from TG (#31067)

* Monke Mode

* Punch

* Some comment stuff

* Linters, excess

* Linters

* Emote stuff

* Pause monkey AI during do afters

* Small improvements

* Oops

* Fixes monkeys trying to drink forever from a glass

* Knockdowns and stamcrit fixes

* Removes eating/drinking from Pun Pun

* Monkey controller improvement, bug fix

* Fixes monkey item giving

* Fixes brain swaps

* Fixes

* Update code/datums/ai/monkey/monkey_controller.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>

* Addresses code review

* Oops

* Oops round 2

* Fixes monkeys staying in trip mode when evolved

---------

Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
PollardTheDragon
2025-12-26 22:44:52 +00:00
committed by GitHub
co-authored by Burzah
parent 82d31ab8a5
commit a590870d00
24 changed files with 1115 additions and 33 deletions
@@ -65,13 +65,14 @@
return
if(L != user)
L.visible_message(SPAN_DANGER("[user] is trying to inject [L]!"), \
SPAN_USERDANGER("[user] is trying to inject you!"))
SPAN_USERDANGER("[user] is trying to inject you!"))
SEND_SIGNAL(L, COMSIG_LIVING_TRY_SYRINGE_INJECT, user)
if(!do_mob(user, L))
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
L.visible_message("<span class='danger'>[user] injects [L] with the syringe!", \
"<span class='userdanger'>[user] injects [L] with the syringe!")
L.visible_message(SPAN_DANGER("[user] injects [L] with the syringe!"), \
SPAN_USERDANGER("[user] injects [L] with the syringe!"))
var/list/rinject = list()
for(var/datum/reagent/R in reagents.reagent_list)
@@ -88,6 +89,7 @@
if(L != user)
L.visible_message(SPAN_DANGER("[user] is trying to take a blood sample from [L]!"), \
SPAN_USERDANGER("[user] is trying to take a blood sample from [L]!"))
SEND_SIGNAL(L, COMSIG_LIVING_TRY_SYRINGE_WITHDRAW, user)
busy = TRUE
if(!do_mob(user, L, syringe_draw_time))
busy = FALSE