"One of the several fairy races, Sprites are very small. They have tiny wings and can fly over traps that may open up beneath them. They enjoy sunlight intensely, and need worry little about light based attacks. Although physically among the weakest races, Sprites are very talented in magic, and can become highly skilled wizards. Sprites have the special power of spraying Sleeping Dust, and at higher levels they learn to fly faster.",
- "This race is a blasphemous abomination produced by Chaos. It is not an independent race but rather a humanoid creature, most often a human, twisted by the Chaos, or a nightmarish crossbreed of a human and a beast. All Beastmen are accustomed to Chaos so much that they are untroubled by confusion and sound, although raw logrus can still have effects on them. Beastmen revel in chaos, as it twists them more and more. Beastmen are subject to mutations: when they have been created, they receive a random mutation. After that, every time they advance a level they have a small chance of gaining yet another mutation.",
+"This race is a blasphemous abomination produced by Chaos. It is not an independent race but rather a humanoid creature, most often a human, twisted by the Chaos, or a nightmarish crossbreed of a human and a beast. All Beastmen are accustomed to Chaos so much that they are untroubled by confusion and sound, although raw logrus can still have effects on them. Beastmen revel in chaos, as it twists them more and more. Beastmen are subject to mutations: when they have been created, they receive a random mutation. After that, every time they advance a level they have a small chance of gaining yet another mutation.",
"The Ents are a powerful race dating from the beginning of the world, oldest of all animals or plants who inhabit Arda. Spirits of the land, they were summoned to guard the forests of Middle-earth. Being much like trees they are very clumsy but strong, and very susceptible to fire. They gain very little nutrition from the food of mortals, but they can absorb water from potions as their nutrition.",
/* Clean up */
clear_from(10);
- return (picks[k]);
+ return (byte_hack)(picks[k]);
}
for (i = 0; i < 2; i++)
{
s32b tmp = randint0(60*60*60);
- int val;
+ BASE_STATUS val;
/* Extract 5 + 1d3 + 1d4 + 1d5 */
val = 5 + 3;
val = 5 + 3;
val += tmp % 3; tmp /= 3;
val += tmp % 4; tmp /= 4;
- val += tmp;
+ val += (BASE_STATUS)tmp;
/* Save that value */
sum += val;
/* Acquire the stats */
for (i = 0; i < 6; i++)
{
- j = 18 + 60 + dice[i]*10;
+ BASE_STATUS max_max = 18 + 60 + dice[i]*10;
/* Save that value */
- p_ptr->stat_max_max[i] = j;
- if (p_ptr->stat_max[i] > j)
- p_ptr->stat_max[i] = j;
- if (p_ptr->stat_cur[i] > j)
- p_ptr->stat_cur[i] = j;
+ p_ptr->stat_max_max[i] = max_max;
+ if (p_ptr->stat_max[i] > max_max)
+ p_ptr->stat_max[i] = max_max;
+ if (p_ptr->stat_cur[i] > max_max)
+ p_ptr->stat_cur[i] = max_max;
}
p_ptr->knowledge &= ~(KNOW_STAT);
p_ptr->weapon_exp[TV_HAFTED-TV_WEAPON_BEGIN][SV_WHIP] = WEAPON_EXP_BEGINNER;
}
- for (i = 0; i < 10; i++)
+ for (i = 0; i < GINOU_MAX; i++)
p_ptr->skill_exp[i] = s_info[p_ptr->pclass].s_start[i];
/* Hitdice */
else if (social_class < 1) social_class = 1;
/* Save the social class */
- p_ptr->sc = social_class;
+ p_ptr->sc = (s16b)social_class;
/* Skip leading spaces */
/*!
- * @brief プレイヤー構造体の内容を初期値で消去する / Clear all the global "character" data
+ * @brief プレイヤー構造体の内容を初期値で消去する(名前を除く) / Clear all the global "character" data (without name)
* @return なし
*/
-static void player_wipe(void)
+static void player_wipe_without_name(void)
{
int i;
+ player_type tmp;
+
+ /* Temporary copy for migration - written back later */
+ COPY(&tmp, p_ptr, player_type);
/* Hack -- free the "last message" string */
if (p_ptr->last_message) string_free(p_ptr->last_message);
cheat_know = FALSE;
cheat_live = FALSE;
cheat_save = FALSE;
+ cheat_diary_output = FALSE;
+ cheat_turn = FALSE;
/* Assume no winning game */
p_ptr->total_winner = FALSE;
/* Reset virtues*/
for (i = 0; i < 8; i++) p_ptr->virtues[i]=0;
+ dungeon_type = 0;
+
/* Set the recall dungeon accordingly */
- if (vanilla_town)
+ if (vanilla_town || ironman_downward)
{
- dungeon_type = 0;
p_ptr->recall_dungeon = DUNGEON_ANGBAND;
}
else
{
- dungeon_type = 0;
p_ptr->recall_dungeon = DUNGEON_GALGALS;
}
+
+ /* Data migration */
+ memcpy(p_ptr->name, tmp.name, sizeof(tmp.name));
}
* @param r_idx モンスターID
* @return 討伐対象にできるならTRUEを返す。
*/
-static bool mon_hook_quest(int r_idx)
+static bool mon_hook_quest(MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
*/
void determine_random_questor(quest_type *q_ptr)
{
- int r_idx;
+ MONRACE_IDX r_idx;
monster_race *r_ptr;
/* Prepare allocation table */
if (r_ptr->level > (q_ptr->level + (q_ptr->level / 20))) break;
}
- q_ptr->r_idx = r_idx;
+ q_ptr->r_idx = (s16b)r_idx;
}
/*!
static void init_turn(void)
{
if ((p_ptr->prace == RACE_VAMPIRE) ||
- (p_ptr->prace == RACE_SKELETON) ||
- (p_ptr->prace == RACE_ZOMBIE) ||
- (p_ptr->prace == RACE_SPECTRE))
+ (p_ptr->prace == RACE_SKELETON) ||
+ (p_ptr->prace == RACE_ZOMBIE) ||
+ (p_ptr->prace == RACE_SPECTRE))
{
/* Undead start just after midnight */
turn = (TURNS_PER_TICK*3 * TOWN_DAWN) / 4 + 1;
{
/* Monk */
{ TV_SORCERY_BOOK, 0 },
- { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
+ { TV_POTION, SV_POTION_SPEED },
{ TV_POTION, SV_POTION_HEROISM }
},
{
/* ForceTrainer */
{ TV_SORCERY_BOOK, 0 },
- { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
+ { TV_POTION, SV_POTION_SPEED },
{ TV_POTION, SV_POTION_RESTORE_MANA }
},
* @param r_idx モンスターID
* @return 死体を食べられるならTRUEを返す。
*/
-static bool monster_hook_human(int r_idx)
+static bool monster_hook_human(MONRACE_IDX r_idx)
{
monster_race *r_ptr = &r_info[r_idx];
*/
void player_outfit(void)
{
- int i, tv, sv;
+ int i;
+ OBJECT_TYPE_VALUE tv;
+ OBJECT_SUBTYPE_VALUE sv;
object_type forge;
object_type *q_ptr;
}
else if (p_ptr->pclass == CLASS_SORCERER)
{
- for (i = TV_LIFE_BOOK; i <= TV_LIFE_BOOK+MAX_MAGIC-1; i++)
+ OBJECT_TYPE_VALUE book_tval;
+ for (book_tval = TV_LIFE_BOOK; book_tval <= TV_LIFE_BOOK+MAX_MAGIC-1; book_tval++)
{
/* Hack -- Give the player some arrows */
- object_prep(q_ptr, lookup_kind(i, 0));
+ object_prep(q_ptr, lookup_kind(book_tval, 0));
q_ptr->number = 1;
add_outfit(q_ptr);
}
/* Set race */
- p_ptr->prace = k;
+ p_ptr->prace = (byte_hack)k;
rp_ptr = &race_info[p_ptr->prace];
}
/* Set class */
- p_ptr->pclass = k;
+ p_ptr->pclass = (byte_hack)k;
cp_ptr = &class_info[p_ptr->pclass];
mp_ptr = &m_info[p_ptr->pclass];
}
/* Set seikaku */
- p_ptr->pseikaku = k;
+ p_ptr->pseikaku = (byte_hack)k;
ap_ptr = &seikaku_info[p_ptr->pseikaku];
#ifdef JP
strcpy(tmp, ap_ptr->title);
strcpy(tmp, ap_ptr->title);
strcat(tmp," ");
#endif
- strcat(tmp,player_name);
+ strcat(tmp,p_ptr->name);
/* Display */
for (i = 0; i < 6; i++)
{
/* Save the minimum stat */
- stat_limit[i] = cval[i];
+ stat_limit[i] = (s16b)cval[i];
}
return TRUE;
}
/* Input the minimum stats */
- chara_limit.agemin = cval[0];
- chara_limit.agemax = cval[1];
- chara_limit.htmin = cval[2];
- chara_limit.htmax = cval[3];
- chara_limit.wtmin = cval[4];
- chara_limit.wtmax = cval[5];
- chara_limit.scmin = cval[6];
- chara_limit.scmax = cval[7];
+ chara_limit.agemin = (s16b)cval[0];
+ chara_limit.agemax = (s16b)cval[1];
+ chara_limit.htmin = (s16b)cval[2];
+ chara_limit.htmax = (s16b)cval[3];
+ chara_limit.wtmin = (s16b)cval[4];
+ chara_limit.wtmax = (s16b)cval[5];
+ chara_limit.scmin = (s16b)cval[6];
+ chara_limit.scmax = (s16b)cval[7];
return TRUE;
}
{
int i, k, n, cs, os;
- int mode = 0;
+ BIT_FLAGS mode = 0;
bool flag = FALSE;
bool prev = FALSE;
/* Dump the default name */
- c_put_str(TERM_L_BLUE, player_name, 1, 34);
+ c_put_str(TERM_L_BLUE, p_ptr->name, 1, 34);
/*** Instructions ***/
}
/* Set sex */
- p_ptr->psex = k;
+ p_ptr->psex = (byte_hack)k;
sp_ptr = &sex_info[p_ptr->psex];
/* Display */
#else
if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break;
#endif
- c_put_str(TERM_L_BLUE, player_name, 1, 34);
- prt("", 1, 34+strlen(player_name));
+ c_put_str(TERM_L_BLUE, p_ptr->name, 1, 34);
+ prt("", 1, 34+strlen(p_ptr->name));
}
/* Clean up */
}
load_prev_data(FALSE);
- init_dungeon_quests();
init_turn();
+ init_dungeon_quests();
sp_ptr = &sex_info[p_ptr->psex];
rp_ptr = &race_info[p_ptr->prace];
wipe_m_list();
/* Wipe the player */
- player_wipe();
+ player_wipe_without_name();
/* Create a new character */
if (player_birth_aux()) break;
/* Wipe the player */
- player_wipe();
+ player_wipe_without_name();
}
}