OSDN Git Service

[Refactor] today_monをグローバルからworld_type内に移動
authoriks <iks3@users.noreply.github.com>
Thu, 18 Mar 2021 06:57:51 +0000 (15:57 +0900)
committeriks <iks3@users.noreply.github.com>
Thu, 18 Mar 2021 06:57:51 +0000 (15:57 +0900)
src/cmd-building/cmd-building.cpp
src/cmd-building/cmd-building.h
src/load/world-loader.cpp
src/market/bounty.cpp
src/monster-floor/monster-death.cpp
src/object-hook/hook-quest.cpp
src/player/player-status.h
src/save/player-writer.cpp
src/world/world.h

index f6f1cce..c786cff 100644 (file)
@@ -74,7 +74,6 @@ PRICE kakekin;
 int sel_monster;
 
 bool reinit_wilderness = FALSE;
-MONSTER_IDX today_mon;
 
 /*!
  * @brief 町に関するヘルプを表示する / Display town history
index aae6bbf..f096767 100644 (file)
@@ -16,9 +16,6 @@
 
 extern bool reinit_wilderness;
 
-//! 日替わり賞金首のモンスターID。
-extern MONRACE_IDX today_mon;
-
 extern u32b mon_odds[4];
 extern int battle_odds;
 extern PRICE kakekin;
index 0ad0062..47eceae 100644 (file)
@@ -119,7 +119,7 @@ static void rd_world_info(player_type *creature_ptr)
     if (z_older_than(10, 0, 3))
         determine_daily_bounty(creature_ptr, TRUE);
     else {
-        rd_s16b(&today_mon);
+        rd_s16b(&current_world_ptr->today_mon);
         rd_s16b(&creature_ptr->today_mon);
     }
 }
index 4c34b64..a1303b9 100644 (file)
@@ -99,13 +99,14 @@ bool exchange_cash(player_type *player_ptr)
 
     for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_CORPSE) && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name))) {
+        if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_CORPSE)
+            && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[current_world_ptr->today_mon].name))) {
             char buf[MAX_NLEN + 32];
             describe_flavor(player_ptr, o_name, o_ptr, 0);
             sprintf(buf, _("%s を換金しますか?", "Convert %s into money? "), o_name);
             if (get_check(buf)) {
-                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[today_mon].level * 50 + 100) * o_ptr->number));
-                player_ptr->au += (r_info[today_mon].level * 50 + 100) * o_ptr->number;
+                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[current_world_ptr->today_mon].level * 50 + 100) * o_ptr->number));
+                player_ptr->au += (r_info[current_world_ptr->today_mon].level * 50 + 100) * o_ptr->number;
                 player_ptr->redraw |= (PR_GOLD);
                 vary_item(player_ptr, i, -o_ptr->number);
             }
@@ -117,13 +118,14 @@ bool exchange_cash(player_type *player_ptr)
     for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) {
         o_ptr = &player_ptr->inventory_list[i];
 
-        if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_SKELETON) && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name))) {
+        if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_SKELETON)
+            && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[current_world_ptr->today_mon].name))) {
             char buf[MAX_NLEN + 32];
             describe_flavor(player_ptr, o_name, o_ptr, 0);
             sprintf(buf, _("%s を換金しますか?", "Convert %s into money? "), o_name);
             if (get_check(buf)) {
-                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[today_mon].level * 30 + 60) * o_ptr->number));
-                player_ptr->au += (r_info[today_mon].level * 30 + 60) * o_ptr->number;
+                msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[current_world_ptr->today_mon].level * 30 + 60) * o_ptr->number));
+                player_ptr->au += (r_info[current_world_ptr->today_mon].level * 30 + 60) * o_ptr->number;
                 player_ptr->redraw |= (PR_GOLD);
                 vary_item(player_ptr, i, -o_ptr->number);
             }
@@ -196,7 +198,7 @@ bool exchange_cash(player_type *player_ptr)
 void today_target(player_type *player_ptr)
 {
     char buf[160];
-    monster_race *r_ptr = &r_info[today_mon];
+    monster_race *r_ptr = &r_info[current_world_ptr->today_mon];
 
     clear_bldg(4, 18);
     c_put_str(TERM_YELLOW, _("本日の賞金首", "Wanted monster that changes from day to day"), 5, 10);
@@ -206,7 +208,7 @@ void today_target(player_type *player_ptr)
     prt(buf, 8, 10);
     sprintf(buf, _("骨   ---- $%d", "skeleton ---- $%d"), (int)r_ptr->level * 30 + 60);
     prt(buf, 9, 10);
-    player_ptr->today_mon = today_mon;
+    player_ptr->today_mon = current_world_ptr->today_mon;
 }
 
 /*!
@@ -284,9 +286,9 @@ void determine_daily_bounty(player_type *player_ptr, bool conv_old)
     get_mon_num_prep_bounty(player_ptr);
 
     while (TRUE) {
-        today_mon = get_mon_num(player_ptr, MIN(max_dl / 2, 40), max_dl, GMN_ARENA);
+        current_world_ptr->today_mon = get_mon_num(player_ptr, MIN(max_dl / 2, 40), max_dl, GMN_ARENA);
         monster_race *r_ptr;
-        r_ptr = &r_info[today_mon];
+        r_ptr = &r_info[current_world_ptr->today_mon];
 
         if (cheat_hear) {
             msg_format("日替わり候補: %s ", r_ptr->name + r_name);
index b728915..54c7eb9 100644 (file)
@@ -109,7 +109,8 @@ static void drop_corpse(player_type *player_ptr, monster_death_type *md_ptr)
     floor_type *floor_ptr = player_ptr->current_floor_ptr;
     bool is_drop_corpse = one_in_(md_ptr->r_ptr->flags1 & RF1_UNIQUE ? 1 : 4);
     is_drop_corpse &= (md_ptr->r_ptr->flags9 & (RF9_DROP_CORPSE | RF9_DROP_SKELETON)) != 0;
-    is_drop_corpse &= !(floor_ptr->inside_arena || player_ptr->phase_out || md_ptr->cloned || ((md_ptr->m_ptr->r_idx == today_mon) && is_pet(md_ptr->m_ptr)));
+    is_drop_corpse &= !(floor_ptr->inside_arena || player_ptr->phase_out || md_ptr->cloned
+        || ((md_ptr->m_ptr->r_idx == current_world_ptr->today_mon) && is_pet(md_ptr->m_ptr)));
     if (!is_drop_corpse)
         return;
 
@@ -380,4 +381,4 @@ concptr extract_note_dies(MONRACE_IDX r_idx)
             return _("は爆発して粉々になった。", " explodes into tiny shreds.");
 
     return _("を倒した。", " is destroyed.");
-}
\ No newline at end of file
+}
index 2d81628..5bbd242 100644 (file)
@@ -25,7 +25,7 @@ bool object_is_bounty(player_type *player_ptr, object_type *o_ptr)
     if (vanilla_town)
         return FALSE;
 
-    if (player_ptr->today_mon > 0 && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name)))
+    if (player_ptr->today_mon > 0 && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[current_world_ptr->today_mon].name)))
         return TRUE;
 
     if (o_ptr->pval == MON_TSUCHINOKO)
index 59e07b5..07709de 100644 (file)
@@ -277,7 +277,7 @@ typedef struct player_type {
     s16b pet_follow_distance; /* Length of the imaginary "leash" for pets */
     s16b pet_extra_flags; /* Various flags for controling pets */
 
-    s16b today_mon; /*!< 日替わり賞金首を知っていればそのモンスターID、知らなければ 0 */
+    MONSTER_IDX today_mon; //!< 日替わり賞金首を知っていればそのモンスターID、知らなければ 0
 
     bool dtrap; /* Whether you are on trap-safe grids */
     FLOOR_IDX floor_id; /* Current floor location */
index d672bee..af19101 100644 (file)
@@ -225,7 +225,7 @@ void wr_player(player_type *creature_ptr)
     wr_s32b(current_world_ptr->game_turn);
     wr_s32b(current_world_ptr->dungeon_turn);
     wr_s32b(current_world_ptr->arena_start_turn);
-    wr_s16b(today_mon);
+    wr_s16b(current_world_ptr->today_mon);
     wr_s16b(creature_ptr->today_mon);
     wr_s16b(creature_ptr->riding);
     wr_s16b(creature_ptr->floor_id);
index ecbbba9..b69ef22 100644 (file)
@@ -20,6 +20,7 @@ typedef struct world_type {
        MONSTER_IDX timewalk_m_idx;     /*!< 現在時間停止を行っているモンスターのID */
 
        MONRACE_IDX bounty_r_idx[MAX_BOUNTY];
+    MONSTER_IDX today_mon; //!< 実際の日替わり賞金首
 
        u32b play_time; /*!< 実プレイ時間 */