diff --git a/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl b/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl index 86f20be2c6..ed715c208a 100644 --- a/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl +++ b/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl @@ -6,3 +6,7 @@ cp14-ghost-role-information-description-lurker = A spirit of night and hunger th cp14-ghost-role-information-name-raid-undead = Undead raid cp14-ghost-role-information-description-raid-undead = Lead the attack on the city by the forces of the dead. Destroy the demiplane communication crystal at any cost. + +cp14-ghost-role-information-name-rat = Rat +cp14-ghost-role-information-description-rat = An honorable rat. Relieve tavernkeep of their extra food or join the adventurers as an armored squire. + diff --git a/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl b/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl index 180c6c95c9..47050d16ff 100644 --- a/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl +++ b/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl @@ -2,4 +2,6 @@ cp14-ghost-role-information-rules-demiplane = You are the [color=red]demiplane a cp14-ghost-role-information-rules-free = You are a [color=yellow]free antagonist[/color]. You can do whatever you want, as long as it doesn't result in widespread destruction and mass deaths. You do not remember your past life, and you are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character. -cp14-ghost-role-information-rules-raid = You are a [color=red]member of the raid[/color]. Your task is to sneak into the heart of the city and destroy the demiplane communication crystal. You can fulfill your goal by any means necessary. You do not remember your past life, and you are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character. \ No newline at end of file +cp14-ghost-role-information-rules-raid = You are a [color=red]member of the raid[/color]. Your task is to sneak into the heart of the city and destroy the demiplane communication crystal. You can fulfill your goal by any means necessary. You do not remember your past life, and you are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character. + +cp14-ghost-role-information-rules-pet = You are a [color=yellow]free neutral agent[/color]. Being a smart creature, you can do whatever you want, as long as it fits your animal behavior. Befriend the people or get in a pack with other animals. While you're not an antagonist per se, you can still do minor crimes like theft and can defend yourself if attacked. diff --git a/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl b/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl index 0d620ada43..8c7bbf90bd 100644 --- a/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl +++ b/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl @@ -6,3 +6,6 @@ cp14-ghost-role-information-description-lurker = Дух ночи и голода cp14-ghost-role-information-name-raid-undead = Рейд нежити cp14-ghost-role-information-description-raid-undead = Возглавьте атаку на город силами мертвых. Уничтожьте кристалл связи с демипланами любой ценой. + +cp14-ghost-role-information-name-rat = Крыса +cp14-ghost-role-information-description-rat = Крыса чести. Избавьте тавернщиков от тяжести лишней еды или присоединитесь к группе авантюристов в роли бронированного оруженосца. diff --git a/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl b/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl index 81f65cdf80..e33f3dac3f 100644 --- a/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl +++ b/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl @@ -2,4 +2,6 @@ cp14-ghost-role-information-rules-demiplane = Вы - [color=red]антагони cp14-ghost-role-information-rules-free = Вы - [color=yellow]свободный антагонист[/color]. Вы можете делать все что хотите, если это не приводит к масштабным разрушениям и массовым смертям. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа. -cp14-ghost-role-information-rules-raid = Вы - [color=red]участник рейда[/color]. Ваша задача - пробраться в сердце города и уничтожить кристалл связи с демипланом. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа. \ No newline at end of file +cp14-ghost-role-information-rules-raid = Вы - [color=red]участник рейда[/color]. Ваша задача - пробраться в сердце города и уничтожить кристалл связи с демипланом. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа. + +cp14-ghost-role-information-rules-pet = Вы - [color=yellow]свободный нейтральный агент[/color]. Являясь умным существом, вы вольны действовать как хотите, если это вписывается в поведение животного. Подружитесь с людьми или сбейтесь в стаю с другими животными. Хоть вы и не являетесь антагонистом, вы всё ещё можете совершать мелкие преступления типа краж и защищаться, если потребуется. diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/ghost_roles.yml new file mode 100644 index 0000000000..f6547e1411 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/ghost_roles.yml @@ -0,0 +1,23 @@ +- type: entity + id: SpawnPointGhostRat + name: ghost role spawn point + description: A ghost role for a rat + suffix: Rat + categories: [ ForkFiltered ] + parent: MarkerBase + components: + - type: GhostRole + name: cp14-ghost-role-information-name-rat + description: cp14-ghost-role-information-description-rat + rules: cp14-ghost-role-information-rules-pet + allowMovement: true + raffle: + settings: default + - type: GhostRoleMobSpawner + prototype: CP14MobRat + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _CP14/Mobs/Pets/rat.rsi + state: rat diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/rat.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/rat.yml new file mode 100644 index 0000000000..7dbe6a4ab5 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/rat.yml @@ -0,0 +1,116 @@ +- type: entity + id: CP14MobRat + parent: CP14SimpleMobBase + name: rat + description: An adorable rat. You see valor in it's eyes fit for a squire. + categories: [ ForkFiltered ] + components: + - type: HTN + rootTask: + task: RuminantHostileCompound + - type: NpcFactionMember + factions: + - CP14PeacefulAnimals + - type: NPCRetaliation + attackMemoryLength: 30 + - type: Sprite + drawdepth: SmallMobs + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + sprite: _CP14/Mobs/Pets/rat.rsi + state: rat + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.2 + density: 8 + mask: + - SmallMobMask + layer: + - SmallMobLayer + - type: Tag + tags: + - CP14Rat + - type: Item + size: Normal + - type: CanEscapeInventory + baseResistTime: 1 + - type: Speech + speechSounds: Squeak + speechVerb: SmallMob + allowedEmotes: ['Squeak'] + - type: Vocal + sounds: + Male: Mouse + Female: Mouse + Unsexed: Mouse + - type: ReplacementAccent + accent: mouse + - type: Appearance + - type: MobThresholds + thresholds: + 0: Alive + 40: Critical + 50: Dead + - type: FireVisuals + sprite: Mobs/Effects/onfire.rsi + normalState: Mouse_burning + - type: CombatMode + - type: MeleeWeapon + angle: 0 + animation: WeaponArcBite + damage: + types: + Piercing: 8 + - type: MovementSpeedModifier + baseWalkSpeed : 3 + baseSprintSpeed : 6 + - type: DamageStateVisuals + states: + Alive: + Base: rat + Critical: + Base: rat_dead + Dead: + Base: rat_dead + - type: Bloodstream + bloodMaxVolume: 50 + bloodReagent: CP14BloodAnimal + - type: Thirst + thresholds: + OverHydrated: 150 + Okay: 100 + Thirsty: 50 + Parched: 25 + Dead: 0 + baseDecayRate: 0.04 + - type: Hunger + thresholds: + Overfed: 50 + Okay: 25 + Peckish: 10 + Starving: 5 + Dead: 0 + baseDecayRate: 0.03 # hungry hungry rats + starvationDamage: + types: + Cold: 0.1 + Bloodloss: 0.1 + starvingSlowdownModifier: 0.9 + - type: ExaminableHunger + - type: Strippable + - type: UserInterface + interfaces: + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + - type: InventorySlots + - type: Inventory + speciesId: CP14Rat + templateId: CP14Rat + - type: Puller + needsHands: false + - type: CP14NightVision + - type: Climbing + diff --git a/Resources/Prototypes/_CP14/Entities/Objects/PetArmor/rat_armor.yml b/Resources/Prototypes/_CP14/Entities/Objects/PetArmor/rat_armor.yml new file mode 100644 index 0000000000..3fd60c8610 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/PetArmor/rat_armor.yml @@ -0,0 +1,29 @@ +- type: entity + parent: CP14ClothingOuterClothingBase + id: CP14RatArmor + name: rat armor + description: A sturdy armor, suit for a noble rat squire + components: + - type: Sprite + sprite: _CP14/Clothing/PetArmor/rat_armor.rsi + - type: Clothing + sprite: _CP14/Clothing/PetArmor/rat_armor.rsi + unequipDelay: 1 + - type: Tag + tags: + - CP14RatWearable + - PetOnly + - type: Armor + modifiers: + coefficients: + Blunt: 0.7 + Slash: 0.55 + Piercing: 0.7 + Heat: 0.9 + - type: ClothingSpeedModifier + walkModifier: 0.9 + sprintModifier: 0.9 + - type: PhysicalComposition + materialComposition: + CP14Iron: 60 + diff --git a/Resources/Prototypes/_CP14/InventoryTemplates/carcat_inventory_template.yml b/Resources/Prototypes/_CP14/InventoryTemplates/carcat_inventory_template.yml index d6fb4945f0..1884e5e060 100644 --- a/Resources/Prototypes/_CP14/InventoryTemplates/carcat_inventory_template.yml +++ b/Resources/Prototypes/_CP14/InventoryTemplates/carcat_inventory_template.yml @@ -53,6 +53,9 @@ uiWindowPos: 2,2 strippingWindowPos: 2,1 displayName: Armor + blacklist: + tags: + - PetOnly - name: cloak slotTexture: cloak slotFlags: CLOAK diff --git a/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml b/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml index 70eb7c8169..3d61d7011a 100644 --- a/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml +++ b/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml @@ -53,6 +53,9 @@ uiWindowPos: 2,2 strippingWindowPos: 2,1 displayName: Armor + blacklist: + tags: + - PetOnly - name: cloak slotTexture: cloak slotFlags: CLOAK diff --git a/Resources/Prototypes/_CP14/InventoryTemplates/partial_inventory_template.yml b/Resources/Prototypes/_CP14/InventoryTemplates/partial_inventory_template.yml index c5274ea95e..1a348bb7e9 100644 --- a/Resources/Prototypes/_CP14/InventoryTemplates/partial_inventory_template.yml +++ b/Resources/Prototypes/_CP14/InventoryTemplates/partial_inventory_template.yml @@ -59,6 +59,9 @@ uiWindowPos: 2,1 strippingWindowPos: 2,3 displayName: Armor + blacklist: + tags: + - PetOnly - name: cloak slotTexture: cloak slotFlags: CLOAK diff --git a/Resources/Prototypes/_CP14/InventoryTemplates/rat_inventory_template.yml b/Resources/Prototypes/_CP14/InventoryTemplates/rat_inventory_template.yml new file mode 100644 index 0000000000..39e7db9cb2 --- /dev/null +++ b/Resources/Prototypes/_CP14/InventoryTemplates/rat_inventory_template.yml @@ -0,0 +1,20 @@ +- type: inventoryTemplate + id: CP14Rat + slots: + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + uiWindowPos: 0,1 + strippingWindowPos: 1,1 + displayName: Armor + whitelist: + tags: + - CP14RatWearable + + # Little rat cloak might be cute idk + # - name: cloak + # slotTexture: cloak + # slotFlags: CLOAK + # uiWindowPos: 0,2 + # strippingWindowPos: 1,2 + # displayName: Cloak diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml index e021a8ff75..88de669592 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml @@ -440,4 +440,15 @@ stack: CP14IronBar count: 1 result: CP14IronBuckle - resultCount: 5 \ No newline at end of file + resultCount: 5 + +- type: CP14Recipe + id: CP14RatArmor + tag: CP14RecipeAnvil + category: Armor + craftTime: 4 + requirements: + - !type:StackResource + stack: CP14IronBar + count: 6 + result: CP14RatArmor diff --git a/Resources/Prototypes/_CP14/Tags/misc.yml b/Resources/Prototypes/_CP14/Tags/misc.yml index ed6dda587c..8bcb073559 100644 --- a/Resources/Prototypes/_CP14/Tags/misc.yml +++ b/Resources/Prototypes/_CP14/Tags/misc.yml @@ -40,6 +40,12 @@ - type: Tag id: CP14Rabbit +- type: Tag + id: CP14Rat + +- type: Tag + id: CP14RatWearable + - type: Tag id: CP14Pig diff --git a/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..408a420e10 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/icon.png b/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/icon.png new file mode 100644 index 0000000000..cedbc77b25 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/meta.json b/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/meta.json new file mode 100644 index 0000000000..3d4cf13285 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/PetArmor/rat_armor.rsi/meta.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd (Discord)", + "size": + { + "x": 32, + "y": 32 + }, + "states": + [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} + diff --git a/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/meta.json new file mode 100644 index 0000000000..c29768559d --- /dev/null +++ b/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/meta.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Created by infrared_baron", + "size": + { + "x": 32, + "y": 32 + }, + "states": + [ + { + "name": "rat", + "directions": 4 + }, + { + "name": "rat_dead", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/rat.png b/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/rat.png new file mode 100644 index 0000000000..1b2325e85e Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/rat.png differ diff --git a/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/rat_dead.png b/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/rat_dead.png new file mode 100644 index 0000000000..6a86de6ccf Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Pets/rat.rsi/rat_dead.png differ