diff options
Diffstat (limited to 'src/armor.cc')
-rw-r--r-- | src/armor.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/armor.cc b/src/armor.cc new file mode 100644 index 0000000..e7ed323 --- /dev/null +++ b/src/armor.cc @@ -0,0 +1,34 @@ +#include "armor.h" +#include "creature.h" +#include "entry.h" +#include <string> +#include <sstream> + +using namespace std; + +namespace entry{ + string Armor::getText(const creature::Creature& c) const { + return genText(*this, c); + } + + string genText(const Armor& a, const creature::Creature& c) { + stringstream text; + text << genText(static_cast<const Item&>(a), c); + text << ": AC: " << a.getACBonus(); + if(a.getArmorType() == "light") { + text << " + dex (i.e., " << (a.getACBonus() + c.getBonus("dex")) << ")"; + } else if(a.getArmorType() == "medium") { + int actualBonus = a.getACBonus(); + actualBonus += (c.getBonus("dex") > 2)? 2 : c.getBonus("dex"); + text << " + dex max 2 (i.e., " << actualBonus << ")"; + } + if(a.getStrRequirement() > 0) { + text << ", Mininum str: " << a.getStrRequirement(); + } + if(a.stealthDisadvantage()) { + text << ", Imposes stealth disadvantage"; + } + text << ". " << genText(static_cast<const Substantial&>(a)); + return text.str(); + } +} |