diff --git a/Content.Server/Changeling/ChangelingSystem.Abilities.cs b/Content.Server/Changeling/ChangelingSystem.Abilities.cs index b837e9a912..ee5b51aa90 100644 --- a/Content.Server/Changeling/ChangelingSystem.Abilities.cs +++ b/Content.Server/Changeling/ChangelingSystem.Abilities.cs @@ -595,6 +595,8 @@ public sealed partial class ChangelingSystem if (!_mindSystem.TryGetMind(uid, out var mindId, out _)) return; + component.AbsorbedCount++; + if (TryComp(uid, out SharedPullerComponent? puller) && puller.Pulling is { } pulled && TryComp(pulled, out SharedPullableComponent? pullable)) { diff --git a/Content.Server/Changeling/Objectives/ChangelingConditionsSystem.cs b/Content.Server/Changeling/Objectives/ChangelingConditionsSystem.cs index 06bee9af8c..0eb98cc90d 100644 --- a/Content.Server/Changeling/Objectives/ChangelingConditionsSystem.cs +++ b/Content.Server/Changeling/Objectives/ChangelingConditionsSystem.cs @@ -66,7 +66,7 @@ public sealed class ChangelingConditionsSystem : EntitySystem if (!TryComp(mind.CurrentEntity, out var changelingComponent)) return 0f; - var absorbed = changelingComponent.AbsorbedEntities.Count - 1; // Because first - it's the owner + var absorbed = changelingComponent.AbsorbedCount; // Because first - it's the owner if (requiredDna == absorbed) return 1f; @@ -90,7 +90,7 @@ public sealed class ChangelingConditionsSystem : EntitySystem if (!TryComp(mind.CurrentEntity, out var changelingComponent)) return 0f; - var selfAbsorbed = changelingComponent.AbsorbedEntities.Count - 1; // Because first - it's the owner + var selfAbsorbed = changelingComponent.AbsorbedCount; // Because first - it's the owner var query = EntityQueryEnumerator(); @@ -100,7 +100,7 @@ public sealed class ChangelingConditionsSystem : EntitySystem if (uid == mind.CurrentEntity) continue; //don't include self - var absorbed = comp.AbsorbedEntities.Count - 1; + var absorbed = comp.AbsorbedCount; otherAbsorbed.Add(absorbed); } diff --git a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs index 9e88d08e3a..9b2232e899 100644 --- a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs @@ -187,7 +187,7 @@ public sealed class RadioDeviceSystem : EntitySystem return; // no feedback loops please. if (_recentlySent.Add((args.Message, args.Source))) - _radio.SendRadioMessage(args.Source, args.Message, _protoMan.Index(component.BroadcastChannel), uid); + _radio.SendRadioMessage(args.Source, args.Message, _protoMan.Index(component.BroadcastChannel), uid, false); // WD EDIT } private void OnAttemptListen(EntityUid uid, RadioMicrophoneComponent component, ListenAttemptEvent args) diff --git a/Content.Shared/Changeling/ChangelingComponent.cs b/Content.Shared/Changeling/ChangelingComponent.cs index e8b7e0e0e7..9b6a1c5ba9 100644 --- a/Content.Shared/Changeling/ChangelingComponent.cs +++ b/Content.Shared/Changeling/ChangelingComponent.cs @@ -38,6 +38,9 @@ public sealed partial class ChangelingComponent : Component [ViewVariables(VVAccess.ReadOnly), DataField("absorbedEntities")] public Dictionary AbsorbedEntities = new(); + [ViewVariables] + public int AbsorbedCount = 0; + [ViewVariables(VVAccess.ReadWrite), DataField("AbsorbDNACost")] public int AbsorbDnaCost; diff --git a/Content.Shared/_White/Cult/Systems/CultItemSystem.cs b/Content.Shared/_White/Cult/Systems/CultItemSystem.cs index a50c6651b5..67b75846f9 100644 --- a/Content.Shared/_White/Cult/Systems/CultItemSystem.cs +++ b/Content.Shared/_White/Cult/Systems/CultItemSystem.cs @@ -23,7 +23,7 @@ public sealed class CultItemSystem : EntitySystem private void OnEquipAttempt(EntityUid uid, CultItemComponent component, BeingEquippedAttemptEvent args) { - if (CanUse(args.Equipee)) + if (CanUse(args.Equipee) && CanUse(args.EquipTarget)) return; args.Cancel(); diff --git a/Resources/Prototypes/Catalog/changeling_catalog.yml b/Resources/Prototypes/Catalog/changeling_catalog.yml index f817ac3d87..7d8bbcaff9 100644 --- a/Resources/Prototypes/Catalog/changeling_catalog.yml +++ b/Resources/Prototypes/Catalog/changeling_catalog.yml @@ -18,7 +18,7 @@ description: changeling-ability-changeling-armblade-desc productAction: ActionArmblade cost: - ChangelingPoint: 3 + ChangelingPoint: 2 categories: - ChangelingAbilities conditions: @@ -31,7 +31,7 @@ description: changeling-ability-changeling-shield-desc productAction: ActionShield cost: - ChangelingPoint: 3 + ChangelingPoint: 1 categories: - ChangelingAbilities conditions: @@ -57,7 +57,7 @@ description: changeling-ability-tentacle-arm-desc productAction: ActionTentacleArm cost: - ChangelingPoint: 4 + ChangelingPoint: 2 categories: - ChangelingAbilities conditions: @@ -97,7 +97,7 @@ description: changeling-ability-blind-sting-desc productAction: ActionBlindSting cost: - ChangelingPoint: 2 + ChangelingPoint: 1 categories: - ChangelingStings conditions: @@ -110,7 +110,7 @@ description: changeling-ability-mute-sting-desc productAction: ActionMuteSting cost: - ChangelingPoint: 3 + ChangelingPoint: 2 categories: - ChangelingStings conditions: @@ -136,7 +136,7 @@ description: changeling-ability-cryo-sting-desc productAction: ActionCryoSting cost: - ChangelingPoint: 3 + ChangelingPoint: 2 categories: - ChangelingStings conditions: diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index d892b31fac..4dc3235456 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -101,6 +101,7 @@ interactSuccessString: petting-success-holo interactFailureString: petting-failure-holo successChance: 0.7 + - type: MovementAlwaysTouching - type: Tag tags: - CannotSuicide diff --git a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml index 5574457981..91a6c60465 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml @@ -340,7 +340,6 @@ noSpawn: true components: - type: SubdermalImplant - permanent: true - type: Tag tags: - MindShield diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml index 9ae71e27c6..9a92b88590 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml @@ -84,6 +84,8 @@ state: icon - type: MeleeWeapon wideAnimationRotation: -135 + soundHit: + path: "/Audio/Weapons/smash.ogg" attackRate: 0.75 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml index 4b1791e2ae..ce96e08eb2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml @@ -13,6 +13,8 @@ state: icon - type: MeleeWeapon wideAnimationRotation: 135 + soundHit: + path: "/Audio/Weapons/smash.ogg" swingLeft: true attackRate: 0.75 damage: diff --git a/Resources/Prototypes/StatusEffects/health.yml b/Resources/Prototypes/StatusEffects/health.yml index 8516c9aee9..9f0e86a62f 100644 --- a/Resources/Prototypes/StatusEffects/health.yml +++ b/Resources/Prototypes/StatusEffects/health.yml @@ -2,6 +2,6 @@ id: HealthIconFine priority: 0 icon: - sprite: Interface/Misc/health_icons.rsi - state: Fine + sprite: /Textures/Interface/Misc/health_state.rsi + state: empty_state locationPreference: Right diff --git a/Resources/Prototypes/White/Catalog/uplink.yml b/Resources/Prototypes/White/Catalog/uplink.yml index 38cceb5a44..9c6da52d4c 100644 --- a/Resources/Prototypes/White/Catalog/uplink.yml +++ b/Resources/Prototypes/White/Catalog/uplink.yml @@ -84,7 +84,7 @@ icon: { sprite: /Textures/White/Objects/Weapons/hardlight_spear.rsi, state: spear } productEntity: HardlightSpearImplanter cost: - Telecrystal: 15 + Telecrystal: 12 categories: - UplinkImplants @@ -99,6 +99,27 @@ Telecrystal: 3 categories: - UplinkArmor + conditions: + - !type:StoreWhitelistCondition + blacklist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkNightGogglesNukie + name: ПНВ [Хамелеон] + description: Теперь ты видишь во тьме! + productEntity: ClothingEyesNightVisionGogglesNukie + icon: { sprite: White/Clothing/Head/nightvision.rsi, state: icon } + cost: + Telecrystal: 3 + categories: + - UplinkArmor + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink #- type: listing # id: UplinkBattleAxe diff --git a/Resources/Prototypes/White/Economy/salary.yml b/Resources/Prototypes/White/Economy/salary.yml index 71da497716..e3aa60202f 100644 --- a/Resources/Prototypes/White/Economy/salary.yml +++ b/Resources/Prototypes/White/Economy/salary.yml @@ -29,14 +29,18 @@ AtmosphericTechnician: 400 StationEngineer: 300 TechnicalAssistant: 200 + SeniorEngineer: 400 Chemist: 400 MedicalDoctor: 300 MedicalIntern: 200 Psychologist: 200 Paramedic: 400 + SeniorPhysician: 400 SecurityCadet: 200 SecurityOfficer: 300 Detective: 400 Warden: 500 + SeniorOfficer: 400 Scientist: 300 ResearchAssistant: 200 + SeniorResearcher: 400 diff --git a/Resources/Prototypes/White/Entities/Clothing/Head/night_vision_goggle.yml b/Resources/Prototypes/White/Entities/Clothing/Head/night_vision_goggle.yml index e771deb421..a46e119761 100644 --- a/Resources/Prototypes/White/Entities/Clothing/Head/night_vision_goggle.yml +++ b/Resources/Prototypes/White/Entities/Clothing/Head/night_vision_goggle.yml @@ -1,4 +1,4 @@ -# Night Vision Goggles +# Night Vision Goggles - type: entity parent: ClothingEyesBase id: ClothingEyesNightVisionGoggles @@ -26,3 +26,12 @@ interfaces: - key: enum.ChameleonUiKey.Key type: ChameleonBoundUserInterface + +# Night Vision Goggles (Chameleon) Nuke Ops +- type: entity + parent: ClothingEyesNightVisionGogglesSyndie + id: ClothingEyesNightVisionGogglesNukie + suffix: "Хамелеон, Ядерные Оперативники" + components: + - type: ShowSyndicateIcons + - type: ShowSecurityIcons diff --git a/Resources/Prototypes/White/Entities/Objects/Weapons/hardlight_spear.yml b/Resources/Prototypes/White/Entities/Objects/Weapons/hardlight_spear.yml index 2b68c6e12e..afa4339a54 100644 --- a/Resources/Prototypes/White/Entities/Objects/Weapons/hardlight_spear.yml +++ b/Resources/Prototypes/White/Entities/Objects/Weapons/hardlight_spear.yml @@ -43,7 +43,7 @@ energy: 2 color: yellow - type: ChangeThrowForce - throwForce: 15 + throwForce: 20 - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/White/StatusEffects/criminal_records.yml b/Resources/Prototypes/White/StatusEffects/criminal_records.yml index 9ff35b60b0..108360cd17 100644 --- a/Resources/Prototypes/White/StatusEffects/criminal_records.yml +++ b/Resources/Prototypes/White/StatusEffects/criminal_records.yml @@ -1,47 +1,47 @@ - type: statusIcon id: CriminalRecordIcon abstract: true - priority: 3 + priority: 2 locationPreference: Right - type: statusIcon parent: CriminalRecordIcon id: CriminalRecordIconReleased icon: - sprite: White/Interface/records.rsi + sprite: /Textures/White/Interface/records.rsi state: released - type: statusIcon parent: CriminalRecordIcon id: CriminalRecordIconDischarged icon: - sprite: White/Interface/records.rsi + sprite: /Textures/White/Interface/records.rsi state: discharged - type: statusIcon parent: CriminalRecordIcon id: CriminalRecordIconParolled icon: - sprite: White/Interface/records.rsi + sprite: /Textures/White/Interface/records.rsi state: parolled - type: statusIcon parent: CriminalRecordIcon id: CriminalRecordIconSuspected icon: - sprite: White/Interface/records.rsi + sprite: /Textures/White/Interface/records.rsi state: suspected - type: statusIcon parent: CriminalRecordIcon id: CriminalRecordIconWanted icon: - sprite: White/Interface/records.rsi + sprite: /Textures/White/Interface/records.rsi state: wanted - type: statusIcon parent: CriminalRecordIcon id: CriminalRecordIconIncarcerated icon: - sprite: White/Interface/records.rsi + sprite: /Textures/White/Interface/records.rsi state: incarcerated