OSDN Git Service

[Refactor] #40647 Separated player-info/weapon-effect-info.c/h from self-info.c
[hengband/hengband.git] / src / player-info / weapon-effect-info.c
diff --git a/src/player-info/weapon-effect-info.c b/src/player-info/weapon-effect-info.c
new file mode 100644 (file)
index 0000000..1e31234
--- /dev/null
@@ -0,0 +1,105 @@
+#include "player-info/weapon-effect-info.h"
+#include "inventory/inventory-slot-types.h"
+#include "object-enchant/tr-types.h"
+#include "player-info/self-info-util.h"
+#include "util/bit-flags-calculator.h"
+
+static void set_weapon_bless_info(self_info_type *si_ptr)
+{
+    if (have_flag(si_ptr->flags, TR_BLESSED))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\90_\82Ì\8fj\95\9f\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your weapon has been blessed by the gods.");
+
+    if (have_flag(si_ptr->flags, TR_CHAOTIC))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83\8d\83O\83\8b\83X\82Ì\92¥\82Ì\91®\90«\82ð\82à\82Â\81B", "Your weapon is branded with the Sign of Logrus.");
+
+    if (have_flag(si_ptr->flags, TR_IMPACT))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\91Å\8c\82\82Å\92n\90k\82ð\94­\90\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "The impact of your weapon can cause earthquakes.");
+
+    if (have_flag(si_ptr->flags, TR_VORPAL))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\94ñ\8fí\82É\89s\82¢\81B", "Your weapon is very sharp.");
+
+    if (have_flag(si_ptr->flags, TR_VAMPIRIC))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82©\82ç\90\96½\97Í\82ð\8bz\8eû\82·\82é\81B", "Your weapon drains life from your foes.");
+}
+
+static void set_brand_attack_info(self_info_type *si_ptr)
+{
+    if (have_flag(si_ptr->flags, TR_BRAND_ACID))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\97n\82©\82·\81B", "Your weapon melts your foes.");
+
+    if (have_flag(si_ptr->flags, TR_BRAND_ELEC))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\8a´\93d\82³\82¹\82é\81B", "Your weapon shocks your foes.");
+
+    if (have_flag(si_ptr->flags, TR_BRAND_FIRE))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\94R\82â\82·\81B", "Your weapon burns your foes.");
+
+    if (have_flag(si_ptr->flags, TR_BRAND_COLD))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\93\80\82ç\82¹\82é\81B", "Your weapon freezes your foes.");
+
+    if (have_flag(si_ptr->flags, TR_BRAND_POIS))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\93Å\82Å\90N\82·\81B", "Your weapon poisons your foes.");
+}
+
+static void set_slay_info(self_info_type *si_ptr)
+{
+    if (have_flag(si_ptr->flags, TR_KILL_ANIMAL))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93®\95¨\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of animals.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_ANIMAL))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93®\95¨\82É\91Î\82µ\82Ä\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at animals with extra force.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_EVIL))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8e×\88«\82È\82é\91\8dÝ\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of evil.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_EVIL))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8e×\88«\82È\82é\91\8dÝ\82É\91Î\82µ\82Ä\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at evil with extra force.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_HUMAN))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\90l\8aÔ\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of humans.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_HUMAN))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\90l\8aÔ\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against humans.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_UNDEAD))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83A\83\93\83f\83b\83h\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of undead.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_UNDEAD))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83A\83\93\83f\83b\83h\82É\91Î\82µ\82Ä\90_\90¹\82È\82é\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at undead with holy wrath.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_DEMON))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83f\81[\83\82\83\93\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of demons.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_DEMON))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83f\81[\83\82\83\93\82É\91Î\82µ\82Ä\90_\90¹\82È\82é\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at demons with holy wrath.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_ORC))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83I\81[\83N\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of orcs.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_ORC))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83I\81[\83N\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against orcs.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_TROLL))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83g\83\8d\83\8b\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of trolls.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_TROLL))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83g\83\8d\83\8b\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against trolls.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_GIANT))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8b\90\90l\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of giants.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_GIANT))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8b\90\90l\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against giants.");
+
+    if (have_flag(si_ptr->flags, TR_KILL_DRAGON))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83h\83\89\83S\83\93\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of dragons.");
+    else if (have_flag(si_ptr->flags, TR_SLAY_DRAGON))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83h\83\89\83S\83\93\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against dragons.");
+}
+
+void set_weapon_effect_info(player_type *creature_ptr, self_info_type *si_ptr)
+{
+    object_type *o_ptr = &creature_ptr->inventory_list[INVEN_RARM];
+    if (o_ptr->k_idx == 0)
+        return;
+
+    set_weapon_bless_info(si_ptr);
+    set_brand_attack_info(si_ptr);
+    set_slay_info(si_ptr);
+    if (have_flag(si_ptr->flags, TR_FORCE_WEAPON))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82ÍMP\82ð\8eg\82Á\82Ä\8dU\8c\82\82·\82é\81B", "Your weapon causes greate damages using your MP.");
+
+    if (have_flag(si_ptr->flags, TR_THROW))
+        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93\8a\82°\82â\82·\82¢\81B", "Your weapon can be thrown well.");
+}