From 7838036efbba9146cd6036a90c9395af86c9acdc Mon Sep 17 00:00:00 2001 From: aberrantQuesrist <70340593+aberrantQuesrist@users.noreply.github.com> Date: Sat, 16 Mar 2024 14:16:44 -0700 Subject: [PATCH] Slugcats! (#1356) * Adds slugcats, a new simplemob! * Fixes duplicate #include statements. * Scug hands. * tgstation.dme wants this order, apparently? * Allows slugcats to come out of scrubber clogs (strange type.) * Update tgstation.dme --------- Co-authored-by: AberrantQuerist Co-authored-by: dwasint <82520990+dwasint@users.noreply.github.com> --- code/modules/events/scrubber_clog.dm | 1 + .../basic/space_fauna/slugcat/slugcat.dm | 70 ++++++++++++++++++ icons/mob/simple/slugcats.dmi | Bin 0 -> 1772 bytes tgstation.dme | 1 + 4 files changed, 72 insertions(+) create mode 100644 code/modules/mob/living/basic/space_fauna/slugcat/slugcat.dm create mode 100644 icons/mob/simple/slugcats.dmi diff --git a/code/modules/events/scrubber_clog.dm b/code/modules/events/scrubber_clog.dm index 195f4e447c14..6a6de8f7fbf4 100644 --- a/code/modules/events/scrubber_clog.dm +++ b/code/modules/events/scrubber_clog.dm @@ -216,5 +216,6 @@ /mob/living/basic/mushroom, /mob/living/simple_animal/hostile/retaliate/goose, //Janitors HATE geese. /mob/living/simple_animal/pet/gondola, + /mob/living/basic/slugcat //Monkestation edit. Let the slugs come out of the pipes! ) return pick(mob_list) diff --git a/code/modules/mob/living/basic/space_fauna/slugcat/slugcat.dm b/code/modules/mob/living/basic/space_fauna/slugcat/slugcat.dm new file mode 100644 index 000000000000..b2b0e69f0b33 --- /dev/null +++ b/code/modules/mob/living/basic/space_fauna/slugcat/slugcat.dm @@ -0,0 +1,70 @@ +/* +* +*Slugcats, a new vent critter. +* +*/ + +/mob/living/basic/slugcat + name = "slugcat" + desc = "A biologically engineered entity to clean pipes and relay information. It looks upon you with large, inquisitive eyes." + icon = 'icons/mob/simple/slugcats.dmi' + icon_state = "scug" + icon_living = "scug" + icon_dead = "scug_dead" + speak_emote = list("mews") + butcher_results = list(/obj/item/food/meat/slab = 2) + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "shoos" + response_disarm_simple = "shoo" + response_harm_continuous = "swats" + response_harm_simple = "swat" + + gold_core_spawnable = FRIENDLY_SPAWN + + health = 80 + maxHealth = 80 + melee_damage_lower = 5 + melee_damage_upper = 5 + obj_damage = 0 + environment_smash = ENVIRONMENT_SMASH_NONE + + attack_verb_continuous = "claws" + attack_verb_simple = "claw" + attack_sound = 'sound/weapons/pierce.ogg' + + ai_controller = /datum/ai_controller/basic_controller/slugcat + + ///What fate (food) a slugcat? + var/static/list/edibles = list( + /mob/living/basic/mouse, + /obj/item/food/deadmouse, + /mob/living/basic/bat + ) + +/mob/living/basic/slugcat/Initialize(mapload) + . = ..() + AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) + AddElement(/datum/element/ai_retaliate) + AddElement(/datum/element/dextrous) + ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) + + AddElement(/datum/element/basic_eating, heal_amt = 2, food_types = edibles) + ai_controller.set_blackboard_key(BB_BASIC_FOODS, edibles) + + +/datum/ai_controller/basic_controller/slugcat + + blackboard = list( + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, + ) + + ai_traits = STOP_MOVING_WHEN_PULLED + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + + planning_subtrees = list( + /datum/ai_planning_subtree/target_retaliate, + /datum/ai_planning_subtree/find_food, + /datum/ai_planning_subtree/basic_melee_attack_subtree, + ) diff --git a/icons/mob/simple/slugcats.dmi b/icons/mob/simple/slugcats.dmi new file mode 100644 index 0000000000000000000000000000000000000000..eed4a7437aeff3ecd7a7550586fc2963b807f573 GIT binary patch literal 1772 zcmZ{ldo&ve7RF;+@k&ueM~cMsFdm~}Q=&COT7987#Jke8rfa)ONTsDpRJrvS8f#sXzy?dyd;)6>&Ke8Mj7TC8KOyjj}f ze38Bw`%M=J)HZ;w$rNI_!q5V#fWwtohH+1r@=812&)XlM_+tclOzSH*Yv6kzuOKF9lZ#LJ2Wz~>jVJHh?n zqi_#sIj^Lz1P%3n>eO*OJSPus{&W3TwOM)a=a%*egFZ+10R74m%7ZlD>)B!Ew-)m6 zRX;tE^CNWoq}$v6GV0~~6e=a?PmZV%=BE+W-}V7^U7ggO%UN0gfNIwTcN99Ie2tp- zu?7mtaGnX}h=^SCbWdMssN1bbN|~(9!E71LTtRGaOZ%IO{7f-3L(3VbvYY$q^O-N@ zKa>mxgHG*6I$pXRU{}4_5$Rq8^vFWOVcL&K_NT@1FI$dCc1J`j$j`{335Px<^#!zP5(eaMveo{)-4vP1^#tIA_qTD4hM z9RhEKx5be1RmSL5`dT$i&o^Q_rrWjLc}ZG$K?2x|jQ(!;xKBE;T1JRoH}-SD9(xER zq;z{NkK9KIT$6{sj+}disxZpUByg&l<+JT2;KMGBsN^M^A!!4+F+W`x9V~&AqXM#6 zSjipT#|?jGUFKjDEiVcFIzy_=JZ-d0rd=9#(l}C(r@9Ptu3OBWFz!{YA23(}1seYa z=wslQ!HGh1s+h@_;K5~Cx28gfPHG%H%*Xxe`dxv=D62QL@uJ^%l)mCVmr77?94sW= zM4Tc-RmaEK@R0a(_OPP)#Undc6A}CZgnF3HuG+E41?!zbU#nu#;a>v!J4y`HH*M1@ z*ToX7nQ8tQ=%j@G^|2D$?c36_(|ia>n&GCIKBP+=3|XP^1)-Kk>_DG!0B9<4;Y(z4 zW!EeW?8ViNqnynsrPu4nywc7gozb|0+t(l!tJJ1aO)54!P*W~^mffZ0(xZ+C zf8`hDK>nm+pYa?9}!(zwmd9lOXyyNTYViy%zki) z*Pclhpo{d74cdC~o){~2RQSm0|RUgUA&b4=t5hoMM_PA z-KJRuXyw~DV0wP{VO=9g=RK|^u_o5WYk!30Z0=}&=#AARmBg&( zo6pQso1RySvF{$fmE-0RxoR9IS0n?bebI!Nr)I`k#!GvaYb)x=_gK#20v@v{-I>T6 zIq`$$?&nV$x*lrk9R4$8E!Kghsjw!&Q5%rYU1f~}3z|}tPpYoWaXk!Lef!Hd+*^1P z*Z#c5958gRn8~u=ortC<2vxeqvqYvnQOOB7N6hMA(&$DgY?fL$adKn!M%Q?O=<`C0 zcNYTkg21Dzt%pKpspN?rx{h#oAWD{iLt<9@lKhFB9dN4X*e2t8LII-vf#RjKK>~Tg zpeW-0zxfwau4vf~@5jr7CJN1Oiy@m1C&8^vdoc9OeBtsltvwwTY@mMZ*-}ME8?R4D z-R$q2dfU9T|AcC|UbGq6Rem+a>rN*jnEh|@O8T$%Ka2ly|KNP@4l5q!zL0QFZ@6HR zEae1}$)2#7KS%VD>{1jiOTs9*D4T(;iHTie)s-qPl4InEX$(w3jeb$8aQR*sCP(~w z8KIyaF_%AC7ZDc)fudbTk@E(FrR}q)6H-|P6pZUBs6zXNL_K2ed9B{@t1_5;Nv!qy X6O9r-FppAx7{G-y-tM$h*tEX`T3eZT literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index c9ae59c38db5..316eb6eb42d5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4386,6 +4386,7 @@ #include "code\modules\mob\living\basic\space_fauna\revenant\revenant_harvest.dm" #include "code\modules\mob\living\basic\space_fauna\revenant\revenant_items.dm" #include "code\modules\mob\living\basic\space_fauna\revenant\revenant_objectives.dm" +#include "code\modules\mob\living\basic\space_fauna\slugcat\slugcat.dm" #include "code\modules\mob\living\basic\space_fauna\snake\snake.dm" #include "code\modules\mob\living\basic\space_fauna\snake\snake_ai.dm" #include "code\modules\mob\living\basic\space_fauna\space_dragon\dragon_breath.dm"