[MIRROR] Dogs use the Pet Command system [MDB IGNORE] (#18393)

* Dogs use the Pet Command system

* modular pets

* modular dogs

* oops

* NO

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
This commit is contained in:
SkyratBot
2023-01-09 14:06:58 +01:00
committed by GitHub
parent a15fe71efd
commit ff97c189db
40 changed files with 831 additions and 669 deletions

View File

@@ -7,9 +7,8 @@
/datum/pet_command/idle
command_name = "Stay"
command_desc = "Command your pet to stay idle in this location."
radial_icon = 'icons/testing/turf_analysis.dmi'
radial_icon_state = "red_arrow"
command_key = PET_COMMAND_IDLE
radial_icon = 'icons/obj/objects.dmi'
radial_icon_state = "dogbed"
speech_commands = list("sit", "stay", "stop")
command_feedback = "sits"
@@ -25,11 +24,11 @@
command_desc = "Allow your pet to resume its natural behaviours."
radial_icon = 'icons/mob/actions/actions_spells.dmi'
radial_icon_state = "repulse"
command_key = PET_COMMAND_NONE
speech_commands = list("free", "loose")
command_feedback = "relaxes"
/datum/pet_command/free/execute_action(datum/ai_controller/controller)
controller.blackboard[BB_ACTIVE_PET_COMMAND] = null
return // Just move on to the next planning subtree.
/**
@@ -39,9 +38,8 @@
/datum/pet_command/follow
command_name = "Follow"
command_desc = "Command your pet to accompany you."
radial_icon = 'icons/mob/actions/actions_spells.dmi'
radial_icon_state = "summons"
command_key = PET_COMMAND_FOLLOW
radial_icon = 'icons/testing/turf_analysis.dmi'
radial_icon_state = "red_arrow"
speech_commands = list("heel", "follow")
/datum/pet_command/follow/set_command_active(mob/living/parent, mob/living/commander)
@@ -52,6 +50,52 @@
controller.queue_behavior(/datum/ai_behavior/pet_follow_friend, BB_CURRENT_PET_TARGET)
return SUBTREE_RETURN_FINISH_PLANNING
/**
* # Pet Command: Play Dead
* Pretend to be dead for a random period of time
*/
/datum/pet_command/play_dead
command_name = "Play Dead"
command_desc = "Play a macabre trick."
radial_icon = 'icons/mob/simple/pets.dmi'
radial_icon_state = "puppy_dead"
speech_commands = list("play dead") // Don't get too creative here, people talk about dying pretty often
/datum/pet_command/play_dead/execute_action(datum/ai_controller/controller)
controller.queue_behavior(/datum/ai_behavior/play_dead)
return SUBTREE_RETURN_FINISH_PLANNING
/**
* # Pet Command: Good Boy
* React if complimented
*/
/datum/pet_command/good_boy
command_name = "Good Boy"
command_desc = "Give your pet a compliment."
hidden = TRUE
/datum/pet_command/good_boy/New(mob/living/parent)
. = ..()
speech_commands += "good [parent.name]"
switch (parent.gender)
if (MALE)
speech_commands += "good boy"
return
if (FEMALE)
speech_commands += "good girl"
return
// If we get past this point someone has finally added a non-binary dog
/datum/pet_command/good_boy/execute_action(datum/ai_controller/controller)
controller.blackboard[BB_ACTIVE_PET_COMMAND] = null
var/mob/living/parent = weak_parent.resolve()
if (!parent)
return SUBTREE_RETURN_FINISH_PLANNING
new /obj/effect/temp_visual/heart(parent.loc)
parent.emote("spin")
return SUBTREE_RETURN_FINISH_PLANNING
/**
* # Pet Command: Attack
* Tells a pet to chase and bite the next thing you point at
@@ -62,10 +106,9 @@
radial_icon = 'icons/effects/effects.dmi'
radial_icon_state = "bite"
command_key = PET_COMMAND_ATTACK
speech_commands = list("attack", "sic", "kill")
command_feedback = "growl"
pointed_reaction = "growls"
pointed_reaction = "and growls"
/// Balloon alert to display if providing an invalid target
var/refuse_reaction = "shakes head"
/// Attack behaviour to use, generally you will want to override this to add some kind of cooldown
@@ -105,10 +148,9 @@
command_desc = "Command your pet to use one of its special skills on something that you point out to it."
radial_icon = 'icons/mob/actions/actions_spells.dmi'
radial_icon_state = "projectile"
command_key = PET_COMMAND_USE_ABILITY
speech_commands = list("shoot", "blast", "cast")
command_feedback = "growl"
pointed_reaction = "growls"
pointed_reaction = "and growls"
/// Blackboard key where a reference to some kind of mob ability is stored
var/pet_ability_key