/* File: racial.c */
-/* Purpose: Racial powers (and mutations) */
-
/*
- * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
+ * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
*
- * This software may be copied and distributed for educational, research, and
- * not for profit purposes provided that this copyright and statement are
- * included in all such copies.
+ * This software may be copied and distributed for educational, research,
+ * and not for profit purposes provided that this copyright and statement
+ * are included in all such copies. Other copyrights may also apply.
*/
+/* Purpose: Racial powers (and mutations) */
+
#include "angband.h"
/*
o_ptr = &o_list[0 - item];
}
+ if (o_ptr->tval == TV_STAFF && o_ptr->sval == SV_STAFF_NOTHING)
+ {
+#ifdef JP
+ msg_print("¤³¤Î¾ó¤Ë¤Ïȯư¤Î°Ù¤ÎǽÎϤϲ¿¤âÈ÷¤ï¤Ã¤Æ¤¤¤Ê¤¤¤è¤¦¤À¡£");
+#else
+ msg_print("This staff doesn't have any magical ability.");
+#endif
+ return FALSE;
+ }
+
+
if (!object_known_p(o_ptr))
{
#ifdef JP
#ifdef JP
msg_print("¤â¤È¤â¤È¹½¤¨¤Æ¤¤¤Ê¤¤¡£");
#else
- msg_print("You are not assuming a posture.");
+ msg_print("You are not assuming a posture.");
#endif
screen_load();
return TRUE;
}
case CLASS_PRIEST:
{
- if (p_ptr->realm1 == REALM_LIFE)
+ if (is_good_realm(p_ptr->realm1))
{
if (racial_aux(35, 70, A_WIS, 50))
{
}
case CLASS_PALADIN:
{
- if (p_ptr->realm1 == REALM_LIFE)
+ if (is_good_realm(p_ptr->realm1))
{
if (racial_aux(30, 30, A_WIS, 20))
{
{
if (racial_aux(25, 0, A_INT, 10))
{
- if (take_hit(DAMAGE_USELIFE, p_ptr->lev,
+ int gain_sp;
#ifdef JP
-"£È£Ð¤«¤é£Í£Ð¤Ø¤Î̵ËŤÊÊÑ´¹", -1))
+ if ((gain_sp = take_hit(DAMAGE_USELIFE, p_ptr->lev, "£È£Ð¤«¤é£Í£Ð¤Ø¤Î̵ËŤÊÊÑ´¹", -1)))
#else
-"thoughtless convertion from HP to SP", -1))
+ if ((gain_sp = take_hit(DAMAGE_USELIFE, p_ptr->lev, "thoughtless convertion from HP to SP", -1)))
#endif
{
- p_ptr->csp += p_ptr->lev / 5;
+ p_ptr->csp += gain_sp / 5;
if (p_ptr->csp > p_ptr->msp)
{
p_ptr->csp = p_ptr->msp;
rlev = r_ptr->level;
if (r_ptr->flags1 & RF1_UNIQUE) rlev = rlev * 3 / 2;
if (rlev > 60) rlev = 60+(rlev-60)/2;
- if ((randint1(skill_exp[GINOU_RIDING]/120+p_ptr->lev*2/3) > rlev) && one_in_(2) && !p_ptr->inside_arena && !p_ptr->inside_battle && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR)) && (rlev < p_ptr->lev*3/2+randint0(p_ptr->lev/5)))
+ if ((randint1(p_ptr->skill_exp[GINOU_RIDING]/120+p_ptr->lev*2/3) > rlev) && one_in_(2) && !p_ptr->inside_arena && !p_ptr->inside_battle && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR)) && (rlev < p_ptr->lev*3/2+randint0(p_ptr->lev/5)))
{
#ifdef JP
msg_format("%s¤ò¼ê¤Ê¤º¤±¤¿¡£",m_name);
msg_format("You have thrown off by %s.",m_name);
#endif
rakuba(1,TRUE);
+
+ /* Paranoia */
+ /* ÍîÇϽèÍý¤Ë¼ºÇÔ¤·¤Æ¤â¤È¤Ë¤«¤¯¾èÇϲò½ü */
+ p_ptr->riding = 0;
}
}
break;
{
if (command == -3)
{
- if (racial_aux(5, 5, A_DEX, 10))
- {
- (void)set_food(PY_FOOD_MAX - 1);
- }
- }
- else if (command == -4)
- {
if (racial_aux(10, 10, A_DEX, 20))
{
if (!word_of_recall()) return FALSE;
int x,y;
for( x=0 ; x < cur_wid ;x++){
for( y=0 ; y < cur_hgt ;y++){
- if( cave[y][x].feat == FEAT_MIRROR){
- cave_set_feat( y , x , FEAT_FLOOR );
- project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF|PROJECT_NO_HANGEKI),-1);
+ if( is_mirror_grid(&cave[y][x])) {
+ remove_mirror(y,x);
+ project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_HANGEKI),-1);
}
}
}
return FALSE;
}
if (racial_aux(30, 0, A_INT, 20)){
- if( cave[py][px].feat == FEAT_MIRROR)
+ if( is_mirror_grid(&cave[py][px]))
{
#ifdef JP
msg_print("¾¯¤·Æ¬¤¬¥Ï¥Ã¥¥ê¤·¤¿¡£");
msg_print("You examine your surroundings.");
#endif
- (void)detect_traps(DETECT_RAD_DEFAULT);
+ (void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
(void)detect_doors(DETECT_RAD_DEFAULT);
(void)detect_stairs(DETECT_RAD_DEFAULT);
}
{
if (racial_aux(30, 50, A_INT, 50))
{
- /* No effect in arena or quest */
- if (p_ptr->inside_arena || p_ptr->inside_quest)
- {
#ifdef JP
-msg_print("¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£");
+ msg_print("¤¢¤Ê¤¿¤ÏÊ⤼þ¤ê»Ï¤á¤¿¡£");
#else
- msg_print("There is no effect.");
+ msg_print("You start walking around. ");
#endif
-
- }
- else
- {
-#ifdef JP
-msg_print("¤¢¤Ê¤¿¤ÏÊ⤼þ¤ê»Ï¤á¤¿¡£¼þ°Ï¤¬ÊѲ½¤·¤Æ¤¤¤ë¡£");
-#else
- msg_print("You start walking around. Your surroundings change.");
-#endif
-
-
- if (autosave_l) do_cmd_save_game(TRUE);
-
- /* Leaving */
- p_ptr->leaving = TRUE;
- }
+ alter_reality();
}
}
break;
msg_print("You examine your surroundings.");
#endif
- (void)detect_traps(DETECT_RAD_DEFAULT);
+ (void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
(void)detect_doors(DETECT_RAD_DEFAULT);
(void)detect_stairs(DETECT_RAD_DEFAULT);
}
}
case CLASS_PRIEST:
{
- if (p_ptr->realm1 == REALM_LIFE)
+ if (is_good_realm(p_ptr->realm1))
{
#ifdef JP
strcpy(power_desc[num].name, "Éð´ï½ËÊ¡");
}
case CLASS_PALADIN:
{
- if (p_ptr->realm1 == REALM_LIFE)
+ if (is_good_realm(p_ptr->realm1))
{
#ifdef JP
strcpy(power_desc[num].name, "¥Û¡¼¥ê¡¼¡¦¥é¥ó¥¹");
power_desc[num].level = 25;
power_desc[num].cost = 0;
- power_desc[num].fail = 100 - racial_chance(20, A_DEX, 0);
+ power_desc[num].fail = 100 - racial_chance(25, A_DEX, 0);
power_desc[num++].number = -3;
#ifdef JP
strcpy(power_desc[num].name, "É´Îö·ý");
power_desc[num].level = 30;
power_desc[num].cost = 30;
- power_desc[num].fail = 100 - racial_chance(20, A_STR, 20);
+ power_desc[num].fail = 100 - racial_chance(30, A_STR, 20);
power_desc[num++].number = -4;
break;
}
case CLASS_BERSERKER:
{
#ifdef JP
-strcpy(power_desc[num].name, "¶õÊ¢½¼Â");
-#else
- strcpy(power_desc[num].name, "Satisfy Hunger");
-#endif
-
- power_desc[num].level = 5;
- power_desc[num].cost = 5;
- power_desc[num].fail = 100 - racial_chance(5, A_DEX, 10);
- power_desc[num++].number = -3;
-#ifdef JP
strcpy(power_desc[num].name, "µ¢´Ô");
#else
strcpy(power_desc[num].name, "Recall");
power_desc[num].level = 10;
power_desc[num].cost = 10;
power_desc[num].fail = 100 - racial_chance(10, A_DEX, 20);
- power_desc[num++].number = -4;
+ power_desc[num++].number = -3;
break;
}
case CLASS_MIRROR_MASTER:
if (use_menu) screen_save();
/* Get a spell from the user */
- choice = (always_show_list || use_menu) ? ESCAPE:1;
- while (!flag)
- {
+ choice = (always_show_list || use_menu) ? ESCAPE:1;
+ while (!flag)
+ {
if( choice==ESCAPE ) choice = ' ';
else if( !get_com(out_val, &choice, FALSE) )break;