diff --git a/Content.Server/SS220/StationEvents/Components/RegalRatRuleComponent.cs b/Content.Server/SS220/StationEvents/Components/RegalRatRuleComponent.cs new file mode 100644 index 000000000000..bc88de200417 --- /dev/null +++ b/Content.Server/SS220/StationEvents/Components/RegalRatRuleComponent.cs @@ -0,0 +1,15 @@ +// © SS220, An EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt +using Content.Server.SS220.StationEvents.Events; +using Content.Shared.Storage; + +namespace Content.Server.SS220.StationEvents.Components; + +[RegisterComponent, Access(typeof(RegalRatRule))] +public sealed partial class RegalRatRuleComponent : Component +{ + [DataField("entries")] + public List Entries = new(); + + [DataField("specialEntries")] + public List SpecialEntries = new(); +} diff --git a/Content.Server/SS220/StationEvents/Components/RegalRatSpawnLocationComponent.cs b/Content.Server/SS220/StationEvents/Components/RegalRatSpawnLocationComponent.cs new file mode 100644 index 000000000000..bd99d562c4ca --- /dev/null +++ b/Content.Server/SS220/StationEvents/Components/RegalRatSpawnLocationComponent.cs @@ -0,0 +1,8 @@ +// © SS220, An EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt +namespace Content.Server.SS220.StationEvents.Components; + +[RegisterComponent] +public sealed partial class RegalRatSpawnLocationComponent : Component +{ + +} diff --git a/Content.Server/SS220/StationEvents/Events/RegalRatRule.cs b/Content.Server/SS220/StationEvents/Events/RegalRatRule.cs new file mode 100644 index 000000000000..91670736adef --- /dev/null +++ b/Content.Server/SS220/StationEvents/Events/RegalRatRule.cs @@ -0,0 +1,71 @@ +// © SS220, An EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt +using Content.Server.Station.Components; +using Content.Server.SS220.StationEvents.Components; +using Content.Server.StationEvents.Components; +using Content.Server.StationEvents.Events; +using Content.Shared.GameTicking.Components; +using Content.Shared.Station.Components; +using Content.Shared.Storage; +using Robust.Shared.Map; +using Robust.Shared.Random; + +namespace Content.Server.SS220.StationEvents.Events; + +public sealed class RegalRatRule : StationEventSystem +{ + protected override void Started(EntityUid uid, RegalRatRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) + { + base.Started(uid, component, gameRule, args); + + if (!TryGetRandomStation(out var station)) + { + return; + } + + var mouseLocations = EntityQueryEnumerator(); + var mouseVaidLocations = new List(); + + while (mouseLocations.MoveNext(out _, out _, out var transform)) + { + if (CompOrNull(transform.GridUid)?.Station == station && + HasComp(transform.GridUid)) + { + mouseVaidLocations.Add(transform.Coordinates); + foreach (var spawn in EntitySpawnCollection.GetSpawns(component.Entries, RobustRandom)) + { + Spawn(spawn, transform.Coordinates); + } + } + } + + var kingRatValidLocations = new List(); + var kingRatLocations = EntityQueryEnumerator(); + + while (kingRatLocations.MoveNext(out _, out _, out var transform)) + { + if (CompOrNull(transform.GridUid)?.Station == station && + HasComp(transform.GridUid)) + { + kingRatValidLocations.Add(transform.Coordinates); + } + } + + if (component.SpecialEntries.Count == 0 || kingRatValidLocations.Count == 0) + { + return; + } + + // guaranteed spawn + var specialEntry = RobustRandom.Pick(component.SpecialEntries); + var specialSpawn = RobustRandom.Pick(kingRatValidLocations); + Spawn(specialEntry.PrototypeId, specialSpawn); + + foreach (var location in kingRatValidLocations) + { + foreach (var spawn in EntitySpawnCollection.GetSpawns(component.SpecialEntries, RobustRandom)) + { + Spawn(spawn, location); + } + } + } +} diff --git a/Content.Shared/RatKing/RatKingComponent.cs b/Content.Shared/RatKing/RatKingComponent.cs index 712d4ae3a130..4f472866d8fb 100644 --- a/Content.Shared/RatKing/RatKingComponent.cs +++ b/Content.Shared/RatKing/RatKingComponent.cs @@ -99,6 +99,14 @@ public sealed partial class RatKingComponent : Component { RatKingOrderType.CheeseEm, "RatKingCommandCheeseEm" }, { RatKingOrderType.Loose, "RatKingCommandLoose" } }; + + // SS220 RatKing Tweaks and Changes begin + [ViewVariables] + public EntityUid? ActionRummageEntity; + + [DataField("actionRummage")] + public EntProtoId ActionRummage = "ActionRatKingRummage"; + // SS220 RatKing Tweaks and Changes end } [Serializable, NetSerializable] diff --git a/Content.Shared/RatKing/SharedRatKingSystem.cs b/Content.Shared/RatKing/SharedRatKingSystem.cs index 7eb92b59415a..26ca749cd0e0 100644 --- a/Content.Shared/RatKing/SharedRatKingSystem.cs +++ b/Content.Shared/RatKing/SharedRatKingSystem.cs @@ -12,6 +12,10 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Serialization; +//SS220 RatKing Tweaks and Changes start +using Content.Shared.Popups; +using Content.Shared.SS220.RatKing; +//SS220 RatKing Tweaks and Changes end namespace Content.Shared.RatKing; @@ -24,6 +28,7 @@ public abstract class SharedRatKingSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly TagSystem _tagSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; //SS220 RatKing tweaks and changes /// public override void Initialize() @@ -37,6 +42,7 @@ public override void Initialize() SubscribeLocalEvent>(OnGetVerb); SubscribeLocalEvent(OnDoAfterComplete); + SubscribeLocalEvent(OnRummageAction); //SS220 RatKing Tweaks and Changes } private void OnStartup(EntityUid uid, RatKingComponent component, ComponentStartup args) @@ -50,6 +56,7 @@ private void OnStartup(EntityUid uid, RatKingComponent component, ComponentStart _action.AddAction(uid, ref component.ActionOrderFollowEntity, component.ActionOrderFollow, component: comp); _action.AddAction(uid, ref component.ActionOrderCheeseEmEntity, component.ActionOrderCheeseEm, component: comp); _action.AddAction(uid, ref component.ActionOrderLooseEntity, component.ActionOrderLoose, component: comp); + _action.AddAction(uid, ref component.ActionRummageEntity, component.ActionRummage, component: comp); //SS220 RatKing Tweaks and Changes UpdateActions(uid, component); } @@ -71,6 +78,7 @@ private void OnShutdown(EntityUid uid, RatKingComponent component, ComponentShut _action.RemoveAction(uid, component.ActionOrderFollowEntity, comp); _action.RemoveAction(uid, component.ActionOrderCheeseEmEntity, comp); _action.RemoveAction(uid, component.ActionOrderLooseEntity, comp); + _action.RemoveAction(uid, component.ActionRummageEntity, comp); //SS220 RatKing Tweaks and Changes } private void OnOrderAction(EntityUid uid, RatKingComponent component, RatKingOrderActionEvent args) @@ -143,6 +151,35 @@ private void OnGetVerb(EntityUid uid, RatKingRummageableComponent component, Get }); } + //SS220 RatKing Tweaks and Changes start + private void OnRummageAction(Entity entity, ref RatKingRummageActionEvent args) + { + if (args.Handled || !TryComp(args.Target, out var rumComp)) + { + _popup.PopupPredicted(Loc.GetString("ratking-rummage-failure"), args.Target, entity, PopupType.Small); + return; + } + + if (rumComp.Looted) + { + _popup.PopupPredicted(Loc.GetString("ratking-rummage-looted-failure"), args.Target, entity, PopupType.Small); + return; + } + + var doAfter = new DoAfterArgs(EntityManager, entity, rumComp.RummageDuration, + new RatKingRummageDoAfterEvent(), args.Target, args.Target) + { + BlockDuplicate = true, + BreakOnDamage = true, + BreakOnMove = true, + DistanceThreshold = 2f + }; + _popup.PopupPredicted(Loc.GetString("ratking-rummage-success"), args.Target, entity, PopupType.Small); + _doAfter.TryStartDoAfter(doAfter); + args.Handled = true; + } + //SS220 RatKing Tweaks and Changes end + private void OnDoAfterComplete(EntityUid uid, RatKingRummageableComponent component, RatKingRummageDoAfterEvent args) { if (args.Cancelled || component.Looted) diff --git a/Content.Shared/SS220/RatKing/RatKingActions.cs b/Content.Shared/SS220/RatKing/RatKingActions.cs new file mode 100644 index 000000000000..2f4376d7527e --- /dev/null +++ b/Content.Shared/SS220/RatKing/RatKingActions.cs @@ -0,0 +1,7 @@ +// © SS220, An EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt +using Content.Shared.Actions; + +namespace Content.Shared.SS220.RatKing; +public sealed partial class RatKingRummageActionEvent : EntityTargetActionEvent +{ +} diff --git a/Resources/Locale/ru-RU/ss220/prototypes/entities/mobs/npcs/regalrat.ftl b/Resources/Locale/ru-RU/ss220/prototypes/entities/mobs/npcs/regalrat.ftl new file mode 100644 index 000000000000..1c74968fdfb2 --- /dev/null +++ b/Resources/Locale/ru-RU/ss220/prototypes/entities/mobs/npcs/regalrat.ftl @@ -0,0 +1,8 @@ +ent-ActionRatKingRummage = Перерыть мусор + .desc = Покопайтесь в мусоре. Вдруг найдёте сыр! + +ratking-rummage-failure = Здесь нет мусора! + +ratking-rummage-looted-failure = Вы уже пробовали искать здесь! + +ratking-rummage-success = Вы копаетесь в мусоре! \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml index e220c6d6cddd..7b12f02e150d 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml @@ -17,6 +17,25 @@ - type: Tag tags: - BoxCardboard + #SS220 RatKing damageable foodboxes tweaks and Changes start + - type: Damageable + damageContainer: StructuralInorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 15 + behaviors: + - !type:EmptyAllContainersBehaviour + - !type:DoActsBehavior + acts: [ "Destruction" ] + #SS220 RatKing damageable foodboxes tweaks and Changes end - type: entity name: mousetrap box diff --git a/Resources/Prototypes/Catalog/Fills/Crates/service.yml b/Resources/Prototypes/Catalog/Fills/Crates/service.yml index 697d8853be42..c18d57cfb4a7 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/service.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/service.yml @@ -279,6 +279,11 @@ suffix: Filled parent: CrateTrashCart components: + #SS220 RatKing tweaks and changes start here + - type: RatKingRummageable + rummageLoot: RatKingLootTrashCans + - type: RegalRatSpawnLocation + #SS220 Ratking tweaks and changes end here - type: StorageFill contents: # Creatures diff --git a/Resources/Prototypes/Entities/Clothing/Head/misc.yml b/Resources/Prototypes/Entities/Clothing/Head/misc.yml index 85b439d8a56b..2e51397b6020 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/misc.yml @@ -165,9 +165,9 @@ description: It smells like dead rat. Lets you speak like one! components: - type: Sprite - sprite: Clothing/Head/Misc/fancycrown.rsi + sprite: SS220/Clothing/Head/Misc/fancycrown.rsi #SS220 resprited - type: Clothing - sprite: Clothing/Head/Misc/fancycrown.rsi + sprite: SS220/Clothing/Head/Misc/fancycrown.rsi #SS220 resprited - type: MobPrice price: 3000 - type: AddAccentClothing diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index 2db1f79d6c0b..e37b957b0a4b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -9,6 +9,17 @@ baseWalkSpeed : 3.00 baseSprintSpeed : 5.00 - type: InputMover + #SS220 RatKing tweaks and changes update start + - type: Puller + needsHands: false + - type: KeenHearing + visionRadius: 14 + highSensitiveVisionRadius: 0 + state: half + - type: RandomInsulation + list: + - 0.5 + #SS220 RatKing tweaks and changes update end - type: MobMover - type: HTN rootTask: @@ -57,6 +68,7 @@ types: Slash: 12 Piercing: 8 + Structural: 25 - type: Body prototype: Rat requiredLegs: 1 # TODO: More than 1 leg @@ -208,6 +220,7 @@ shader: unshaded - type: Bloodstream bloodMaxVolume: 40 #SS220 RatBlood fix + - type: Insulated #SS220 RatKing Tweaks and changes - type: SpriteMovement movementLayers: @@ -305,9 +318,16 @@ - type: weightedRandomEntity id: RatKingLoot weights: - RandomSpawner100: 66 #garbage - FoodCheese: 28 #food - IngotGold1: 5 #loot + # SS220 RatKing tweaks and changes rummage weight changes start + RandomSpawner100: 40 + FoodCheeseSlice: 40 + FoodCheese: 15 + FoodCakeCheese: 5 + # Official weights + #RandomSpawner100: 66 #garbage + #FoodCheese: 28 #food + #IngotGold1: 5 #loot + # SS220 RatKing tweaks and changes rummage weight changes end - type: entity id: ActionRatKingRaiseArmy @@ -317,7 +337,7 @@ - type: InstantAction useDelay: 4 icon: - sprite: Interface/Actions/actions_rat_king.rsi + sprite: SS220/Interface/Actions/actions_rat_king.rsi #SS220 resprited state: ratKingArmy event: !type:RatKingRaiseArmyActionEvent @@ -329,7 +349,7 @@ - type: InstantAction useDelay: 6 icon: - sprite: Interface/Actions/actions_rat_king.rsi + sprite: SS220/Interface/Actions/actions_rat_king.rsi #SS220 resprited state: ratKingDomain event: !type:RatKingDomainActionEvent diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml index 5162e76b139c..aac90f80ce43 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml @@ -116,6 +116,32 @@ - id: FoodSnackChocolateBar sound: path: /Audio/Effects/unwrap.ogg + #SS220 destructable foodboxes RatKing Tweaks and Changes start + - type: Damageable + damageContainer: StructuralInorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 5 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + FoodPacketChocolateTrash: + min: 1 + max: 1 + FoodSnackChocolateBar: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + #SS220 destructable foodboxes RatKing Tweaks and Changes end - type: entity name: chocolate bar @@ -429,6 +455,32 @@ - id: FoodSnackNutribrickOpen sound: path: /Audio/Effects/unwrap.ogg + #SS220 destructable foodboxes RatKing Tweaks and Changes start + - type: Damageable + damageContainer: StructuralInorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 5 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + FoodPacketMRETrash: + min: 1 + max: 1 + FoodSnackNutribrickOpen: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + #SS220 destructable foodboxes RatKing Tweaks and Changes end - type: entity id: FoodSnackNutribrickOpen @@ -473,6 +525,32 @@ - id: FoodSnackMREBrownieOpen sound: path: /Audio/Effects/unwrap.ogg + #SS220 destructable foodboxes RatKing Tweaks and Changes start + - type: Damageable + damageContainer: StructuralInorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 5 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + FoodPacketMRETrash: + min: 1 + max: 1 + FoodSnackMREBrownieOpen: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + #SS220 destructable foodboxes RatKing Tweaks and Changes end - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml index 016dc2dcc4fc..bbc9f8401559 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml @@ -711,6 +711,11 @@ offset: "0.0,0.03125" map: ["enum.PaperLabelVisuals.Layer"] - type: Cart #SS220-Cart-system +#SS220 RatKing tweaks and changes start + - type: RatKingRummageable + rummageLoot: RatKingLootTrashCans + - type: RegalRatSpawnLocation +#SS220 RatKing tweaks and changes here #SS220 CollisionTrash bgn - type: Fixtures fixtures: diff --git a/Resources/Prototypes/GameRules/pests.yml b/Resources/Prototypes/GameRules/pests.yml index 16f9d81097eb..47690152743b 100644 --- a/Resources/Prototypes/GameRules/pests.yml +++ b/Resources/Prototypes/GameRules/pests.yml @@ -62,7 +62,7 @@ weight: 6 duration: 50 minimumPlayers: 30 # Hopefully this is enough for the Rat King's potential Army (it was not, raised from 15 -> 30) - - type: VentCrittersRule + - type: RegalRatRule #SS220 RatKing tweaks and changes GameRule update entries: - id: MobMouse prob: 0.02 diff --git a/Resources/Prototypes/SS220/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/SS220/Entities/Mobs/NPCs/regalrat.yml new file mode 100644 index 000000000000..31101b36872b --- /dev/null +++ b/Resources/Prototypes/SS220/Entities/Mobs/NPCs/regalrat.yml @@ -0,0 +1,27 @@ +#Different action to loot trashpiles with own weights +- type: weightedRandomEntity + id: RatKingLootTrashPiles + weights: + RandomSpawner100: 75 + FoodCheeseSlice: 20 + FoodCheese: 5 + +- type: weightedRandomEntity + id: RatKingLootTrashCans + weights: + RandomSpawner100: 50 + MobCockroach: 25 + FoodTacoRat: 20 + FoodCheese: 5 + +- type: entity + id: ActionRatKingRummage + name: Rummage + description: Rummage trash to find some cheesy-cheese. + components: + - type: EntityTargetAction + itemIconStyle: BigAction + icon: + sprite: SS220/Interface/Actions/actions_rat_king.rsi + state: ratKingRummage + event: !type:RatKingRummageActionEvent diff --git a/Resources/Prototypes/SS220/Entities/Structures/Specific/trash.yml b/Resources/Prototypes/SS220/Entities/Structures/Specific/trash.yml index 73f823d69234..84a2a8828cd5 100644 --- a/Resources/Prototypes/SS220/Entities/Structures/Specific/trash.yml +++ b/Resources/Prototypes/SS220/Entities/Structures/Specific/trash.yml @@ -5,6 +5,9 @@ description: Среди этой кучи мешков, полных мусора, теряются последние искры надежды на чистоту и порядок. suffix: Мусор, Хлам components: + - type: RatKingRummageable + rummageLoot: RatKingLootTrashPiles + - type: RegalRatSpawnLocation - type: InteractionOutline - type: Sprite noRot: true diff --git a/Resources/Prototypes/SS220/Entities/Structures/Storage/trashcan.yml b/Resources/Prototypes/SS220/Entities/Structures/Storage/trashcan.yml index b7943fed4744..e0921e787f4c 100644 --- a/Resources/Prototypes/SS220/Entities/Structures/Storage/trashcan.yml +++ b/Resources/Prototypes/SS220/Entities/Structures/Storage/trashcan.yml @@ -22,6 +22,9 @@ - type: Construction graph: TrashCan node: TrashCan + - type: RatKingRummageable + rummageLoot: RatKingLootTrashCans + - type: RegalRatSpawnLocation - type: Fixtures fixtures: fix1: diff --git a/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/equipped-HELMET.png b/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/equipped-HELMET.png new file mode 100644 index 000000000000..d75483a1a712 Binary files /dev/null and b/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/icon.png b/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/icon.png new file mode 100644 index 000000000000..e26b220d244a Binary files /dev/null and b/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/icon.png differ diff --git a/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/meta.json b/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/meta.json new file mode 100644 index 000000000000..137e2c460af5 --- /dev/null +++ b/Resources/Textures/SS220/Clothing/Head/Misc/fancycrown.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt", + "copyright": "Made by EstKemran (Github) for SS220", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/meta.json b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/meta.json index 21cbab539b89..b21bd85c6711 100644 --- a/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/meta.json +++ b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt", - "copyright": "Sprited by temnolesje (Discord) for SS220", + "copyright": "Sprited by temnolesje (Discord) for SS220. ratKingArmy, ratKingDomain and ratKingRummage sprited by Estkemran (Github) for SS220", "size": { "x": 32, "y": 32 @@ -30,6 +30,15 @@ }, { "name": "stayOff" + }, + { + "name": "ratKingArmy" + }, + { + "name": "ratKingDomain" + }, + { + "name": "ratKingRummage" } ] } diff --git a/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingArmy.png b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingArmy.png new file mode 100644 index 000000000000..5e4d678837b7 Binary files /dev/null and b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingArmy.png differ diff --git a/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingDomain.png b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingDomain.png new file mode 100644 index 000000000000..2e845633f214 Binary files /dev/null and b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingDomain.png differ diff --git a/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingRummage.png b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingRummage.png new file mode 100644 index 000000000000..20e422f6e2c7 Binary files /dev/null and b/Resources/Textures/SS220/Interface/Actions/actions_rat_king.rsi/ratKingRummage.png differ