From bdcd37936328d5e41ed33f89aa180ad9e734768b Mon Sep 17 00:00:00 2001 From: nukkuminen <90336027+oldschoolotaku@users.noreply.github.com> Date: Wed, 1 Oct 2025 17:44:08 +0300 Subject: [PATCH] Kitties! Cats! Small carcats! (#1814) * todo finish after cbt * alright. it's working, somehow * colored cars * i'll fucking smash my head against the wall * colored cars with spots * i can't belive my eyes * spawners, localization and some stuff * rat hunters * resolving stuff * and this one too * car * car 2 * car 3 * 13 * car 4 * car 5 * car 6 * i hate rats * car 7 * finally * alldun! * CARCATS 2 IS REAL --- .../Locale/en-US/_CP14/ghostRoles/roles.ftl | 3 + .../Locale/ru-RU/_CP14/ghostRoles/roles.ftl | 3 + .../_CP14/Entities/Markers/Spawners/mobs.yml | 34 ++++ .../_CP14/Entities/Mobs/NPC/cats.yml | 170 ++++++++++++++++++ .../_CP14/Entities/Mobs/NPC/rat.yml | 2 +- Resources/Prototypes/_CP14/Palettes/cat.yml | 10 ++ Resources/Prototypes/_CP14/ai_factions.yml | 19 ++ .../Mobs/Animals/cat.rsi/dead-overlay.png | Bin 0 -> 332 bytes .../_CP14/Mobs/Animals/cat.rsi/dead.png | Bin 0 -> 688 bytes .../Mobs/Animals/cat.rsi/lying-overlay.png | Bin 0 -> 366 bytes .../_CP14/Mobs/Animals/cat.rsi/lying.png | Bin 0 -> 622 bytes .../_CP14/Mobs/Animals/cat.rsi/meta.json | 31 ++++ .../Mobs/Animals/cat.rsi/walking-overlay.png | Bin 0 -> 715 bytes .../_CP14/Mobs/Animals/cat.rsi/walking.png | Bin 0 -> 1471 bytes 14 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/_CP14/Entities/Mobs/NPC/cats.yml create mode 100644 Resources/Prototypes/_CP14/Palettes/cat.yml create mode 100644 Resources/Textures/_CP14/Mobs/Animals/cat.rsi/dead-overlay.png create mode 100644 Resources/Textures/_CP14/Mobs/Animals/cat.rsi/dead.png create mode 100644 Resources/Textures/_CP14/Mobs/Animals/cat.rsi/lying-overlay.png create mode 100644 Resources/Textures/_CP14/Mobs/Animals/cat.rsi/lying.png create mode 100644 Resources/Textures/_CP14/Mobs/Animals/cat.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Mobs/Animals/cat.rsi/walking-overlay.png create mode 100644 Resources/Textures/_CP14/Mobs/Animals/cat.rsi/walking.png diff --git a/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl b/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl index fd26a694e1..ae328ec3c5 100644 --- a/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl +++ b/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl @@ -15,3 +15,6 @@ cp14-ghost-role-information-description-bone-hound = A bone hound created by nec cp14-ghost-role-information-name-snail = Snail cp14-ghost-role-information-description-snail = Surviving is already an achievement. + +cp14-ghost-role-information-cat-name = Cat +cp14-ghost-role-information-cat-description = You're the fluffiest thing in the world. Hunt the mice/rats, be cute or stick with some adventurers! diff --git a/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl b/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl index a9c70b367f..b05afef46f 100644 --- a/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl +++ b/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl @@ -15,3 +15,6 @@ cp14-ghost-role-information-description-bone-hound = Костяная гонча cp14-ghost-role-information-name-snail = Улитка cp14-ghost-role-information-description-snail = Выжить – это уже достижение. + +cp14-ghost-role-information-cat-name = Кот +cp14-ghost-role-information-cat-description = Ты самое пушистое существо в этом мире! Охоться за мышами/крысами, будь милым или ходи вместе с авантюристами! diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml index f9cbaa52f6..2603bea5b7 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml @@ -123,6 +123,40 @@ prototypes: - CP14MobSnail +- type: entity + name: cat spawner + id: CP14SpawnMobCatRandomColored + parent: MarkerBase + categories: [ ForkFiltered ] + suffix: "Colored" + components: + - type: Sprite + layers: + - sprite: Markers/cross.rsi + state: green + - sprite: _CP14/Mobs/Animals/cat.rsi + state: lying + - type: ConditionalSpawner + prototypes: + - CP14MobCatRandomColored + +- type: entity + name: cat spawner + id: CP14SpawnMobCatRandomColoredWithSpots + parent: MarkerBase + categories: [ ForkFiltered ] + suffix: "Colored, Spotted" + components: + - type: Sprite + layers: + - sprite: Markers/cross.rsi + state: green + - sprite: _CP14/Mobs/Animals/cat.rsi + state: lying + - type: ConditionalSpawner + prototypes: + - CP14MobCatRandomColoredWithSpots + # Dino - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/cats.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/cats.yml new file mode 100644 index 0000000000..a47b6f5c39 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/cats.yml @@ -0,0 +1,170 @@ +- type: entity + id: CP14MobCatBase + parent: CP14SimpleMobBase + name: cat + description: A cute small feline, that purrs when you pet it. Meow! + categories: [ ForkFiltered ] + abstract: true + components: + - type: NpcFactionMember + factions: + - CP14Cat + - type: HTN + rootTask: + task: SimpleHostileCompound + - type: MovementSpeedModifier + baseWalkSpeed: 3 + baseSprintSpeed: 5 + - type: Sprite + drawdepth: Mobs + sprite: _CP14/Mobs/Animals/cat.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base", "movement"] + state: walking + - type: SpriteMovement + movementLayers: + movement: + state: walking + noMovementLayers: + movement: + state: lying + - type: FireVisuals + sprite: Mobs/Effects/onfire.rsi + normalState: Mouse_burning + - type: Appearance + - type: Physics + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.25 + density: 40 + mask: + - MobMask + layer: + - MobLayer + - type: MobThresholds + thresholds: + 0: Alive + 50: Critical + 75: Dead + - type: CP14NightVision # Why do carcats have night vision, but not cats? + - type: DamageStateVisuals + states: + Alive: + Base: walking + Critical: + Base: dead + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Slash: 7.5 + attackRate: 1.5 + range: 1.25 + altDisarm: false + angle: 0 + animation: WeaponArcClaw + soundHit: + collection: AlienClaw + wideAnimation: WeaponArcClaw + - type: GhostRole + name: cp14-ghost-role-information-cat-name + description: cp14-ghost-role-information-cat-description + rules: cp14-ghost-role-information-rules-pet + raffle: + settings: short + - type: GhostTakeoverAvailable + - type: MessyDrinker + spillChance: 0.2 + - type: Speech + speechSounds: Cat + speechVerb: SmallMob + - type: ReplacementAccent + accent: cat + - type: InteractionPopup + successChance: 0.6 + interactSuccessString: petting-success-cat + interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/cat_meow.ogg + - type: PassiveDamage + allowedStates: + - Alive + damageCap: 40 + damage: + groups: + Brute: -0.05 + Burn: -0.02 + Toxin: -0.02 + - type: Bloodstream + bloodMaxVolume: 80 + bloodReagent: CP14BloodAnimal + - type: Tag + tags: + - CannotSuicide + +- type: entity + parent: CP14MobCatBase + id: CP14MobCatColoredWithSpotsBase + categories: [ ForkFiltered ] + abstract: true + components: + - type: Sprite + drawdepth: Mobs + sprite: _CP14/Mobs/Animals/cat.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base", "movement"] + state: walking + - map: [ "enum.DamageStateVisualLayers.BaseUnshaded", "overlay"] + state: walking-overlay + - type: SpriteMovement + movementLayers: + movement: + sprite: _CP14/Mobs/Animals/cat.rsi + state: walking + overlay: + sprite: _CP14/Mobs/Animals/cat.rsi + state: walking-overlay + noMovementLayers: + movement: + sprite: _CP14/Mobs/Animals/cat.rsi + state: lying + overlay: + sprite: _CP14/Mobs/Animals/cat.rsi + state: lying-overlay + - type: DamageStateVisuals + states: + Alive: + Base: walking + BaseUnshaded: walking-overlay + Dead: + Base: dead + BaseUnshaded: dead-overlay + +- type: entity + parent: CP14MobCatBase + id: CP14MobCatRandomColored + suffix: "Colored" + categories: [ ForkFiltered ] + components: + - type: RandomSprite + available: + - enum.DamageStateVisualLayers.Base: + walking: CP14CatColors + +- type: entity + parent: CP14MobCatColoredWithSpotsBase + id: CP14MobCatRandomColoredWithSpots + suffix: "Colored, Spotted" + categories: [ ForkFiltered ] + components: + - type: RandomSprite + available: + - enum.DamageStateVisualLayers.Base: + walking: CP14CatColors + - enum.DamageStateVisualLayers.BaseUnshaded: + walking-overlay: CP14CatColors diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/rat.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/rat.yml index ba39dda326..dffce022c5 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/rat.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/rat.yml @@ -10,7 +10,7 @@ task: RuminantHostileCompound - type: NpcFactionMember factions: - - CP14PeacefulAnimals + - CP14Rodent - type: NPCRetaliation attackMemoryLength: 20 - type: Sprite diff --git a/Resources/Prototypes/_CP14/Palettes/cat.yml b/Resources/Prototypes/_CP14/Palettes/cat.yml new file mode 100644 index 0000000000..ba707f8c28 --- /dev/null +++ b/Resources/Prototypes/_CP14/Palettes/cat.yml @@ -0,0 +1,10 @@ +- type: palette + id: CP14CatColors + name: CP14CatColors + colors: + black: "#333333" + gray: "#666666" + white: "#ffffff" + brown: "#595042" + lightbrown: "#654321" + orange: "#e49b0f" diff --git a/Resources/Prototypes/_CP14/ai_factions.yml b/Resources/Prototypes/_CP14/ai_factions.yml index 85b02a011b..adf4399b1f 100644 --- a/Resources/Prototypes/_CP14/ai_factions.yml +++ b/Resources/Prototypes/_CP14/ai_factions.yml @@ -19,6 +19,8 @@ - CP14Monster - CP14Slimes - CP14Fishies + - CP14Cat + - CP14Rodent - type: npcFaction id: CP14Undead @@ -28,6 +30,8 @@ - CP14PeacefulAnimals - CP14AggressiveAnimals - CP14Fishies + - CP14Cat + - CP14Rodent - type: npcFaction id: CP14PeacefulAnimals @@ -35,6 +39,15 @@ - type: npcFaction id: CP14Neutrals +- type: npcFaction + id: CP14Cat + hostile: + - CP14Rodent + - CP14Fishies + +- type: npcFaction + id: CP14Rodent + - type: npcFaction id: CP14AggressiveAnimals hostile: @@ -45,6 +58,8 @@ - CP14Slimes - CP14HostileEveryone - CP14Fishies + - CP14Cat + - CP14Rodent - type: npcFaction id: CP14Monster @@ -53,6 +68,8 @@ - CP14HostileEveryone - CP14AggressiveAnimals - CP14PeacefulAnimals + - CP14Cat + - CP14Rodent - type: npcFaction id: CP14Insects @@ -69,6 +86,8 @@ - CP14HostileEveryone - CP14PeacefulAnimals - CP14AggressiveAnimals + - CP14Cat + - CP14Rodent - type: npcFaction id: CP14Fishies diff --git a/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/dead-overlay.png b/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/dead-overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5ba9ca813a3bc398cc0e6cf691a85be1e3563b GIT binary patch literal 332 zcmV-S0ki&zP)Px$21!IgR9J=WlRFB+Komu<;udUl2YzZ9EEL2(g|QGm@b^06A5>+cn^OZYV07Mw>}-wayoc zi3!)sRm|jU=0gUJIZBIaE-6_OhS{e|wG05*?+&2}EoAz4=8~uhK{X)=&^UpqH>Z4| z7<&UzQ_t=^O77i)D96(or6+UNZ~y?<27&(3ra|}1{SS*xK(8L*CuBbnRqNaJ@(ulT e!rw~E{3LgyT5_ioeO@{M0000 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/dead.png b/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..cd52d9da95c71e84b92a936a8b0b7b8f8884dde2 GIT binary patch literal 688 zcmV;h0#E&kP)Px#1ZP1_K>z@;j|==^1poj7T1iAfR9Hvtls#zMP!PxeuZ2*$WQhlVY$ll0_Rz@) z4~YpLvINuC9*Ut^+Myi+PL~#^gA?$SK$a|BI)n~#3C4>DVPp?Rc(yH3gf@Q+4uvcs zba`F;9@3NSrfIwBx9RTQ-T&_C9pK~Rpx3|z~we2pRyj-c$&Fw92pH0U0FzAMfL4SxsA%{RH z?1+1rf8i2HFfR;%ADT_Z&5CO<58#1QSeVR~MNz1E;VM7?%Fco1_c%?9>M2Y_vy(~*Vj&aO)YyC%^-n~WjL zb>2NIhIyUo$N~WLG>wo<<~smjb?t~ge;UKX^$qBT38mRUFcJj|&hG32LNW0_5hr+d zdcwbhkti2ohYPs5-J`)s6aX+CSqMg=xV}0h>C7c%_bE<-jaz9p97*kBKc6QFZ27OR z4haCLY7DRoSVlT?NiiSgbYx+_bif6iou1(Fqc4umZf^G|=0ezu>Z;FN-K%QMy$3{? zz}Ij4RF>;}3d<7P`FQ+;&L(3%3D!B|f#b^qRgFPaV+e%8C=_y{`?r+emk;?zE?=Z8){qzPX&Ol+Px$C`m*?R9J=Wl)G-iFcgOEidSIZvLS|Em?MjsJwwA#ME{+uZPrA6`xHBF6U-ba`pUkfRGAGt4_xQdP$yd zPOe(5&t8i-Nr5sBzpc#+ZCIKY+OoZxkgEl8l3H`tCCua+XYwcbY4V6D@K;8ZT<%I^9&Aa`Vv#?7EH^O!KB0|9RBI@vdhLmx5xF37>IU)pl!x75l+Sqs3 zMEnx(TI1Dnfhpq<5n?#e8;;O?9{b2OBTiBfQbFrI_uh($ M07*qoM6N<$f}9|pqW}N^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/lying.png b/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/lying.png new file mode 100644 index 0000000000000000000000000000000000000000..f33cd1a640929e8ac70307b262b0a82cea6bb1dd GIT binary patch literal 622 zcmV-!0+IcRP)Px%C`m*?R9J=Wl|O6SKp4g!m5^`XLAEv_ie!5>no3HSuz_BmIsj~gD}{GIlN@CEf2<<{|w$c1ulbmFOr=mD8aOY9uOS&-re)Nd*3?& zi4rABlqgZ6J-Y!7XZF8EqUM}$C^t<$u z`SuRp(&vLm7?leIlPUcBJIIQP)qE!6!lYoDoGLb#&mx>Vf(j;6jD}-TNMV>@G8Jt~ z4VjW?{ndPi0b|h`*mN)efah+mO)j4mlSjj`AYU&RNToAKr85yQS{yhLbI6qRye5mD zKpcgu+xlIJ#J+wz5$)~WlR3e9ZbORw4v;wjVJ<7GIMT5BfH8@_)qEz5!zUXHAZ%WD zYLFEbvZBIs8xny~d|R@jqEsr1IHfZdfT3#$CR1@ka`|jzH=f&&S}hNTu0?Wh*;P)3 zTX$;WHpG_SXFUA!6-<-cKhOB~YuI$#-0w3^=6;{?rrYKP)BM=ah~3^G{16QolOFy6 zhqH0SJeAI%*XaV-6kM;Px%g-Jv~RCt{2n!QfsFc8O`6R$u6^%WdYudFRVLfgB*DNtSnDWZs0%8Q^BB*pg8 zNq0q*2jHuqhK7gm70AAc&vCxI@vU}#Rk9m<{xh-1-t`cIAP9mW2r>c2Bf)qieCzN= zS=FMfYC*_XFnrh@%QqJyR!bVJmNbx`?bT?=@qZ8*GF0oYp@k3^iL0^a-3k>y20 z$51Bafc4$2n)jRhKCnIOk_Dy8>BFOALI@#agD^S((qR{wcnYf}4St+_pWkqtq{?xh z0q{ze7v3C)Bd@G#zZ)?hfyna0>(uiO4EmHnOx_93MVzE6^P4jM*eS3x0l2ujBo|kg z>i&jbt7Uh!q`}$w>8O5pCIG*G{!-WLyW1d6QsE-^98B$CF1|Khe~13lkVJFNbKqk8^FB)sV_g|oMzX9m5_qUHA2!bF8f*=TjAP9mW2!bF@ z^#AeOU_5eih676;F@P)|wyrKfJ6F((g?i9vzb~WMq@yTLpz7Q*}RG_H}Ib z8IQ!-`Kk38RraFS{XwHyUI@K7p{#24*5EO=OJKik_Mry7{en_aR&~2JSo5Q!m!p`j zP0zZd%T|{z*ailn*Xb}UgN4@;8F_hT|M~IWr`th%e!Q!xVagF*8rx_Dz$P3Tm5xe7 zagqvIsy4*<5MV(BA%wiVzLB-|8PusiFVTHe0f5P&s}mi)?Zd;ydEq4EkqARZZuoW3 zR~OVIul2UZDPSr#kPYJ`6^uus&B1LJD%kp#S>6;J+0MEG*gA%F!7>1YJK8cPjm~uT xUE2C?cE-|oleDd+xRW_X#{W3_5Cqv>{s6ed$;o8|;J^R?002ovPDHLkV1h^DSONe5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/walking.png b/Resources/Textures/_CP14/Mobs/Animals/cat.rsi/walking.png new file mode 100644 index 0000000000000000000000000000000000000000..2764caa216001ddbc225d327c09b2faa20a3da97 GIT binary patch literal 1471 zcmV;w1wi_VP)Px)c}YY;RCt{2TfJ*4Srq@x5?=M%6#3|U^6;yc;S~nNLU@EJ)+rYMgA@tLYXXuY z2sVi%g-z;^LQ@Q3!9oNr!jNhUHDPh>{3!en9&fo@=$YIZzwb>D$Nd#4gdi4Y7Nas3s&h?dfa)q zE8Vlr?HvsJJpjPw_73XR8nS1nE6e>&mdwG?0qWHn65n*KQhoq1GK%cD^YHxA1~5{5 zb9+Z>ENKG_`#q52PqwWMx*gdemzK+aZZ=v%<7~)~Fj8qovq5;WZ4IzxhFu6!HaI@^ za##hz1~5`-7LJ4vi|+vdwsw8&z1KcrBqz;+0l(+m>X2Fjq&&T^3sGHX;YbJooEVTf z&k4mHVFM6>S;y-DDbIVts*nzXAAzl1pUdlHb^>7oWY11Dip0ZyPiPN*ONj0QZ?X-p z8&>I7^U7Uo5HwP0R(Z5pv1ox_l}CH6sqkAtcpJ2D3NTFrl#<#vg}3B20gCe3vs29* z@rV5$j8s}^8e?@esC{4x;Tg@g<+=yvesyWu+b<-39ROoQvy8i3J_ zP_xl;vOn1vB;^5_AIBK>d&vAamLjnXvS+7Sy;{TO_6`Q!4#)^HX)qvYfUR90uJf13 zUgYs_`vuvHJc>mNiR8W%nMLq!wZVWNyf=tII0z<^`zTzE1K(eNBOD2>B^M}M6_CBi zW7zMZShO(cb`Xw))_XTdHzTC9XdW&u8w?o5qU=Q;^=eHx4-obMt8}YbrP1eDd~dA@ z5wGm9-;*-FbS6l%|3~Wg4@-qb-5-#AAVR`r2*~1}Kdldwt)QTwprD|jprD|jprD|j zun@~UJ6z}U#kGLyg_-jli|YD9<)XUI$O!AGHA+7cn+L9ijsc^3!lM46(KYVhzGv&r zyEaH19341C)K$7Tf&o8F(|~X&@X4 zu~`L_%z2Il1AgcFXJ5z}i|4b9d@rb}%X^K>0Gaa~i^cbxzCZ7Gz-vE_w<0|3_i$Ib zciQHfjTVOeo@?eew|7v&wN0r1)bD9XX>mDJfv=O<#oH06i=-rUL$ zeb4s{0dQ4t506jqb>r7U(qA`z;qdsx`5o09__3Ge6N~S;mdiB5yOa$E{CIw8JJzW@ z+Kh^jrs?hn@K$8KL9SS|9HIPnwkV=|ucc!V`P9LZ_@-;Kbaco>b)6-W`x66QkJs$h zuFoOC&kXR|ozZNxV48-b{Gi(zx6Xjp(1k|I=L&FyLAT=wOC%2&QPrsoVBZY$jKN87(c++ZXn<2%+kq}JNSeQ=FOogMm&S=f?ZbO1;V6t#9 z;774&xh(!<+nSN`v1X%%%z18R0yIr|QiPvrYK|~X1C{dV9PcH>(<+U4HXEb3HRyKO ztXMSnUf}tqJ>f#HhJX{C=$#DYCCzttFN5V=)8BgfjpD002ovPDHLkV1i%$%_;x@ literal 0 HcmV?d00001