Test rituals are now configurable in assets/config.json

master
Zed A. Shaw 2 days ago
parent ebb69dd589
commit 30997cbff5
  1. 7
      assets/config.json
  2. 2
      assets/rituals.json
  3. 35
      levelmanager.cpp
  4. 10
      systems.cpp

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

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

@ -26,22 +26,27 @@ void LevelManager::temp_create_player_rituals() {
auto& level = current();
auto player = level.player;
auto& the_belt = level.world->get<combat::RitualBelt>(player);
Config config("assets/config.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();
re.set_state(blanket, "has_spikes", true);
re.plan(blanket);
ritual = re.finalize(blanket);
dbc::check(ritual.kind == combat::RitualKind::PHYSICAL,
fmt::format("second attack is not physical but is {}",
int(ritual.kind)));
the_belt.equip(1, ritual);
int slot = 0;
for(auto& settings : config["test_rituals"]) {
if(settings["active"]) {
auto blanket = re.start();
settings.erase("active");
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)

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

Loading…
Cancel
Save