Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
using System.Linq;
|
2025-08-05 12:15:24 +03:00
|
|
|
using Content.Server._CP14.Procedural.Demiplane.Components;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
using Content.Shared._CP14.Procedural.Prototypes;
|
2025-08-05 12:15:24 +03:00
|
|
|
using Content.Shared.Interaction;
|
|
|
|
|
using Content.Shared.Teleportation.Systems;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
using Robust.Shared.Prototypes;
|
|
|
|
|
using Robust.Shared.Random;
|
2025-08-05 12:15:24 +03:00
|
|
|
using Robust.Shared.Timing;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
namespace Content.Server._CP14.Procedural.Demiplane;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
public sealed class CP14DemiplaneSystem : EntitySystem
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
[Dependency] private readonly SharedMapSystem _map = default!;
|
|
|
|
|
[Dependency] private readonly CP14LocationGenerationSystem _generation = default!;
|
|
|
|
|
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
|
|
|
|
[Dependency] private readonly IRobustRandom _random = default!;
|
|
|
|
|
[Dependency] private readonly IPrototypeManager _proto = default!;
|
|
|
|
|
[Dependency] private readonly MetaDataSystem _meta = default!;
|
|
|
|
|
[Dependency] private readonly LinkedEntitySystem _link = default!;
|
|
|
|
|
[Dependency] private readonly IGameTiming _timing = default!;
|
|
|
|
|
|
|
|
|
|
public override void Initialize()
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
base.Initialize();
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
SubscribeLocalEvent<CP14DemiplaneRiftComponent, InteractHandEvent>(OnRiftInteracted);
|
|
|
|
|
}
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
public override void Update(float frameTime)
|
|
|
|
|
{
|
|
|
|
|
base.Update(frameTime);
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
var query = EntityQueryEnumerator<CP14DemiplaneRiftComponent>();
|
|
|
|
|
while (query.MoveNext(out var uid, out var demiplaneRift))
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
if (demiplaneRift.ScanningTargetMap is null)
|
|
|
|
|
continue;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
if (_timing.CurTime < demiplaneRift.NextScanTime)
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
continue;
|
|
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
demiplaneRift.NextScanTime = _timing.CurTime + TimeSpan.FromSeconds(5);
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
var targetQuery = EntityQueryEnumerator<CP14DemiplaneEnterPointComponent>();
|
|
|
|
|
while (targetQuery.MoveNext(out var enterUid, out var enterComp))
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
if (Transform(enterUid).MapUid != demiplaneRift.ScanningTargetMap)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
//Remove awaiting
|
|
|
|
|
QueueDel(demiplaneRift.AwaitingEntity);
|
|
|
|
|
|
|
|
|
|
//Start connection
|
|
|
|
|
var portal1 = SpawnAtPosition(demiplaneRift.PortalProto, Transform(enterUid).Coordinates);
|
|
|
|
|
var portal2 = SpawnAtPosition(demiplaneRift.PortalProto, Transform(uid).Coordinates);
|
|
|
|
|
_link.TryLink(portal1, portal2, true);
|
|
|
|
|
|
|
|
|
|
//Delete self
|
|
|
|
|
QueueDel(uid);
|
|
|
|
|
QueueDel(enterUid);
|
|
|
|
|
|
|
|
|
|
return;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
private void OnRiftInteracted(Entity<CP14DemiplaneRiftComponent> ent, ref InteractHandEvent args)
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
if (HasComp<CP14DemiplaneBlockInteractionsComponent>(args.User))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (!ent.Comp.CanCreate)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var nextLevel = 1;
|
|
|
|
|
var originMap = Transform(ent).MapUid;
|
|
|
|
|
if (TryComp<CP14DemiplaneMapComponent>(originMap, out var demiplane))
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
nextLevel = demiplane.Level + 1;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
}
|
|
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
_map.CreateMap(out var mapId, runMapInit: false);
|
|
|
|
|
|
|
|
|
|
var mapUid = _map.GetMap(mapId);
|
|
|
|
|
EnsureComp<CP14DemiplaneMapComponent>(mapUid).Level = nextLevel;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
|
|
|
|
var limits = new Dictionary<ProtoId<CP14ProceduralModifierCategoryPrototype>, float>
|
|
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
{ "Danger", Math.Max(nextLevel * 0.2f, 0.5f) },
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{ "GhostRoleDanger", 1f },
|
2025-08-05 12:15:24 +03:00
|
|
|
{ "Reward", Math.Max(nextLevel * 0.3f, 0.5f) },
|
|
|
|
|
{ "Ore", Math.Max(nextLevel * 0.5f, 1f) },
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
{ "Fun", 1f },
|
|
|
|
|
{ "Weather", 1f },
|
|
|
|
|
{ "MapLight", 1f },
|
2025-08-05 12:15:24 +03:00
|
|
|
{ "Passage", 1f },
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
};
|
|
|
|
|
|
2025-08-05 12:15:24 +03:00
|
|
|
var nextLocation = SelectLocation(nextLevel);
|
|
|
|
|
var nextModifiers = SelectModifiers(nextLevel, nextLocation, limits);
|
|
|
|
|
|
|
|
|
|
nextModifiers.Add("CP14DemiplanEnterRoom"); //HARDCODE, BOO
|
|
|
|
|
|
|
|
|
|
_meta.SetEntityName(mapUid, $"Demi: [{nextLevel}] - {nextLocation.LocationConfig.Id}");
|
|
|
|
|
|
|
|
|
|
_generation.GenerateLocation(
|
|
|
|
|
mapUid,
|
|
|
|
|
mapId,
|
|
|
|
|
nextLocation,
|
|
|
|
|
nextModifiers);
|
|
|
|
|
|
|
|
|
|
var awaiting = SpawnAtPosition(ent.Comp.AwaitingProto, Transform(ent).Coordinates);
|
|
|
|
|
|
|
|
|
|
ent.Comp.AwaitingEntity = awaiting;
|
|
|
|
|
ent.Comp.ScanningTargetMap = mapUid;
|
|
|
|
|
ent.Comp.CanCreate = false;
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Returns a suitable location for the specified difficulty level.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public CP14ProceduralLocationPrototype SelectLocation(int level)
|
|
|
|
|
{
|
|
|
|
|
CP14ProceduralLocationPrototype? selectedConfig = null;
|
|
|
|
|
|
|
|
|
|
HashSet<CP14ProceduralLocationPrototype> suitableConfigs = new();
|
|
|
|
|
foreach (var locationConfig in _proto.EnumeratePrototypes<CP14ProceduralLocationPrototype>())
|
|
|
|
|
{
|
|
|
|
|
suitableConfigs.Add(locationConfig);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while (suitableConfigs.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
var randomConfig = _random.Pick(suitableConfigs);
|
|
|
|
|
|
|
|
|
|
var passed = true;
|
|
|
|
|
|
|
|
|
|
//Random prob filter
|
|
|
|
|
if (passed)
|
|
|
|
|
{
|
|
|
|
|
if (!_random.Prob(randomConfig.GenerationProb))
|
|
|
|
|
{
|
|
|
|
|
passed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Levels filter
|
|
|
|
|
if (passed)
|
|
|
|
|
{
|
|
|
|
|
if (level < randomConfig.Levels.Min || level > randomConfig.Levels.Max)
|
|
|
|
|
{
|
|
|
|
|
passed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!passed)
|
|
|
|
|
{
|
|
|
|
|
suitableConfigs.Remove(randomConfig);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
selectedConfig = randomConfig;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selectedConfig is null)
|
|
|
|
|
throw new Exception($"No suitable procedural location config found for level {level}!");
|
|
|
|
|
|
|
|
|
|
return selectedConfig;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Returns a set of modifiers under the specified difficulty level that are appropriate for the specified location
|
|
|
|
|
/// </summary>
|
2025-08-05 12:15:24 +03:00
|
|
|
public List<ProtoId<CP14ProceduralModifierPrototype>> SelectModifiers(
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
int level,
|
|
|
|
|
CP14ProceduralLocationPrototype location,
|
|
|
|
|
Dictionary<ProtoId<CP14ProceduralModifierCategoryPrototype>, float> modifierLimits)
|
|
|
|
|
{
|
2025-08-05 12:15:24 +03:00
|
|
|
List<ProtoId<CP14ProceduralModifierPrototype>> selectedModifiers = new();
|
Gathering resourses redesign (#1594)
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
2025-08-04 13:35:55 +03:00
|
|
|
|
|
|
|
|
//Modifier generation
|
|
|
|
|
Dictionary<CP14ProceduralModifierPrototype, float> suitableModifiersWeights = new();
|
|
|
|
|
foreach (var modifier in _proto.EnumeratePrototypes<CP14ProceduralModifierPrototype>())
|
|
|
|
|
{
|
|
|
|
|
var passed = true;
|
|
|
|
|
|
|
|
|
|
//Random prob filter
|
|
|
|
|
if (passed)
|
|
|
|
|
{
|
|
|
|
|
if (!_random.Prob(modifier.GenerationProb))
|
|
|
|
|
{
|
|
|
|
|
passed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Levels filter
|
|
|
|
|
if (passed)
|
|
|
|
|
{
|
|
|
|
|
if (level < modifier.Levels.Min || level > modifier.Levels.Max)
|
|
|
|
|
{
|
|
|
|
|
passed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Tag blacklist filter
|
|
|
|
|
foreach (var configTag in location.Tags)
|
|
|
|
|
{
|
|
|
|
|
if (modifier.BlacklistTags.Count != 0 && modifier.BlacklistTags.Contains(configTag))
|
|
|
|
|
{
|
|
|
|
|
passed = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Tag required filter
|
|
|
|
|
if (passed)
|
|
|
|
|
{
|
|
|
|
|
foreach (var reqTag in modifier.RequiredTags)
|
|
|
|
|
{
|
|
|
|
|
if (!location.Tags.Contains(reqTag))
|
|
|
|
|
{
|
|
|
|
|
passed = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (passed)
|
|
|
|
|
suitableModifiersWeights.Add(modifier, modifier.GenerationWeight);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Limits calculation
|
|
|
|
|
Dictionary<ProtoId<CP14ProceduralModifierCategoryPrototype>, float> limits = new();
|
|
|
|
|
foreach (var limit in modifierLimits)
|
|
|
|
|
{
|
|
|
|
|
limits.Add(limit.Key, limit.Value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (suitableModifiersWeights.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
var selectedModifier = ModifierPick(suitableModifiersWeights, _random);
|
|
|
|
|
|
|
|
|
|
//Fill location under limits
|
|
|
|
|
var passed = true;
|
|
|
|
|
foreach (var category in selectedModifier.Categories)
|
|
|
|
|
{
|
|
|
|
|
if (!limits.ContainsKey(category.Key))
|
|
|
|
|
{
|
|
|
|
|
suitableModifiersWeights.Remove(selectedModifier);
|
|
|
|
|
passed = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (limits[category.Key] - category.Value < 0)
|
|
|
|
|
{
|
|
|
|
|
suitableModifiersWeights.Remove(selectedModifier);
|
|
|
|
|
passed = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!passed)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
selectedModifiers.Add(selectedModifier);
|
|
|
|
|
|
|
|
|
|
foreach (var category in selectedModifier.Categories)
|
|
|
|
|
{
|
|
|
|
|
limits[category.Key] -= category.Value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selectedModifier.Unique)
|
|
|
|
|
suitableModifiersWeights.Remove(selectedModifier);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return selectedModifiers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Optimization moment: avoid re-indexing for weight selection
|
|
|
|
|
/// </summary>
|
|
|
|
|
private static CP14ProceduralModifierPrototype ModifierPick(
|
|
|
|
|
Dictionary<CP14ProceduralModifierPrototype, float> weights,
|
|
|
|
|
IRobustRandom random)
|
|
|
|
|
{
|
|
|
|
|
var picks = weights;
|
|
|
|
|
var sum = picks.Values.Sum();
|
|
|
|
|
var accumulated = 0f;
|
|
|
|
|
|
|
|
|
|
var rand = random.NextFloat() * sum;
|
|
|
|
|
|
|
|
|
|
foreach (var (key, weight) in picks)
|
|
|
|
|
{
|
|
|
|
|
accumulated += weight;
|
|
|
|
|
|
|
|
|
|
if (accumulated >= rand)
|
|
|
|
|
{
|
|
|
|
|
return key;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Shouldn't happen
|
|
|
|
|
throw new InvalidOperationException($"Invalid weighted pick in CP14DemiplanSystem.Generation!");
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-08-05 12:15:24 +03:00
|
|
|
|
|
|
|
|
public sealed class CP14LocationGeneratedEvent : EntityEventArgs
|
|
|
|
|
{
|
|
|
|
|
}
|