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. 29
      levelmanager.cpp
  4. 6
      systems.cpp

@ -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 }
]
} }

@ -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": {

@ -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");
int slot = 0;
for(auto& settings : config["test_rituals"]) {
if(settings["active"]) {
auto blanket = re.start(); 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(); settings.erase("active");
re.set_state(blanket, "has_spikes", true);
for(auto& el : settings.items()) {
re.set_state(blanket, el.key(), el.value());
}
re.plan(blanket); re.plan(blanket);
ritual = re.finalize(blanket); auto ritual = re.finalize(blanket);
dbc::check(ritual.kind == combat::RitualKind::PHYSICAL, the_belt.equip(slot, ritual);
fmt::format("second attack is not physical but is {}", slot++;
int(ritual.kind))); }
the_belt.equip(1, ritual); }
} }
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)

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

Loading…
Cancel
Save