From af7e552d3c139eabc3a150e6098938c559e37734 Mon Sep 17 00:00:00 2001
From: Ed <96445749+TheShuEd@users.noreply.github.com>
Date: Mon, 16 Dec 2024 22:20:36 +0300
Subject: [PATCH] Flora clean up (#33839)
* first migrate
* clean up prototypes
* Update polymorph.yml
* Update flora.yml
* and this one
* and this one x2
* and this one x3
* Update migration.yml
---
.../Prototypes/Catalog/Fills/Crates/cargo.yml | 5 +-
.../Markers/Spawners/Random/flora.yml | 34 +-
.../Markers/Spawners/Random/mineshaft.yml | 14 +-
.../Markers/Spawners/Random/shadowkudzu.yml | 12 +-
.../Entities/Objects/Decoration/flora.yml | 429 +++++-------------
.../Entities/Objects/Misc/kudzu.yml | 12 +-
Resources/Prototypes/Polymorphs/polymorph.yml | 2 +-
.../Prototypes/Procedural/biome_templates.yml | 50 +-
.../Prototypes/Procedural/dungeon_configs.yml | 7 +-
Resources/ServerInfo/Guidebook/Mobs/Diona.xml | 2 +-
.../Decoration/Flora/flora_trees.rsi/icon.png | Bin 4850 -> 0 bytes
.../Flora/flora_trees.rsi/meta.json | 3 -
Resources/migration.yml | 50 ++
13 files changed, 187 insertions(+), 433 deletions(-)
delete mode 100644 Resources/Textures/Objects/Decoration/Flora/flora_trees.rsi/icon.png
diff --git a/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml b/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml
index 0ce625876f..469c24ab97 100644
--- a/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml
+++ b/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml
@@ -342,7 +342,10 @@
- id: Lamp
prob: 0.01
orGroup: Useful
- - id: FloraTreeLarge05
+ - id: FloraTreeLarge
+ prob: 0.01
+ orGroup: Useful
+ - id: LightTree #Funny mobs maybe
prob: 0.01
orGroup: Useful
#notuseful
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml
index 9abd35a920..416833538a 100644
--- a/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml
+++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml
@@ -7,36 +7,14 @@
layers:
- state: red
- sprite: Objects/Decoration/Flora/flora_trees.rsi
- state: icon
+ state: tree01
- type: RandomSpawner
prototypes:
- - FloraTreeLarge01
- - FloraTreeLarge02
- - FloraTreeLarge03
- - FloraTreeLarge04
- - FloraTreeLarge05
- - FloraTreeLarge06
- - FloraTreeConifer01
- - FloraTreeConifer02
- - FloraTreeConifer03
- - FloraTreeSnow01
- - FloraTreeSnow02
- - FloraTreeSnow03
- - FloraTreeSnow04
- - FloraTreeSnow05
- - FloraTreeSnow06
- - FloraTree01
- - FloraTree02
- - FloraTree03
- - FloraTree04
- - FloraTree05
- - FloraTree06
+ - FloraTreeLarge
+ - FloraTreeConifer
+ - FloraTreeSnow
+ - FloraTree
chance: 0.95
rarePrototypes:
- - ShadowTree01
- - ShadowTree02
- - ShadowTree03
- - ShadowTree04
- - ShadowTree05
- - ShadowTree06
+ - ShadowTree
rareChance: 0.05
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml
index 8d1b36c022..34e6212dae 100644
--- a/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml
+++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml
@@ -63,12 +63,7 @@
- type: RandomSpawner
offset: 0.3
prototypes:
- - FloraStalagmite1
- - FloraStalagmite2
- - FloraStalagmite3
- - FloraStalagmite4
- - FloraStalagmite5
- - FloraStalagmite6
+ - FloraStalagmite
chance: 0.9
- type: entity
@@ -84,10 +79,5 @@
- type: RandomSpawner
offset: 0.3
prototypes:
- - FloraGreyStalagmite1
- - FloraGreyStalagmite2
- - FloraGreyStalagmite3
- - FloraGreyStalagmite4
- - FloraGreyStalagmite5
- - FloraGreyStalagmite6
+ - FloraGreyStalagmite
chance: 0.9
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml
index 95a24157f9..bb79958095 100644
--- a/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml
+++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml
@@ -14,12 +14,12 @@
- CrystalPink
- CrystalPink
- ShadowPortal
- - ShadowTree01
- - ShadowTree02
- - ShadowTree03
- - ShadowTree04
- - ShadowTree05
- - ShadowTree06
+ - ShadowTree #TODO: transform into EntityTable with weight
+ - ShadowTree
+ - ShadowTree
+ - ShadowTree
+ - ShadowTree
+ - ShadowTree
rareChance: 0.05
rarePrototypes:
- MobCatShadow
diff --git a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml
index 31bc24cca6..cdbf73a29b 100644
--- a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml
+++ b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml
@@ -147,30 +147,24 @@
- type: entity
parent: BaseRock
- id: FloraRockSolid01
+ id: FloraRockSolid
components:
- type: Sprite
- state: rocksolid01
-
-- type: entity
- parent: BaseRock
- id: FloraRockSolid02
- components:
- - type: Sprite
- state: rocksolid02
-
-- type: entity
- parent: BaseRock
- id: FloraRockSolid03
- components:
- - type: Sprite
- state: rocksolid03
+ layers:
+ - state: rocksolid01
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ rocksolid01: ""
+ rocksolid02: ""
+ rocksolid03: ""
- type: entity
name: stalagmite
description: Natural stone spikes.
parent: BaseRock
- id: FloraStalagmite1
+ id: FloraStalagmite
components:
- type: Destructible
thresholds:
@@ -185,192 +179,75 @@
collection: GlassBreak
- type: Sprite
sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: stalagmite1
+ layers:
+ - state: stalagmite1
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ stalagmite1: ""
+ stalagmite2: ""
+ stalagmite3: ""
+ stalagmite4: ""
+ stalagmite5: ""
+ stalagmite6: ""
- type: entity
- parent: FloraStalagmite1
- id: FloraStalagmite2
+ parent: FloraStalagmite
+ id: FloraGreyStalagmite
components:
- type: Sprite
sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: stalagmite2
-
-- type: entity
- parent: FloraStalagmite1
- id: FloraStalagmite3
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: stalagmite3
-
-- type: entity
- parent: FloraStalagmite1
- id: FloraStalagmite4
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: stalagmite4
-
-- type: entity
- parent: FloraStalagmite1
- id: FloraStalagmite5
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: stalagmite5
-
-- type: entity
- parent: FloraStalagmite1
- id: FloraStalagmite6
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: stalagmite6
-
-- type: entity
- parent: FloraStalagmite1
- id: FloraGreyStalagmite1
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: grey_stalagmite1
-
-- type: entity
- parent: FloraGreyStalagmite1
- id: FloraGreyStalagmite2
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: grey_stalagmite2
-
-- type: entity
- parent: FloraGreyStalagmite1
- id: FloraGreyStalagmite3
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: grey_stalagmite3
-
-- type: entity
- parent: FloraGreyStalagmite1
- id: FloraGreyStalagmite4
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: grey_stalagmite4
-
-- type: entity
- parent: FloraGreyStalagmite1
- id: FloraGreyStalagmite5
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: grey_stalagmite5
-
-- type: entity
- parent: FloraGreyStalagmite1
- id: FloraGreyStalagmite6
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_stalagmite.rsi
- state: grey_stalagmite6
-
-
-- type: entity
- parent: BaseTree
- id: FloraTree01
- name: tree
- components:
- - type: Sprite
- state: tree01
-
-- type: entity
- parent: BaseTree
- id: FloraTree02
- name: tree
- components:
- - type: Sprite
- state: tree02
-
-- type: entity
- parent: BaseTree
- id: FloraTree03
- name: tree
- components:
- - type: Sprite
- state: tree03
+ layers:
+ - state: grey_stalagmite1
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ grey_stalagmite1: ""
+ grey_stalagmite2: ""
+ grey_stalagmite3: ""
+ grey_stalagmite4: ""
+ grey_stalagmite5: ""
+ grey_stalagmite6: ""
- type: entity
parent: BaseTree
- id: FloraTree04
+ id: FloraTree
name: tree
components:
- type: Sprite
- state: tree04
-
-- type: entity
- parent: BaseTree
- id: FloraTree05
- name: tree
- components:
- - type: Sprite
- state: tree05
-
-- type: entity
- parent: BaseTree
- id: FloraTree06
- name: tree
- components:
- - type: Sprite
- state: tree06
-
-- type: entity
- parent: BaseTreeSnow
- id: FloraTreeSnow01
- name: snowy tree
- components:
- - type: Sprite
- state: treesnow01
+ layers:
+ - state: tree01
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ tree01: ""
+ tree02: ""
+ tree03: ""
+ tree04: ""
+ tree05: ""
+ tree06: ""
- type: entity
parent: BaseTreeSnow
- id: FloraTreeSnow02
+ id: FloraTreeSnow
name: snowy tree
components:
- type: Sprite
- state: treesnow02
-
-- type: entity
- parent: BaseTreeSnow
- id: FloraTreeSnow03
- name: snowy tree
- components:
- - type: Sprite
- state: treesnow03
-
-- type: entity
- parent: BaseTreeSnow
- id: FloraTreeSnow04
- name: snowy tree
- components:
- - type: Sprite
- state: treesnow04
-
-- type: entity
- parent: BaseTreeSnow
- id: FloraTreeSnow05
- name: snowy tree
- components:
- - type: Sprite
- state: treesnow05
-
-- type: entity
- parent: BaseTreeSnow
- id: FloraTreeSnow06
- name: snowy tree
- components:
- - type: Sprite
- state: treesnow06
+ layers:
+ - state: treesnow01
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ treesnow01: ""
+ treesnow02: ""
+ treesnow03: ""
+ treesnow04: ""
+ treesnow05: ""
+ treesnow06: ""
- type: entity
parent: BaseTreeSnow
@@ -382,75 +259,38 @@
- type: entity
parent: BaseTreeLarge
- id: FloraTreeLarge01
- name: large tree
- components:
- - type: Sprite
- state: treelarge01
-
-- type: entity
- parent: BaseTreeLarge
- id: FloraTreeLarge02
- name: large tree
- components:
- - type: Sprite
- state: treelarge02
-
-- type: entity
- parent: BaseTreeLarge
- id: FloraTreeLarge03
- name: large tree
- components:
- - type: Sprite
- state: treelarge03
-
-- type: entity
- parent: BaseTreeLarge
- id: FloraTreeLarge04
- name: large tree
- components:
- - type: Sprite
- state: treelarge04
-
-- type: entity
- parent: BaseTreeLarge
- id: FloraTreeLarge05
- name: large tree
- components:
- - type: Sprite
- state: treelarge05
-
-- type: entity
- parent: BaseTreeLarge
- id: FloraTreeLarge06
+ id: FloraTreeLarge
name: large tree
components:
- type: Sprite
- state: treelarge06
-
-- type: entity
- parent: BaseTreeConifer
- id: FloraTreeConifer01
- name: snowy conifer
- components:
- - type: Sprite
- state: treeconifer01
+ layers:
+ - state: treelarge01
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ treelarge01: ""
+ treelarge02: ""
+ treelarge03: ""
+ treelarge04: ""
+ treelarge05: ""
+ treelarge06: ""
- type: entity
parent: BaseTreeConifer
- id: FloraTreeConifer02
+ id: FloraTreeConifer
name: snowy conifer
components:
- type: Sprite
- state: treeconifer02
-
-- type: entity
- parent: BaseTreeConifer
- id: FloraTreeConifer03
- name: snowy conifer
- components:
- - type: Sprite
- state: treeconifer03
+ layers:
+ - state: treeconifer01
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ treeconifer01: ""
+ treeconifer02: ""
+ treeconifer03: ""
- type: entity
parent: BaseTreeConifer
@@ -517,53 +357,17 @@
state: treestumpconifer
- type: entity
- parent: FloraTree01
- id: ShadowTree01
+ parent: FloraTree
+ id: ShadowTree
name: dark wood
description: The leaves are whispering about you.
components:
- type: Sprite
sprite: Objects/Decoration/Flora/flora_shadow_trees.rsi
- state: tree01
-
-- type: entity
- parent: ShadowTree01
- id: ShadowTree02
- components:
- - type: Sprite
- state: tree02
-
-- type: entity
- parent: ShadowTree01
- id: ShadowTree03
- components:
- - type: Sprite
- state: tree03
-
-- type: entity
- parent: ShadowTree01
- id: ShadowTree04
- components:
- - type: Sprite
- state: tree04
-
-- type: entity
- parent: ShadowTree01
- id: ShadowTree05
- components:
- - type: Sprite
- state: tree05
-
-- type: entity
- parent: ShadowTree01
- id: ShadowTree06
- components:
- - type: Sprite
- state: tree06
- type: entity
parent: BaseTree
- id: LightTree01
+ id: LightTree
name: glowing tree
description: A marvelous tree filled with strange energy.
components:
@@ -573,7 +377,18 @@
color: "#6270bb"
- type: Sprite
sprite: Objects/Decoration/Flora/flora_treeslight.rsi
- state: tree01
+ layers:
+ - state: tree01
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ tree01: ""
+ tree02: ""
+ tree03: ""
+ tree04: ""
+ tree05: ""
+ tree06: ""
- type: Destructible
thresholds:
- trigger:
@@ -603,44 +418,4 @@
spawn:
MobLuminousObject:
min: 0
- max: 1
-
-- type: entity
- parent: LightTree01
- id: LightTree02
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_treeslight.rsi
- state: tree02
-
-- type: entity
- parent: LightTree01
- id: LightTree03
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_treeslight.rsi
- state: tree03
-
-- type: entity
- parent: LightTree01
- id: LightTree04
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_treeslight.rsi
- state: tree04
-
-- type: entity
- parent: LightTree01
- id: LightTree05
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_treeslight.rsi
- state: tree05
-
-- type: entity
- parent: LightTree01
- id: LightTree06
- components:
- - type: Sprite
- sprite: Objects/Decoration/Flora/flora_treeslight.rsi
- state: tree06
+ max: 1
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml
index e6b81e7ce4..21b710a618 100644
--- a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml
+++ b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml
@@ -134,12 +134,12 @@
offset: 0.2
chance: 0.05
prototypes:
- - LightTree01
- - LightTree02
- - LightTree03
- - LightTree04
- - LightTree05
- - LightTree06
+ - LightTree #TODO: transform into EntityTable with weight
+ - LightTree
+ - LightTree
+ - LightTree
+ - LightTree
+ - LightTree
- CrystalCyan
rarePrototypes:
- AnomalyFloraBulb
diff --git a/Resources/Prototypes/Polymorphs/polymorph.yml b/Resources/Prototypes/Polymorphs/polymorph.yml
index fe28287cb0..745e032e7d 100644
--- a/Resources/Prototypes/Polymorphs/polymorph.yml
+++ b/Resources/Prototypes/Polymorphs/polymorph.yml
@@ -109,7 +109,7 @@
- type: polymorph
id: TreeMorph
configuration:
- entity: FloraTree01
+ entity: FloraTree
forced: true
transferName: true
revertOnDeath: true
diff --git a/Resources/Prototypes/Procedural/biome_templates.yml b/Resources/Prototypes/Procedural/biome_templates.yml
index 8897931644..588d95f40d 100644
--- a/Resources/Prototypes/Procedural/biome_templates.yml
+++ b/Resources/Prototypes/Procedural/biome_templates.yml
@@ -46,9 +46,7 @@
allowedTiles:
- FloorAsteroidSand
entities:
- - FloraRockSolid01
- - FloraRockSolid02
- - FloraRockSolid03
+ - FloraRockSolid
# Large rock areas
- !type:BiomeEntityLayer
threshold: -0.20
@@ -135,18 +133,8 @@
allowedTiles:
- FloorPlanetGrass
entities:
- - FloraTree01
- - FloraTree02
- - FloraTree03
- - FloraTree04
- - FloraTree05
- - FloraTree06
- - FloraTreeLarge01
- - FloraTreeLarge02
- - FloraTreeLarge03
- - FloraTreeLarge04
- - FloraTreeLarge05
- - FloraTreeLarge06
+ - FloraTree
+ - FloraTreeLarge
# Rock formations
- !type:BiomeEntityLayer
allowedTiles:
@@ -261,9 +249,7 @@
allowedTiles:
- FloorBasalt
entities:
- - FloraRockSolid01
- - FloraRockSolid02
- - FloraRockSolid03
+ - FloraRockSolid
- !type:BiomeEntityLayer
threshold: 0.2
noise:
@@ -384,12 +370,7 @@
allowedTiles:
- FloorSnow
entities:
- - FloraTreeSnow01
- - FloraTreeSnow02
- - FloraTreeSnow03
- - FloraTreeSnow04
- - FloraTreeSnow05
- - FloraTreeSnow06
+ - FloraTreeSnow
# Rock formations
- !type:BiomeEntityLayer
allowedTiles:
@@ -479,12 +460,7 @@
allowedTiles:
- FloorChromite
entities:
- - ShadowTree01
- - ShadowTree02
- - ShadowTree03
- - ShadowTree04
- - ShadowTree05
- - ShadowTree06
+ - ShadowTree
# Rock formations
- !type:BiomeEntityLayer
threshold: -0.2
@@ -548,12 +524,7 @@
allowedTiles:
- FloorAsteroidSand
entities:
- - FloraStalagmite1
- - FloraStalagmite2
- - FloraStalagmite3
- - FloraStalagmite4
- - FloraStalagmite5
- - FloraStalagmite6
+ - FloraStalagmite
- !type:BiomeEntityLayer
threshold: -0.5
invert: true
@@ -601,12 +572,7 @@
allowedTiles:
- FloorAsteroidSand
entities:
- - FloraStalagmite1
- - FloraStalagmite2
- - FloraStalagmite3
- - FloraStalagmite4
- - FloraStalagmite5
- - FloraStalagmite6
+ - FloraStalagmite
- !type:BiomeEntityLayer
threshold: -0.6
invert: true
diff --git a/Resources/Prototypes/Procedural/dungeon_configs.yml b/Resources/Prototypes/Procedural/dungeon_configs.yml
index d75581bbc2..c296aafad6 100644
--- a/Resources/Prototypes/Procedural/dungeon_configs.yml
+++ b/Resources/Prototypes/Procedural/dungeon_configs.yml
@@ -102,12 +102,7 @@
- !type:CorridorClutterDunGen
contents:
- - id: FloraStalagmite1
- - id: FloraStalagmite2
- - id: FloraStalagmite3
- - id: FloraStalagmite4
- - id: FloraStalagmite5
- - id: FloraStalagmite6
+ - id: FloraStalagmite
- !type:BoundaryWallDunGen
diff --git a/Resources/ServerInfo/Guidebook/Mobs/Diona.xml b/Resources/ServerInfo/Guidebook/Mobs/Diona.xml
index eedf23b14f..6c9e4ba208 100644
--- a/Resources/ServerInfo/Guidebook/Mobs/Diona.xml
+++ b/Resources/ServerInfo/Guidebook/Mobs/Diona.xml
@@ -16,7 +16,7 @@
## Make Like A Tree And Leave
-
+
Being exposed to too much Robust Harvest will cause a Diona to grow out of control, turning into an immobile tree (dropping all their equipment).
Cutting down the tree will "restore" the Diona to their mobile state.
diff --git a/Resources/Textures/Objects/Decoration/Flora/flora_trees.rsi/icon.png b/Resources/Textures/Objects/Decoration/Flora/flora_trees.rsi/icon.png
deleted file mode 100644
index 41499b67b3d75dc598afc0e8dda7d55b7ddfca9d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4850
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