diff --git a/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs b/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs index 0b3548a55e6..0478e95e5b6 100644 --- a/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs +++ b/Content.Client/Shuttles/UI/BaseShuttleControl.xaml.cs @@ -327,7 +327,7 @@ private void DrawCompassNeedle( handle.DrawString(Font, labelPosition, label, 0.9f, color.WithAlpha(0.7f)); } - private static void DrawArrowLine( + protected static void DrawArrowLine( DrawingHandleScreen handle, Vector2 start, Vector2 end, diff --git a/Content.Client/Shuttles/UI/ShuttleNavControl.xaml.cs b/Content.Client/Shuttles/UI/ShuttleNavControl.xaml.cs index 142e60ee798..decf317fa98 100644 --- a/Content.Client/Shuttles/UI/ShuttleNavControl.xaml.cs +++ b/Content.Client/Shuttles/UI/ShuttleNavControl.xaml.cs @@ -14,6 +14,7 @@ using JetBrains.Annotations; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; +using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; @@ -34,6 +35,7 @@ public partial class ShuttleNavControl : BaseShuttleControl // Mono { [Dependency] private IMapManager _mapManager = default!; [Dependency] private IUserInterfaceManager _uiManager = default!; + [Dependency] private IPlayerManager _player = default!; // Mono private readonly DetectionSystem _detection; // Mono private readonly StationSystem _station; // Frontier private readonly SharedShuttleSystem _shuttles; @@ -647,6 +649,20 @@ protected override void Draw(DrawingHandleScreen handle) handle.DrawPrimitives(DrawPrimitiveTopology.TriangleFan, radarPosVerts, Color.Lime); + // Mono - draw an arrow from our position showing which way our character is facing + if (radar is { FollowEntity: true } && _player.LocalEntity is { } localPlayer) + { + var facingWorldDir = _transform.GetWorldRotation(localPlayer).ToWorldVec(); + var facingScreenDir = Vector2.TransformNormal(facingWorldDir, worldToView); + if (facingScreenDir != Vector2.Zero) + { + facingScreenDir = Vector2.Normalize(facingScreenDir); + var facingOrigin = MidPointVector; + var facingTip = facingOrigin + facingScreenDir * 18f; + DrawArrowLine(handle, facingOrigin, facingTip, Color.Yellow, 6f); + } + } + var viewBounds = new Box2Rotated(new Box2(-WorldRange, -WorldRange, WorldRange, WorldRange).Translated(mapPos.Position), worldRot, mapPos.Position); var viewAABB = viewBounds.CalcBoundingBox(); diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index ed634a59577..91521a3b0ff 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -76,6 +76,7 @@ public abstract partial class SharedGunSystem : EntitySystem protected EntityQuery _physQuery; // Mono protected EntityQuery _projQuery; // Mono + protected EntityQuery _buckleQuery; // Mono private EntityQuery _autoShootGunQuery; // Mono private const float InteractNextFire = 0.3f; @@ -118,6 +119,7 @@ public override void Initialize() _physQuery = GetEntityQuery(); // Mono _projQuery = GetEntityQuery(); // Mono + _buckleQuery = GetEntityQuery(); // Mono _autoShootGunQuery = GetEntityQuery(); } @@ -727,6 +729,12 @@ public void CauseImpulse(EntityCoordinates toCoordinates, Entity e impulseCoord = TransformSystem.WithEntityId(impulseCoord, selfXform.ParentUid); var toEnt = impulseCoord.EntityId; + + // Mono - if the shooter is buckled (e.g. riding a vehicle), apply the recoil to whatever + // they're buckled to instead, so the kick doesn't shove them out of their seat. + if (_buckleQuery.TryComp(toEnt, out var buckle) && buckle.BuckledTo is { } buckledTo) + toEnt = buckledTo; + if (!_physQuery.TryComp(toEnt, out var toBody)) return; diff --git a/Resources/Locale/en-US/_Mono/traits/traits.ftl b/Resources/Locale/en-US/_Mono/traits/traits.ftl index eb1ceb20e08..012d88bdb01 100644 --- a/Resources/Locale/en-US/_Mono/traits/traits.ftl +++ b/Resources/Locale/en-US/_Mono/traits/traits.ftl @@ -69,10 +69,10 @@ trait-steadfast-name = Steadfast trait-steadfast-desc = When others would buckle from the weight of your injuries, you still march forward unrelentingly. For most species, this reduces your movement slow: 25% at 60 damage becomes 17% at 70 damage, and 45% at 80 damage becomes 30% at 90 damage. trait-dermal-armor-name = Dermal Armor -trait-dermal-armor-desc = Your skin has been replaced with a flexible, yet sturdy, hard-polymer shell wrapped in a layer of synthetic flesh. Provides 3.5 flat reduction to Blunt, Slash, and Piercing damage, but you take 25% more Shock damage. +trait-dermal-armor-desc = Your skin has been replaced with a flexible, yet sturdy, hard-polymer shell wrapped in a layer of synthetic flesh. Provides 5 flat reduction to Blunt, Slash, and Piercing damage, but you take 40% more Shock damage and an extra 2.5 Heat damage. trait-ironman-name = Ironman -trait-ironman-desc = You live strictly on hard cash. You can't withdraw from your bank account, but you start the shift with a Baeg Voucher to make your way. +trait-ironman-desc = You live strictly on hard cash. You can't withdraw from your bank account, but you start the shift with a flatpacked hoverbike in a box to make your way. trait-temperature-tolerance-name = Temperature Tolerance trait-temperature-tolerance-desc = You have a notable tolerance for lower temperatures. You can stand for extended periods in conditions just below freezing, like a walk-in fridge or the sunlit slopes of Glacier. diff --git a/Resources/Locale/en-US/seeds/seeds.ftl b/Resources/Locale/en-US/seeds/seeds.ftl index 567626fa49f..aa5ff2f1e16 100644 --- a/Resources/Locale/en-US/seeds/seeds.ftl +++ b/Resources/Locale/en-US/seeds/seeds.ftl @@ -48,8 +48,9 @@ seeds-bluetomato-name = blue tomato seeds-bluetomato-display-name = blue tomato plant seeds-bloodtomato-name = blood tomato seeds-bloodtomato-display-name = blood tomato plant -seeds-killertomato-name = tomato killer -seeds-killertomato-display-name = tomato killer plant +# Forge-Change: hidden, killerTomato seed/mutation disabled (kept for upstream merges) +# seeds-killertomato-name = tomato killer +# seeds-killertomato-display-name = tomato killer plant seeds-eggplant-name = eggplant seeds-eggplant-display-name = eggplants seeds-apple-name = apple diff --git a/Resources/Locale/ru-RU/_Mono/traits/traits.ftl b/Resources/Locale/ru-RU/_Mono/traits/traits.ftl index b0bc587d125..4a2d145bc96 100644 --- a/Resources/Locale/ru-RU/_Mono/traits/traits.ftl +++ b/Resources/Locale/ru-RU/_Mono/traits/traits.ftl @@ -69,7 +69,7 @@ trait-self-aware-desc = У тебя развитая интуиция тела trait-ironman-name = Железный человек trait-ironman-desc = Вы живёте исключительно на наличные. Вы не можете снимать деньги со своего банковского счёта. - Вы получаете ваучер на шаттл, Удачи. + Вы получаете коробку с упакованным ховербайком, Удачи. trait-thieving-name = Воровская сноровка trait-thieving-desc = У вас ловкие руки и талант убеждать людей расставаться с имуществом. Вы распознаёте спрятанные по карманам предметы и воруете на 50% быстрее. @@ -87,7 +87,7 @@ trait-steadfast-name = Несгибаемость trait-steadfast-desc = Когда другие сгибаются под тяжестью ран, вы продолжаете идти вперёд. Для большинства видов эта черта снижает замедление от урона: 25% при 60 урона становится 17% при 70, а 45% при 80 — 30% при 90. trait-dermal-armor-name = Дермальная броня -trait-dermal-armor-desc = Ваша кожа заменена гибким, но прочным полимерным панцирем с покрытием из синтетической плоти. Даёт плоское снижение урона на 3.5 от тупого, режущего и колющего урона, но вы получаете на 25% больше урона от электрошока. +trait-dermal-armor-desc = Ваша кожа заменена гибким, но прочным полимерным панцирем с покрытием из синтетической плоти. Даёт плоское снижение урона на 5 от тупого, режущего и колющего урона, но вы получаете на 40% больше урона от электрошока и дополнительно на 2.5 больше урона от жара. trait-temperature-tolerance-name = Устойчивость к холоду trait-temperature-tolerance-desc = У вас заметно повышенная устойчивость к низким температурам. Вы можете дольше находиться в условиях чуть ниже нуля, например в холодильной камере или на освещённых склонах Глейсера. diff --git a/Resources/Locale/ru-RU/seeds/seeds.ftl b/Resources/Locale/ru-RU/seeds/seeds.ftl index bb20091e389..36af074f5e9 100644 --- a/Resources/Locale/ru-RU/seeds/seeds.ftl +++ b/Resources/Locale/ru-RU/seeds/seeds.ftl @@ -40,8 +40,9 @@ seeds-bluetomato-name = синий томат seeds-bluetomato-display-name = куст синего томата seeds-bloodtomato-name = кровяной томат seeds-bloodtomato-display-name = куст кровяного томата -seeds-killertomato-name = томат-убийца -seeds-killertomato-display-name = куст томата-убийцы +# Forge-Change: скрыто, мутация/семя killerTomato отключены (оставлено для апстрим-мерджей) +# seeds-killertomato-name = томат-убийца +# seeds-killertomato-display-name = куст томата-убийцы seeds-eggplant-name = баклажан seeds-eggplant-display-name = баклажан seeds-apple-name = яблоко diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/hydroponics/seeds.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/hydroponics/seeds.ftl index e0dd0d2f4b1..2c463e6cded 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/hydroponics/seeds.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/hydroponics/seeds.ftl @@ -122,8 +122,9 @@ ent-PapercaneSeeds = пакет семян (бумажный тростник) .desc = { ent-SeedBase.desc } ent-MeatwheatSeeds = пакет семян (мясница) .desc = Если вы когда-нибудь хотели довести вегетарианца до безумия, то вот как это сделать. -ent-KillerTomatoSeeds = пакет семян (томат-убийца) - .desc = { ent-SeedBase.desc } +# Forge-Change: скрыто, пакет семян KillerTomatoSeeds отключён (оставлено для апстрим-мерджей) +# ent-KillerTomatoSeeds = пакет семян (томат-убийца) +# .desc = { ent-SeedBase.desc } ent-HolymelonSeeds = пакет семян (святой арбуз) .desc = { ent-SeedBase.desc } ent-GoldenAppleSeeds = пакет семян (золотое яблоко) diff --git a/Resources/Maps/Salvage/small-chapel.yml b/Resources/Maps/Salvage/small-chapel.yml index 2c3b117a4a9..5fa626f29e8 100644 --- a/Resources/Maps/Salvage/small-chapel.yml +++ b/Resources/Maps/Salvage/small-chapel.yml @@ -616,13 +616,14 @@ entities: - type: Transform pos: 6.5,5.5 parent: 1 -- proto: KillerTomatoSeeds - entities: - - uid: 51 - components: - - type: Transform - pos: 4.6947265,8.268279 - parent: 1 +# Forge-Change: hidden, KillerTomatoSeeds prototype disabled (kept for upstream merges) +# - proto: KillerTomatoSeeds +# entities: +# - uid: 51 +# components: +# - type: Transform +# pos: 4.6947265,8.268279 +# parent: 1 - proto: Lamp entities: - uid: 66 diff --git a/Resources/Maps/centcomm.yml b/Resources/Maps/centcomm.yml index 5e10e05e1e7..2945421e59a 100644 --- a/Resources/Maps/centcomm.yml +++ b/Resources/Maps/centcomm.yml @@ -41293,28 +41293,29 @@ entities: - type: Transform pos: -3.3831449,-0.61700773 parent: 1668 -- proto: KillerTomatoSeeds - entities: - - uid: 1015 - components: - - type: Transform - pos: 8.239295,-23.358154 - parent: 1668 - - uid: 1016 - components: - - type: Transform - pos: 8.239295,-23.295654 - parent: 1668 - - uid: 1017 - components: - - type: Transform - pos: 8.239295,-23.420654 - parent: 1668 - - uid: 1018 - components: - - type: Transform - pos: 8.239295,-23.483154 - parent: 1668 +# Forge-Change: hidden, KillerTomatoSeeds prototype disabled (kept for upstream merges) +# - proto: KillerTomatoSeeds +# entities: +# - uid: 1015 +# components: +# - type: Transform +# pos: 8.239295,-23.358154 +# parent: 1668 +# - uid: 1016 +# components: +# - type: Transform +# pos: 8.239295,-23.295654 +# parent: 1668 +# - uid: 1017 +# components: +# - type: Transform +# pos: 8.239295,-23.420654 +# parent: 1668 +# - uid: 1018 +# components: +# - type: Transform +# pos: 8.239295,-23.483154 +# parent: 1668 - proto: KitchenElectricGrill entities: - uid: 1174 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml index 24db6001e1b..187c02db681 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml @@ -215,8 +215,9 @@ grindableSolutionName: bloodstream - type: PotencyVisuals - type: Appearance - - type: Produce - seedId: killerTomato + # Forge-Change: hidden, killerTomato seed prototype disabled (kept for upstream merges) + # - type: Produce + # seedId: killerTomato - type: PassiveDamage # Slight passive damage. 35 hp \ 5 min \ 60 sec = 0.08 allowedStates: - Alive diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml index 816899dec4b..967152e3b46 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml @@ -281,15 +281,16 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/blood_tomato.rsi -- type: entity - parent: SeedBase - name: packet of killer tomato seeds - id: KillerTomatoSeeds - components: - - type: Seed - seedId: killerTomato - - type: Sprite - sprite: Objects/Specific/Hydroponics/tomatokiller.rsi +# Forge-Change: hidden, KillerTomatoSeeds packet disabled (kept for upstream merges) +# - type: entity +# parent: SeedBase +# name: packet of killer tomato seeds +# id: KillerTomatoSeeds +# components: +# - type: Seed +# seedId: killerTomato +# - type: Sprite +# sprite: Objects/Specific/Hydroponics/tomatokiller.rsi - type: entity parent: SeedBase diff --git a/Resources/Prototypes/Hydroponics/seeds.yml b/Resources/Prototypes/Hydroponics/seeds.yml index 370340e55e3..37e5ad63da1 100644 --- a/Resources/Prototypes/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Hydroponics/seeds.yml @@ -593,8 +593,9 @@ packetPrototype: BloodTomatoSeeds productPrototypes: - FoodBloodTomato - mutationPrototypes: - - killerTomato + # Forge-Change: hidden, killerTomato mutation disabled (kept for upstream merges) + # mutationPrototypes: + # - killerTomato harvestRepeat: Repeat lifespan: 60 maturation: 8 @@ -616,36 +617,37 @@ Max: 4 PotencyDivisor: 25 -- type: seed - id: killerTomato - name: seeds-killertomato-name - noun: seeds-noun-seeds - displayName: seeds-killertomato-display-name - plantRsi: Objects/Specific/Hydroponics/tomatokiller.rsi - packetPrototype: KillerTomatoSeeds - productPrototypes: - - MobTomatoKiller - harvestRepeat: Repeat - lifespan: 25 - maturation: 15 - production: 6 - yield: 2 - potency: 10 - waterConsumption: 0.60 - nutrientConsumption: 0.70 - idealLight: 8 - idealHeat: 298 - growthStages: 2 - splatPrototype: PuddleSplatter - chemicals: - Blood: - Min: 1 - Max: 10 - PotencyDivisor: 10 - JuiceTomato: - Min: 1 - Max: 4 - PotencyDivisor: 25 +# Forge-Change: hidden, killerTomato seed prototype disabled (kept for upstream merges) +# - type: seed +# id: killerTomato +# name: seeds-killertomato-name +# noun: seeds-noun-seeds +# displayName: seeds-killertomato-display-name +# plantRsi: Objects/Specific/Hydroponics/tomatokiller.rsi +# packetPrototype: KillerTomatoSeeds +# productPrototypes: +# - MobTomatoKiller +# harvestRepeat: Repeat +# lifespan: 25 +# maturation: 15 +# production: 6 +# yield: 2 +# potency: 10 +# waterConsumption: 0.60 +# nutrientConsumption: 0.70 +# idealLight: 8 +# idealHeat: 298 +# growthStages: 2 +# splatPrototype: PuddleSplatter +# chemicals: +# Blood: +# Min: 1 +# Max: 10 +# PotencyDivisor: 10 +# JuiceTomato: +# Min: 1 +# Max: 4 +# PotencyDivisor: 25 - type: seed id: eggplant diff --git a/Resources/Prototypes/_Mono/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/_Mono/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index 5435d45378b..4a6d7f47564 100644 --- a/Resources/Prototypes/_Mono/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/_Mono/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -274,6 +274,7 @@ - type: Clothing sprite: _Mono/Objects/Weapons/Guns/Rifles/xlr556_inhands_32x.rsi - type: Item + size: Large sprite: _Mono/Objects/Weapons/Guns/Rifles/xlr556_inhands_32x.rsi - type: ItemSlots slots: diff --git a/Resources/Prototypes/_Mono/Traits/physical.yml b/Resources/Prototypes/_Mono/Traits/physical.yml index 273f392c33d..d3f74054dbd 100644 --- a/Resources/Prototypes/_Mono/Traits/physical.yml +++ b/Resources/Prototypes/_Mono/Traits/physical.yml @@ -303,11 +303,12 @@ dermal: id: DermalArmorTrait coefficients: - Shock: 1.25 + Shock: 1.4 flatReductions: - Blunt: 3.5 - Slash: 3.5 - Piercing: 3.5 + Blunt: 5 + Slash: 5 + Piercing: 5 + Heat: -2.5 - type: trait id: HardenedLymphocytes @@ -336,7 +337,7 @@ cost: -5 # This shit was FREE for factions practically components: - type: Ironman - traitGear: ShipVoucherFrontierIronMan + traitGear: HoverbikeFlatpack - type: trait id: TemperatureTolerance @@ -386,7 +387,7 @@ damagePerInterval: groups: Brute: -1.5 - Burn: -2 + Burn: -1 critMultiplier: .25 - type: trait diff --git a/Resources/Prototypes/_NF/Entities/Markers/Spawners/Random/dungeon_items_hydroponics.yml b/Resources/Prototypes/_NF/Entities/Markers/Spawners/Random/dungeon_items_hydroponics.yml index 2e0352e99a5..d86c6a64678 100644 --- a/Resources/Prototypes/_NF/Entities/Markers/Spawners/Random/dungeon_items_hydroponics.yml +++ b/Resources/Prototypes/_NF/Entities/Markers/Spawners/Random/dungeon_items_hydroponics.yml @@ -285,7 +285,8 @@ chance: 0.95 offset: 0.0 rarePrototypes: - - KillerTomatoSeeds + # Forge-Change: hidden, KillerTomatoSeeds packet disabled (kept for upstream merges) + # - KillerTomatoSeeds - DeathNettleSeeds - SteelcapSeeds - LaughinPeaSeeds diff --git a/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml b/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml index 943ffe0d4fd..7167cb7f88c 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml @@ -92,6 +92,20 @@ name: hoverbike description: A turbine with bike handles. Very safe. components: + - type: Storage + grid: + - 0,0,5,3 + maxItemSize: Huge + blacklist: + components: + - HumanoidAppearance + - type: ContainerContainer + containers: + storagebase: !type:Container + - type: UserInterface + interfaces: + enum.StorageUiKey.Key: + type: StorageBoundUserInterface - type: MovementAlwaysTouching - type: CanMoveInAir - type: AmbientSound