|
|
|
@ -5,24 +5,24 @@ |
|
|
|
|
using namespace combat; |
|
|
|
|
|
|
|
|
|
TEST_CASE("prototype combat system ideas", "[combat]") { |
|
|
|
|
ai::reset(); |
|
|
|
|
ai::init("assets/rituals.json"); |
|
|
|
|
RitualEngine re("assets/rituals.json"); |
|
|
|
|
auto ritual = re.start(); |
|
|
|
|
|
|
|
|
|
auto start = ai::load_state("initial"); |
|
|
|
|
auto goal = ai::load_state("final"); |
|
|
|
|
re.set_state(ritual, "has_spikes", true); |
|
|
|
|
re.plan(ritual); |
|
|
|
|
|
|
|
|
|
RitualAI ritual("actions", start, goal); |
|
|
|
|
|
|
|
|
|
ritual.set_state("has_spikes", true); |
|
|
|
|
ritual.update(); |
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO PIERCE"); |
|
|
|
|
ritual.dump(); |
|
|
|
|
REQUIRE(ritual.will_do("pierce_type")); |
|
|
|
|
|
|
|
|
|
ritual.reset(); |
|
|
|
|
ritual.set_state("has_magick", true); |
|
|
|
|
ritual.set_state("has_spikes", true); |
|
|
|
|
ritual.update(); |
|
|
|
|
REQUIRE(ritual.start != ritual.original); |
|
|
|
|
re.reset(ritual); |
|
|
|
|
REQUIRE(ritual.start == ritual.original); |
|
|
|
|
|
|
|
|
|
re.set_state(ritual, "has_magick", true); |
|
|
|
|
re.set_state(ritual, "has_spikes", true); |
|
|
|
|
re.plan(ritual); |
|
|
|
|
|
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO MAGICK TOO"); |
|
|
|
|
ritual.dump(); |
|
|
|
|
REQUIRE(ritual.will_do("magick_type")); |
|
|
|
@ -30,20 +30,31 @@ TEST_CASE("prototype combat system ideas", "[combat]") { |
|
|
|
|
ritual.pop(); |
|
|
|
|
REQUIRE(ritual.will_do("pierce_type")); |
|
|
|
|
|
|
|
|
|
ritual.reset(); |
|
|
|
|
ritual.set_state("has_magick", true); |
|
|
|
|
ritual.set_state("has_spikes", true); |
|
|
|
|
ritual.set_state("shiny_bauble", true); |
|
|
|
|
ritual.update(); |
|
|
|
|
re.reset(ritual); |
|
|
|
|
re.set_state(ritual, "has_magick", true); |
|
|
|
|
re.set_state(ritual, "has_spikes", true); |
|
|
|
|
re.set_state(ritual, "shiny_bauble", true); |
|
|
|
|
re.plan(ritual); |
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO DAMAGE BOOST"); |
|
|
|
|
ritual.dump(); |
|
|
|
|
|
|
|
|
|
ritual.reset(); |
|
|
|
|
ritual.set_state("has_magick", true); |
|
|
|
|
ritual.set_state("cursed_item", true); |
|
|
|
|
ritual.set_state("shiny_bauble", true); |
|
|
|
|
ritual.update(); |
|
|
|
|
re.reset(ritual); |
|
|
|
|
re.set_state(ritual, "has_magick", true); |
|
|
|
|
re.set_state(ritual, "cursed_item", true); |
|
|
|
|
re.set_state(ritual, "shiny_bauble", true); |
|
|
|
|
re.plan(ritual); |
|
|
|
|
fmt::println("\n\n------------ TEST WILL DO LARGE DAMAGE BOOST"); |
|
|
|
|
ritual.dump(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_CASE("confirm that cycles are avoided/detected", "[combat]") { |
|
|
|
|
RitualEngine re("assets/rituals.json"); |
|
|
|
|
auto ritual = re.start(); |
|
|
|
|
|
|
|
|
|
re.set_state(ritual, "has_magick", true); |
|
|
|
|
re.set_state(ritual, "cursed_item", true); |
|
|
|
|
re.set_state(ritual, "shiny_bauble", true); |
|
|
|
|
|
|
|
|
|
fmt::println("\n\n------------ CYCLES AVOIDED"); |
|
|
|
|
ritual.dump(); |
|
|
|
|
} |
|
|
|
|