diff --git a/Content.Server/Administration/Managers/IBanManager.cs b/Content.Server/Administration/Managers/IBanManager.cs
index e7bba305846..ed3fa6f39e0 100644
--- a/Content.Server/Administration/Managers/IBanManager.cs
+++ b/Content.Server/Administration/Managers/IBanManager.cs
@@ -48,7 +48,7 @@ public interface IBanManager
/// Reason for the ban
/// Number of minutes to ban for. 0 and null mean permanent
/// Time when the ban was applied, used for grouping role bans
- public void CreateAntagban(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan);
+ public void CreateAntagban(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan);
///
/// Pardons a role ban for the specified target, username or GUID
diff --git a/Content.Server/Backmen/Administration/Managers/BanManager.cs b/Content.Server/Backmen/Administration/Managers/BanManager.cs
index 6cba8d5c0b0..bf90438498d 100644
--- a/Content.Server/Backmen/Administration/Managers/BanManager.cs
+++ b/Content.Server/Backmen/Administration/Managers/BanManager.cs
@@ -22,7 +22,7 @@ public async void CreateAntagban(NetUserId? target,
string? targetUsername,
NetUserId? banningAdmin,
(IPAddress, int)? addressRange,
- ImmutableArray? hwid,
+ ImmutableTypedHwid? hwid,
string role,
uint? minutes,
NoteSeverity severity,
diff --git a/Content.Server/Backmen/Economy/EconomySystem.cs b/Content.Server/Backmen/Economy/EconomySystem.cs
index 150674e7a91..63aa3f6c654 100644
--- a/Content.Server/Backmen/Economy/EconomySystem.cs
+++ b/Content.Server/Backmen/Economy/EconomySystem.cs
@@ -20,6 +20,7 @@
using Content.Shared.CartridgeLoader;
using Content.Shared.Chat;
using Content.Shared.Database;
+using Content.Shared.GameTicking;
using Content.Shared.Inventory;
using Content.Shared.Objectives.Components;
using Content.Shared.PDA;
diff --git a/Content.Server/Backmen/GameTicking/Rules/FleshCultRuleSystem.cs b/Content.Server/Backmen/GameTicking/Rules/FleshCultRuleSystem.cs
index d1159484e86..dda79052317 100644
--- a/Content.Server/Backmen/GameTicking/Rules/FleshCultRuleSystem.cs
+++ b/Content.Server/Backmen/GameTicking/Rules/FleshCultRuleSystem.cs
@@ -17,6 +17,7 @@
using Content.Shared.Backmen.Abilities.Psionics;
using Content.Shared.Backmen.CCVar;
using Content.Shared.Backmen.Flesh;
+using Content.Shared.GameTicking;
using Content.Shared.GameTicking.Components;
using Content.Shared.Humanoid;
using Content.Shared.Mind;
diff --git a/Content.Server/Backmen/Loadout/LoadoutSystem.cs b/Content.Server/Backmen/Loadout/LoadoutSystem.cs
index 70955061ddb..8be83f53771 100644
--- a/Content.Server/Backmen/Loadout/LoadoutSystem.cs
+++ b/Content.Server/Backmen/Loadout/LoadoutSystem.cs
@@ -4,6 +4,7 @@
using Content.Server.Hands.Systems;
using Content.Server.Storage.EntitySystems;
using Content.Shared.Clothing.Components;
+using Content.Shared.GameTicking;
using Content.Shared.Inventory;
using Robust.Shared.Prototypes;
diff --git a/Content.Server/Backmen/Reinforcement/ReinforcementSystem.cs b/Content.Server/Backmen/Reinforcement/ReinforcementSystem.cs
index a1f2227cc46..23d0d691a04 100644
--- a/Content.Server/Backmen/Reinforcement/ReinforcementSystem.cs
+++ b/Content.Server/Backmen/Reinforcement/ReinforcementSystem.cs
@@ -16,6 +16,7 @@
using Content.Shared.Backmen.Reinforcement;
using Content.Shared.Backmen.Reinforcement.Components;
using Content.Shared.Database;
+using Content.Shared.GameTicking;
using Content.Shared.Humanoid;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
diff --git a/Content.Server/Backmen/RoleWhitelist/WhitelistSystem.cs b/Content.Server/Backmen/RoleWhitelist/WhitelistSystem.cs
index 2e84cf12691..ba0cbc2440d 100644
--- a/Content.Server/Backmen/RoleWhitelist/WhitelistSystem.cs
+++ b/Content.Server/Backmen/RoleWhitelist/WhitelistSystem.cs
@@ -5,6 +5,7 @@
using Content.Shared.Backmen;
using Content.Shared.Backmen.WL;
using Content.Shared.CombatMode.Pacification;
+using Content.Shared.GameTicking;
using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Species.Components;
using JetBrains.Annotations;
diff --git a/Content.Server/Backmen/Shipwrecked/ShipwreckedRuleSystem.cs b/Content.Server/Backmen/Shipwrecked/ShipwreckedRuleSystem.cs
index cd1a2eb3ff8..a0d389dd5e0 100644
--- a/Content.Server/Backmen/Shipwrecked/ShipwreckedRuleSystem.cs
+++ b/Content.Server/Backmen/Shipwrecked/ShipwreckedRuleSystem.cs
@@ -54,6 +54,7 @@
using Content.Shared.Dataset;
using Content.Shared.Doors.Components;
using Content.Shared.FixedPoint;
+using Content.Shared.GameTicking;
using Content.Shared.GameTicking.Components;
using Content.Shared.Ghost;
using Content.Shared.Gravity;
@@ -147,6 +148,7 @@ public sealed class ShipwreckedRuleSystem : GameRuleSystem]
- private const string PlanetNames = "names_borer";
+ [ValidatePrototypeId]
+ private const string PlanetNames = "NamesBorer";
private const int MaxPreloadOffset = 200;
@@ -427,7 +429,7 @@ private void SpawnPlanet(EntityUid uid, ShipwreckedRuleComponent component)
}
// planetName
- var planetName = SharedSalvageSystem.GetFTLName(_prototypeManager.Index(PlanetNames), seed);
+ var planetName = _salvageSystem.GetFTLName(_prototypeManager.Index(PlanetNames), seed);
_metadata.SetEntityName(planetMapUid, planetName);
// Позиция карта (точка начала)
diff --git a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs
index fd0f743576e..90122c9d553 100644
--- a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs
+++ b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs
@@ -84,12 +84,12 @@ private void OnPersonAssigned(EntityUid uid, PickRandomPersonComponent comp, ref
}
// start-backmen: centcom
- private void FilterCentCom(List minds)
+ private void FilterCentCom(HashSet> minds)
{
var centcom = _prototype.Index(_ccDep);
foreach (var mindId in minds.ToArray())
{
- if (!_roleSystem.MindHasRole(mindId, out var job) || job.Value.Comp1.JobPrototype == null)
+ if (!_roleSystem.MindHasRole(mindId.Owner, out var job) || job.Value.Comp1.JobPrototype == null)
{
continue;
}
diff --git a/Resources/Prototypes/Catalog/Fills/Crates/armory.yml b/Resources/Prototypes/Catalog/Fills/Crates/armory.yml
index 19dcfe970db..3864946c6a8 100644
--- a/Resources/Prototypes/Catalog/Fills/Crates/armory.yml
+++ b/Resources/Prototypes/Catalog/Fills/Crates/armory.yml
@@ -82,8 +82,14 @@
amount: 2
- id: ClothingHeadHelmetRiot
amount: 2
- - id: WeaponShotgunEnforcerRubber
+ # start-backmen: rebalance
+ - id: WeaponLauncherM81
amount: 2
+ - id: BoxGrenadeTearGas
+ amount: 2
+ - id: BoxGrenadeNonLetal
+ amount: 2
+ # end-backmen: rebalance
- id: BoxBeanbag
amount: 2
- id: RiotShield
diff --git a/Resources/Prototypes/Catalog/Fills/Crates/security.yml b/Resources/Prototypes/Catalog/Fills/Crates/security.yml
index b15ba4e7022..550888410b3 100644
--- a/Resources/Prototypes/Catalog/Fills/Crates/security.yml
+++ b/Resources/Prototypes/Catalog/Fills/Crates/security.yml
@@ -42,28 +42,6 @@
# - Pepperspray
# - GrenadeTeargas
-- type: entity
- id: CrateSecurityRiot
- parent: CrateSecgear
- name: swat crate
- description: Contains two sets of riot armor, helmets, shields, and enforcers loaded with beanbags. Extra ammo is included. Requires Armory access to open.
- components:
- - type: StorageFill
- contents:
- - id: ClothingOuterArmorRiot
- amount: 2
- - id: ClothingHeadHelmetRiot
- amount: 2
- - id: WeaponLauncherM81 #Backmen Rebalance Start
- amount: 2
- - id: BoxGrenadeTearGas
- amount: 2
- - id: BoxGrenadeNonLetal
- amount: 2 #Backmen Rebalance End
- - id: RiotShield
- amount: 2
-# - SecGasmask
-
- type: entity
id: CrateSecuritySupplies
parent: CrateSecgear
diff --git a/Resources/Prototypes/Corvax/Entities/Objects/Decoration/flora.yml b/Resources/Prototypes/Corvax/Entities/Objects/Decoration/flora.yml
index ee7e1066caf..ff71850ac7d 100644
--- a/Resources/Prototypes/Corvax/Entities/Objects/Decoration/flora.yml
+++ b/Resources/Prototypes/Corvax/Entities/Objects/Decoration/flora.yml
@@ -61,9 +61,6 @@
- id: PresentRandomCash
prob: 0.20
orGroup: present
- - id: PresentRandomAsh
- prob: 0.05
- orGroup: present
receivedPopup: christmas-tree-got-gift
deniedPopup: christmas-tree-no-gift
requiredHoliday: FestiveSeason
diff --git a/Resources/Prototypes/_Backmen/Entities/Mobs/Player/Silicons/BPLA.yml b/Resources/Prototypes/_Backmen/Entities/Mobs/Player/Silicons/BPLA.yml
index 34fd717c06a..2b6578d1930 100644
--- a/Resources/Prototypes/_Backmen/Entities/Mobs/Player/Silicons/BPLA.yml
+++ b/Resources/Prototypes/_Backmen/Entities/Mobs/Player/Silicons/BPLA.yml
@@ -12,6 +12,91 @@
tags:
- InnateDontDelete
+# Borgs
+- type: entity
+ save: false
+ abstract: true
+ id: PlayerSiliconBase #for player controlled silicons
+ # parent:
+ # - MobFlammable
+ # - BaseMobSpecies
+ components:
+ - type: Reactive
+ groups:
+ Acidic: [Touch]
+ - type: Input
+ context: "human"
+ - type: DamageOnHighSpeedImpact
+ damage:
+ types:
+ Blunt: 5
+ soundHit:
+ collection: MetalThud
+ - type: Clickable
+ - type: Damageable
+ damageContainer: Inorganic
+ - type: Bloodstream
+ bloodReagent: Oil
+ bloodlossDamage:
+ types:
+ Bloodloss:
+ 1
+ bloodlossHealDamage:
+ types:
+ Bloodloss:
+ -1
+ - type: InteractionOutline
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ # Circles, cuz rotation of rectangles looks very bad
+ !type:PhysShapeCircle
+ radius: 0.35
+ density: 50
+ mask:
+ - MobMask
+ layer:
+ - MobLayer
+ - type: MovementSpeedModifier
+ baseWalkSpeed : 4
+ baseSprintSpeed : 3
+ - type: Sprite
+ noRot: true
+ drawdepth: Mobs
+ - type: Physics
+ bodyType: KinematicController
+ - type: Hands
+ showInHands: false
+ - type: Body
+ prototype: Drone
+ - type: IntrinsicRadioReceiver
+ - type: IntrinsicRadioTransmitter
+ channels:
+ - Binary
+ - type: ActiveRadio
+ channels:
+ - Binary
+ - Common
+ - type: DoAfter
+ - type: ComplexInteraction
+ - type: Examiner
+ - type: Puller
+ - type: Pullable
+ - type: StandingState
+ - type: Alerts
+ - type: ProtectedFromStepTriggers
+ slots: WITHOUT_POCKET
+ - type: LanguageSpeaker
+ currentLanguage: TauCetiBasic
+ - type: LanguageKnowledge #backmen: languages
+ speaks:
+ - Binary
+ - TauCetiBasic
+ understands:
+ - Binary
+ - TauCetiBasic
+
- type: entity
name: Blue Space Drone
id: BackmenDrone
diff --git a/Resources/Prototypes/_Backmen/Entities/Mobs/Player/humanoids.yml b/Resources/Prototypes/_Backmen/Entities/Mobs/Player/humanoids.yml
index a4f7c4984c8..d012701115b 100644
--- a/Resources/Prototypes/_Backmen/Entities/Mobs/Player/humanoids.yml
+++ b/Resources/Prototypes/_Backmen/Entities/Mobs/Player/humanoids.yml
@@ -29,12 +29,6 @@
- type: RandomMetadata
nameSegments: [clown_basefun]
- type: Clumsy
- clumsyDamage:
- types:
- Blunt: 5
- Piercing: 4
- groups:
- Burn: 3
- type: TriggerOnMobstateChange
mobState:
- Dead
diff --git a/Resources/Prototypes/_Backmen/Personal/chara.yml b/Resources/Prototypes/_Backmen/Personal/chara.yml
index 47bfafce53a..f5398a2399f 100644
--- a/Resources/Prototypes/_Backmen/Personal/chara.yml
+++ b/Resources/Prototypes/_Backmen/Personal/chara.yml
@@ -34,7 +34,6 @@
- type: Hypospray
solutionName: pen
transferAmount: 25
- clumsyFailChance: 0
- type: StaticPrice
price: 500
- type: Tag