Bläddra i källkod

Nomads update 2 (#240)

* fauna wip

* wip animals

* Update from Master (#239)

* TDM update 5 (#213)

* increased boltaction accuracy

* weapon accuracy fixes, spent casings, fixes mgs

* combat knife to dagger, bidirectional barricades

* new tips, more balancing for guns

* arrow direction fix (this time for real)

* medkits

* more tips, medical fix

* Updated Opushka (again) (#212)

* Update base_clothing.yml again

* Lowered base_item.yml to 100g

* updatea yay

* Update opushka.yml

* Added soviet and german gracewall to prevent spawncamping

* Update grace_wall.yml

* Update grace_wall.yml

* Update opushka.yml

* Update opushka.yml

* Update grace_wall.yml

---------

Co-authored-by: 123 <123>

* quick capture fix

* Ww2 tweaks (#216)

* Update base_clothing.yml again

* Lowered base_item.yml to 100g

* small tweaks and changes

---------

Co-authored-by: 123 <123>

* TDM update 6 (#215)

* enables mapvotes, dead chat to discord

* auto-mapvote

* medieval and zoomer accents

* votefix

* heavier mgs, tweaked healing for brute packs and gauze, reduced gracewall timer to 3 mins, ammo for medics, wip permanent gracewalls for spawn points

* lower LMG accuracy, WIP gracewall fix

* wielded sprites fixed

* barbedwire, reworks wielding, smg balancing

* random weather

* permanent gracewall fixes, random times of day, magfix

* quick typo

* maps updated

* Flashlight sprites

* Sprite fixes

* Tdm update 7 (#217)

* smoke grenades, grenade tweaks

* removes unused jobs

* more job removals

* loads of ss14 job-specific stuff removed

* integrations

* missing job stuff

* working mapswap, fixed flashlight sprites, grenade runtimes

* restricted crafting for tdm, adds 10 second timer before capture status switches in area capture

* map updates

* Better names for biome specific tiles (#218)

* Gives biome specific tiles different names

* Removes identical copy of another tile

There are no sprites for this in the files so I assume it was a mistake but made a second commit incase its not

* Fixes two typos

* Tdm update 8 (#219)

* buff shields, grenade tweaks, nerfs lmg damage

* map updates

* TDM stats

* rebalanced smgs, fixed playercount

* new walls, spawn number fixes

* concrete and brick walls

* map tweaks, wall fix

* sprite tweak, map update

* Cold war (#220)

* Update base_clothing.yml again

* Lowered base_item.yml to 100g

* yes

* Update ShowFactionIconsComponent.cs

* sovietCW

* changes sovietcw

* Update usa.yml

* Update Resources/Prototypes/Roles/Jobs/Civ14/TDM/sovietCW.yml

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Resources/Prototypes/Roles/Jobs/Civ14/TDM/sovietCW.yml

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update sovietCW.yml

* Update sovietCW.yml

---------

Co-authored-by: 123 <123>
Co-authored-by: Taislin <cariosecus@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Tdm update 9b (#221)

* window fix, WIP map

* Adds a LOT of decals, signs, road markings, etc

* even more civ13 sprites to play around with

* more chairs and stuff

* cigs

* Cold war (#220) (#222)

* Update base_clothing.yml again

* Lowered base_item.yml to 100g

* yes

* Update ShowFactionIconsComponent.cs

* sovietCW

* changes sovietcw

* Update usa.yml

* Update Resources/Prototypes/Roles/Jobs/Civ14/TDM/sovietCW.yml



* Update Resources/Prototypes/Roles/Jobs/Civ14/TDM/sovietCW.yml



* Update sovietCW.yml

* Update sovietCW.yml

---------

Co-authored-by: Papiditel <mrharved@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* wardrobes, decorative machines, hesco bastions and jersey barriers

* cold war grenades, loadouts, fixes (hopefully) the capture timer resetting

* Asymmetric capture mechanics

* sprite, code fix

* roles, small fixes

* equipments

* sprite fix, gracewall fix

* map fix

---------

Co-authored-by: Papiditel <mrharved@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* force presets, loadout fix

* Adds mortars (#223)

* Ports RMC mortar files and gets them into a half functional state

At the moment the game can build. The mortar and its ammo exist ingame and the mortar can be deployed. Trying to open the UI will call the open function but the UI does not actually open. Explosions are also entirely commented out and the code to support it have not been ported. Locale files are also not ported. All mortar related sprites have been ported.

* Cleans the UI and unnecessary RMC dependencies

The blue horizontal line was removed as it would require editing base ss14 UI functions which I dont want to fuck with. The camera button on the mortar has been removed and the max dial section was moved above the dial buttons. RMC pop out window related code was removed.

* Comments out a debug assert which should not exist

Goes off because nomad is the name of the fallback job instead of passenger for some reason. Honestly no idea why there is an assert for this.

* Ports the locale file

A few things were removed too such as the ones about the mortar camera and the planet.

* Ports mortar sfx, fixes mortar animation and cleans some code

* Setup mortar sprites and fixed some other issues

New inhands, undeployed and firing sprites my me via editing civ13 mortar sprites. All the sfx are the same as the RMC ones besides the melee hit sfx.

* "old mortar" added

Uses some terrible programmer sprites for the inhands which should honestly be redone.

* Adds navigation tools for aiming the mortars

They all just function like a GPS for now and tell your current location x and y.

* Tweaks some values and disables warning messages

* Takes out the unused RMC sprites

I forgot to take these out after i replaced them

* licence corrections

* QOL patch 1 (#229)

* buffs walls, reverts bug

* fixes setting presets

* job icons, research and mortar tweak

* 📝 Add docstrings to `qol_patch_1` (#230)

Docstrings generation was requested by @taislin.

* https://github.com/Civ13/Civ14/pull/229#issuecomment-2908241025

The following files were modified:

* `Content.Client/Overlays/ShowFactionIconsSystem.cs`
* `Content.Server/GameTicking/GameTicker.GameRule.cs`
* `Content.Server/GameTicking/Rules/RandomWeatherRuleSystem.cs`
* `Content.Shared/Inventory/InventorySystem.Relay.cs`

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix sandals

* squad icons and rank icons

* armor tweaks

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* compasses on spawns

* Radios (#231)

* radios

* channel fix

* typo

* typo

* Fixes showing huds to others, pistol mag

* Sound updates 1: Explosions and Mortars (#233)

* Ports a ton of civ13 sounds and some explosion sound collections

* Sets up custom explosions

Needs lots of work still. Also removed some bad sfx and renamed some

* Some more yml changes

* Changes volume of explosion files

I really wish this could be done in the YML but I cant figure out how to get it working so im moving on before I waste more time on this. The volume is adjusted in by changing the volume of the file its self.

* Deletes dupe sfx

* Mortar sfx

Implements civ13 sfx for firing mortar shells and landing shells

* Fix some file names part 1

* rename some files part 2

has to be done in two parts because the windows file system is stupid like that

* QOL patch 2 (#232)

* trying to fix linter stuff

* destroyable barbwire, WIP ranks

* rank trackers

* rank corrections

* rank typos

* rank descs, fixes playtimetrackers

* more rolefixes

* role reqs

* yml fix

* Qol patch 3 (#235)

* shut up yaml linter

* job requirements

* radio channel tweaks

* barricade tweaking

* nades over barricades

* added mortars to maps, basefloors

* buffs arrows, reduces playtime reqs for now

* good enough for now

* runtime fix

* Dirt tile renames (#234)

* Tdm update 10 (#236)

* desert theme tiles, more barriers, medical loadouts

* factions

* roles and loadouts

* tdm.md

* mapping.md

* valley.md

* update valley.md

* updating valley.md

* mapping.md

* Atualizar o mapping.md

* UN Faction

* wiki stuff

* guidebooks

* Update Resources/Prototypes/game_presets.yml

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Wiki/src/gamemodes/tdm.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* yaml fixes, spawns

* fixes, map upgrades

* palms, containers, decorative cars

* yaml typos

* tunnels

* teleporters

* WIP points system

* mechanics

* final valley tweaks

* map tweaks

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* valley wiki article

* Fixes for Valley

Civvies dont steal stuff anymore.

Added a gracewall around the blugoslavia spawn.

Added an exit from the Insurgent base so you don't need to use the tunnels.

Supply crates now give points.

Lower points per kill for insurgents to 20.

Stasis bed in UN hospital is now powered.

UN hospital and Blugoslavian Base both have defibrilators now.

* Adds looking in the distance (#238)

* alt tab black screen bugfix

* First working version

Detects a key for lookzoom now

* Moves LookZoom to client instead

I moved it to shared before because stoopid

* Some next form of this stupid code

I hate it

* More code for the system

still not really functional

* more commit

* Kinda works now but still bad

* REAL WORKING VERSION

still scuffed but i want to commit it anyways

* Mostly fixes the offset not getting reset when toggled on and off

i should add a check when switching hands or dropping the item though

* Gives these components to humans and some related cleanup

* More yml tweaks

* Changes the delay to press the button

* Key change

* Small namespace correction

* Adds some comments to the code

* Update mapping.md

---------

Co-authored-by: Papiditel <mrharved@gmail.com>
Co-authored-by: dallaszzz <96160322+dallaszzz@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* stone shovel and iron anvil

* more medieval armours

* yaml fixes

* gambeson sprite fix

---------

Co-authored-by: Papiditel <mrharved@gmail.com>
Co-authored-by: dallaszzz <96160322+dallaszzz@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Taislin 5 månader sedan
förälder
incheckning
1c0ed8924e
21 ändrade filer med 1746 tillägg och 934 borttagningar
  1. 2 2
      Content.Client/Commands/AcceptFactionInviteCommand.cs
  2. 1 1
      Content.Client/UserInterface/Systems/Faction/FactionUIController.cs
  3. 85 85
      Content.Server/NPC/NPCBlackboard.cs
  4. 3 3
      Resources/ConfigPresets/Build/development.toml
  5. 2 0
      Resources/Locale/en-US/lathe/lathe-categories.ftl
  6. 1180 0
      Resources/Prototypes/Civ14/Entities/Clothing/entities_clothing_armor.yml
  7. 58 549
      Resources/Prototypes/Civ14/Entities/Clothing/entities_clothing_suit.yml
  8. 4 5
      Resources/Prototypes/Civ14/Entities/Mobs/animals.yml
  9. 1 3
      Resources/Prototypes/Civ14/Entities/Mobs/predators.yml
  10. 22 0
      Resources/Prototypes/Civ14/Entities/Objects/Tools/tools.yml
  11. 38 0
      Resources/Prototypes/Civ14/Entities/Structures/Craft/anvil.yml
  12. 105 0
      Resources/Prototypes/Civ14/Entities/Structures/Craft/armor.yml
  13. 30 243
      Resources/Prototypes/Civ14/Recipes/Clothing/recipes_clothing_suit.yml
  14. 31 0
      Resources/Prototypes/Civ14/Recipes/Construction/metallurgy.yml
  15. 30 0
      Resources/Prototypes/Civ14/Recipes/Construction/tools.yml
  16. 53 27
      Resources/Prototypes/NPCs/Civ13/faunaPredator.yml
  17. 80 16
      Resources/Prototypes/NPCs/Civ13/faunaPrey.yml
  18. BIN
      Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/icon.png
  19. BIN
      Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/inhand-left.png
  20. BIN
      Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/inhand-right.png
  21. 21 0
      Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/meta.json

+ 2 - 2
Content.Client/Commands/AcceptFactionInviteCommand.cs

@@ -14,11 +14,11 @@ public sealed class AcceptFactionInviteCommand : IConsoleCommand
 
         public string Command => "acceptfactioninvite";
         public string Description => "Accepts an invitation to join a faction.";
-        public string Help => $"Usage: {Command} \"<faction_name>\" \"<inviter_user_id>\"";
+        public string Help => $"Usage: {Command} \"<faction_name>\"";
 
         public void Execute(IConsoleShell shell, string argStr, string[] args)
         {
-            if (args.Length != 2)
+            if (args.Length != 1)
             {
                 shell.WriteError("Invalid number of arguments.");
                 shell.WriteLine(Help);

+ 1 - 1
Content.Client/UserInterface/Systems/Faction/FactionUIController.cs

@@ -247,7 +247,7 @@ private void OnFactionInviteOffer(FactionInviteOfferEvent msg, EntitySessionEven
         // Improved feedback using a clickable popup or chat message
         var message = $"{msg.InviterName} invited you to join faction '{msg.FactionName}'.";
         // Include InviterUserId in the command. It needs to be a string for the command line.
-        var acceptCommand = $"/acceptfactioninvite \"{msg.FactionName}\" \"{msg.InviterUserId.ToString()}\"";
+        var acceptCommand = $"/acceptfactioninvite \"{msg.FactionName}\"";
 
         // You could use a more interactive popup system if available,
         // but for now, let's add the command hint to the popup/chat.

+ 85 - 85
Content.Server/NPC/NPCBlackboard.cs

@@ -22,7 +22,7 @@ public sealed partial class NPCBlackboard : IEnumerable<KeyValuePair<string, obj
         {"BufferRange", 10f},
         {"FollowCloseRange", 3f},
         {"FollowRange", 7f},
-        {"FleeRange", 80f},
+        {"FleeRange", 12f},
         {"IdleRange", 7f},
         {"InteractRange", SharedInteractionSystem.InteractionRange},
         {"MaximumIdleTime", 7f},
@@ -80,7 +80,7 @@ public bool ContainsKey(string key)
     [Pure]
     public T GetValue<T>(string key)
     {
-        return (T) _blackboard[key];
+        return (T)_blackboard[key];
     }
 
     /// <summary>
@@ -91,17 +91,17 @@ public T GetValue<T>(string key)
     {
         if (_blackboard.TryGetValue(key, out var value))
         {
-            return (T) value;
+            return (T)value;
         }
 
         if (TryGetEntityDefault(key, out value, entManager))
         {
-            return (T) value;
+            return (T)value;
         }
 
         if (BlackboardDefaults.TryGetValue(key, out value))
         {
-            return (T) value;
+            return (T)value;
         }
 
         return default;
@@ -114,19 +114,19 @@ public bool TryGetValue<T>(string key, [NotNullWhen(true)] out T? value, IEntity
     {
         if (_blackboard.TryGetValue(key, out var data))
         {
-            value = (T) data;
+            value = (T)data;
             return true;
         }
 
         if (TryGetEntityDefault(key, out data, entManager))
         {
-            value = (T) data;
+            value = (T)data;
             return true;
         }
 
         if (BlackboardDefaults.TryGetValue(key, out data))
         {
-            value = (T) data;
+            value = (T)data;
             return true;
         }
 
@@ -158,110 +158,110 @@ private bool TryGetEntityDefault(string key, [NotNullWhen(true)] out object? val
         switch (key)
         {
             case Access:
-            {
-                if (!TryGetValue(Owner, out owner, entManager))
                 {
-                    return false;
-                }
+                    if (!TryGetValue(Owner, out owner, entManager))
+                    {
+                        return false;
+                    }
 
-                var access = entManager.EntitySysManager.GetEntitySystem<AccessReaderSystem>();
-                value = access.FindAccessTags(owner);
-                return true;
-            }
+                    var access = entManager.EntitySysManager.GetEntitySystem<AccessReaderSystem>();
+                    value = access.FindAccessTags(owner);
+                    return true;
+                }
             case ActiveHand:
-            {
-                if (!TryGetValue(Owner, out owner, entManager) ||
-                    !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
-                    hands.ActiveHand == null)
                 {
-                    return false;
+                    if (!TryGetValue(Owner, out owner, entManager) ||
+                        !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
+                        hands.ActiveHand == null)
+                    {
+                        return false;
+                    }
+
+                    value = hands.ActiveHand;
+                    return true;
                 }
-
-                value = hands.ActiveHand;
-                return true;
-            }
             case ActiveHandFree:
-            {
-                if (!TryGetValue(Owner, out owner, entManager) ||
-                    !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
-                    hands.ActiveHand == null)
                 {
-                    return false;
+                    if (!TryGetValue(Owner, out owner, entManager) ||
+                        !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
+                        hands.ActiveHand == null)
+                    {
+                        return false;
+                    }
+
+                    value = hands.ActiveHand.IsEmpty;
+                    return true;
                 }
-
-                value = hands.ActiveHand.IsEmpty;
-                return true;
-            }
             case CanMove:
-            {
-                if (!TryGetValue(Owner, out owner, entManager))
                 {
-                    return false;
-                }
+                    if (!TryGetValue(Owner, out owner, entManager))
+                    {
+                        return false;
+                    }
 
-                var blocker = entManager.EntitySysManager.GetEntitySystem<ActionBlockerSystem>();
-                value = blocker.CanMove(owner);
-                return true;
-            }
+                    var blocker = entManager.EntitySysManager.GetEntitySystem<ActionBlockerSystem>();
+                    value = blocker.CanMove(owner);
+                    return true;
+                }
             case FreeHands:
-            {
-                if (!TryGetValue(Owner, out owner, entManager) ||
-                    !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
-                    hands.ActiveHand == null)
                 {
-                    return false;
-                }
+                    if (!TryGetValue(Owner, out owner, entManager) ||
+                        !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
+                        hands.ActiveHand == null)
+                    {
+                        return false;
+                    }
 
-                var handos = new List<string>();
+                    var handos = new List<string>();
 
-                foreach (var (id, hand) in hands.Hands)
-                {
-                    if (!hand.IsEmpty)
-                        continue;
+                    foreach (var (id, hand) in hands.Hands)
+                    {
+                        if (!hand.IsEmpty)
+                            continue;
 
-                    handos.Add(id);
-                }
+                        handos.Add(id);
+                    }
 
-                value = handos;
-                return true;
-            }
+                    value = handos;
+                    return true;
+                }
             case Inventory:
-            {
-                if (!TryGetValue(Owner, out owner, entManager) ||
-                    !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
-                    hands.ActiveHand == null)
                 {
-                    return false;
-                }
+                    if (!TryGetValue(Owner, out owner, entManager) ||
+                        !entManager.TryGetComponent<HandsComponent>(owner, out var hands) ||
+                        hands.ActiveHand == null)
+                    {
+                        return false;
+                    }
 
-                var handos = new List<string>();
+                    var handos = new List<string>();
 
-                foreach (var (id, hand) in hands.Hands)
-                {
-                    if (!hand.IsEmpty)
-                        continue;
+                    foreach (var (id, hand) in hands.Hands)
+                    {
+                        if (!hand.IsEmpty)
+                            continue;
 
-                    handos.Add(id);
-                }
+                        handos.Add(id);
+                    }
 
-                value = handos;
-                return true;
-            }
+                    value = handos;
+                    return true;
+                }
             case OwnerCoordinates:
-            {
-                if (!TryGetValue(Owner, out owner, entManager))
                 {
-                    return false;
-                }
+                    if (!TryGetValue(Owner, out owner, entManager))
+                    {
+                        return false;
+                    }
 
-                if (entManager.TryGetComponent<TransformComponent>(owner, out var xform))
-                {
-                    value = xform.Coordinates;
-                    return true;
-                }
+                    if (entManager.TryGetComponent<TransformComponent>(owner, out var xform))
+                    {
+                        value = xform.Coordinates;
+                        return true;
+                    }
 
-                return false;
-            }
+                    return false;
+                }
             default:
                 return false;
         }

+ 3 - 3
Resources/ConfigPresets/Build/development.toml

@@ -1,12 +1,12 @@
-[game]
+[game]
 # Straight in-game baby
 lobbyenabled = true
 # Dev map for faster loading & convenience
-map = "Valley"
+map = "Nomads"
 role_timers = false
 lobbyduration = 15
 disallowlatejoins = false
-defaultpreset = "tdm"
+defaultpreset = "nomads"
 
 [events]
 enabled = false

+ 2 - 0
Resources/Locale/en-US/lathe/lathe-categories.ftl

@@ -31,3 +31,5 @@ lathe-category-swords-medieval = Medieval Swords
 lathe-category-swords-imperial = Imperial Swords
 lathe-category-shields-ancient = Ancient Shields
 lathe-category-shields-medieval = Medieval Shields
+lathe-category-armor-medieval = Medieval Armor
+lathe-category-armor-imperial = Imperial Armor

+ 1180 - 0
Resources/Prototypes/Civ14/Entities/Clothing/entities_clothing_armor.yml

@@ -0,0 +1,1180 @@
+- type: entity
+  name: imperial officer armor
+  parent: ClothingOuterBase
+  id: civ13_suit_imperial_officer_armor
+  description: A thick, steel armor worn by imperial officers
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/imperial_officer.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/imperial_officer.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.35
+          Slash: 0.35
+          Piercing: 0.9
+          Arrow: 0.55
+          Heat: 0.85
+
+- type: entity
+  name: bronze chinese lamellar
+  parent: ClothingOuterBase
+  id: civ13_suit_bronze_chinese_lamellar
+  description: A bronze lamellar armor, used by warriors of early chinese dynasties.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/chinese_lamellar.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/chinese_lamellar.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.92
+          Arrow: 0.65
+          Heat: 0.85
+
+- type: entity
+  name: green plated armor
+  parent: civ13_suit_plated_armor
+  id: civ13_suit_green_plated_armor
+  description: A thick, expensive iron armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/knight_green.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/knight_green.rsi
+
+- type: entity
+  name: red plated armor
+  parent: civ13_suit_plated_armor
+  id: civ13_suit_red_plated_armor
+  description: A thick, expensive iron armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/knight_red.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/knight_red.rsi
+
+- type: entity
+  name: blue plated armor
+  parent: civ13_suit_plated_armor
+  id: civ13_suit_blue_plated_armor
+  description: A thick, expensive iron armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/knight_blue.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/knight_blue.rsi
+
+- type: entity
+  name: replicant trooper armor
+  parent: ClothingOuterBase
+  id: civ13_suit_replicant_trooper_armor
+  description: A thick, expensive plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/replicant_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/replicant_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.55
+          Slash: 0.55
+          Piercing: 0.25
+          Arrow: 0.1
+          Heat: 0.44
+
+- type: entity
+  name: replicant pilot armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_pilot_armor
+  description: A thin, expensive plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/reppilot_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/reppilot_armor.rsi
+
+- type: entity
+  name: replicant MP armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_MP_armor
+  description: An extremely thick, expensive plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/repmp_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/repmp_armor.rsi
+
+- type: entity
+  name: replicant sergeant armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_sergeant_armor
+  description: A thick, expensive green marked plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/repsgt_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/repsgt_armor.rsi
+
+- type: entity
+  name: replicant reinforced armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_reinforced_armor
+  description: >-
+    A thick, expensive plastoid armor with a blast plate, covering most of the
+    body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/repreinforced.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/repreinforced.rsi
+
+- type: entity
+  name: replicant lieutenant armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_lieutenant_armor
+  description: A thick, expensive blue marked plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/replieutenant_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/replieutenant_armor.rsi
+
+- type: entity
+  name: replicant commando armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_commando_armor
+  description: A thick, extremely expensive plastoid armor, covering most of the chest.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/repcommando.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/repcommando.rsi
+
+- type: entity
+  name: replicant captain armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_captain_armor
+  description: A thick, expensive red marked plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/repcaptain_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/repcaptain_armor.rsi
+
+- type: entity
+  name: replicant commander armor
+  parent: civ13_suit_replicant_trooper_armor
+  id: civ13_suit_replicant_commander_armor
+  description: A thick, expensive gold marked plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/repcommander_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/repcommander_armor.rsi
+
+- type: entity
+  name: red guard armor with robe.
+  parent: ClothingOuterBase
+  id: civ13_suit_red_guard_armor_with_robe.
+  description: >-
+    A thick, extremely expensive plastoid armor with a crimson red robe
+    attached.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/redguard.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/redguard.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.25
+          Slash: 0.25
+          Piercing: 0.054
+          Arrow: 0.1
+          Heat: 0.25
+
+- type: entity
+  name: senate guard armor with robe
+  parent: ClothingOuterBase
+  id: civ13_suit_senate_guard_armor_with_robe.
+  description: A thick, extremely expensive plastoid armor with a royal blue robe attached.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/senateguard.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/senateguard.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.25
+          Slash: 0.25
+          Piercing: 0.054
+          Arrow: 0.1
+          Heat: 0.25
+
+- type: entity
+  name: standard stormtrooper armor
+  parent: ClothingOuterBase
+  id: civ13_suit_standard_stormtrooper_armor
+  description: A thick, expensive imperial plastoid armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/stormtrooper_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/stormtrooper_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.55
+          Slash: 0.55
+          Piercing: 0.12
+          Arrow: 0.04
+          Heat: 0.5
+
+- type: entity
+  name: stormsurgeon armor
+  parent: civ13_suit_standard_stormtrooper_armor
+  id: civ13_suit_stormsurgeon_armor
+  description: >-
+    A thick, expensive imperial stormsurgeon plastoid armor with mint green
+    highlights, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/stormsurgeon_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/stormsurgeon_armor.rsi
+
+- type: entity
+  name: light stormtrooper armor
+  parent: civ13_suit_standard_stormtrooper_armor
+  id: civ13_suit_light_stormtrooper_armor
+  description: >-
+    A light, substandard imperial stormtrooper plastoid armor with removed
+    plates for added mobility , covering some of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/stormradio_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/stormradio_armor.rsi
+
+- type: entity
+  name: segmented armor
+  parent: ClothingOuterBase
+  id: civ13_suit_segmented_armor
+  description: >-
+    A thick and expensive segmented piece of iron armor, its scales protect the
+    torso.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/scale_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/scale_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.65
+          Slash: 0.65
+          Piercing: 0.6
+          Arrow: 0.65
+          Heat: 0.85
+          Radiation: 0.85
+
+- type: entity
+  name: chainmail
+  parent: ClothingOuterBase
+  id: civ13_suit_chainmail
+  description: Wearable armor made of several small interlinked chains.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/chainmail.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/chainmail.rsi
+    - type: STWeight
+      self: 8
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.92
+          Arrow: 0.65
+          Heat: 0.85
+
+- type: entity
+  name: linothorax armor
+  parent: ClothingOuterBase
+  id: civ13_suit_linothorax_armor
+  description: A thick linen armor, covering the torso and lower body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/heavycloth_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/heavycloth_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.44
+          Slash: 0.44
+          Arrow: 0.65
+          Heat: 0.85
+          Radiation: 0.9
+    - type: Construction
+      graph: civ13_suit_linothorax_armor
+      node: end
+      cost: 8
+      material: Cloth
+      time: 10
+
+- type: entity
+  name: bronze egyptian lamellar
+  parent: ClothingOuterBase
+  id: civ13_suit_bronze_egyptian_lamellar
+  description: A bronze lamellar armor, used by soldiers of pharoahic dynasties.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/egyptian_lamellar.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/egyptian_lamellar.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.92
+          Arrow: 0.65
+          Heat: 0.85
+
+- type: entity
+  name: scaled armor
+  parent: ClothingOuterBase
+  id: civ13_suit_scaled_armor
+  description: An armor made of serveral scales made of bronze.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/scaled_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/scaled_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.90
+          Arrow: 0.55
+          Heat: 0.85
+
+- type: entity
+  name: aztec harness
+  parent: ClothingOuterBase
+  id: civ13_suit_aztec_harness
+  description: A few metal plates on leather strips, covering the torso.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/aztec_harness.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/aztec_harness.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.65
+          Slash: 0.65
+          Piercing: 0.98
+          Arrow: 0.85
+          Heat: 0.98
+    - type: Construction
+      graph: civ13_suit_aztec_harness
+      node: end
+      cost: 4
+      material: Copper
+      time: 8
+
+- type: entity
+  name: alligator scale armor
+  parent: ClothingOuterBase
+  id: civ13_suit_alligator_scale_armor
+  description: A carefully cured & hardened alligator scale armor, covering the torso.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/gator_scale_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/gator_scale_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.55
+          Slash: 0.55
+          Piercing: 0.95
+          Arrow: 0.75
+          Heat: 0.9
+          Radiation: 0.9
+    - type: Construction
+      graph: civ13_suit_alligator_scale_armor
+      node: end
+      cost: 9
+      material: Leather
+      time: 10
+
+- type: entity
+  name: pharoahic armor of the gods
+  parent: ClothingOuterBase
+  id: civ13_suit_pharoahic_armor_of_the_gods
+  description: The armor of the divine gods of the desert
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/settra.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/settra.rsi
+
+- type: entity
+  name: creed armor
+  parent: ClothingOuterBase
+  id: civ13_suit_creed_armor
+  description: A leather armor worn by the creed.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/ac_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/ac_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.35
+          Slash: 0.35
+          Piercing: 0.9
+          Arrow: 0.19
+          Heat: 0.85
+          Radiation: 0.9
+
+- type: entity
+  name: creed armor
+  parent: ClothingOuterBase
+  id: civ13_suit_creed_armor_1_2
+  description: A leather armor worn by the creed.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/ac_armor_napol.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/ac_armor_napol.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.35
+          Slash: 0.35
+          Piercing: 0.9
+          Arrow: 0.19
+          Heat: 0.85
+          Radiation: 0.9
+
+- type: entity
+  name: NCR Trooper Armor
+  parent: ClothingOuterBase
+  id: civ13_suit_NCR_Trooper_Armor
+  description: An NCR Armored Vest
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/ncr_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/ncr_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.4
+          Slash: 0.4
+          Piercing: 0.8
+          Arrow: 0.6
+          Heat: 0.85
+
+- type: entity
+  name: imperial chestplate
+  parent: ClothingOuterBase
+  id: civ13_suit_imperial_chestplate
+  description: >-
+    An iron chestplate made in a imperial style, it is not wholly protective
+    against bullets but allows more maneuverability to avoid them.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/imperial_breastplate.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/imperial_breastplate.rsi
+    - type: STWeight
+      self: 8
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.8
+          Arrow: 0.5
+          Heat: 0.85
+
+- type: entity
+  name: arbites armor
+  parent: ClothingOuterBase
+  id: civ13_suit_arbites_armor
+  description: >-
+    A thick, authoritive red armor with reinforced steel leggings and shoulder
+    plates, covering most of the body. Futile attempts to assault arbite
+    enforcers of the law find that rebellion is fruitless.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/arbit.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/arbit.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.15
+          Slash: 0.15
+          Piercing: 0.65
+          Arrow: 0.1
+          Heat: 0.35
+          Radiation: 0
+
+- type: entity
+  name: plated armor
+  parent: ClothingOuterBase
+  id: civ13_suit_plated_armor
+  description: A thick, expensive iron armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/knight_simple.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/knight_simple.rsi
+    - type: STWeight
+      self: 46
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.3
+          Slash: 0.3
+          Piercing: 0.4
+          Arrow: 0.15
+          Heat: 0.85
+- type: entity
+  name: leather samurai armor
+  parent: ClothingOuterBase
+  id: civ13_suit_leather_samurai_armor
+  description: >-
+    A protective & lightweight armor, bound to and covering most of the body yet
+    slightly flexible. Often worn by a lord's bodyguards.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/samurai3.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/samurai3.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.92
+          Arrow: 0.65
+          Heat: 0.85
+    - type: Construction
+      graph: civ13_suit_leather_samurai_armor
+      node: end
+      cost: 10
+      material: Leather
+      time: 13
+- type: entity
+  name: samurai armor
+  parent: ClothingOuterBase
+  id: civ13_suit_samurai_armor
+  description: >-
+    A dense, metal armor of japanese origin, covering most of the body. Often
+    worn by a loyal warriors to a feudal lord.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/samurai_warrior3.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/samurai_warrior3.rsi
+    - type: STWeight
+      self: 40
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.35
+          Slash: 0.35
+          Piercing: 0.95
+          Arrow: 0.25
+          Heat: 0.85
+
+- type: entity
+  name: samurai lord armor
+  parent: civ13_suit_samurai_armor
+  id: civ13_suit_samurai_lord_armor
+  description: A thick, expensive armor of japanese origin. Often worn by feudal lords.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/samurai_lord3.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/samurai_lord3.rsi
+
+- type: entity
+  name: red samurai lord armor
+  parent: civ13_suit_samurai_lord_armor
+  id: civ13_suit_red_samurai_lord_armor
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/samurai_lord1.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/samurai_lord1.rsi
+
+- type: entity
+  name: templar plated armor
+  parent: civ13_suit_plated_armor
+  id: civ13_suit_templar_plated_armor
+  description: >-
+    A thick, expensive iron armor, covering most of the body. This one is
+    covered by white linen with the cross.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/knight_templar.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/knight_templar.rsi
+
+- type: entity
+  name: bronze chestplate
+  parent: ClothingOuterBase
+  id: civ13_suit_bronze_chestplate
+  description: A bronze chestplate.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/bronze_chestplate.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/bronze_chestplate.rsi
+    - type: STWeight
+      self: 8
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.85
+          Slash: 0.85
+          Piercing: 0.85
+          Arrow: 0.85
+          Heat: 0.9
+
+- type: entity
+  name: iron chestplate
+  parent: ClothingOuterBase
+  id: civ13_suit_iron_chestplate
+  description: An iron chestplate.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/iron_chestplate.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/iron_chestplate.rsi
+    - type: STWeight
+      self: 8
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.8
+          Slash: 0.8
+          Piercing: 0.8
+          Arrow: 0.8
+          Heat: 0.9
+
+- type: entity
+  name: leather armor
+  parent: ClothingOuterBase
+  id: civ13_suit_leather_armor
+  description: Several pressed sheets of leather, making a reasonable armor plate.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/leather_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/leather_armor.rsi
+    - type: STWeight
+      self: 4
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.7
+          Slash: 0.7
+          Arrow: 0.85
+          Heat: 0.85
+    - type: Construction
+      graph: civ13_suit_leather_armor
+      node: end
+      cost: 6
+      material: Leather
+      time: 13
+
+- type: entity
+  name: gambeson
+  parent: ClothingOuterBase
+  id: civ13_suit_gambeson
+  description: A thick, padded jacket made of layered cloth, offering basic protection for infantry.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/gambeson.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/gambeson.rsi
+    - type: STWeight
+      self: 6
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.65
+          Slash: 0.65
+          Arrow: 0.80
+          Heat: 0.85
+    - type: Construction
+      graph: civ13_suit_gambeson
+      node: end
+      cost: 10
+      material: Cloth
+      time: 13
+
+- type: entity
+  name: hauberk
+  parent: ClothingOuterBase
+  id: civ13_suit_hauberk
+  description: >-
+    A longer version of the chainmail, worn as a coat. Offers greater
+    protection.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/hauberk.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/hauberk.rsi
+    - type: STWeight
+      self: 9
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.45
+          Slash: 0.45
+          Piercing: 0.9
+          Arrow: 0.44
+          Heat: 0.8
+
+- type: entity
+  name: emirate armor
+  parent: ClothingOuterBase
+  id: civ13_suit_emirate_armor
+  description: >-
+    A loosely fitting but protective suit of armor to wrap around the body &
+    tunic for an emirate lord.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/emir_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/emir_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.45
+          Slash: 0.45
+          Piercing: 0.9
+          Arrow: 0.5
+          Heat: 0.8
+
+- type: entity
+  name: varangian lamellar armor
+  parent: ClothingOuterBase
+  id: civ13_suit_varangian_lamellar_armor
+  description: >-
+    A close fitting armor of small iron rectangular shapes to make a scale vest.
+    Manageably heavy but flexible.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/varangian_lamellar.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/varangian_lamellar.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.4
+          Slash: 0.4
+          Piercing: 0.9
+          Arrow: 0.44
+          Heat: 0.8
+
+- type: entity
+  name: imperial chinese armor
+  parent: ClothingOuterBase
+  id: civ13_suit_imperial_chinese_armor
+  description: >-
+    A well built & laquered armor with iron plates concealed inwardly and
+    outwardly protecting the body, made in imperial chinese style.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/imperial_chinese.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/imperial_chinese.rsi
+    - type: STWeight
+      self: 12
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.9
+          Arrow: 0.5
+          Heat: 0.8
+
+- type: entity
+  name: steppe leather armor
+  parent: ClothingOuterBase
+  id: civ13_suit_steppe_leather_armor
+  description: >-
+    Leather armor made from sheets of leather bound in a steppe nomad style,
+    making adequate protection for prospective warriors.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/steppe_leather_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/steppe_leather_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.55
+          Slash: 0.55
+          Piercing: 0.95
+          Arrow: 0.75
+          Heat: 0.85
+          Radiation: 0
+    - type: Construction
+      graph: civ13_suit_steppe_leather_armor
+      node: end
+      cost: 5
+      material: Leather
+      time: 14
+
+- type: entity
+  name: royal plated armor
+  parent: civ13_suit_plated_armor
+  id: civ13_suit_royal_plated_armor
+  description: A thick, expensive iron armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/royalplate.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/royalplate.rsi
+
+- type: entity
+  name: dwemmer armor
+  parent: ClothingOuterBase
+  id: civ13_suit_dwemmer_armor
+  description: A thick, expensive armor of dwemmer metal.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/dwarmor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/dwarmor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.55
+          Slash: 0.55
+          Piercing: 0.9
+          Arrow: 0.7
+          Heat: 0.85
+
+- type: entity
+  name: stormcloak officer armor
+  parent: ClothingOuterBase
+  id: civ13_suit_stormcloak_officer_armor
+  description: A thick, leather armor of hide with a bearpelt draped over it.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/stormcloak.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/stormcloak.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.35
+          Slash: 0.35
+          Piercing: 0.9
+          Arrow: 0.55
+          Heat: 0.85
+
+- type: entity
+  name: zgz1 advanced armor
+  parent: ClothingOuterBase
+  id: civ13_suit_zgz1_advanced_armor
+  description: >-
+    An advanced piece of armor that provides medium protection against kinetic
+    and other projectiles. This armor is mostly used by the Chinese.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/zgz1_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/zgz1_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.65
+          Slash: 0.65
+          Piercing: 0.35
+          Arrow: 0.4
+          Heat: 0.6
+
+- type: entity
+  name: Medical zgz1 advanced armor
+  parent: civ13_suit_zgz1_advanced_armor
+  id: civ13_suit_Medical_zgz1_advanced_armor
+  description: >-
+    An advanced piece of armor that provides medium protection against kinetic
+    and other projectiles. This armor is mostly used by the Chinese medics.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/zgz1med_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/zgz1med_armor.rsi
+
+- type: entity
+  name: scrap plate armor
+  parent: ClothingOuterBase
+  id: civ13_suit_scrap_plate_armor
+  description: A ramshackle suit of armor, reminiscence of medieval times.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/scraparmor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/scraparmor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.30
+          Slash: 0.30
+          Piercing: 0.8
+          Arrow: 0.15
+          Heat: 0.8
+          Radiation: 0.6
+
+- type: entity
+  name: mechanized armor
+  parent: ClothingOuterBase
+  id: civ13_suit_mechanized_armor
+  description: A thick, thrown together iron armor, covering most of the body.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/mechanicalarmor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/mechanicalarmor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.15
+          Slash: 0.15
+          Piercing: 0.5
+          Arrow: 0.5
+          Heat: 0.44
+
+- type: entity
+  name: chitin chestplate
+  parent: ClothingOuterBase
+  id: civ13_suit_chitin_chestplate
+  description: A chitin chestplate, specially crafted from insects.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/chitin_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/chitin_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.95
+          Arrow: 0.85
+          Heat: 0.85
+
+- type: entity
+  name: sauron's armor
+  parent: ClothingOuterBase
+  id: civ13_suit_saurons_armor
+  description: The armor of sauron
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/sauronarmor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/sauronarmor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.054
+          Slash: 0.054
+          Piercing: 0.7
+          Arrow: 0.1
+          Heat: 0.8
+          Radiation: 0.55
+
+- type: entity
+  name: ork plated armor
+  parent: ClothingOuterBase
+  id: civ13_suit_plated_armor_1
+  description: A cheap dark iron armor.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/ork_plate_elite.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/ork_plate_elite.rsi
+    - type: STWeight
+      self: 28
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.30
+          Slash: 0.30
+          Piercing: 0.9
+          Arrow: 0.1
+          Heat: 0.85
+          Radiation: 0.55
+
+- type: entity
+  name: heavy ork plated armor
+  parent: ClothingOuterBase
+  id: civ13_suit_plated_armor_1_2
+  description: A cheap dark iron armor.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/ork_plate_commander.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/ork_plate_commander.rsi
+    - type: STWeight
+      self: 30
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.19
+          Slash: 0.19
+          Piercing: 0.9
+          Arrow: 0.1
+          Heat: 0.85
+          Radiation: 0.55
+
+- type: entity
+  name: orc urukhai armor
+  parent: ClothingOuterBase
+  id: civ13_suit_orc_urukhai_armor
+  description: Orc make good armor!
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/urukhai_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/urukhai_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.4
+          Slash: 0.4
+          Piercing: 0.92
+          Arrow: 0.6
+          Heat: 0.85
+          Radiation: 0.75
+
+- type: entity
+  name: orc whitehand armor
+  parent: ClothingOuterBase
+  id: civ13_suit_orc_whitehand_armor
+  description: Orc make good armor!
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/whitehand_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/whitehand_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.4
+          Slash: 0.4
+          Piercing: 0.92
+          Arrow: 0.6
+          Heat: 0.85
+          Radiation: 0.75
+
+- type: entity
+  name: orc grunt armor
+  parent: ClothingOuterBase
+  id: civ13_suit_orc_grunt_armor
+  description: Orc make good armor!
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/grunt_armor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/grunt_armor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.5
+          Slash: 0.5
+          Piercing: 0.94
+          Arrow: 0.65
+          Heat: 0.9
+          Radiation: 0.8
+
+- type: entity
+  name: carbon black suit
+  parent: ClothingOuterBase
+  id: civ13_suit_carbon_black_suit
+  description: A high tech suit made of compressed carbon materials.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/bxsuit.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/bxsuit.rsi
+
+- type: entity
+  name: primitive wood armor
+  parent: ClothingOuterBase
+  id: civ13_suit_primitive_wood_armor
+  description: >-
+    A wooden set of armor made of small planks held together by plant fiber
+    ropes.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/wooden_chestarmor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/wooden_chestarmor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.85
+          Slash: 0.85
+          Arrow: 0.82
+          Heat: 0.9
+          Radiation: 0.85
+    - type: Construction
+      graph: civ13_suit_primitive_wood_armor
+      node: end
+      cost: 5
+      material: WoodPlank
+      time: 5
+
+- type: entity
+  name: primitive bone hair-pipe armor
+  parent: ClothingOuterBase
+  id: civ13_suit_primitive_bone_hair_pipe_armor
+  description: >-
+    A bone set of chest armor made of tightly packed small bones held together
+    by plant fiber ropes.
+  components:
+    - type: Sprite
+      sprite: Civ14/Clothing/exported/suits/native_bonearmor.rsi
+    - type: Clothing
+      sprite: Civ14/Clothing/exported/suits/native_bonearmor.rsi
+    - type: Armor
+      modifiers:
+        coefficients:
+          Blunt: 0.79
+          Slash: 0.79
+          Arrow: 0.87
+          Heat: 0.92
+          Radiation: 0.82
+    - type: Construction
+      graph: civ13_suit_primitive_bone_hair_pipe_armor
+      node: end
+      cost: 5
+      material: Bones
+      time: 10

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 58 - 549
Resources/Prototypes/Civ14/Entities/Clothing/entities_clothing_suit.yml


+ 4 - 5
Resources/Prototypes/Civ14/Entities/Mobs/animals.yml

@@ -53,12 +53,11 @@
     - type: NpcFactionMember
       factions:
         - Prey
-    #    - type: HTN
-    #      rootTask:
-    #        task: SimplePreyCompound
+    - type: HTN
+      rootTask:
+        task: SimplePreyCompound
     - type: Puller
       needsHands: false
-
 - type: entity
   name: deer doe
   parent: MobDeerBuck
@@ -110,7 +109,7 @@
       heldPrefix: 0
     - type: HTN
       rootTask:
-        task: MouseCompound
+        task: SimplePreyCompound
     - type: Physics
     - type: Fixtures
       fixtures:

+ 1 - 3
Resources/Prototypes/Civ14/Entities/Mobs/predators.yml

@@ -128,9 +128,7 @@
         - Predator
     - type: HTN
       rootTask:
-        #        task: predatorActivityCompound #civ14 coustom predator system
-        task: SimpleHostileCompound
-
+        task: PredatorActivityCompound
     - type: ReplacementAccent #lets wolf vocalize
       accent: dog
     - type: Speech

+ 22 - 0
Resources/Prototypes/Civ14/Entities/Objects/Tools/tools.yml

@@ -20,6 +20,28 @@
       agemin: 0
       agemax: 8
 
+- type: entity
+  name: stone shovel
+  parent: Shovel
+  id: StoneShovel
+  description: A large tool for digging and moving dirt.
+  components:
+    - type: Tag
+      tags:
+        - Shovel
+    - type: Sprite
+      sprite: Civ14/Objects/StoneAge/stone_shovel.rsi
+      state: icon
+    - type: STWeight
+      self: 5
+    - type: Item
+      size: Large
+    - type: Construction
+      graph: StoneShovel
+      node: stoneshovel
+      agemin: 0
+      agemax: 8
+
 - type: entity
   name: bone pickaxe
   parent: Pickaxe

+ 38 - 0
Resources/Prototypes/Civ14/Entities/Structures/Craft/anvil.yml

@@ -225,3 +225,41 @@
   materials:
     Bronze: 500
   result: civ13_head_chinese_warrior_helmet
+
+## iron anvil
+
+- type: entity
+  parent: BaseLathe
+  id: AnvilIron
+  name: iron anvil
+  description: A metalworking tool to produce weapons and armours.
+  components:
+    - type: Transform
+      noRot: false
+    - type: Sprite
+      sprite: Civ14/Objects/metallurgy.rsi
+      snapCardinals: true
+      state: iron_anvil
+    - type: ApcPowerReceiver
+      needsPower: false
+      powerLoad: 0
+    - type: Anchorable
+      delay: 2
+    - type: Lathe
+      producingSound: /Audio/Effects/metal_thud1.ogg
+      idleState: iron_anvil
+      runningState: iron_anvil_use
+      staticPacks:
+        - AnvilBronze
+        - AnvilGold
+        - AnvilSwordsMedieval
+        - AnvilShieldsMedieval
+        - AnvilArmorMedieval
+    - type: MaterialStorage
+      whitelist:
+        tags:
+          - Sheet
+          - Ingot
+    - type: Construction
+      graph: AnvilIron
+      node: end

+ 105 - 0
Resources/Prototypes/Civ14/Entities/Structures/Craft/armor.yml

@@ -0,0 +1,105 @@
+- type: latheCategory
+  id: AnvilArmorMedieval
+  name: lathe-category-armor-medieval
+
+- type: latheCategory
+  id: AnvilArmorImperial
+  name: lathe-category-armor-imperial
+
+- type: latheRecipePack
+  id: AnvilArmorMedieval
+  recipes:
+    - civ13_suit_segmented_armor
+    - civ13_suit_chainmail
+    - civ13_suit_plated_armor
+    - civ13_suit_samurai_armor
+    - civ13_suit_iron_chestplate
+    - civ13_suit_hauberk
+    - civ13_suit_emirate_armor
+    - civ13_suit_imperial_chinese_armor
+
+- type: latheRecipePack
+  id: AnvilArmorImperial
+  recipes:
+    - civ13_suit_imperial_chestplate
+
+- type: latheRecipe
+  id: civ13_suit_imperial_chestplate
+  categories:
+    - AnvilArmorImperial
+  completetime: 10
+  materials:
+    Iron: 1000
+  result: civ13_suit_imperial_chestplate
+
+- type: latheRecipe
+  id: civ13_suit_segmented_armor
+  categories:
+    - AnvilArmorMedieval
+  completetime: 10
+  materials:
+    Iron: 1000
+  result: civ13_suit_segmented_armor
+
+- type: latheRecipe
+  id: civ13_suit_chainmail
+  categories:
+    - AnvilArmorMedieval
+  completetime: 12
+  materials:
+    Iron: 1000
+  result: civ13_suit_chainmail
+
+- type: latheRecipe
+  id: civ13_suit_plated_armor
+  categories:
+    - AnvilArmorMedieval
+  completetime: 10
+  materials:
+    Iron: 1600
+  result: civ13_suit_plated_armor
+
+- type: latheRecipe
+  id: civ13_suit_samurai_armor
+  categories:
+    - AnvilArmorMedieval
+  completetime: 10
+  materials:
+    Iron: 1400
+  result: civ13_suit_samurai_armor
+
+- type: latheRecipe
+  id: civ13_suit_iron_chestplate
+  categories:
+    - AnvilArmorMedieval
+  completetime: 10
+  materials:
+    Iron: 800
+  result: civ13_suit_iron_chestplate
+
+- type: latheRecipe
+  id: civ13_suit_hauberk
+  categories:
+    - AnvilArmorMedieval
+  completetime: 10
+  materials:
+    Iron: 1200
+  result: civ13_suit_hauberk
+
+- type: latheRecipe
+  id: civ13_suit_emirate_armor
+  categories:
+    - AnvilArmorMedieval
+  completetime: 10
+  materials:
+    Iron: 1200
+  result: civ13_suit_emirate_armor
+
+- type: latheRecipe
+  id: civ13_suit_imperial_chinese_armor
+  categories:
+    - AnvilArmorMedieval
+  completetime: 10
+  materials:
+    Iron: 1000
+  result: civ13_suit_imperial_chinese_armor

+ 30 - 243
Resources/Prototypes/Civ14/Recipes/Clothing/recipes_clothing_suit.yml

@@ -5591,87 +5591,7 @@
               doAfter: 5
     - node: end
       entity: civ13_suit_red_cape
-- type: construction
-  name: swat heavy vest
-  id: civ13_suit_swat_heavy_vest
-  graph: civ13_suit_swat_heavy_vest
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: A heavy NIJ level IV vest, used by swat officers.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/swat.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_swat_heavy_vest
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_swat_heavy_vest
-- type: construction
-  name: swat bulletproof vest
-  id: civ13_suit_swat_bulletproof_vest
-  graph: civ13_suit_swat_bulletproof_vest
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: A heavy NIJ level IV vest, used by swat officers.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/policevest.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_swat_bulletproof_vest
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_swat_bulletproof_vest
-- type: construction
-  name: 6B3 body armor
-  id: civ13_suit_6B3_body_armor
-  graph: civ13_suit_6B3_body_armor
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: A ballistic vest of Soviet origin, issued in the mid 1980s.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/6b3.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_6B3_body_armor
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 12
-              doAfter: 26
-    - node: end
-      entity: civ13_suit_6B3_body_armor
+
 - type: construction
   name: yellow NBC suit
   id: civ13_suit_yellow_NBC_suit
@@ -5834,168 +5754,7 @@
               doAfter: 5
     - node: end
       entity: civ13_suit_astronaut_suit
-- type: construction
-  name: carbon black suit
-  id: civ13_suit_carbon_black_suit
-  graph: civ13_suit_carbon_black_suit
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: A high tech suit made of comprssed carbon materials.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/bxsuit.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_carbon_black_suit
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_carbon_black_suit
-- type: construction
-  name: 6B45 heavy vest
-  id: civ13_suit_6B45_heavy_vest
-  graph: civ13_suit_6B45_heavy_vest
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: 6B45 is a modular bullet-resistant vest. It comprises frontal and rear section and soft-armour shoulder and side protection.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/a6b45.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_6B45_heavy_vest
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_6B45_heavy_vest
-- type: construction
-  name: heavy vest
-  id: civ13_suit_heavy_vest
-  graph: civ13_suit_heavy_vest
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: A heavy NIJ level IV vest.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/heavypolice.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_heavy_vest
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_heavy_vest
-- type: construction
-  name: medium vest
-  id: civ13_suit_medium_vest
-  graph: civ13_suit_medium_vest
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: A heavy NIJ level III vest.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/mediumvest.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_medium_vest
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_medium_vest
-- type: construction
-  name: 6B44 vest
-  id: civ13_suit_6B44_vest
-  graph: civ13_suit_6B44_vest
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: 6B44 is a modular bullet-resistant vest.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/a6b44.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_6B44_vest
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_6B44_vest
-- type: construction
-  name: 6B28 plate carrier
-  id: civ13_suit_6B28_plate_carrier
-  graph: civ13_suit_6B28_plate_carrier
-  startNode: start
-  targetNode: end
-  category: construction-category-clothing
-  description: 6B28 is a level III plate carrier.
-  icon:
-    sprite: Civ14/Clothing/exported/suits/a6b28.rsi
-    state: icon
-  objectType: Item
-  agemin: 8
-  agemax: 8
-- type: constructionGraph
-  id: civ13_suit_6B28_plate_carrier
-  start: start
-  graph:
-    - node: start
-      edges:
-        - to: end
-          steps:
-            - material: Cloth
-              amount: 5
-              doAfter: 5
-    - node: end
-      entity: civ13_suit_6B28_plate_carrier
+
 - type: construction
   name: lifejacket
   id: civ13_suit_lifejacket_1_2
@@ -6077,3 +5836,31 @@
               doAfter: 11
     - node: end
       entity: civ13_suit_mbata_pelt_vest
+
+- type: construction
+  name: gambeson
+  id: civ13_suit_gambeson
+  graph: civ13_suit_gambeson
+  startNode: start
+  targetNode: end
+  category: construction-category-clothing
+  description: A thick, padded jacket made of layered cloth, offering basic protection for infantry.
+  icon:
+    sprite: Civ14/Clothing/exported/suits/gambeson.rsi
+    state: icon
+  objectType: Item
+  agemin: 2
+  agemax: 8
+- type: constructionGraph
+  id: civ13_suit_gambeson
+  start: start
+  graph:
+    - node: start
+      edges:
+        - to: end
+          steps:
+            - material: Cloth
+              amount: 10
+              doAfter: 15
+    - node: end
+      entity: civ13_suit_gambeson

+ 31 - 0
Resources/Prototypes/Civ14/Recipes/Construction/metallurgy.yml

@@ -90,3 +90,34 @@
   canBuildInImpassable: false
   conditions:
     - !type:TileNotBlocked
+
+- type: constructionGraph
+  id: AnvilIron
+  start: start
+  graph:
+    - node: start
+      edges:
+        - to: end
+          steps:
+            - material: Iron
+              amount: 20
+              doAfter: 15
+    - node: end
+      entity: AnvilIron
+
+- type: construction
+  name: iron anvil
+  id: AnvilIron
+  graph: AnvilIron
+  startNode: start
+  targetNode: end
+  category: construction-category-production
+  description: A metalworking tool to produce weapons and armours.
+  icon: { sprite: Civ14/Objects/metallurgy.rsi, state: iron_anvil }
+  objectType: Structure
+  agemin: 2
+  agemax: 8
+  placementMode: SnapgridCenter
+  canBuildInImpassable: false
+  conditions:
+    - !type:TileNotBlocked

+ 30 - 0
Resources/Prototypes/Civ14/Recipes/Construction/tools.yml

@@ -11,6 +11,19 @@
   agemin: 0
   agemax: 8
 
+- type: construction
+  name: stone shovel
+  id: StoneShovel
+  graph: StoneShovel
+  startNode: start
+  targetNode: stoneshovel
+  category: construction-category-tools
+  description: A crude stone shovel.
+  icon: { sprite: Civ14/Objects/StoneAge/stone_shovel.rsi, state: icon }
+  objectType: Item
+  agemin: 0
+  agemax: 8
+
 - type: construction
   name: bone pickaxe
   id: BonePickaxe
@@ -119,6 +132,23 @@
     - node: boneshovel
       entity: BoneShovel
 
+- type: constructionGraph
+  id: StoneShovel
+  start: start
+  graph:
+    - node: start
+      edges:
+        - to: stoneshovel
+          steps:
+            - material: Stone
+              amount: 3
+              doAfter: 3
+            - material: WoodPlank
+              amount: 4
+              doAfter: 4
+    - node: stoneshovel
+      entity: StoneShovel
+
 - type: constructionGraph
   id: BonePickaxe
   start: start

+ 53 - 27
Resources/Prototypes/NPCs/Civ13/faunaPredator.yml

@@ -1,36 +1,65 @@
-#Primary Wolf NPC Behavior
 - type: htnCompound
-  id: predatorActivityCompound
+  id: PredatorActivityCompound
   branches:
+    # First priority: Attack prey if detected
     - tasks:
         - !type:HTNCompoundTask
           task: PredatorAttackCompound
-    - tasks: #for some reason idle occurs at the same time as WolfMeleeCombatCompound
+    # Second priority: Hunt for food when hungry
+    - preconditions:
+        - !type:HungryPrecondition
+          minHungerState: Peckish
+      tasks:
+        - !type:HTNCompoundTask
+          task: PredatorHuntCompound
+    # Third priority: Idle/wander when not hunting
+    - tasks:
         - !type:HTNCompoundTask
           task: IdleCompound
 
-#Collects target data, makes it do the growl thing, & quues up the melee combat task
+# Collects target data, warns prey, and initiates combat
 - type: htnCompound
   id: PredatorAttackCompound
   branches:
+    # First try to warn (growl) at prey
     - tasks:
+        - !type:HTNPrimitiveTask
+          operator: !type:UtilityOperator
+            proto: NearbyPrey
         - !type:HTNCompoundTask
           task: PredatorWarnCompound
+    # Then attack if prey is in range
+    - preconditions:
+        - !type:KeyExistsPrecondition
+          key: Target
+      tasks:
+        - !type:HTNCompoundTask
+          task: PredatorMeleeCombatCompound
+
+# Hunting behavior - search for prey
+- type: htnCompound
+  id: PredatorHuntCompound
+  branches:
     - tasks:
+        - !type:HTNPrimitiveTask
+          operator: !type:PickAccessibleOperator
+            rangeKey: HuntRange
+        - !type:HTNPrimitiveTask
+          operator: !type:MoveToOperator
+            pathfindInPlanning: false
         - !type:HTNPrimitiveTask
           operator: !type:UtilityOperator
             proto: NearbyPrey
-        - !type:HTNCompoundTask
-          task: WolfMeleeCombatCompound
-
-#Growls, intended to happen at a longer range than the melee combat task, but for now it just growls as it attacks
+# Growls at prey before attacking
 - type: htnCompound
   id: PredatorWarnCompound
   branches:
     - preconditions:
+        - !type:KeyExistsPrecondition
+          key: Target
         - !type:TargetInRangePrecondition
           targetKey: Target
-          rangeKey: MeleeRange
+          rangeKey: VisionRadius
       tasks:
         - !type:HTNPrimitiveTask
           operator: !type:SpeakOperator
@@ -39,44 +68,42 @@
         - !type:HTNPrimitiveTask
           operator: !type:SetFloatOperator
             targetKey: WaitTime
-            amount: 8
+            amount: 3
+        - !type:HTNPrimitiveTask
+          operator: !type:WaitOperator
+            key: WaitTime
 
-#compound that performs the actual process of melee combat, including pathfinding to the target
+# Melee combat behavior
 - type: htnCompound
-  id: WolfMeleeCombatCompound
+  id: PredatorMeleeCombatCompound
   branches:
     - preconditions:
         - !type:KeyExistsPrecondition
           key: Target
       tasks:
+        # Move to target
         - !type:HTNPrimitiveTask
           operator: !type:MoveToOperator
             shutdownState: PlanFinished
             pathfindInPlanning: true
             removeKeyOnFinish: false
-            targetKey: TargetCoordinates
-            pathfindKey: TargetPathfind
+
+            targetKey: Target
             rangeKey: MeleeRange
+        # Perform juke maneuver for more realistic movement
         - !type:HTNPrimitiveTask
           operator: !type:JukeOperator
             jukeType: AdjacentTile
+        # Attack target if in range
         - !type:HTNPrimitiveTask
           operator: !type:MeleeOperator
             targetKey: Target
           preconditions:
-            - !type:KeyExistsPrecondition
-              key: Target
             - !type:TargetInRangePrecondition
               targetKey: Target
               rangeKey: MeleeRange
-    - tasks:
-        - !type:HTNPrimitiveTask
-          operator: !type:UtilityOperator
-            proto: NearbyPrey
-
-#Utility queries
 
-#finds nearby hostile mobs and marks it to the blackboard casting them as the target
+# Utility queries for finding prey
 - type: utilityQuery
   id: NearbyPrey
   query:
@@ -91,13 +118,12 @@
       curve: !type:PresetCurve
         preset: TargetHealth
     - !type:TargetAccessibleCon
-      curve: !type:BoolCurve #curve preset for above
-
-
+      curve: !type:BoolCurve
 - type: utilityCurvePreset
   id: PreyDistance
   curve: !type:QuadraticCurve
     slope: -1
     exponent: 1
-    yOffset: 0.5
+
+    yOffset: 1
     xOffset: 0

+ 80 - 16
Resources/Prototypes/NPCs/Civ13/faunaPrey.yml

@@ -1,15 +1,23 @@
-#main prey activity
 - type: htnCompound
   id: SimplePreyCompound
   branches:
+    # First priority: Flee from predators
     - tasks:
         - !type:HTNCompoundTask
           task: PreyFleeCompound
+    # Second priority: Find food when hungry
+    - preconditions:
+        - !type:HungryPrecondition
+          minHungerState: Peckish
+      tasks:
+        - !type:HTNCompoundTask
+          task: PreyForageCompound
+    # Third priority: Idle/wander when not fleeing or foraging
     - tasks:
         - !type:HTNCompoundTask
-          task: IdleCompound
+          task: PreyIdleCompound
 
-#finds the hostile target & sets up the flee compound
+# Finds hostile targets and initiates flee behavior
 - type: htnCompound
   id: PreyFleeCompound
   branches:
@@ -20,6 +28,67 @@
         - !type:HTNCompoundTask
           task: FleeHostileCompound
 
+# Foraging behavior for prey
+- type: htnCompound
+  id: PreyForageCompound
+  branches:
+    - tasks:
+        - !type:HTNPrimitiveTask
+          operator: !type:PickAccessibleOperator
+            rangeKey: ForageRange
+        - !type:HTNPrimitiveTask
+          operator: !type:MoveToOperator
+            pathfindInPlanning: false
+        - !type:HTNPrimitiveTask
+          operator: !type:RandomOperator
+            targetKey: ForageTime
+            minKey: MinimumForageTime
+            maxKey: MaximumForageTime
+        - !type:HTNPrimitiveTask
+          operator: !type:WaitOperator
+            key: ForageTime
+
+# Idle behavior specific to prey (more cautious)
+- type: htnCompound
+  id: PreyIdleCompound
+  branches:
+    - tasks:
+        - !type:HTNPrimitiveTask
+          operator: !type:WaitOperator
+            key: IdleTime
+          preconditions:
+            - !type:KeyExistsPrecondition
+              key: IdleTime
+    # Pick a new spot, look around, and wait there
+    - preconditions:
+        - !type:BuckledPrecondition
+          isBuckled: false
+        - !type:PulledPrecondition
+          isPulled: false
+      tasks:
+        - !type:HTNPrimitiveTask
+          operator: !type:PickAccessibleOperator
+            rangeKey: IdleRange
+        - !type:HTNPrimitiveTask
+          operator: !type:MoveToOperator
+            pathfindInPlanning: false
+        # Look around (rotate) to simulate awareness
+        - !type:HTNPrimitiveTask
+          operator: !type:PickRandomRotationOperator
+            targetKey: RotateTarget
+        - !type:HTNPrimitiveTask
+          operator: !type:RotateToTargetOperator
+            targetKey: RotateTarget
+        - !type:HTNPrimitiveTask
+          operator: !type:RandomOperator
+            targetKey: IdleTime
+            minKey: MinimumIdleTime
+            maxKey: MaximumIdleTime
+        - !type:HTNPrimitiveTask
+          operator: !type:WaitOperator
+            key: IdleTime
+
+# Flee from hostile targets
 - type: htnCompound
   id: FleeHostileCompound
   branches:
@@ -30,22 +99,18 @@
           targetKey: Target
           rangeKey: VisionRadius
           opaqueKey: false
-      tasks: #this bit picks a random open tile & paths to it, also dodges away from the target
-        - !type:HTNPrimitiveTask #this needs to be made so it picks a random tile away from the target, aka the hostile creature.
-          operator:
-            !type:PickAccessibleOperator #RN there is something that is like 50% of the way in the file for that in the file
-            rangeKey: FleeRange
-            targetCoordinates: FleeCoordinates
+      tasks:
+        # Make a sound when fleeing
         - !type:HTNPrimitiveTask
-          operator: !type:MoveToOperator #performs the actual
-            pathfindInPlanning: false
+          operator: !type:SpeakOperator
+            speech: "Squeals in fear"
+            hidden: false
+        # Juke away from predator
         - !type:HTNPrimitiveTask
           operator: !type:JukeOperator
             jukeType: Away
 
-#Utility Operators
-
-#Identifies nearby hostiles & casts them as a target
+# Utility Operators
 - type: utilityQuery
   id: NearbyHostiles
   query:
@@ -60,8 +125,7 @@
       curve: !type:PresetCurve
         preset: TargetHealth
     - !type:TargetAccessibleCon
-      curve: !type:BoolCurve #Preset curve for the consideration in nearbyhostiles
-
+      curve: !type:BoolCurve
 
 - type: utilityCurvePreset
   id: HostileDistance

BIN
Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/icon.png


BIN
Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/inhand-left.png


BIN
Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/inhand-right.png


+ 21 - 0
Resources/Textures/Civ14/Objects/StoneAge/stone_shovel.rsi/meta.json

@@ -0,0 +1,21 @@
+{
+    "version": 1,
+    "copyright": "Taken from Civilization 13 https://github.com/civ13/civ13",
+    "size": {
+        "x": 32,
+        "y": 32
+    },
+    "states": [
+        {
+            "name": "inhand-left",
+            "directions": 4
+        },
+        {
+            "name": "inhand-right",
+            "directions": 4
+        },
+        {
+            "name": "icon"
+        }
+    ]
+}

Vissa filer visades inte eftersom för många filer har ändrats