Rituals can now be configured to have a kind and an element based on the results.

master
Zed A. Shaw 3 days ago
parent a342c53b02
commit 5d924c764f
  1. 14
      assets/rituals.json
  2. 8
      rituals.cpp
  3. 9
      rituals.hpp

@ -138,30 +138,44 @@
"effects": { "effects": {
"boost_magick": { "boost_magick": {
"damage": 10, "damage": 10,
"kind": 2,
"element": 1,
"probability": 1.0 "probability": 1.0
}, },
"pierce_type": { "pierce_type": {
"damage": 11, "damage": 11,
"kind": 1,
"element": 0,
"probability": 1.1 "probability": 1.1
}, },
"magick_type": { "magick_type": {
"damage": 12, "damage": 12,
"kind": 2,
"element": 1,
"probability": 1.2 "probability": 1.2
}, },
"heals_user": { "heals_user": {
"damage": 13, "damage": 13,
"kind": 0,
"element": 0,
"probability": 1.3 "probability": 1.3
}, },
"curses_user": { "curses_user": {
"damage": 14, "damage": 14,
"kind": 0,
"element": 0,
"probability": 1.4 "probability": 1.4
}, },
"boost_damage_large": { "boost_damage_large": {
"damage": 15, "damage": 15,
"kind": 0,
"element": 0,
"probability": 1.5 "probability": 1.5
}, },
"combined": { "combined": {
"damage": 16, "damage": 16,
"kind": 0,
"element": 0,
"probability": 1.6 "probability": 1.6
} }
} }

@ -84,9 +84,13 @@ namespace combat {
auto& effect = effects[action.name]; auto& effect = effects[action.name];
result.damage += int(effect["damage"]); result.damage += int(effect["damage"]);
result.probability += float(effect["probability"]); result.probability += float(effect["probability"]);
result.kind = RitualKind(int(effect["kind"]));
result.element = RitualElement(int(effect["element"]));
fmt::println("ritual has action {} with damage {}, prob: {}", fmt::println("ritual has action {} with damage {}, prob: {}, kind: {}, element: {}",
action.name, result.damage, result.probability); action.name, result.damage,
result.probability, int(result.kind),
int(result.element));
} }
} }

@ -26,13 +26,18 @@ namespace combat {
}; };
enum class RitualElement { enum class RitualElement {
FIRE, LIGHTNING, PHYSICAL NONE=0, FIRE=1, LIGHTNING=2
};
enum class RitualKind {
NONE=0, PHYSICAL=1, MAGICK=2
}; };
struct RitualAction { struct RitualAction {
float probability = 1.0f; float probability = 1.0f;
int damage = 0; int damage = 0;
RitualElement element{RitualElement::FIRE}; RitualKind kind{RitualKind::NONE};
RitualElement element{RitualElement::NONE};
}; };
struct RitualEngine { struct RitualEngine {

Loading…
Cancel
Save