From 56c30d40860512a7069c1bdf12cf9452aa46dffe Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Sat, 3 Dec 2011 19:46:43 +0100 Subject: [PATCH] agent::attack_dir(): Do not deal instantkills, instead deduce just some amount of energy --- agent.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/agent.cc b/agent.cc index a13af9c..8c51345 100644 --- a/agent.cc +++ b/agent.cc @@ -81,16 +81,14 @@ agent::attack_dir(int dir_x, int dir_y) if (dead || a->dead) return true; + /* Very simple RPG-ish interaction. */ int attack_dice = round(attr.attack * energy); + int attack_roll = random() % attack_dice; int defense_dice = round(a->attr.defense * a->energy); - - int dice = random() % (attack_dice + defense_dice); - if (dice < attack_dice) { - a->die(); - } else { - die(); - } - return true; + int defense_roll = random() % defense_dice; + if (attack_roll > defense_roll) + a->chenergy(defense_roll - attack_roll); + return attack_roll >= defense_roll; } void