Demiplan modifiers (#526)

* simple modifiers

* modifier tag filtering

* Update CP14DemiplanSystem.Generation.cs

* Update rocks.yml

* move loot to modifier

* move enemies to modificators

* fix filtering

* modifier rariry

* reward and difficulty limits

* rebalance and optimize calculation

* Update test.yml

* wizden PR copy

* move all alchemy reagents to modifiers
This commit is contained in:
Ed
2024-11-01 18:08:57 +03:00
committed by GitHub
parent 7124eb5335
commit 3b520ac69c
19 changed files with 564 additions and 235 deletions

View File

@@ -14,7 +14,8 @@
- type: oreDunGen
id: OreIron
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockTin
count: 5
minGroupSize: 5
@@ -22,7 +23,8 @@
- type: oreDunGen
id: OreQuartz
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockQuartz
count: 5
minGroupSize: 5
@@ -30,7 +32,8 @@
- type: oreDunGen
id: OreCoal
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockCoal
count: 3
minGroupSize: 5
@@ -38,7 +41,8 @@
- type: oreDunGen
id: OreSalt
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockSalt
count: 3
minGroupSize: 5
@@ -46,7 +50,8 @@
- type: oreDunGen
id: OreGold
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockGold
count: 4
minGroupSize: 5
@@ -54,7 +59,8 @@
- type: oreDunGen
id: OreSilver
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockSilver
count: 4
minGroupSize: 5
@@ -62,7 +68,8 @@
- type: oreDunGen
id: OrePlasma
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockPlasma
count: 4
minGroupSize: 5
@@ -70,7 +77,8 @@
- type: oreDunGen
id: OreUranium
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockUranium
count: 4
minGroupSize: 5
@@ -78,7 +86,8 @@
- type: oreDunGen
id: OreBananium
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockBananium
count: 6
minGroupSize: 3
@@ -86,10 +95,10 @@
- type: oreDunGen
id: OreArtifactFragment
replacement: AsteroidRock
entityMask:
- AsteroidRock
entity: AsteroidRockArtifactFragment
count: 5
minGroupSize: 1
maxGroupSize: 2

View File

@@ -28,65 +28,111 @@
proto: VGRoidFill
# Ores
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockIron
count: 50
minGroupSize: 10
maxGroupSize: 15
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockCoal
count: 50
minGroupSize: 8
maxGroupSize: 12
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockQuartz
count: 50
minGroupSize: 10
maxGroupSize: 15
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockSalt
count: 50
minGroupSize: 8
maxGroupSize: 12
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockGold
count: 40
minGroupSize: 8
maxGroupSize: 12
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockSilver
count: 40
minGroupSize: 8
maxGroupSize: 12
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockPlasma
count: 35
minGroupSize: 4
maxGroupSize: 8
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockUranium
count: 35
minGroupSize: 4
maxGroupSize: 8
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockArtifactFragment
count: 25
minGroupSize: 1
maxGroupSize: 3
- !type:OreDunGen
replacement: IronRock
entityMask:
- IronRock
entity: IronRockDiamond
count: 15
minGroupSize: 1
maxGroupSize: 2
# Decoration
- !type:OreDunGen
tileMask:
- FloorAsteroidSand
entity: CrystalGreen
count: 10
minGroupSize: 3
maxGroupSize: 5
- !type:OreDunGen
tileMask:
- FloorAsteroidSand
entity: CrystalPink
count: 10
minGroupSize: 3
maxGroupSize: 5
- !type:OreDunGen
tileMask:
- FloorAsteroidSand
entity: CrystalOrange
count: 10
minGroupSize: 3
maxGroupSize: 5
- !type:OreDunGen
tileMask:
- FloorAsteroidSand
entity: CrystalBlue
count: 10
minGroupSize: 3
maxGroupSize: 5
- !type:OreDunGen
tileMask:
- FloorAsteroidSand
entity: CrystalCyan
count: 10
minGroupSize: 3
maxGroupSize: 5
# Configs
- type: dungeonConfig
@@ -225,4 +271,4 @@
layers:
- !type:FillGridDunGen
allowedTiles:
- FloorAsteroidSand
- FloorAsteroidSand

View File

@@ -3,7 +3,6 @@
parent: MobXeno
categories: [ ForkFiltered ]
components:
- type: CP14OutPVSDespawn
- type: NpcFactionMember
factions:
- CP14HostileEveryone
@@ -13,7 +12,6 @@
parent: MobXenoDrone
categories: [ ForkFiltered ]
components:
- type: CP14OutPVSDespawn
- type: NpcFactionMember
factions:
- CP14HostileEveryone
@@ -24,7 +22,6 @@
parent: MobCobraSpace
categories: [ ForkFiltered ]
components:
- type: CP14OutPVSDespawn
- type: NpcFactionMember
factions:
- CP14HostileEveryone
@@ -34,7 +31,6 @@
parent: MobPurpleSnake
categories: [ ForkFiltered ]
components:
- type: CP14OutPVSDespawn
- type: NpcFactionMember
factions:
- CP14HostileEveryone
@@ -44,7 +40,6 @@
parent: MobSmallPurpleSnake
categories: [ ForkFiltered ]
components:
- type: CP14OutPVSDespawn
- type: NpcFactionMember
factions:
- CP14HostileEveryone
@@ -54,7 +49,6 @@
parent: MobWatcherMagmawing
categories: [ ForkFiltered ]
components:
- type: CP14OutPVSDespawn
- type: NpcFactionMember
factions:
- CP14HostileEveryone

View File

@@ -7,6 +7,8 @@
placement:
mode: SnapgridCenter
components:
- type: Transform
anchored: True
- type: Clickable
- type: Sprite
drawdepth: Mobs

View File

@@ -7,7 +7,6 @@
description: The core that connects the real world to the demiplane. Use it to open a temporary passage to the other world.
components:
- type: Sprite
drawdepth: Effects
sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi
layers:
- state: core
@@ -18,9 +17,9 @@
parent: CP14BaseSubdimensionalKey
components:
- type: CP14DemiplaneGeneratorData
rewardLimit: 1.25
difficultyLimit: 0.75
- type: CP14DemiplaneRift
- type: Sprite
state: key1
- type: entity
id: CP14DemiplanRiftCore

View File

@@ -1,6 +1,9 @@
- type: cp14DemiplaneLocation
id: T1Caves
locationConfig: CP14ExpeditionCaves
tags:
- CP14DemiplanOre
- CP14DemiplanUnderground
components:
- type: CP14WeatherController
entries:
@@ -25,32 +28,6 @@
proto: CP14ExpeditionCavesFillAir
- !type:PrototypeDunGen
proto: CP14ExpeditionCavesFillCave
# Ore and resources
- !type:OreDunGen
replacement: CP14WallStone
entity: CP14WallStoneGoldOre
count: 10
minGroupSize: 10
maxGroupSize: 15
- !type:OreDunGen
replacement: CP14WallStone
entity: CP14WallStoneIronOre
count: 10
minGroupSize: 10
maxGroupSize: 15
- !type:OreDunGen
replacement: CP14WallStone
entity: CP14WallStoneCopperOre
count: 10
minGroupSize: 10
maxGroupSize: 15
# Mobs
- !type:MobsDunGen
minCount: 5
maxCount: 10
groups:
- id: CP14SpawnMobUndeadZombie
amount: 1
# Enter and Exit
- !type:MobsDunGen
minCount: 1
@@ -64,12 +41,6 @@
groups:
- id: CP14DemiplanePassway
amount: 1
# Loot
- !type:EntityTableDunGen
minCount: 10
maxCount: 25
table: !type:NestedSelector
tableId: CP14TableExpeditionLootCommon
- type: dungeonConfig
id: CP14ExpeditionCavesFloorMaskAir

View File

@@ -1,6 +1,10 @@
- type: cp14DemiplaneLocation
id: T1GrasslandIsland
locationConfig: CP14ExpeditionGrasslandIsland
tags:
- CP14DemiplanOre
- CP14DemiplanOpenSky
- CP14DemiplanGrass
components:
- type: MapLight
ambientLightColor: "#BFEEFFFF"
@@ -57,32 +61,6 @@
proto: CP14ExpeditionGrasslandIslandFillGrassland
- !type:PrototypeDunGen
proto: CP14ExpeditionGrasslandIslandFillCave
# Ore and resources
- !type:OreDunGen
replacement: CP14WallStone
entity: CP14WallStoneGoldOre
count: 10
minGroupSize: 10
maxGroupSize: 15
- !type:OreDunGen
replacement: CP14WallStone
entity: CP14WallStoneIronOre
count: 10
minGroupSize: 10
maxGroupSize: 15
- !type:OreDunGen
replacement: CP14WallStone
entity: CP14WallStoneCopperOre
count: 10
minGroupSize: 10
maxGroupSize: 15
# Mobs
- !type:MobsDunGen
minCount: 3
maxCount: 6
groups:
- id: CP14SpawnMobDinoYumkaraptor
amount: 1
# Enter and Exit
- !type:MobsDunGen
minCount: 1
@@ -96,12 +74,6 @@
groups:
- id: CP14DemiplanePassway
amount: 1
# Loot
- !type:EntityTableDunGen
minCount: 5
maxCount: 20
table: !type:NestedSelector
tableId: CP14TableExpeditionLootCommon
- type: dungeonConfig
id: CP14ExpeditionGrasslandIslandFloorMaskStone

View File

@@ -0,0 +1,227 @@
- type: cp14DemiplaneModifier
id: GoldOre
unique: false
reward: 0.5
requiredTags:
- CP14DemiplanOre
layers:
- !type:OreDunGen
entityMask:
- CP14WallStone
entity: CP14WallStoneGoldOre
count: 10
minGroupSize: 10
maxGroupSize: 15
- type: cp14DemiplaneModifier
id: IronOre
unique: false
reward: 0.4
requiredTags:
- CP14DemiplanOre
layers:
- !type:OreDunGen
entityMask:
- CP14WallStone
entity: CP14WallStoneIronOre
count: 10
minGroupSize: 10
maxGroupSize: 15
- type: cp14DemiplaneModifier
id: QuartzCrystal
reward: 0.2
requiredTags:
- CP14DemiplanOre
layers:
- !type:OreDunGen
tileMask:
- CP14FloorBase
entity: CP14QuartzCrystal
count: 10
minGroupSize: 3
maxGroupSize: 5
- type: cp14DemiplaneModifier
id: Dayflin
reward: 0.2
requiredTags:
- CP14DemiplanGrass
- CP14DemiplanOpenSky
layers:
- !type:OreDunGen
tileMask:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
entity: CP14GatherableDayflin
count: 10
minGroupSize: 3
maxGroupSize: 5
- type: cp14DemiplaneModifier
id: BlueAmanita
reward: 0.2
requiredTags:
- CP14DemiplanGrass
layers:
- !type:OreDunGen
tileMask:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
entity: CP14GatherableBlueAmanita
count: 10
minGroupSize: 3
maxGroupSize: 5
- type: cp14DemiplaneModifier
id: BloodFlower
reward: 0.2
requiredTags:
- CP14DemiplanGrass
layers:
- !type:OreDunGen
tileMask:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
entity: CP14GatherableBloodFlower
count: 10
minGroupSize: 3
maxGroupSize: 5
- type: cp14DemiplaneModifier
id: WildSage
reward: 0.2
requiredTags:
- CP14DemiplanGrass
- CP14DemiplanOpenSky
layers:
- !type:OreDunGen
tileMask:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
entity: CP14GatherableWildSage
count: 10
minGroupSize: 3
maxGroupSize: 5
- type: cp14DemiplaneModifier
id: LumiShroom
reward: 0.2
requiredTags:
- CP14DemiplanUnderground
layers:
- !type:OreDunGen
tileMask:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
- CP14FloorBase
entity: CP14GatherableLumiMushroom
count: 10
minGroupSize: 3
maxGroupSize: 5
- type: cp14DemiplaneModifier
id: CopperOre
unique: false
reward: 0.3
requiredTags:
- CP14DemiplanOre
layers:
- !type:OreDunGen
entityMask:
- CP14WallStone
entity: CP14WallStoneCopperOre
count: 10
minGroupSize: 10
maxGroupSize: 15
- type: cp14DemiplaneModifier
id: Explosive
difficulty: 0.4
generationWeight: 0.25
layers:
- !type:MobsDunGen
minCount: 25
maxCount: 50
groups:
- id: LandMineExplosive
amount: 1
- type: cp14DemiplaneModifier
id: CommonLoot
reward: 0.25
generationWeight: 2
layers:
- !type:EntityTableDunGen
minCount: 15
maxCount: 30
table: !type:NestedSelector
tableId: CP14TableExpeditionLootCommon
- type: cp14DemiplaneModifier
id: EnemyXeno
difficulty: 0.5
requiredTags:
- CP14DemiplanUnderground
layers:
- !type:EntityTableDunGen
minCount: 5
maxCount: 10
table: !type:GroupSelector
children:
- id: CP14MobXenoDrone
- id: CP14MobXeno
- type: cp14DemiplaneModifier
id: EnemyZombie
difficulty: 0.4
layers:
- !type:EntityTableDunGen
minCount: 5
maxCount: 10
table: !type:GroupSelector
children:
- id: CP14SpawnMobUndeadZombie
- type: cp14DemiplaneModifier
id: EnemyDyno
difficulty: 0.5
requiredTags:
- CP14DemiplanOpenSky
layers:
- !type:MobsDunGen
minCount: 3
maxCount: 6
groups:
- id: CP14SpawnMobDinoYumkaraptor
amount: 1
- type: cp14DemiplaneModifier
id: EnemySnakes
difficulty: 0.7
layers:
- !type:EntityTableDunGen
minCount: 5
maxCount: 10
table: !type:GroupSelector
children:
- id: CP14MobPurpleSnake
- id: CP14MobSmallPurpleSnake
- id: CP14MobSpaceCobra
- type: cp14DemiplaneModifier
id: EnemyMagmawind
difficulty: 0.3
generationWeight: 0.4
layers:
- !type:MobsDunGen
minCount: 3
maxCount: 5
groups:
- id: CP14MobWatcherMagmawing
amount: 1

View File

@@ -0,0 +1,11 @@
- type: Tag
id: CP14DemiplanOre
- type: Tag
id: CP14DemiplanGrass
- type: Tag
id: CP14DemiplanOpenSky
- type: Tag
id: CP14DemiplanUnderground

View File

@@ -22,24 +22,6 @@
- CP14FloorBase
entities:
- CP14RockSmall
- CP14RockSmall
- CP14QuartzCrystal
- !type:BiomeEntityLayer # lumishroom sage
threshold: 0.8
noise:
seed: 8
noiseType: OpenSimplex2
fractalType: Ridged
frequency: 0.045
octaves: 3
lacunarity: 1.8
gain: 0.7
domainWarpType: OpenSimplex2
domainWarpAmp: 120
allowedTiles:
- CP14FloorBase
entities:
- CP14GatherableLumiMushroom
- type: biomeTemplate
id: CP14CavesGeneric

View File

@@ -98,42 +98,6 @@
- CP14GrassBushes7
- CP14GrassBushes8
- CP14GrassBushes9
- !type:BiomeEntityLayer # flowers
threshold: 0.7
noise:
seed: 34
noiseType: OpenSimplex2
fractalType: Ridged
frequency: 0.035
octaves: 3
lacunarity: 1.8
gain: 0.7
domainWarpType: OpenSimplex2
domainWarpAmp: 120
allowedTiles:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
entities:
- CP14GatherableDayflin
- !type:BiomeEntityLayer # BLue amanita
threshold: 0.7
noise:
seed: 67
noiseType: OpenSimplex2
fractalType: Ridged
frequency: 0.038
octaves: 3
lacunarity: 1.8
gain: 0.7
domainWarpType: OpenSimplex2
domainWarpAmp: 120
allowedTiles:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
entities:
- CP14GatherableBlueAmanita
- !type:BiomeEntityLayer # Tall grass!
threshold: 0.3
noise:
@@ -174,40 +138,6 @@
- CP14FloraTreeLarge04
- CP14FloraTreeLarge05
- CP14FloraTreeLarge06
- !type:BiomeEntityLayer # Rare Bloodflower
threshold: 0.7
noise:
seed: 3
noiseType: OpenSimplex2
fractalType: Ridged
frequency: 0.015
octaves: 3
lacunarity: 1.8
gain: 0.7
domainWarpType: OpenSimplex2
domainWarpAmp: 120
allowedTiles:
- CP14FloorGrass
- CP14FloorGrassLight
- CP14FloorGrassTall
entities:
- CP14GatherableBloodFlower
- !type:BiomeEntityLayer # Rare Wild sage
threshold: 0.6
noise:
seed: 8
noiseType: OpenSimplex2
fractalType: Ridged
frequency: 0.015
octaves: 3
lacunarity: 1.8
gain: 0.7
domainWarpType: OpenSimplex2
domainWarpAmp: 120
allowedTiles:
- CP14FloorGrass
entities:
- CP14GatherableWildSage
- !type:BiomeEntityLayer # More Rocks
threshold: 0.7
noise: