Test rituals are now configurable in assets/config.json
This commit is contained in:
parent
ebb69dd589
commit
30997cbff5
4 changed files with 33 additions and 19 deletions
|
@ -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");
|
||||||
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)
|
||||||
|
|
10
systems.cpp
10
systems.cpp
|
@ -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) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue