Test rituals are now configurable in assets/config.json

This commit is contained in:
Zed A. Shaw 2025-04-24 23:06:15 -04:00
parent ebb69dd589
commit 30997cbff5
4 changed files with 33 additions and 19 deletions

View file

@ -320,5 +320,10 @@
"SW": 8665, "SW": 8665,
"W": 8592, "W": 8592,
"NW": 8598 "NW": 8598
} },
"test_rituals": [
{ "has_spikes": true, "active": true },
{ "has_magick": true, "active": true },
{ "has_magick": true, "shiny_bauble": true, "active": true }
]
} }

View file

@ -139,7 +139,7 @@
"boost_magick": { "boost_magick": {
"damage": 10, "damage": 10,
"kind": 2, "kind": 2,
"element": 1, "element": 2,
"probability": 1.0 "probability": 1.0
}, },
"pierce_type": { "pierce_type": {

View file

@ -26,22 +26,27 @@ void LevelManager::temp_create_player_rituals() {
auto& level = current(); auto& level = current();
auto player = level.player; auto player = level.player;
auto& the_belt = level.world->get<combat::RitualBelt>(player); auto& the_belt = level.world->get<combat::RitualBelt>(player);
Config config("assets/config.json");
combat::RitualEngine re("assets/rituals.json"); combat::RitualEngine re("assets/rituals.json");
auto blanket = re.start();
re.set_state(blanket, "has_magick", true);
re.plan(blanket);
auto ritual = re.finalize(blanket);
the_belt.equip(0, ritual);
blanket = re.start(); int slot = 0;
re.set_state(blanket, "has_spikes", true);
re.plan(blanket); for(auto& settings : config["test_rituals"]) {
ritual = re.finalize(blanket); if(settings["active"]) {
dbc::check(ritual.kind == combat::RitualKind::PHYSICAL, auto blanket = re.start();
fmt::format("second attack is not physical but is {}",
int(ritual.kind))); settings.erase("active");
the_belt.equip(1, ritual);
for(auto& el : settings.items()) {
re.set_state(blanket, el.key(), el.value());
}
re.plan(blanket);
auto ritual = re.finalize(blanket);
the_belt.equip(slot, ritual);
slot++;
}
}
} }
inline shared_ptr<DinkyECS::World> clone_load_world(shared_ptr<DinkyECS::World> prev_world) inline shared_ptr<DinkyECS::World> clone_load_world(shared_ptr<DinkyECS::World> prev_world)

View file

@ -243,9 +243,13 @@ void System::combat(GameLevel &level, int attack_id) {
}; };
if(result.player_did > 0) { if(result.player_did > 0) {
auto effect = shaders::get( using enum combat::RitualElement;
ritual.kind == combat::RitualKind::PHYSICAL ? "flame" : "lightning");
world.set<SpriteEffect>(enemy.entity, {100, effect}); if(ritual.element == FIRE || ritual.element == LIGHTNING) {
auto effect = shaders::get(
ritual.element == FIRE ? "flame" : "lightning");
world.set<SpriteEffect>(enemy.entity, {100, effect});
}
} }
if(enemy_action == combat::BattleAction::ATTACK) { if(enemy_action == combat::BattleAction::ATTACK) {