OSDN Git Service

[Refactor] #1498 Defined decrease_damage() in PlayerStun
authorHourier <66951241+Hourier@users.noreply.github.com>
Fri, 17 Sep 2021 14:53:05 +0000 (23:53 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 18 Sep 2021 13:10:05 +0000 (22:10 +0900)
src/timed-effect/player-stun.cpp
src/timed-effect/player-stun.h

index 7e28b8b..fa086f1 100644 (file)
@@ -67,6 +67,30 @@ int PlayerStun::decrease_chance() const
     }
 }
 
+/*!
+ * @brief 朦朧ランクに応じてダメージ量 or 命中率を下げる.
+ * @return 朦朧ならば5、ひどく朦朧ならば20.
+ * @details
+ * 呼び出し元で減算しているのでこのメソッドでは正値.
+ * 意識不明瞭ならばそもそも動けないのでこのメソッドを通らない.
+ * しかし今後の拡張を考慮して100としておく.
+ */
+short PlayerStun::decrease_damage() const
+{
+    switch (this->get_rank()) {
+    case StunRank::NONE:
+        return 0;
+    case StunRank::NORMAL:
+        return 5;
+    case StunRank::HARD:
+        return 20;
+    case StunRank::UNCONSCIOUS:
+        return 100;
+    default:
+        throw("Invalid stun rank is specified!");
+    }
+}
+
 bool PlayerStun::is_stunned() const
 {
     return this->get_rank() > StunRank::NONE;
index 3bd01ed..a055e7f 100644 (file)
@@ -19,6 +19,7 @@ public:
     StunRank get_rank(short value) const;
     std::string_view get_stun_mes(StunRank stun_rank) const;
     int decrease_chance() const;
+    short decrease_damage() const;
     bool is_stunned() const;
     void reset();
     void set(short value);