Rooms demiplane generation improvement (#1583)

* Add CP14RoomsDunGen for procedural room placement

Introduces the CP14RoomsDunGen layer for generating rooms across the grid based on tags and tile masks. Updates DungeonJob and DungeonSystem to support the new layer, and modifies relevant YAML prototypes to use CP14RoomsDunGen instead of OreDunGen for room spawning in demiplane modifiers.

* some fixes

* its done done done

* exit room

* additional entry points

* fix

* Update migration.yml
This commit is contained in:
Red
2025-07-27 16:45:16 +03:00
committed by GitHub
parent 5020be8ec6
commit fcbe2cce6b
22 changed files with 2606 additions and 291 deletions

View File

@@ -52,3 +52,19 @@
count: 10
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: AdditionalEntry
levels:
min: 2
max: 10
name: cp14-modifier-additional-entry
categories:
Danger: 0.15
generationProb: 0.8
generationWeight: 0.25
layers:
- !type:CP14RoomsDunGen
count: 1
tags:
- CP14DemiplanEnterRoom

View File

@@ -90,22 +90,6 @@
minGroupSize: 4
maxGroupSize: 5
- type: cp14DemiplaneModifier
id: Ruins
levels:
min: 0
max: 10
name: cp14-modifier-ruins
categories:
Reward: 0.2
generationProb: 0.8
layers:
- !type:CP14OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 8
minGroupSize: 1
maxGroupSize: 1
# TIER 2
- type: cp14DemiplaneModifier

View File

@@ -7,9 +7,39 @@
categories:
Reward: 0.15
layers:
- !type:CP14OreDunGen
entity: CP14DemiplaneArtifactRoomSpawner
- !type:CP14RoomsDunGen
count: 1
minGroupSize: 1
maxGroupSize: 1
tags:
- CP14DemiplaneArtifactRoom
- type: cp14DemiplaneModifier
id: Ruins
levels:
min: 0
max: 10
name: cp14-modifier-ruins
categories:
Reward: 0.2
generationProb: 0.8
layers:
- !type:CP14RoomsDunGen
count: 8
tags:
- CP14DemiplaneRuins
- type: cp14DemiplaneModifier
id: Geodes
levels:
min: 0
max: 10
name: cp14-modifier-ruins
categories:
Reward: 0.15
requiredTags:
- CP14DemiplaneUnderground
generationWeight: 0.5
layers:
- !type:CP14RoomsDunGen
count: 5
tags:
- CP14DemiplanGeodeRoom

View File

@@ -46,11 +46,10 @@
entries:
- visuals: CP14Storm
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- !type:CP14RoomsDunGen
count: 8
tags:
- CP14DemiplaneRuins
- type: cp14DemiplaneModifier
id: WeatherSnow
@@ -95,11 +94,10 @@
min: 30
max: 60
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- !type:CP14RoomsDunGen
count: 8
tags:
- CP14DemiplaneRuins
- type: cp14DemiplaneModifier
id: CP14ManaMist
@@ -114,11 +112,10 @@
entries:
- visuals: CP14ManaMist
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- !type:CP14RoomsDunGen
count: 8
tags:
- CP14DemiplaneRuins
- type: cp14DemiplaneModifier
id: CP14AntiManaMist
@@ -133,11 +130,10 @@
entries:
- visuals: CP14AntiManaMist
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- !type:CP14RoomsDunGen
count: 8
tags:
- CP14DemiplaneRuins
- type: cp14DemiplaneModifier
id: CP14FireStormPeriod
@@ -161,9 +157,8 @@
min: 30
max: 60
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- !type:CP14RoomsDunGen
count: 8
tags:
- CP14DemiplaneRuins

View File

@@ -2,31 +2,28 @@
id: EntryRoom
generationProb: 0
layers:
- !type:CP14OreDunGen
entity: CP14DemiplanEnterRoomMarker
- !type:CP14RoomsDunGen
count: 1
minGroupSize: 1
maxGroupSize: 1
tags:
- CP14DemiplanEnterRoom
- type: cp14DemiplaneModifier
id: Core
generationProb: 0
layers:
- !type:CP14OreDunGen
entity: CP14DemiplanCoreRoomMarker
- !type:CP14RoomsDunGen
count: 1
minGroupSize: 1
maxGroupSize: 1
tags:
- CP14DemiplanCoreRoom
- type: cp14DemiplaneModifier
id: Exit
generationProb: 0
layers:
- !type:CP14OreDunGen
entity: CP14DemiplanePassway
- !type:CP14RoomsDunGen
count: 1
minGroupSize: 1
maxGroupSize: 1
tags:
- CP14DemiplanExitRoom
- !type:CP14OreDunGen
entity: CP14DemiplaneHint
count: 20

View File

@@ -1,18 +1,6 @@
- type: Tag
id: CP14DemiplanCoreRoom
- type: entity
id: CP14DemiplanCoreRoomMarker
categories: [ ForkFiltered ]
parent: BaseRoomMarker
name: Demiplane Core room marker
components:
- type: RoomFill
clearExisting: true
roomWhitelist:
tags:
- CP14DemiplanCoreRoom
- type: dungeonRoom
id: CP14DemiplanCoreRoom_1
size: 7,7

View File

@@ -1,18 +1,6 @@
- type: Tag
id: CP14DemiplanEnterRoom
- type: entity
id: CP14DemiplanEnterRoomMarker
categories: [ ForkFiltered ]
parent: BaseRoomMarker
name: Demiplane enter room marker
components:
- type: RoomFill
clearExisting: true
roomWhitelist:
tags:
- CP14DemiplanEnterRoom
- type: dungeonRoom
id: CP14DemiplanEnterRoom_1
size: 7,7
@@ -66,3 +54,12 @@
offset: 8,8
tags:
- CP14DemiplanEnterRoom
- type: dungeonRoom
id: CP14DemiplanEnterRoom_7
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml
ignoreTile: FloorShuttlePurple
offset: 19,8
tags:
- CP14DemiplanEnterRoom

View File

@@ -0,0 +1,11 @@
- type: Tag
id: CP14DemiplanExitRoom
- type: dungeonRoom
id: CP14DemiplanExitRoom_1
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplane_exit.yml
ignoreTile: FloorShuttlePurple
offset: 0,0
tags:
- CP14DemiplanExitRoom

View File

@@ -0,0 +1,56 @@
- type: Tag
id: CP14DemiplanGeodeRoom
- type: dungeonRoom
id: CP14DemiplanGeodeRoom_1
size: 7,7
atlas: /Maps/_CP14/Dungeon/geodes.yml
ignoreTile: FloorShuttlePurple
offset: 0,0
tags:
- CP14DemiplanGeodeRoom
- type: dungeonRoom
id: CP14DemiplanGeodeRoom_2
size: 7,7
atlas: /Maps/_CP14/Dungeon/geodes.yml
ignoreTile: FloorShuttlePurple
offset: 8,0
tags:
- CP14DemiplanGeodeRoom
- type: dungeonRoom
id: CP14DemiplanGeodeRoom_3
size: 7,7
atlas: /Maps/_CP14/Dungeon/geodes.yml
ignoreTile: FloorShuttlePurple
offset: 16,0
tags:
- CP14DemiplanGeodeRoom
- type: dungeonRoom
id: CP14DemiplanGeodeRoom_4
size: 7,7
atlas: /Maps/_CP14/Dungeon/geodes.yml
ignoreTile: FloorShuttlePurple
offset: 24,0
tags:
- CP14DemiplanGeodeRoom
- type: dungeonRoom
id: CP14DemiplanGeodeRoom_5
size: 7,7
atlas: /Maps/_CP14/Dungeon/geodes.yml
ignoreTile: FloorShuttlePurple
offset: 0,8
tags:
- CP14DemiplanGeodeRoom
- type: dungeonRoom
id: CP14DemiplanGeodeRoom_6
size: 7,7
atlas: /Maps/_CP14/Dungeon/geodes.yml
ignoreTile: FloorShuttlePurple
offset: 8,8
tags:
- CP14DemiplanGeodeRoom