OSDN Git Service

Merge pull request #3814 from Slimebreath6078/feature/Add_Laffey_II
author火炎の飛竜 <87808091+Slimebreath6078@users.noreply.github.com>
Sun, 3 Mar 2024 13:40:54 +0000 (22:40 +0900)
committerGitHub <noreply@github.com>
Sun, 3 Mar 2024 13:40:54 +0000 (22:40 +0900)
モンスター「ラフィーII」実装

1  2 
lib/edit/MonsterRaceDefinitions.txt
src/mspell/mspell-summon.cpp
src/system/monster-race-info.h

@@@ -26478,7 -26478,7 +26478,7 @@@ D:ã\81¨ã\81¯è¨\80ã\81\88æ\99®é\80\9aã\81¯ã\80\81巨大ã\81§ã\81\97ã
  N:1322:溶岩の怪物『ヨガン』
  E:Magman,Lava monster
  G:~:R
 -I:107:30d100:20:110:70:0
 +I:107:30d100:20:110:70
  W:50:4:15000:0:0
  B:TOUCH:FIRE:12d8
  B:TOUCH:FIRE:12d8
@@@ -27121,7 -27121,7 +27121,7 @@@ N:1354:赤チォコヴォLv9
  E:Lv.99 Red Chiokovo
  G:B:R
  I:135:80d100:30:150:10
 -W:99:6:80000:0:0:0
 +W:99:6:80000:0:0
  B:CLAW:HURT:10d10
  B:CRUSH:HURT:8d13
  B:KICK:HURT:30d5
@@@ -27160,3 -27160,53 +27160,53 @@@ D:å½¼ã\81«è§¦ã\82\8cã\82\89ã\82\8cã\83\90ã\82°ã\82\8bè\80\85ã\81®å§¿ã
  D:$This is the fate of those who continue to seek an exit from the Amazing Digital Circus and reach their breaking point.
  D:$  He is crawling yet after being sent into the cellar.
  D:$  All touched by him start abstracting.
+ # 特殊仕様で以下の特性あり
+ # ・一度に受けるダメージは現在HPの10%まで。
+ # ・ただしこの軽減効果は最大HPの1.4%を下回らない。
+ # ・救援召喚はウサウサストライカー(後述)を
+ #   2体召喚する。
+ # このダメージキャップは最低29回攻撃を受けないと死なない。
+ # 元ネタにはある延命がないため、その分ダメージキャップは盛っている。
+ # (元々は33回だったが、90F前提のものなため調整で弱体化した)
+ # (ちなみに元ネタでは31回)
+ # 元々はレアリティ6の予定だったが、β版であることやダメージキャップを取り入れるモンスターは初ということもあり試験的に3に下げる
+ N:1356:ラフィーII
+ E:Laffey II
+ G:g:w
+ I:125:50d40:40:180:30
+ W:63:3:35000:0:0
+ B:SHOOT:HURT:12d12
+ B:PUNCH:SUPERHURT:12d12
+ B:HIT:HURT:8d8
+ B:KICK:HURT:8d8
+ X:FEMALE
+ F:ONLY_ONE | NONLIVING | GOOD | FORCE_MAXHP | SPEAK_ALL |
+ F:WEIRD_MIND | DIMINISH_MAX_DAMAGE |
+ F:IM_FIRE | IM_COLD | IM_POIS | RES_DARK | RES_LITE | RES_DISE | RES_CHAO | RES_WATE |
+ F:NO_CONF | NO_FEAR | NO_INSTANTLY_DEATH |
+ F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | TAKE_ITEM | CAN_SWIM | SMART |
+ F:DROP_CORPSE | DROP_GREAT | DROP_2D2 |
+ S:1_IN_2
+ S:ROCKET | PSY_SPEAR | BO_LITE | SHOOT | S_KIN |
+ R:1356:2d1
+ D:$Laffey became immensely stronger...
+ D:$  Yep, became stronger... Zzzzz...
+ D:ラフィーとっても強くなった…
+ D:うん、強くなった……Zzzz…
+ N:1357:ウサウサストライカー
+ E:Bunbun Striker
+ G:*:w
+ I:117:25d22:50:90:0
+ W:63:15:5000:0:0
+ F:NONLIVING | FORCE_MAXHP | EMPTY_MIND | SMART |
+ F:CAN_FLY | RAND_25 | NEVER_BLOW |
+ F:HURT_FIRE | IM_COLD | IM_POIS | RES_DARK | RES_LITE | RES_DISE | RES_CHAO | RES_WATE |
+ F:NO_CONF | NO_FEAR | NO_SLEEP | NO_STUN |
+ S:1_IN_4
+ S:PSY_SPEAR | BO_LITE |
+ D:$It is a part of Laffey II's rigging: a bunny-looking, propeller-less, futuristic drone.
+ D:$  It can project light bolts that burn a hole through a target.
+ D:ラフィーIIの艤装の一部で、兎を模したプロペラのない未来的なドローンだ。
+ D:光の矢が放たれるようになっており、それが通ったものには風穴が空く。
@@@ -8,6 -8,7 +8,6 @@@
  #include "monster-floor/monster-summon.h"
  #include "monster-floor/place-monster-types.h"
  #include "monster-race/monster-race.h"
 -#include "monster-race/race-flags1.h"
  #include "monster-race/race-indice-types.h"
  #include "monster/monster-describer.h"
  #include "monster/monster-description-types.h"
@@@ -109,12 -110,11 +109,11 @@@ static void decide_summon_kin_caster
              msg_format(_("%s^が何かをつぶやいた。", "%s^ mumbles."), m_name);
          }
      } else if (mon_to_player || (mon_to_mon && known && see_either)) {
-         auto *r_ptr = &m_ptr->get_monrace();
  #ifdef JP
          (void)m_poss;
  #endif
-         _(msg_format("%sが魔法で%sを召喚した。", m_name, (r_ptr->kind_flags.has(MonsterKindType::UNIQUE) ? "手下" : "仲間")),
-             msg_format("%s^ magically summons %s %s.", m_name, m_poss, (r_ptr->kind_flags.has(MonsterKindType::UNIQUE) ? "minions" : "kin")));
+         _(msg_format("%sが魔法で%sを召喚した。", m_name, m_ptr->get_pronoun_of_summoned_kin().data()),
+             msg_format("%s^ magically summons %s %s.", m_name, m_poss, m_ptr->get_pronoun_of_summoned_kin().data()));
      }
  
      if (mon_to_mon && known && !see_either) {
@@@ -203,6 -203,9 +202,9 @@@ MonsterSpellResult spell_RF6_S_KIN(Play
      case MonsterRaceId::OOTSUKI:
          count += summon_PLASMA(player_ptr, y, x, rlev, m_idx);
          break;
+     case MonsterRaceId::LAFFEY_II:
+         count += summon_LAFFEY_II(player_ptr, Pos2D(y, x), m_idx);
+         break;
      default:
          count += summon_Kin(player_ptr, y, x, rlev, m_idx);
          break;
@@@ -79,6 -79,11 +79,6 @@@ public
      EXP mexp{}; //!< 殺害時基本経験値 / Exp value for kill
      RARITY freq_spell{}; //!< 魔法&特殊能力仕様頻度(1/n) /  Spell frequency
      MonsterSex sex{}; //!< 性別 / Sex
 -    BIT_FLAGS flags1{}; //!< Flags 1 (general)
 -    BIT_FLAGS flags2{}; //!< Flags 2 (abilities)
 -    BIT_FLAGS flags3{}; //!< Flags 3 (race/resist)
 -    BIT_FLAGS flags7{}; //!< Flags 7 (movement related abilities)
 -    BIT_FLAGS flags8{}; //!< Flags 8 (wilderness info)
      EnumClassFlagGroup<MonsterAbilityType> ability_flags; //!< 能力フラグ(魔法/ブレス) / Ability Flags
      EnumClassFlagGroup<MonsterAuraType> aura_flags; //!< オーラフラグ / Aura Flags
      EnumClassFlagGroup<MonsterBehaviorType> behavior_flags; //!< 能力フラグ(習性)
      ITEM_NUMBER r_drop_item{}; //!< これまでに撃破時に落としたアイテムの数 / Max number of item dropped at once
      byte r_cast_spell{}; //!< 使った魔法/ブレスの種類数 /  Max unique number of spells seen
      byte r_blows[MAX_NUM_BLOWS]{}; //!< 受けた打撃 /  Number of times each blow type was seen
 -    uint32_t r_flags1{}; //!< Observed racial flags
 -    uint32_t r_flags2{}; //!< Observed racial flags
 -    uint32_t r_flags3{}; //!< Observed racial flags
      EnumClassFlagGroup<MonsterAbilityType> r_ability_flags; //!< 見た能力フラグ(魔法/ブレス) / Observed racial ability flags
      EnumClassFlagGroup<MonsterAuraType> r_aura_flags; //!< 見た能力フラグ(オーラ) / Observed aura flags
      EnumClassFlagGroup<MonsterBehaviorType> r_behavior_flags; //!< 見た能力フラグ(習性) / Observed racial attr flags
      bool is_explodable() const;
      std::string get_died_message() const;
      void kill_unique();
+     std::string get_pronoun_of_summoned_kin() const;
  };
  
  class MonraceList {