diff --git a/assets/common/entity/dungeon/fallback/boss.ron b/assets/common/entity/dungeon/fallback/boss.ron index 4429bb7012..cfda6d5ee3 100644 --- a/assets/common/entity/dungeon/fallback/boss.ron +++ b/assets/common/entity/dungeon/fallback/boss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/fallback/enemy.ron b/assets/common/entity/dungeon/fallback/enemy.ron index 4580f95f60..22dea6881a 100644 --- a/assets/common/entity/dungeon/fallback/enemy.ron +++ b/assets/common/entity/dungeon/fallback/enemy.ron @@ -16,6 +16,5 @@ EntityConfig ( ])), second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/fallback/miniboss.ron b/assets/common/entity/dungeon/fallback/miniboss.ron index f770fd6386..018dcfbb6e 100644 --- a/assets/common/entity/dungeon/fallback/miniboss.ron +++ b/assets/common/entity/dungeon/fallback/miniboss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-0/boss.ron b/assets/common/entity/dungeon/tier-0/boss.ron index b1335d2505..c45b913721 100644 --- a/assets/common/entity/dungeon/tier-0/boss.ron +++ b/assets/common/entity/dungeon/tier-0/boss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-0/bow.ron b/assets/common/entity/dungeon/tier-0/bow.ron index 1efc251451..362cf82734 100644 --- a/assets/common/entity/dungeon/tier-0/bow.ron +++ b/assets/common/entity/dungeon/tier-0/bow.ron @@ -8,6 +8,8 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.gnarling.adlet_bow")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-0.gnarling"), - skillset_asset: Some("common.skillset.dungeon.tier-0.bow"), + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-0.gnarling"), + SkillSetAsset("common.skillset.dungeon.tier-0.bow"), + ], ) diff --git a/assets/common/entity/dungeon/tier-0/miniboss.ron b/assets/common/entity/dungeon/tier-0/miniboss.ron index 56025c4a17..99ebb6165c 100644 --- a/assets/common/entity/dungeon/tier-0/miniboss.ron +++ b/assets/common/entity/dungeon/tier-0/miniboss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-0/spear.ron b/assets/common/entity/dungeon/tier-0/spear.ron index dfd50cb6b7..ade46b767d 100644 --- a/assets/common/entity/dungeon/tier-0/spear.ron +++ b/assets/common/entity/dungeon/tier-0/spear.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.gnarling.wooden_spear")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-0.gnarling"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-0.gnarling"), + ], ) diff --git a/assets/common/entity/dungeon/tier-0/staff.ron b/assets/common/entity/dungeon/tier-0/staff.ron index 37de7ce3e3..8c855b9e70 100644 --- a/assets/common/entity/dungeon/tier-0/staff.ron +++ b/assets/common/entity/dungeon/tier-0/staff.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.gnarling.gnoll_staff")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-0.gnarling"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-0.gnarling"), + ], ) diff --git a/assets/common/entity/dungeon/tier-1/boss.ron b/assets/common/entity/dungeon/tier-1/boss.ron index f6ba0c0c60..1ff096a52c 100644 --- a/assets/common/entity/dungeon/tier-1/boss.ron +++ b/assets/common/entity/dungeon/tier-1/boss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-1/bow.ron b/assets/common/entity/dungeon/tier-1/bow.ron index 5c00765f1b..ac3b28e5e9 100644 --- a/assets/common/entity/dungeon/tier-1/bow.ron +++ b/assets/common/entity/dungeon/tier-1/bow.ron @@ -8,6 +8,8 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.adlet.adlet_bow")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-1.adlet_bow"), - skillset_asset: Some("common.skillset.dungeon.tier-1.bow"), + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-1.adlet_bow"), + SkillSetAsset("common.skillset.dungeon.tier-1.bow"), + ], ) diff --git a/assets/common/entity/dungeon/tier-1/rat.ron b/assets/common/entity/dungeon/tier-1/rat.ron index f198855733..c2672e0f3c 100644 --- a/assets/common/entity/dungeon/tier-1/rat.ron +++ b/assets/common/entity/dungeon/tier-1/rat.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-1/spear.ron b/assets/common/entity/dungeon/tier-1/spear.ron index 27a708fe5f..f32e2021fa 100644 --- a/assets/common/entity/dungeon/tier-1/spear.ron +++ b/assets/common/entity/dungeon/tier-1/spear.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.adlet.wooden_spear")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-1.adlet_spear"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-1.adlet_spear"), + ], ) diff --git a/assets/common/entity/dungeon/tier-1/staff.ron b/assets/common/entity/dungeon/tier-1/staff.ron index 234165085c..5591010069 100644 --- a/assets/common/entity/dungeon/tier-1/staff.ron +++ b/assets/common/entity/dungeon/tier-1/staff.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.adlet.gnoll_staff")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-1.adlet_spear"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-1.adlet_spear"), + ], ) diff --git a/assets/common/entity/dungeon/tier-2/boss.ron b/assets/common/entity/dungeon/tier-2/boss.ron index 17b3759a13..d24afd982f 100644 --- a/assets/common/entity/dungeon/tier-2/boss.ron +++ b/assets/common/entity/dungeon/tier-2/boss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-2/bow.ron b/assets/common/entity/dungeon/tier-2/bow.ron index 0679c25e90..e0cfe24086 100644 --- a/assets/common/entity/dungeon/tier-2/bow.ron +++ b/assets/common/entity/dungeon/tier-2/bow.ron @@ -8,6 +8,8 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.sahagin.adlet_bow")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-2.sahagin"), - skillset_asset: Some("common.skillset.dungeon.tier-2.bow"), + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-2.sahagin"), + SkillSetAsset("common.skillset.dungeon.tier-2.bow"), + ], ) diff --git a/assets/common/entity/dungeon/tier-2/hakulaq.ron b/assets/common/entity/dungeon/tier-2/hakulaq.ron index 605a9d8abe..9ef070ab67 100644 --- a/assets/common/entity/dungeon/tier-2/hakulaq.ron +++ b/assets/common/entity/dungeon/tier-2/hakulaq.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-2/spear.ron b/assets/common/entity/dungeon/tier-2/spear.ron index 5391c5b491..abc9b1b961 100644 --- a/assets/common/entity/dungeon/tier-2/spear.ron +++ b/assets/common/entity/dungeon/tier-2/spear.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.sahagin.wooden_spear")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-2.sahagin"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-2.sahagin"), + ], ) diff --git a/assets/common/entity/dungeon/tier-2/staff.ron b/assets/common/entity/dungeon/tier-2/staff.ron index 5f5d5282ea..b13508dd1b 100644 --- a/assets/common/entity/dungeon/tier-2/staff.ron +++ b/assets/common/entity/dungeon/tier-2/staff.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.sahagin.gnoll_staff")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-2.sahagin"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-2.sahagin"), + ], ) diff --git a/assets/common/entity/dungeon/tier-3/bonerattler.ron b/assets/common/entity/dungeon/tier-3/bonerattler.ron index 9fad589960..ddbb8b5952 100644 --- a/assets/common/entity/dungeon/tier-3/bonerattler.ron +++ b/assets/common/entity/dungeon/tier-3/bonerattler.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-3/boss.ron b/assets/common/entity/dungeon/tier-3/boss.ron index 47b854163e..aea8d5cf91 100644 --- a/assets/common/entity/dungeon/tier-3/boss.ron +++ b/assets/common/entity/dungeon/tier-3/boss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-3/bow.ron b/assets/common/entity/dungeon/tier-3/bow.ron index 1ccb4539de..24ceaabafd 100644 --- a/assets/common/entity/dungeon/tier-3/bow.ron +++ b/assets/common/entity/dungeon/tier-3/bow.ron @@ -8,6 +8,8 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.haniwa.adlet_bow")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-3.haniwa"), - skillset_asset: Some("common.skillset.dungeon.tier-3.bow"), + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-3.haniwa"), + SkillSetAsset("common.skillset.dungeon.tier-3.bow"), + ], ) diff --git a/assets/common/entity/dungeon/tier-3/sentry.ron b/assets/common/entity/dungeon/tier-3/sentry.ron index 3dd3a9abd2..08cb3e73b7 100644 --- a/assets/common/entity/dungeon/tier-3/sentry.ron +++ b/assets/common/entity/dungeon/tier-3/sentry.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-3/spear.ron b/assets/common/entity/dungeon/tier-3/spear.ron index b4ccb3cde7..38bdb85f0f 100644 --- a/assets/common/entity/dungeon/tier-3/spear.ron +++ b/assets/common/entity/dungeon/tier-3/spear.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.haniwa.wooden_spear")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-3.haniwa"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-3.haniwa"), + ], ) diff --git a/assets/common/entity/dungeon/tier-3/staff.ron b/assets/common/entity/dungeon/tier-3/staff.ron index cc9ce0d9de..85aa5ea5a1 100644 --- a/assets/common/entity/dungeon/tier-3/staff.ron +++ b/assets/common/entity/dungeon/tier-3/staff.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.haniwa.gnoll_staff")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-3.haniwa"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-3.haniwa"), + ], ) diff --git a/assets/common/entity/dungeon/tier-4/boss.ron b/assets/common/entity/dungeon/tier-4/boss.ron index 31fc9f38cf..c1f43f164c 100644 --- a/assets/common/entity/dungeon/tier-4/boss.ron +++ b/assets/common/entity/dungeon/tier-4/boss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-4/bow.ron b/assets/common/entity/dungeon/tier-4/bow.ron index 4804cccdf1..7e693009e0 100644 --- a/assets/common/entity/dungeon/tier-4/bow.ron +++ b/assets/common/entity/dungeon/tier-4/bow.ron @@ -8,6 +8,8 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.myrmidon.adlet_bow")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-4.myrmidon"), - skillset_asset: Some("common.skillset.dungeon.tier-4.bow"), + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"), + SkillSetAsset("common.skillset.dungeon.tier-4.bow"), + ], ) diff --git a/assets/common/entity/dungeon/tier-4/miniboss.ron b/assets/common/entity/dungeon/tier-4/miniboss.ron index c095ccd698..23fc8f7ae2 100644 --- a/assets/common/entity/dungeon/tier-4/miniboss.ron +++ b/assets/common/entity/dungeon/tier-4/miniboss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-4/spear.ron b/assets/common/entity/dungeon/tier-4/spear.ron index a53fdcaa4c..d0f2335239 100644 --- a/assets/common/entity/dungeon/tier-4/spear.ron +++ b/assets/common/entity/dungeon/tier-4/spear.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-4.myrmidon"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"), + ], ) diff --git a/assets/common/entity/dungeon/tier-4/staff.ron b/assets/common/entity/dungeon/tier-4/staff.ron index 45d18e6528..9448b6e1a9 100644 --- a/assets/common/entity/dungeon/tier-4/staff.ron +++ b/assets/common/entity/dungeon/tier-4/staff.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.npc_weapons.biped_small.myrmidon.gnoll_staff")), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-4.myrmidon"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"), + ], ) diff --git a/assets/common/entity/dungeon/tier-5/beastmaster.ron b/assets/common/entity/dungeon/tier-5/beastmaster.ron index 48eebf85ac..76d28d1746 100644 --- a/assets/common/entity/dungeon/tier-5/beastmaster.ron +++ b/assets/common/entity/dungeon/tier-5/beastmaster.ron @@ -12,7 +12,9 @@ EntityConfig ( ])), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-5.beastmaster"), - // TODO: make own skillset for him? - skillset_asset: Some("common.skillset.dungeon.tier-5.enemy"), + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-5.beastmaster"), + // TODO: make own skillset for him? + SkillSetAsset("common.skillset.dungeon.tier-5.enemy"), + ], ) diff --git a/assets/common/entity/dungeon/tier-5/boss.ron b/assets/common/entity/dungeon/tier-5/boss.ron index 63380f61fe..b2289aa240 100644 --- a/assets/common/entity/dungeon/tier-5/boss.ron +++ b/assets/common/entity/dungeon/tier-5/boss.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-5/cultist.ron b/assets/common/entity/dungeon/tier-5/cultist.ron index 052a994552..8743a20285 100644 --- a/assets/common/entity/dungeon/tier-5/cultist.ron +++ b/assets/common/entity/dungeon/tier-5/cultist.ron @@ -15,6 +15,8 @@ EntityConfig ( ])), second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-5.cultist"), - skillset_asset: Some("common.skillset.dungeon.tier-5.enemy"), + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-5.cultist"), + SkillSetAsset("common.skillset.dungeon.tier-5.enemy"), + ], ) diff --git a/assets/common/entity/dungeon/tier-5/hound.ron b/assets/common/entity/dungeon/tier-5/hound.ron index 22f78ce8b6..81b37f01f4 100644 --- a/assets/common/entity/dungeon/tier-5/hound.ron +++ b/assets/common/entity/dungeon/tier-5/hound.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-5/husk.ron b/assets/common/entity/dungeon/tier-5/husk.ron index 4beae402bb..a7a00ab6a2 100644 --- a/assets/common/entity/dungeon/tier-5/husk.ron +++ b/assets/common/entity/dungeon/tier-5/husk.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: Some("common.loadout.dungeon.tier-5.husk"), - skillset_asset: None, + meta: [ + LoadoutAsset("common.loadout.dungeon.tier-5.husk"), + ], ) diff --git a/assets/common/entity/dungeon/tier-5/husk_brute.ron b/assets/common/entity/dungeon/tier-5/husk_brute.ron index ebae08f07c..da3e55583c 100644 --- a/assets/common/entity/dungeon/tier-5/husk_brute.ron +++ b/assets/common/entity/dungeon/tier-5/husk_brute.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-5/turret.ron b/assets/common/entity/dungeon/tier-5/turret.ron index e02dbc097d..3991d54909 100644 --- a/assets/common/entity/dungeon/tier-5/turret.ron +++ b/assets/common/entity/dungeon/tier-5/turret.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-5/warlock.ron b/assets/common/entity/dungeon/tier-5/warlock.ron index 527fb4c4f3..34c10532c5 100644 --- a/assets/common/entity/dungeon/tier-5/warlock.ron +++ b/assets/common/entity/dungeon/tier-5/warlock.ron @@ -11,6 +11,5 @@ EntityConfig ( ])), second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/dungeon/tier-5/warlord.ron b/assets/common/entity/dungeon/tier-5/warlord.ron index 9b6d616c85..12a235ab97 100644 --- a/assets/common/entity/dungeon/tier-5/warlord.ron +++ b/assets/common/entity/dungeon/tier-5/warlord.ron @@ -11,6 +11,5 @@ EntityConfig ( ])), second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/test.ron b/assets/common/entity/test.ron index 235a009e7d..f9ca26fe5d 100644 --- a/assets/common/entity/test.ron +++ b/assets/common/entity/test.ron @@ -11,6 +11,12 @@ EntityConfig ( /// Alignment, can be Uninit alignment: Alignment(Enemy), + /// Loot + /// Can be Item (with asset_specifier for item) + /// or LootTable (with asset_specifier for loot table) + /// or Uninit (means it should be specified something in the code) + loot: LootTable("common.loot_tables.humanoids"), + /// Main and second tools /// Can be Option (with asset_specifier for item) /// or Choice @@ -18,18 +24,12 @@ EntityConfig ( main_tool: Some(Item("common.items.weapons.axe_1h.orichalcum-0")), second_tool: None, - /// Loadout Config (with asset_specifier for loadout) - loadout_asset: Some("common.loadout.village.merchant"), - - /// Skillset Config (with asset_specifier for skillset) - skillset_asset: Some("common.skillset.village.merchant"), - - /// Loot - /// Can be Item (with asset_specifier for item) - /// or LootTable (with asset_specifier for loot table) - /// or Uninit (means it should be specified something in the code) - loot: LootTable("common.loot_tables.humanoids"), - - /// Meta Info (level, alignment, agency, etc) - // meta: {}, + /// Meta Info + /// Possible fields: + /// LoadoutAsset(String) with asset_specifier for loadout + /// SkillSetAsset(String) with asset_specifier for skillset + meta: [ + LoadoutAsset("common.loadout.village.merchant"), + SkillSetAsset("common.skillset.village.merchant"), + ], ) diff --git a/assets/common/entity/village/dummy.ron b/assets/common/entity/village/dummy.ron index 8d23eb244b..0c4d11eb4b 100644 --- a/assets/common/entity/village/dummy.ron +++ b/assets/common/entity/village/dummy.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/village/guard.ron b/assets/common/entity/village/guard.ron index 462137ae0d..7aa5297040 100644 --- a/assets/common/entity/village/guard.ron +++ b/assets/common/entity/village/guard.ron @@ -8,6 +8,7 @@ EntityConfig ( main_tool: Some(Item("common.items.weapons.sword.iron-4")), second_tool: None, - loadout_asset: None, - skillset_asset: Some("common.skillset.village.guard"), + meta: [ + SkillSetAsset("common.skillset.village.guard"), + ], ) diff --git a/assets/common/entity/village/merchant.ron b/assets/common/entity/village/merchant.ron index ec1c8cdd18..1c6c26fceb 100644 --- a/assets/common/entity/village/merchant.ron +++ b/assets/common/entity/village/merchant.ron @@ -9,6 +9,7 @@ EntityConfig ( main_tool: Some(Item("common.items.weapons.bow.eldwood-0")), second_tool: None, - loadout_asset: None, - skillset_asset: Some("common.skillset.village.merchant"), + meta: [ + SkillSetAsset("common.skillset.village.merchant"), + ], ) diff --git a/assets/common/entity/village/villager.ron b/assets/common/entity/village/villager.ron index a95985694a..07100a4c2e 100644 --- a/assets/common/entity/village/villager.ron +++ b/assets/common/entity/village/villager.ron @@ -16,6 +16,5 @@ EntityConfig ( ])), second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/dreadhorn.ron b/assets/common/entity/wild/aggressive/dreadhorn.ron index 76f7d1ce23..0ae6564a5d 100644 --- a/assets/common/entity/wild/aggressive/dreadhorn.ron +++ b/assets/common/entity/wild/aggressive/dreadhorn.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/frostfang.ron b/assets/common/entity/wild/aggressive/frostfang.ron index 6436fed49e..e0c62a02c6 100644 --- a/assets/common/entity/wild/aggressive/frostfang.ron +++ b/assets/common/entity/wild/aggressive/frostfang.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/grolgar.ron b/assets/common/entity/wild/aggressive/grolgar.ron index 4fd0e2be04..291c0e451d 100644 --- a/assets/common/entity/wild/aggressive/grolgar.ron +++ b/assets/common/entity/wild/aggressive/grolgar.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/mammoth.ron b/assets/common/entity/wild/aggressive/mammoth.ron index 9fb0e20309..12b75368a1 100644 --- a/assets/common/entity/wild/aggressive/mammoth.ron +++ b/assets/common/entity/wild/aggressive/mammoth.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/mountain_troll.ron b/assets/common/entity/wild/aggressive/mountain_troll.ron index 5014b134be..9ca4bc236b 100644 --- a/assets/common/entity/wild/aggressive/mountain_troll.ron +++ b/assets/common/entity/wild/aggressive/mountain_troll.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/rocksnapper.ron b/assets/common/entity/wild/aggressive/rocksnapper.ron index da2e112efe..d4225eb7ef 100644 --- a/assets/common/entity/wild/aggressive/rocksnapper.ron +++ b/assets/common/entity/wild/aggressive/rocksnapper.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/roshwalr.ron b/assets/common/entity/wild/aggressive/roshwalr.ron index c237f9a82b..a68d735114 100644 --- a/assets/common/entity/wild/aggressive/roshwalr.ron +++ b/assets/common/entity/wild/aggressive/roshwalr.ron @@ -11,6 +11,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/snow_leopard.ron b/assets/common/entity/wild/aggressive/snow_leopard.ron index 75678d667d..fa62cf44b6 100644 --- a/assets/common/entity/wild/aggressive/snow_leopard.ron +++ b/assets/common/entity/wild/aggressive/snow_leopard.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/snow_raptor.ron b/assets/common/entity/wild/aggressive/snow_raptor.ron index 5849d9852e..f727af4abd 100644 --- a/assets/common/entity/wild/aggressive/snow_raptor.ron +++ b/assets/common/entity/wild/aggressive/snow_raptor.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/wendigo.ron b/assets/common/entity/wild/aggressive/wendigo.ron index 9a49ed4731..465167c043 100644 --- a/assets/common/entity/wild/aggressive/wendigo.ron +++ b/assets/common/entity/wild/aggressive/wendigo.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/wolf.ron b/assets/common/entity/wild/aggressive/wolf.ron index 4624d2bc42..a2e50a60bd 100644 --- a/assets/common/entity/wild/aggressive/wolf.ron +++ b/assets/common/entity/wild/aggressive/wolf.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/aggressive/yale.ron b/assets/common/entity/wild/aggressive/yale.ron index 441492c463..0e13c5a8be 100644 --- a/assets/common/entity/wild/aggressive/yale.ron +++ b/assets/common/entity/wild/aggressive/yale.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/alpaca.ron b/assets/common/entity/wild/peaceful/alpaca.ron index 0a6567c036..b737205ca1 100644 --- a/assets/common/entity/wild/peaceful/alpaca.ron +++ b/assets/common/entity/wild/peaceful/alpaca.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/arctic_fox.ron b/assets/common/entity/wild/peaceful/arctic_fox.ron index 4380e983ea..9e455bc0c6 100644 --- a/assets/common/entity/wild/peaceful/arctic_fox.ron +++ b/assets/common/entity/wild/peaceful/arctic_fox.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/arctic_hare.ron b/assets/common/entity/wild/peaceful/arctic_hare.ron index ca398541b3..0b24333750 100644 --- a/assets/common/entity/wild/peaceful/arctic_hare.ron +++ b/assets/common/entity/wild/peaceful/arctic_hare.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/eagle.ron b/assets/common/entity/wild/peaceful/eagle.ron index a010819196..61bf290111 100644 --- a/assets/common/entity/wild/peaceful/eagle.ron +++ b/assets/common/entity/wild/peaceful/eagle.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/highland.ron b/assets/common/entity/wild/peaceful/highland.ron index a7e26a8b8d..7a6ab8fde9 100644 --- a/assets/common/entity/wild/peaceful/highland.ron +++ b/assets/common/entity/wild/peaceful/highland.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/llama.ron b/assets/common/entity/wild/peaceful/llama.ron index 697dabef77..c4d0373547 100644 --- a/assets/common/entity/wild/peaceful/llama.ron +++ b/assets/common/entity/wild/peaceful/llama.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/moose.ron b/assets/common/entity/wild/peaceful/moose.ron index be44787e2d..7bdab79760 100644 --- a/assets/common/entity/wild/peaceful/moose.ron +++ b/assets/common/entity/wild/peaceful/moose.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/mouflon.ron b/assets/common/entity/wild/peaceful/mouflon.ron index f72e24bfab..55982414a8 100644 --- a/assets/common/entity/wild/peaceful/mouflon.ron +++ b/assets/common/entity/wild/peaceful/mouflon.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/owl.ron b/assets/common/entity/wild/peaceful/owl.ron index a8df3ba91c..74c918bb4a 100644 --- a/assets/common/entity/wild/peaceful/owl.ron +++ b/assets/common/entity/wild/peaceful/owl.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/tuskram.ron b/assets/common/entity/wild/peaceful/tuskram.ron index 41cd8a0a0d..672dc221cf 100644 --- a/assets/common/entity/wild/peaceful/tuskram.ron +++ b/assets/common/entity/wild/peaceful/tuskram.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/assets/common/entity/wild/peaceful/yak.ron b/assets/common/entity/wild/peaceful/yak.ron index 788209ae65..702cf18607 100644 --- a/assets/common/entity/wild/peaceful/yak.ron +++ b/assets/common/entity/wild/peaceful/yak.ron @@ -8,6 +8,5 @@ EntityConfig ( main_tool: None, second_tool: None, - loadout_asset: None, - skillset_asset: None, + meta: [], ) diff --git a/common/src/generation.rs b/common/src/generation.rs index fcbd0f2ecd..9c6e6f4b9b 100644 --- a/common/src/generation.rs +++ b/common/src/generation.rs @@ -33,6 +33,12 @@ enum AlignmentMark { Uninit, } +#[derive(Debug, Deserialize, Clone)] +enum Meta { + LoadoutAsset(String), + SkillSetAsset(String), +} + #[derive(Debug, Deserialize, Clone)] struct EntityConfig { name: Option, @@ -43,8 +49,7 @@ struct EntityConfig { main_tool: Option, second_tool: Option, // Meta fields - loadout_asset: Option, - skillset_asset: Option, + meta: Vec, } impl assets::Asset for EntityConfig { @@ -117,8 +122,7 @@ impl EntityInfo { loot, main_tool, second_tool, - loadout_asset, - skillset_asset, + meta, } = config; if let Some(name) = name { @@ -168,12 +172,15 @@ impl EntityInfo { self = self.with_main_tool(second_tool); } - if let Some(loadout_asset) = loadout_asset { - self = self.with_loadout_asset(loadout_asset); - } - - if let Some(skillset_asset) = skillset_asset { - self = self.with_skillset_asset(skillset_asset); + for field in meta { + match field { + Meta::LoadoutAsset(asset) => { + self = self.with_loadout_asset(asset); + }, + Meta::SkillSetAsset(asset) => { + self = self.with_skillset_asset(asset); + }, + } } self @@ -335,10 +342,9 @@ mod tests { let EntityConfig { main_tool, second_tool, - loadout_asset, - skillset_asset, - body, loot, + body, + meta, name: _name, // can't fail if serialized, it's a boring String alignment: _alignment, // can't fail if serialized, it's a boring enum } = config.clone(); @@ -374,16 +380,19 @@ mod tests { LootKind::Uninit => {}, } - if let Some(loadout_asset) = loadout_asset { - let rng = &mut rand::thread_rng(); - let builder = LoadoutBuilder::default(); - // we need to just load it check if it exists, - // because all loadouts are tested in LoadoutBuilder module - std::mem::drop(builder.with_asset_expect(&loadout_asset, rng)); - } - - if let Some(skillset_asset) = skillset_asset { - std::mem::drop(SkillSetBuilder::from_asset_expect(&skillset_asset)); + for field in meta { + match field { + Meta::LoadoutAsset(asset) => { + let rng = &mut rand::thread_rng(); + let builder = LoadoutBuilder::default(); + // we need to just load it check if it exists, + // because all loadouts are tested in LoadoutBuilder module + std::mem::drop(builder.with_asset_expect(&asset, rng)); + }, + Meta::SkillSetAsset(asset) => { + std::mem::drop(SkillSetBuilder::from_asset_expect(&asset)); + }, + } } } }