From e47486c1c607718e0e6a1a8a37bf0901444fa009 Mon Sep 17 00:00:00 2001 From: MrFolium Date: Thu, 13 Aug 2026 18:20:06 +0500 Subject: [PATCH 1/9] changed drone target objects --- .../Mobs/Cyborgs/base_borg_chassis.yml | 6 ++++-- .../Prototypes/Entities/Mobs/Species/base.yml | 6 ++++-- .../Machines/Computers/computers.yml | 6 ++++-- .../Entities/Mobs/Player/silicon_base.yml | 6 ++++-- .../Machines/FireControl/gunnery.yml | 21 +++++++++++++++++-- .../Structures/Machines/shield_generator.yml | 4 ++++ 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 26532ad13d5..591dc2bfd5d 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -285,8 +285,10 @@ - type: DetectionRangeMultiplier # same as mass scanner infraredMultiplier: 0.5 visualMultiplier: 0.75 - - type: ShipNpcTarget - needGrid: NoGrid + # LuaM-comented-start: + # - type: ShipNpcTarget + # needGrid: NoGrid + # LuaM-comented-end - type: RetroMonitorView # diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index c07d614d16a..4c3d30d8120 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -231,8 +231,10 @@ - type: SurgeryTarget # Shitmed Change - type: ExaminableCharacter # WWDP # Mono - - type: ShipNpcTarget - needGrid: NoGrid + # LuaM-comented-start: + # - type: ShipNpcTarget + # needGrid: NoGrid + # LuaM-comented-end - type: entity save: false diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 88f533e0275..d7febd0ef16 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -131,8 +131,10 @@ components: - type: ShuttleConsole - type: TargetSeekingTarget # Mono - - type: ShipNpcTarget # Mono - needPower: true + # LuaM-comented-start: + # - type: ShipNpcTarget # Mono + # needPower: true + # LuaM-comented-end - type: ShuttleConsoleLock - type: ActivatableUI key: enum.ShuttleConsoleUiKey.Key diff --git a/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Player/silicon_base.yml b/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Player/silicon_base.yml index 6cf09e05fa3..8fa8e1a526d 100644 --- a/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Player/silicon_base.yml +++ b/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Player/silicon_base.yml @@ -329,6 +329,8 @@ shape: - 0, 0, 4, 4 - 0, 3, 6, 5 + # LuaM-comented-start: # Mono - - type: ShipNpcTarget - needGrid: NoGrid + # - type: ShipNpcTarget + # needGrid: NoGrid + # LuaM-comented-end diff --git a/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml b/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml index 70c108d8a4b..ab153f2d9ab 100644 --- a/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml +++ b/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml @@ -43,6 +43,8 @@ id: GunneryServer - type: StaticPrice price: 200 + - type: Anchorable # LuaM + delay: 15 - type: entity id: GunneryServerLow @@ -87,6 +89,9 @@ - type: ShipRepairable repairTime: 13 repairCost: 40 + - type: ShipNpcTarget # LuaM + needPower: true + - type: entity id: GunneryServerHigh @@ -109,6 +114,8 @@ - type: ShipRepairable repairTime: 20 repairCost: 70 + - type: ShipNpcTarget # LuaM + needPower: true - type: entity id: GunneryServerUltra @@ -133,6 +140,8 @@ - type: ShipRepairable repairTime: 25 repairCost: 100 + - type: ShipNpcTarget # LuaM + needPower: true - type: entity id: GunneryServerOmega @@ -157,6 +166,8 @@ - type: ShipRepairable repairTime: 40 repairCost: 150 + - type: ShipNpcTarget # LuaM + needPower: true - type: entity id: GunneryServerStation @@ -183,6 +194,8 @@ - type: ShipRepairable repairTime: 40 repairCost: 150 + - type: ShipNpcTarget # LuaM + needPower: true - type: entity id: GunneryServerStationConsolesEnforced @@ -210,6 +223,8 @@ - type: ShipRepairable repairTime: 40 repairCost: 150 + - type: ShipNpcTarget # LuaM + needPower: true # Monolith : Gunnery Computer - type: entity @@ -238,8 +253,10 @@ - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] state: generic_panel_open - type: FireControlConsole - - type: ShipNpcTarget - needPower: true + # LuaM-comented-start: + # - type: ShipNpcTarget + # needPower: true + # LuaM-comented-end - type: TargetSeekingTarget - type: ActivatableUI key: enum.FireControlConsoleUiKey.Key diff --git a/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml b/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml index 1ea280b01d0..741cfd45099 100644 --- a/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml +++ b/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml @@ -289,6 +289,8 @@ toolWhitelist: tags: - ADSRepairTool + - type: ShipNpcTarget # LuaM + needPower: true # Medium-End - type: entity @@ -377,6 +379,8 @@ - type: ShipRepairable repairTime: 25 repairCost: 200 + - type: ShipNpcTarget # LuaM + needPower: true # Low-End - type: entity From 90b8f63050cf43dd96225f11ae8a6719f99f3e17 Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 09:52:31 +0500 Subject: [PATCH 2/9] pieceful biomes --- .../NPC/Systems/NPCUtilitySystem.cs | 21 + .../Worldgen/Prototypes/BiomePrototype.cs | 14 + .../Systems/Biomes/BiomeSelectionSystem.cs | 20 +- .../_Mono/Entities/World/Biome/basic.yml | 478 +++++++++++++++++- Resources/Prototypes/_Mono/World/worldgen.yml | 9 + 5 files changed, 537 insertions(+), 5 deletions(-) diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index e1bcc844682..c43fe2583b1 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -41,6 +41,7 @@ using Content.Shared.Atmos.Components; using System.Linq; using Content.Shared.StatusEffect; // Frontier +using Robust.Shared.Map; //LuaM namespace Content.Server.NPC.Systems; @@ -567,6 +568,26 @@ private void RecursiveAdd(EntityUid uid, HashSet entities) RecursiveAdd(child, entities); } } + // LuaM-start: in range drone target check + public bool CheckDroneTarget(MapCoordinates coords, float range) + { + foreach (var (target, targetComp) in _lookup.GetEntitiesInRange(coords, range)) + { + var targetXform = Transform(target); + var targetGrid = targetXform.GridUid; + + if (targetComp.NeedGrid != NpcTargetGridMode.Either + && (targetComp.NeedGrid == NpcTargetGridMode.OnGrid) == (targetGrid == null)) + continue; + + if (targetComp.NeedPower && !this.IsPowered(target, EntityManager)) + continue; + + return true; + } + return false; + } + // LuaM-end private void Filter(NPCBlackboard blackboard, HashSet entities, UtilityQueryFilter filter) { diff --git a/Content.Server/Worldgen/Prototypes/BiomePrototype.cs b/Content.Server/Worldgen/Prototypes/BiomePrototype.cs index bd28e4cafc1..ed1d99a5c2c 100644 --- a/Content.Server/Worldgen/Prototypes/BiomePrototype.cs +++ b/Content.Server/Worldgen/Prototypes/BiomePrototype.cs @@ -100,6 +100,20 @@ private set public int? MaxY; // Mono / EE end + // LuaM-start: + /// + /// Drone target condition. + /// + [DataField("needDroneTarget")] + public bool NeedDroneTarget; + + /// + /// Search radius for the drone target. + /// + [DataField("droneTargetRange")] + public float DroneTargetRange = 1400f; + // LuaM-end + //TODO: Get someone to make this a method on componentregistry that does it Correctly. /// /// Applies the worldgen config to the given target (presumably a map.) diff --git a/Content.Server/Worldgen/Systems/Biomes/BiomeSelectionSystem.cs b/Content.Server/Worldgen/Systems/Biomes/BiomeSelectionSystem.cs index a3bbb636010..8773cd634bc 100644 --- a/Content.Server/Worldgen/Systems/Biomes/BiomeSelectionSystem.cs +++ b/Content.Server/Worldgen/Systems/Biomes/BiomeSelectionSystem.cs @@ -3,6 +3,8 @@ using Content.Server.Worldgen.Prototypes; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager; +using Content.Server.NPC.Systems; // LuaM +using Robust.Shared.Map; // LuaM namespace Content.Server.Worldgen.Systems.Biomes; @@ -14,6 +16,7 @@ public sealed partial class BiomeSelectionSystem : BaseWorldSystem [Dependency] private NoiseIndexSystem _noiseIdx = default!; [Dependency] private IPrototypeManager _proto = default!; [Dependency] private ISerializationManager _ser = default!; + [Dependency] private NPCUtilitySystem _npcUtility = default!; // LuaM /// public override void Initialize() @@ -25,8 +28,11 @@ public override void Initialize() private void OnWorldChunkAdded(EntityUid uid, BiomeSelectionComponent component, ref WorldChunkAddedEvent args) { var coords = args.Coords; - var lengthSquared = WorldGen.ChunkToWorldCoordsCentered(coords).LengthSquared(); // Frontier: cache world coords of center of chunk - + // var lengthSquared = WorldGen.ChunkToWorldCoordsCentered(coords).LengthSquared(); // LuaM comented + // LuaM-start: + var worldPos = WorldGen.ChunkToWorldCoordsCentered(coords); + var lengthSquared = worldPos.LengthSquared(); + // LuaM-end foreach (var biomeId in component.Biomes) { var biome = _proto.Index(biomeId); @@ -39,6 +45,16 @@ private void OnWorldChunkAdded(EntityUid uid, BiomeSelectionComponent component, if (!CheckBiomeValidity(args.Chunk, biome, coords)) continue; + // LuaM-start: + if (biome.NeedDroneTarget) + { + var mapCoords = new MapCoordinates(worldPos, Transform(uid).MapID); + + if (!_npcUtility.CheckDroneTarget(mapCoords, biome.DroneTargetRange)) + continue; + } + // LuaM-end + biome.Apply(args.Chunk, _ser, EntityManager); return; } diff --git a/Resources/Prototypes/_Mono/Entities/World/Biome/basic.yml b/Resources/Prototypes/_Mono/Entities/World/Biome/basic.yml index b05be9f0d31..46de37a4c11 100644 --- a/Resources/Prototypes/_Mono/Entities/World/Biome/basic.yml +++ b/Resources/Prototypes/_Mono/Entities/World/Biome/basic.yml @@ -135,6 +135,7 @@ id: MonoWildsCore parent: NFBiomeBase priority: 700 + needDroneTarget: true # LuaM minX: 68 # 8448m maxX: 72 # 9728m minY: -63 # -8578 @@ -243,10 +244,115 @@ prob: 0.025 orGroup: wreck +# LuaM-start: +- type: spaceBiome + id: MonoWildsCorePieceful + parent: MonoWildsCore + priority: 690 + needDroneTarget: false + chunkComponents: + - type: DebrisFeaturePlacerController + densityNoiseChannel: DensityHigh + - type: SimpleDebrisSelector + debrisTable: + # Extra Enormous + - id: NFAsteroidDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidRockDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidScrapDebrisExtraEnormous + prob: 0.15 + orGroup: debris + # Massive + - id: NFAsteroidDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidBasaltDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidRockDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidScrapDebrisMassive + prob: 0.3 + orGroup: debris + # Extra Massive + - id: NFAsteroidDebrisExtraMassive + prob: 1 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraMassive + prob: 1 + orGroup: debris + - id: NFAsteroidRockDebrisExtraMassive + prob: 1 + orGroup: debris + - id: NFAsteroidScrapDebrisExtraMassive + prob: 0.5 + orGroup: debris + # Gigantic + - id: NFAsteroidDebrisGigantic + prob: 0.6 + orGroup: debris + - id: NFAsteroidBasaltDebrisGigantic + prob: 0.6 + orGroup: debris + - id: NFAsteroidRockDebrisGigantic + prob: 0.6 + orGroup: debris + - id: NFAsteroidScrapDebrisGigantic + prob: 0.3 + orGroup: debris + # Extra Gigantic + - id: NFAsteroidDebrisExtraGigantic + prob: 0.3 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraGigantic + prob: 0.3 + orGroup: debris + - id: NFAsteroidRockDebrisExtraGigantic + prob: 0.3 + orGroup: debris + - id: NFAsteroidScrapDebrisExtraGigantic + prob: 0.15 + orGroup: debris + - type: NoiseDrivenDebrisSelector + debrisTable: + - id: NFWreckDebrisMedium + prob: 0.3 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 0.6 + orGroup: wreck + - id: NFWreckDebrisExtraLarge + prob: 1 + orGroup: wreck + - id: NFWreckDebrisHuge + prob: 0.6 + orGroup: wreck + - id: NFWreckDebrisExtraHuge + prob: 0.3 + orGroup: wreck + - id: NFWreckDebrisEnormous + prob: 0.15 + orGroup: wreck + - id: NFWreckDebrisBrassSmall + prob: 0.03 + orGroup: wreck + - id: NFWreckDebrisBrassMedium + prob: 0.006 + orGroup: wreck +# LuaM-end + - type: spaceBiome id: MonoWilds parent: NFBiomeBase priority: 500 # avg center coords is about 9088, -7552 + needDroneTarget: true # LuaM minX: 64 # 8448m maxX: 76 # 9728m minY: -67 # -8578 @@ -355,10 +461,115 @@ prob: 0.025 orGroup: wreck +# LuaM-start: +- type: spaceBiome + id: MonoWildsPieceful + parent: MonoWilds + priority: 490 + needDroneTarget: false + chunkComponents: + - type: DebrisFeaturePlacerController + densityNoiseChannel: DensityHigh + - type: SimpleDebrisSelector + debrisTable: + # Extra Enormous + - id: NFAsteroidDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidRockDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidScrapDebrisExtraEnormous + prob: 0.15 + orGroup: debris + # Massive + - id: NFAsteroidDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidBasaltDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidRockDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidScrapDebrisMassive + prob: 0.3 + orGroup: debris + # Extra Massive + - id: NFAsteroidDebrisExtraMassive + prob: 1 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraMassive + prob: 1 + orGroup: debris + - id: NFAsteroidRockDebrisExtraMassive + prob: 1 + orGroup: debris + - id: NFAsteroidScrapDebrisExtraMassive + prob: 0.5 + orGroup: debris + # Gigantic + - id: NFAsteroidDebrisGigantic + prob: 0.6 + orGroup: debris + - id: NFAsteroidBasaltDebrisGigantic + prob: 0.6 + orGroup: debris + - id: NFAsteroidRockDebrisGigantic + prob: 0.6 + orGroup: debris + - id: NFAsteroidScrapDebrisGigantic + prob: 0.3 + orGroup: debris + # Extra Gigantic + - id: NFAsteroidDebrisExtraGigantic + prob: 0.3 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraGigantic + prob: 0.3 + orGroup: debris + - id: NFAsteroidRockDebrisExtraGigantic + prob: 0.3 + orGroup: debris + - id: NFAsteroidScrapDebrisExtraGigantic + prob: 0.15 + orGroup: debris + - type: NoiseDrivenDebrisSelector + debrisTable: + - id: NFWreckDebrisMedium + prob: 0.3 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 0.6 + orGroup: wreck + - id: NFWreckDebrisExtraLarge + prob: 1 + orGroup: wreck + - id: NFWreckDebrisHuge + prob: 0.6 + orGroup: wreck + - id: NFWreckDebrisExtraHuge + prob: 0.3 + orGroup: wreck + - id: NFWreckDebrisEnormous + prob: 0.15 + orGroup: wreck + - id: NFWreckDebrisBrassSmall + prob: 0.03 + orGroup: wreck + - id: NFWreckDebrisBrassMedium + prob: 0.006 + orGroup: wreck +# LuaM-end + - type: spaceBiome id: MonoWildsOutskirts parent: NFBiomeBase priority: 100 + needDroneTarget: true # LuaM minX: 56 maxX: 84 minY: -75 @@ -410,6 +621,56 @@ prob: 0.005 orGroup: wreck +# LuaM-start +- type: spaceBiome + id: MonoWildsOutskirtsPieceful + parent: MonoWildsOutskirts + priority: 90 + needDroneTarget: false + chunkComponents: + - type: DebrisFeaturePlacerController + densityNoiseChannel: Density + - type: SimpleDebrisSelector + debrisTable: + # Extra Enormous + - id: NFAsteroidDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidRockDebrisExtraEnormous + prob: 0.3 + orGroup: debris + - id: NFAsteroidScrapDebrisExtraEnormous + prob: 0.15 + orGroup: debris + # Massive + - id: NFAsteroidDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidBasaltDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidRockDebrisMassive + prob: 0.6 + orGroup: debris + - id: NFAsteroidScrapDebrisMassive + prob: 0.3 + orGroup: debris + - type: NoiseDrivenDebrisSelector + debrisTable: + - id: NFWreckDebrisMedium + prob: 0.3 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 0.6 + orGroup: wreck + - id: NFWreckDebrisExtraLarge + prob: 1 + orGroup: wreck +# LuaM-end + - type: spaceBiome id: MonoEmptyFallback # We need nothing to generate under 18000, but Far Reaches 4 would generate instead, so we need a useless thing. priority: 1 @@ -622,6 +883,7 @@ id: MonoWorldgenVeryFarT1 parent: NFBiomeBase priority: -1 + needDroneTarget: true # LuaM distanceRange: 18000, 22000 chunkComponents: - type: DebrisFeaturePlacerController @@ -746,10 +1008,137 @@ prob: 3 orGroup: wreck +# LuaM-start: - type: spaceBiome - id: MonoWorldgenVeryFarT2Inner + id: MonoWorldgenVeryFarT1Pieceful parent: MonoWorldgenVeryFarT1 priority: -2 + needDroneTarget: false + chunkComponents: + - type: DebrisFeaturePlacerController + densityNoiseChannel: DensityRare + - type: SimpleDebrisSelector + debrisTable: + # Medium (1.44) + - id: NFAsteroidDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidAndesiteDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidBasaltDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidSandDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidChromiteDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidRockDebrisMedium + prob: 0.24 + orGroup: debris + # Large (1.44) + - id: NFAsteroidDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidAndesiteDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidBasaltDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidSandDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidChromiteDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidRockDebrisLarge + prob: 0.24 + orGroup: debris + # Extra Large (1.44) + - id: NFAsteroidDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidAndesiteDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidSandDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidChromiteDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidRockDebrisExtraLarge + prob: 0.24 + orGroup: debris + # Huge (.36) + - id: NFAsteroidDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidAndesiteDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidBasaltDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidSandDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidChromiteDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidRockDebrisHuge + prob: 0.046 + orGroup: debris + # Extra Enormous + - id: NFAsteroidIceDebrisExtraEnormous + prob: 0.3 + orGroup: debris + # Massive + - id: NFAsteroidIceDebrisMassive + prob: 0.6 + orGroup: debris + # Extra Massive + - id: NFAsteroidIceDebrisExtraMassive + prob: 1 + orGroup: debris + # Gigantic + - id: NFAsteroidIceDebrisGigantic + prob: 0.6 + orGroup: debris + # Extra Gigantic + - id: NFAsteroidIceDebrisExtraGigantic + prob: 1.2 + orGroup: debris + - type: NoiseDrivenDebrisSelector + noiseChannel: WreckRare + debrisTable: + - id: NFWreckDebrisSmall + prob: 1 + orGroup: wreck + - id: NFWreckDebrisMedium + prob: 2 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 1 + orGroup: wreck + - id: NFWreckDebrisBrassLarge + prob: 0.5 + orGroup: wreck + - id: NFWreckDebrisBrassExtraLarge + prob: 1 + orGroup: wreck +# LuaM-end + +- type: spaceBiome + id: MonoWorldgenVeryFarT2Inner + parent: MonoWorldgenVeryFarT1 + priority: -3 #LuaM -2 > -3 distanceRange: 22000, 25000 chunkComponents: - type: NoiseDrivenDebrisSelector @@ -774,10 +1163,37 @@ prob: 1.5 orGroup: wreck +# LuaM-start: +- type: spaceBiome + id: MonoWorldgenVeryFarT2InnerPieceful + parent: MonoWorldgenVeryFarT1Pieceful + priority: -4 + distanceRange: 22000, 25000 + chunkComponents: + - type: NoiseDrivenDebrisSelector + noiseChannel: WreckRare + debrisTable: + - id: NFWreckDebrisSmall + prob: 1 + orGroup: wreck + - id: NFWreckDebrisMedium + prob: 2 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 1 + orGroup: wreck + - id: NFWreckDebrisBrassLarge + prob: 0.9 + orGroup: wreck + - id: NFWreckDebrisBrassExtraLarge + prob: 0.3 + orGroup: wreck +# LuaM-end + - type: spaceBiome id: MonoWorldgenVeryFarT2Middle parent: MonoWorldgenVeryFarT1 - priority: -3 + priority: -5 # LuaM -3 > -5 distanceRange: 25000, 30000 chunkComponents: - type: NoiseDrivenDebrisSelector @@ -802,10 +1218,38 @@ prob: 1.5 orGroup: wreck +# LuaM-start: +- type: spaceBiome + id: MonoWorldgenVeryFarT2MiddlePieceful + parent: MonoWorldgenVeryFarT1Pieceful + priority: -6 + needDroneTarget: false + distanceRange: 25000, 30000 + chunkComponents: + - type: NoiseDrivenDebrisSelector + noiseChannel: WreckRare + debrisTable: + - id: NFWreckDebrisSmall + prob: 1 + orGroup: wreck + - id: NFWreckDebrisMedium + prob: 2 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 1 + orGroup: wreck + - id: NFWreckDebrisBrassLarge + prob: 0.9 + orGroup: wreck + - id: NFWreckDebrisBrassExtraLarge + prob: 0.3 + orGroup: wreck +# LuaM-end + - type: spaceBiome id: MonoWorldgenVeryFarT2Far parent: MonoWorldgenVeryFarT1 - priority: -4 + priority: -7 # LuaM -4 > -7 distanceRange: null chunkComponents: - type: DebrisFeaturePlacerController @@ -830,3 +1274,31 @@ - id: MonoDroneSpawnerT2Far prob: 1 orGroup: wreck + +# LuaM-start: +- type: spaceBiome + id: MonoWorldgenVeryFarT2FarPieceful + parent: MonoWorldgenVeryFarT1Pieceful + priority: -8 + distanceRange: null + chunkComponents: + - type: DebrisFeaturePlacerController + densityNoiseChannel: DensityVeryRare + - type: NoiseDrivenDebrisSelector + debrisTable: + - id: NFWreckDebrisSmall + prob: 0.5 + orGroup: wreck + - id: NFWreckDebrisMedium + prob: 1 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 0.5 + orGroup: wreck + - id: NFWreckDebrisBrassLarge + prob: 0.3 + orGroup: wreck + - id: NFWreckDebrisBrassExtraLarge + prob: 0.9 + orGroup: wreck +# LuaM-end diff --git a/Resources/Prototypes/_Mono/World/worldgen.yml b/Resources/Prototypes/_Mono/World/worldgen.yml index 768a1ef236d..9887578c235 100644 --- a/Resources/Prototypes/_Mono/World/worldgen.yml +++ b/Resources/Prototypes/_Mono/World/worldgen.yml @@ -14,3 +14,12 @@ - MonoWorldgenVeryFarT2Inner - MonoWorldgenVeryFarT2Middle - MonoWorldgenVeryFarT2Far + # LuaM-start: + - MonoWildsCorePieceful + - MonoWildsPieceful + - MonoWildsOutskirtsPieceful + - MonoWorldgenVeryFarT1Pieceful + - MonoWorldgenVeryFarT2InnerPieceful + - MonoWorldgenVeryFarT2MiddlePieceful + - MonoWorldgenVeryFarT2FarPieceful + # LuaM-end \ No newline at end of file From 7516bb4a95262d24a8c2be642e9b60d21784f778 Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 09:55:22 +0500 Subject: [PATCH 3/9] fewer drone targets --- .../Entities/Structures/Machines/FireControl/gunnery.yml | 4 ---- .../_Mono/Entities/Structures/Machines/shield_generator.yml | 4 ---- 2 files changed, 8 deletions(-) diff --git a/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml b/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml index ab153f2d9ab..0f2b9adb747 100644 --- a/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml +++ b/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml @@ -194,8 +194,6 @@ - type: ShipRepairable repairTime: 40 repairCost: 150 - - type: ShipNpcTarget # LuaM - needPower: true - type: entity id: GunneryServerStationConsolesEnforced @@ -223,8 +221,6 @@ - type: ShipRepairable repairTime: 40 repairCost: 150 - - type: ShipNpcTarget # LuaM - needPower: true # Monolith : Gunnery Computer - type: entity diff --git a/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml b/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml index 741cfd45099..1ea280b01d0 100644 --- a/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml +++ b/Resources/Prototypes/_Mono/Entities/Structures/Machines/shield_generator.yml @@ -289,8 +289,6 @@ toolWhitelist: tags: - ADSRepairTool - - type: ShipNpcTarget # LuaM - needPower: true # Medium-End - type: entity @@ -379,8 +377,6 @@ - type: ShipRepairable repairTime: 25 repairCost: 200 - - type: ShipNpcTarget # LuaM - needPower: true # Low-End - type: entity From e73f6ab0415e630a430da86c39305ed39d3f4382 Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 10:10:09 +0500 Subject: [PATCH 4/9] removed attacker core from bravo --- Resources/Maps/_NF/POI/lpbravo.yml | 42 ++++++++++++++++-------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/Resources/Maps/_NF/POI/lpbravo.yml b/Resources/Maps/_NF/POI/lpbravo.yml index dc39cd403a2..d0a04fdd8f2 100644 --- a/Resources/Maps/_NF/POI/lpbravo.yml +++ b/Resources/Maps/_NF/POI/lpbravo.yml @@ -17583,26 +17583,28 @@ entities: - type: Transform pos: 39.5,-1.5 parent: 1 -- proto: NpcStationAiAttackerStaticSmart - entities: - - uid: 2584 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 46.5,-0.5 - parent: 1 - - uid: 2655 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-19.5 - parent: 1 - - uid: 2795 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 18.5,1.5 - parent: 1 +# Lua-comented-start: +# - proto: NpcStationAiAttackerStaticSmart +# entities: +# - uid: 2584 +# components: +# - type: Transform +# rot: 3.141592653589793 rad +# pos: 46.5,-0.5 +# parent: 1 +# - uid: 2655 +# components: +# - type: Transform +# rot: 3.141592653589793 rad +# pos: -2.5,-19.5 +# parent: 1 +# - uid: 2795 +# components: +# - type: Transform +# rot: 3.141592653589793 rad +# pos: 18.5,1.5 +# parent: 1 +# Lua-comented-end - proto: OxygenCanister entities: - uid: 2449 From a022cd1b01906367a88e6901f8a9b0202742801d Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 10:29:54 +0500 Subject: [PATCH 5/9] fix NF biomes --- .../Prototypes/_NF/World/Biomes/basic.yml | 128 +++++++++++++++++- 1 file changed, 127 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/_NF/World/Biomes/basic.yml b/Resources/Prototypes/_NF/World/Biomes/basic.yml index 08f32a40728..978a96b12f3 100644 --- a/Resources/Prototypes/_NF/World/Biomes/basic.yml +++ b/Resources/Prototypes/_NF/World/Biomes/basic.yml @@ -90,7 +90,7 @@ - type: spaceBiome id: NFAsteroidsMid parent: NFBiomeBase - priority: 1 + priority: 2 distanceRange: 5000, 9500 chunkComponents: - type: SimpleDebrisSelector @@ -243,6 +243,7 @@ id: NFAsteroidsFar parent: NFBiomeBase priority: 0 + needDroneTarget: true # LuaM distanceRange: 9500, 18000 # Mono noiseRanges: {} chunkComponents: @@ -365,3 +366,128 @@ - id: MonoDroneSpawnerT1 # Mono prob: 0.15 orGroup: wreck + +# LuaM-start: +- type: spaceBiome + id: NFAsteroidsFarPeaceful + parent: NFAsteroidsFar + priority: -1 + needDroneTarget: False + chunkComponents: + - type: SimpleDebrisSelector + debrisTable: + # Medium (1.44) + - id: NFAsteroidDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidAndesiteDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidBasaltDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidSandDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidChromiteDebrisMedium + prob: 0.24 + orGroup: debris + - id: NFAsteroidRockDebrisMedium + prob: 0.24 + orGroup: debris + # Large (1.44) + - id: NFAsteroidDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidAndesiteDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidBasaltDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidSandDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidChromiteDebrisLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidRockDebrisLarge + prob: 0.24 + orGroup: debris + # Extra Large (1.44) + - id: NFAsteroidDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidAndesiteDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidBasaltDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidSandDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidChromiteDebrisExtraLarge + prob: 0.24 + orGroup: debris + - id: NFAsteroidRockDebrisExtraLarge + prob: 0.24 + orGroup: debris + # Huge (.36) + - id: NFAsteroidDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidAndesiteDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidBasaltDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidSandDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidChromiteDebrisHuge + prob: 0.06 + orGroup: debris + - id: NFAsteroidRockDebrisHuge + prob: 0.046 + orGroup: debris + # Extra Enormous + - id: NFAsteroidIceDebrisExtraEnormous + prob: 0.3 + orGroup: debris + # Massive + - id: NFAsteroidIceDebrisMassive + prob: 0.6 + orGroup: debris + # Extra Massive + - id: NFAsteroidIceDebrisExtraMassive + prob: 1 + orGroup: debris + # Gigantic + - id: NFAsteroidIceDebrisGigantic + prob: 0.6 + orGroup: debris + # Extra Gigantic + - id: NFAsteroidIceDebrisExtraGigantic + prob: 0.3 + orGroup: debris + - type: NoiseDrivenDebrisSelector + noiseChannel: Wreck + debrisTable: + - id: NFWreckDebrisSmall + prob: 1 + orGroup: wreck + - id: NFWreckDebrisMedium + prob: 2 + orGroup: wreck + - id: NFWreckDebrisLarge + prob: 1 + orGroup: wreck + - id: NFWreckDebrisBrassLarge + prob: 0.3 + orGroup: wreck + - id: NFWreckDebrisBrassExtraLarge + prob: 0.1 + orGroup: wreck +# LuaM-end From d55f02bbede6619087d34d43ade5c0cfcf589430 Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 11:03:33 +0500 Subject: [PATCH 6/9] slow down gunnery server deconstruction --- .../Graphs/machines/machine_gunnery.yml | 119 ++++++++++++++++++ .../Machines/FireControl/gunnery.yml | 2 +- 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml diff --git a/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml b/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml new file mode 100644 index 00000000000..168b742b315 --- /dev/null +++ b/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml @@ -0,0 +1,119 @@ +- type: constructionGraph + id: MachineGunneryServer + start: start + graph: + - node: start + actions: + - !type:SpawnPrototype + prototype: SheetSteel1 + - !type:DeleteEntity + edges: + - to: missingWires + completed: + - !type:SetAnchor + value: false + steps: + - material: Steel + amount: 5 + doAfter: 2.5 + - to: destroyedMachineFrame + steps: + - material: Steel + amount: 5 + doAfter: 2.5 + + - node: missingWires + entity: UnfinishedMachineFrame + actions: + - !type:EmptyAllContainers + edges: + - to: machineFrame + conditions: + - !type:EntityAnchored + steps: + - material: Cable + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 5 + - !type:DeleteEntity + steps: + - tool: Screwing + doAfter: 2 + + - node: machineFrame + entity: MachineFrame + actions: + - !type:AddContainer + container: machine_parts + - !type:AddContainer + container: machine_board + - !type:MachineFrameRegenerateProgress + edges: + - to: machine + conditions: + - !type:EntityAnchored + - !type:MachineFrameComplete + guideIconBoard: + sprite: Objects/Misc/module.rsi + state: id_mod + guideIconParts: + sprite: _NF/Objects/Misc/stock_parts.rsi + state: scan_module + steps: + - tool: Screwing + doAfter: 0.5 + + - to: machineFrame + conditions: + - !type:EntityAnchored + - !type:ContainerNotEmpty + container: machine_board + steps: + - tool: Prying + doAfter: 2 + completed: + - !type:EmptyAllContainers + - !type:MachineFrameRegenerateProgress + + - to: missingWires + conditions: + - !type:EntityAnchored + - !type:ContainerEmpty + container: machine_board + examineText: construction-condition-machine-container-empty + completed: + - !type:SpawnPrototype + prototype: CableApcStack1 + steps: + - tool: Cutting + doAfter: 0.25 + + - node: machine + entity: !type:BoardNodeEntity { container: machine_board } + edges: + - to: machineFrame + completed: + - !type:RaiseEvent + event: !type:MachineDeconstructedEvent + broadcast: false + conditions: + - !type:EntityAnchored + - !type:WirePanel + steps: + - tool: Prying + doAfter: 40 + + - node: destroyedMachineFrame + entity: MachineFrameDestroyed + edges: + - to: start + steps: + - tool: Welding + doAfter: 5 + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 3 + - !type:DeleteEntity {} \ No newline at end of file diff --git a/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml b/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml index 0f2b9adb747..eba3b9d2a70 100644 --- a/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml +++ b/Resources/Prototypes/_Mono/Entities/Structures/Machines/FireControl/gunnery.yml @@ -28,7 +28,7 @@ True: { visible: true } False: { visible: false } - type: Construction # Mono - graph: Machine + graph: MachineGunneryServer # LuaM Machine > MachineGunneryServer node: machine containers: - machine_board From 1d0caac729822ab10b16c7cf69f9e3216dc953c7 Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 11:12:53 +0500 Subject: [PATCH 7/9] fix --- Resources/Prototypes/_NF/World/Biomes/basic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_NF/World/Biomes/basic.yml b/Resources/Prototypes/_NF/World/Biomes/basic.yml index 978a96b12f3..e4ec517770a 100644 --- a/Resources/Prototypes/_NF/World/Biomes/basic.yml +++ b/Resources/Prototypes/_NF/World/Biomes/basic.yml @@ -90,7 +90,7 @@ - type: spaceBiome id: NFAsteroidsMid parent: NFBiomeBase - priority: 2 + priority: 1 distanceRange: 5000, 9500 chunkComponents: - type: SimpleDebrisSelector From 6e4f65d185a8973bcacc0b13940260a91f30fdac Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 17:56:14 +0500 Subject: [PATCH 8/9] fix --- .../Graphs/machines/machine_gunnery.yml | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml b/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml index 168b742b315..791892092e3 100644 --- a/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml +++ b/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml @@ -55,12 +55,12 @@ conditions: - !type:EntityAnchored - !type:MachineFrameComplete - guideIconBoard: - sprite: Objects/Misc/module.rsi - state: id_mod - guideIconParts: - sprite: _NF/Objects/Misc/stock_parts.rsi - state: scan_module + guideIconBoard: + sprite: Objects/Misc/module.rsi + state: id_mod + guideIconParts: + sprite: _NF/Objects/Misc/stock_parts.rsi + state: scan_module steps: - tool: Screwing doAfter: 0.5 @@ -73,16 +73,16 @@ steps: - tool: Prying doAfter: 2 - completed: - - !type:EmptyAllContainers - - !type:MachineFrameRegenerateProgress + completed: + - !type:EmptyAllContainers + - !type:MachineFrameRegenerateProgress - to: missingWires conditions: - !type:EntityAnchored - !type:ContainerEmpty container: machine_board - examineText: construction-condition-machine-container-empty + examineText: construction-condition-machine-container-empty completed: - !type:SpawnPrototype prototype: CableApcStack1 @@ -103,7 +103,7 @@ - !type:WirePanel steps: - tool: Prying - doAfter: 40 + doAfter 40 - node: destroyedMachineFrame entity: MachineFrameDestroyed From 7ef1804109a0fb3efb5e179fc3cdee0e8bae5724 Mon Sep 17 00:00:00 2001 From: MrFolium Date: Fri, 14 Aug 2026 19:00:33 +0500 Subject: [PATCH 9/9] fix2 --- .../Construction/Graphs/machines/machine_gunnery.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml b/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml index 791892092e3..9eaaa3c8b7a 100644 --- a/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml +++ b/Resources/Prototypes/_LuaM/Recipes/Construction/Graphs/machines/machine_gunnery.yml @@ -32,6 +32,7 @@ - !type:EntityAnchored steps: - material: Cable + - to: start completed: - !type:SpawnPrototype @@ -73,9 +74,9 @@ steps: - tool: Prying doAfter: 2 - completed: - - !type:EmptyAllContainers - - !type:MachineFrameRegenerateProgress + completed: + - !type:EmptyAllContainers + - !type:MachineFrameRegenerateProgress - to: missingWires conditions: @@ -103,7 +104,7 @@ - !type:WirePanel steps: - tool: Prying - doAfter 40 + doAfter: 40 - node: destroyedMachineFrame entity: MachineFrameDestroyed