aboutsummaryrefslogtreecommitdiff
path: root/src/armor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/armor.cc')
-rw-r--r--src/armor.cc34
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();
+ }
+}