Valgrind passes. Fixed a bug in combat.
This commit is contained in:
parent
55af06821c
commit
568171c4a2
6 changed files with 18 additions and 21 deletions
|
|
@ -7,7 +7,7 @@
|
||||||
"background": "color:transparent"
|
"background": "color:transparent"
|
||||||
},
|
},
|
||||||
{"_type": "Combat", "max_hp": 200, "max_ap": 12,
|
{"_type": "Combat", "max_hp": 200, "max_ap": 12,
|
||||||
"ap_delta": 6, "damage": 20, "attack_rating": 0.5, "toughness_rating": 0.1,
|
"ap_delta": 6, "damage": 40, "attack_rating": 0.5, "toughness_rating": 0.1,
|
||||||
"body_parts": {
|
"body_parts": {
|
||||||
"head": 200,
|
"head": 200,
|
||||||
"chest": 200,
|
"chest": 200,
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
"background": "color:transparent"
|
"background": "color:transparent"
|
||||||
},
|
},
|
||||||
{"_type": "Combat", "max_hp": 50, "max_ap": 12,
|
{"_type": "Combat", "max_hp": 50, "max_ap": 12,
|
||||||
"ap_delta": 6,"damage": 20, "attack_rating": 0.6, "toughness_rating": 0.2,
|
"ap_delta": 6,"damage": 30, "attack_rating": 0.6, "toughness_rating": 0.2,
|
||||||
"body_parts": {
|
"body_parts": {
|
||||||
"head": 50,
|
"head": 50,
|
||||||
"chest": 50,
|
"chest": 50,
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace components {
|
||||||
|
|
||||||
// don't go below 0
|
// don't go below 0
|
||||||
body_parts[name] = std::max(0, hp - my_dmg);
|
body_parts[name] = std::max(0, hp - my_dmg);
|
||||||
fmt::println("BODY PART {} was {} now {}", name, hp, body_parts[name]);
|
fmt::println("BODY PART {} was {} now {} damage is {}", name, hp, body_parts[name], my_dmg);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Combat::less_than(int level) {
|
bool Combat::less_than(int level) {
|
||||||
|
|
|
||||||
|
|
@ -264,7 +264,9 @@ void System::combat(int attack_id) {
|
||||||
|
|
||||||
// battle.dump();
|
// battle.dump();
|
||||||
|
|
||||||
|
bool battle_ran = false;
|
||||||
while(auto act = battle.next()) {
|
while(auto act = battle.next()) {
|
||||||
|
battle_ran = true;
|
||||||
auto [enemy, enemy_action, cost, host_state] = *act;
|
auto [enemy, enemy_action, cost, host_state] = *act;
|
||||||
|
|
||||||
// player shouldn't hit theirself
|
// player shouldn't hit theirself
|
||||||
|
|
|
||||||
|
|
@ -181,22 +181,10 @@ namespace gui {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FSM::ATTACKING(Event ev, std::any data) {
|
void FSM::ATTACKING(Event ev, std::any data) {
|
||||||
using enum Event;
|
if(!$main_ui.hands_playing()) {
|
||||||
switch(ev) {
|
// run combat one more time
|
||||||
case TICK: {
|
$systems.runCombat(0);
|
||||||
dbc::log("!!!!!! FIX System::combat(0) doesn't use any weapons, only first");
|
state(State::IDLE);
|
||||||
$systems.runCombat(0);
|
|
||||||
run_systems();
|
|
||||||
state(State::IDLE);
|
|
||||||
} break;
|
|
||||||
case ATTACK: {
|
|
||||||
int attack_id = std::any_cast<int>(data);
|
|
||||||
$systems.runCombat(attack_id);
|
|
||||||
run_systems();
|
|
||||||
} break;
|
|
||||||
default:
|
|
||||||
dbc::log($F("In ATTACKING state, unhandled event {}", (int)ev));
|
|
||||||
state(State::IDLE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -254,13 +242,15 @@ namespace gui {
|
||||||
$main_ui.plan_rotate(1, DEFAULT_ROTATE);
|
$main_ui.plan_rotate(1, DEFAULT_ROTATE);
|
||||||
state(State::ROTATING);
|
state(State::ROTATING);
|
||||||
break;
|
break;
|
||||||
case ATTACK:
|
case ATTACK: {
|
||||||
$main_ui.play_hands();
|
$main_ui.play_hands();
|
||||||
$main_ui.dirty();
|
$main_ui.dirty();
|
||||||
sound::play("Sword_Hit_1");
|
sound::play("Sword_Hit_1");
|
||||||
|
$systems.runCombat(0);
|
||||||
|
run_systems();
|
||||||
$status_ui.update();
|
$status_ui.update();
|
||||||
state(State::ATTACKING);
|
state(State::ATTACKING);
|
||||||
break;
|
} break;
|
||||||
case CLOSE:
|
case CLOSE:
|
||||||
dbc::log("Nothing to close.");
|
dbc::log("Nothing to close.");
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -146,6 +146,10 @@ namespace gui {
|
||||||
if(!$hand_anim.playing) $hand_anim.play();
|
if(!$hand_anim.playing) $hand_anim.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MainUI::hands_playing() {
|
||||||
|
return $hand_anim.playing;
|
||||||
|
}
|
||||||
|
|
||||||
void MainUI::render_hands() {
|
void MainUI::render_hands() {
|
||||||
if($hand_anim.playing) {
|
if($hand_anim.playing) {
|
||||||
$hand_anim.update();
|
$hand_anim.update();
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ namespace gui {
|
||||||
void toggle_mind_reading();
|
void toggle_mind_reading();
|
||||||
void render_mind_reading();
|
void render_mind_reading();
|
||||||
void play_hands();
|
void play_hands();
|
||||||
|
bool hands_playing();
|
||||||
void render_hands();
|
void render_hands();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue