From 31bc4ee11d50f8e9c542d44fc7579b52cd1fd00d Mon Sep 17 00:00:00 2001 From: deskull Date: Tue, 2 Apr 2019 23:51:36 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#37353=20chest=5Ftraps=E3=80=80?= =?utf8?q?=E3=82=92=20trap.c=20=E3=81=B8=E7=A7=BB=E5=8B=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/chest.c | 1 + src/cmd2.c | 1 + src/externs.h | 1 - src/flavor.c | 1 + src/tables.c | 80 ----------------------------------------------------------- src/trap.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/trap.h | 2 ++ 7 files changed, 85 insertions(+), 81 deletions(-) diff --git a/src/chest.c b/src/chest.c index b05e9f026..b2cacbab2 100644 --- a/src/chest.c +++ b/src/chest.c @@ -1,6 +1,7 @@  #include "angband.h" #include "spells-summon.h" +#include "trap.h" #include "player-status.h" /*! diff --git a/src/cmd2.c b/src/cmd2.c index 6865f70c9..c5e3e64f3 100644 --- a/src/cmd2.c +++ b/src/cmd2.c @@ -12,6 +12,7 @@ #include "angband.h" #include "chest.h" +#include "trap.h" #include "floor.h" #include "melee.h" #include "object-hook.h" diff --git a/src/externs.h b/src/externs.h index e8bba774d..7339cc3ea 100644 --- a/src/externs.h +++ b/src/externs.h @@ -86,7 +86,6 @@ extern const concptr realm_names[]; extern const concptr E_realm_names[]; #endif extern const concptr spell_names[VALID_REALM][32]; -extern const int chest_traps[64]; extern const concptr player_title[MAX_CLASS][PY_MAX_LEVEL/5]; extern const concptr color_names[16]; extern const concptr stat_names[6]; diff --git a/src/flavor.c b/src/flavor.c index 071c45b16..f7f4f92b3 100644 --- a/src/flavor.c +++ b/src/flavor.c @@ -14,6 +14,7 @@ #include "player-status.h" #include "shoot.h" #include "object-hook.h" +#include "trap.h" /*! * @brief 最初から簡易な名称が明らかになるベースアイテムの判定。 / Certain items, if aware, are known instantly diff --git a/src/tables.c b/src/tables.c index 603995dbb..d83b4809f 100644 --- a/src/tables.c +++ b/src/tables.c @@ -2886,86 +2886,6 @@ const concptr realm_names[] /*! - * @brief 箱のトラップテーブル - * @details - *
- * Each chest has a certain set of traps, determined by pval
- * Each chest has a "pval" from 1 to the chest level (max 55)
- * If the "pval" is negative then the trap has been disarmed
- * The "pval" of a chest determines the quality of its treasure
- * Note that disarming a trap on a chest also removes the lock.
- * 
- */ -const int chest_traps[64] = -{ - 0, /* 0 == empty */ - (CHEST_POISON), - (CHEST_LOSE_STR), - (CHEST_LOSE_CON), - (CHEST_LOSE_STR), - (CHEST_LOSE_CON), /* 5 == best small wooden */ - 0, - (CHEST_ALARM), - (CHEST_ALARM), - (CHEST_LOSE_STR), - (CHEST_LOSE_CON), - (CHEST_POISON), - (CHEST_SCATTER), - (CHEST_LOSE_STR | CHEST_LOSE_CON), - (CHEST_LOSE_STR | CHEST_LOSE_CON), - (CHEST_SUMMON), /* 15 == best large wooden */ - 0, - (CHEST_ALARM), - (CHEST_SCATTER), - (CHEST_PARALYZE), - (CHEST_LOSE_STR | CHEST_LOSE_CON), - (CHEST_SUMMON), - (CHEST_PARALYZE), - (CHEST_LOSE_STR), - (CHEST_LOSE_CON), - (CHEST_EXPLODE), /* 25 == best small iron */ - 0, - (CHEST_E_SUMMON), - (CHEST_POISON | CHEST_LOSE_CON), - (CHEST_LOSE_STR | CHEST_LOSE_CON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_BIRD_STORM), - (CHEST_POISON | CHEST_SUMMON), - (CHEST_E_SUMMON | CHEST_ALARM), - (CHEST_EXPLODE), - (CHEST_EXPLODE | CHEST_SUMMON), /* 35 == best large iron */ - 0, - (CHEST_SUMMON | CHEST_ALARM), - (CHEST_EXPLODE), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_POISON | CHEST_PARALYZE), - (CHEST_EXPLODE), - (CHEST_BIRD_STORM), - (CHEST_EXPLODE | CHEST_E_SUMMON | CHEST_ALARM), - (CHEST_H_SUMMON), /* 45 == best small steel */ - 0, - (CHEST_EXPLODE | CHEST_SUMMON | CHEST_ALARM), - (CHEST_BIRD_STORM), - (CHEST_RUNES_OF_EVIL), - (CHEST_EXPLODE | CHEST_SUMMON | CHEST_ALARM), - (CHEST_BIRD_STORM | CHEST_ALARM), - (CHEST_H_SUMMON | CHEST_ALARM), - (CHEST_RUNES_OF_EVIL), - (CHEST_H_SUMMON | CHEST_SCATTER | CHEST_ALARM), - (CHEST_RUNES_OF_EVIL | CHEST_EXPLODE), /* 55 == best large steel */ - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), - (CHEST_EXPLODE | CHEST_SUMMON), -}; - - -/*! * @brief 職業とレベル毎のプレイヤー称号テーブル / Class titles for the player. *
  * The player gets a new title every five levels, so each class
diff --git a/src/trap.c b/src/trap.c
index 6a5774d87..159613d79 100644
--- a/src/trap.c
+++ b/src/trap.c
@@ -14,6 +14,86 @@ static s16b normal_traps[MAX_NORMAL_TRAPS];
 
 
 /*!
+ * @brief 箱のトラップテーブル
+ * @details
+ * 
+ * Each chest has a certain set of traps, determined by pval
+ * Each chest has a "pval" from 1 to the chest level (max 55)
+ * If the "pval" is negative then the trap has been disarmed
+ * The "pval" of a chest determines the quality of its treasure
+ * Note that disarming a trap on a chest also removes the lock.
+ * 
+ */ +const int chest_traps[64] = +{ + 0, /* 0 == empty */ + (CHEST_POISON), + (CHEST_LOSE_STR), + (CHEST_LOSE_CON), + (CHEST_LOSE_STR), + (CHEST_LOSE_CON), /* 5 == best small wooden */ + 0, + (CHEST_ALARM), + (CHEST_ALARM), + (CHEST_LOSE_STR), + (CHEST_LOSE_CON), + (CHEST_POISON), + (CHEST_SCATTER), + (CHEST_LOSE_STR | CHEST_LOSE_CON), + (CHEST_LOSE_STR | CHEST_LOSE_CON), + (CHEST_SUMMON), /* 15 == best large wooden */ + 0, + (CHEST_ALARM), + (CHEST_SCATTER), + (CHEST_PARALYZE), + (CHEST_LOSE_STR | CHEST_LOSE_CON), + (CHEST_SUMMON), + (CHEST_PARALYZE), + (CHEST_LOSE_STR), + (CHEST_LOSE_CON), + (CHEST_EXPLODE), /* 25 == best small iron */ + 0, + (CHEST_E_SUMMON), + (CHEST_POISON | CHEST_LOSE_CON), + (CHEST_LOSE_STR | CHEST_LOSE_CON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_BIRD_STORM), + (CHEST_POISON | CHEST_SUMMON), + (CHEST_E_SUMMON | CHEST_ALARM), + (CHEST_EXPLODE), + (CHEST_EXPLODE | CHEST_SUMMON), /* 35 == best large iron */ + 0, + (CHEST_SUMMON | CHEST_ALARM), + (CHEST_EXPLODE), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_POISON | CHEST_PARALYZE), + (CHEST_EXPLODE), + (CHEST_BIRD_STORM), + (CHEST_EXPLODE | CHEST_E_SUMMON | CHEST_ALARM), + (CHEST_H_SUMMON), /* 45 == best small steel */ + 0, + (CHEST_EXPLODE | CHEST_SUMMON | CHEST_ALARM), + (CHEST_BIRD_STORM), + (CHEST_RUNES_OF_EVIL), + (CHEST_EXPLODE | CHEST_SUMMON | CHEST_ALARM), + (CHEST_BIRD_STORM | CHEST_ALARM), + (CHEST_H_SUMMON | CHEST_ALARM), + (CHEST_RUNES_OF_EVIL), + (CHEST_H_SUMMON | CHEST_SCATTER | CHEST_ALARM), + (CHEST_RUNES_OF_EVIL | CHEST_EXPLODE), /* 55 == best large steel */ + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), + (CHEST_EXPLODE | CHEST_SUMMON), +}; + + +/*! * @brief タグに従って、基本トラップテーブルを初期化する / Initialize arrays for normal traps * @return なし */ diff --git a/src/trap.h b/src/trap.h index f6da986ea..001748fc5 100644 --- a/src/trap.h +++ b/src/trap.h @@ -5,6 +5,8 @@ extern void disclose_grid(POSITION y, POSITION x); extern void place_trap(POSITION y, POSITION x); extern void hit_trap(bool break_trap); +extern const int chest_traps[64]; + /* Types of normal traps */ #define NOT_TRAP -1 #define TRAP_TRAPDOOR 0 -- 2.11.0