/* Chance of using syllables to form the name instead of the "template" files */
+#define SINDARIN_NAME 10
#define TABLE_NAME 20
#define A_CURSED 13
#define WEIRD_LUCK 12
*/
void one_low_esp(object_type *o_ptr)
{
- switch (randint1(9))
+ switch (randint1(10))
{
- case 1: add_flag(o_ptr->art_flags, TR_ESP_ANIMAL); break;
- case 2: add_flag(o_ptr->art_flags, TR_ESP_UNDEAD); break;
- case 3: add_flag(o_ptr->art_flags, TR_ESP_DEMON); break;
- case 4: add_flag(o_ptr->art_flags, TR_ESP_ORC); break;
- case 5: add_flag(o_ptr->art_flags, TR_ESP_TROLL); break;
- case 6: add_flag(o_ptr->art_flags, TR_ESP_GIANT); break;
- case 7: add_flag(o_ptr->art_flags, TR_ESP_DRAGON); break;
- case 8: add_flag(o_ptr->art_flags, TR_ESP_HUMAN); break;
- case 9: add_flag(o_ptr->art_flags, TR_ESP_GOOD); break;
+ case 1: add_flag(o_ptr->art_flags, TR_ESP_ANIMAL); break;
+ case 2: add_flag(o_ptr->art_flags, TR_ESP_UNDEAD); break;
+ case 3: add_flag(o_ptr->art_flags, TR_ESP_DEMON); break;
+ case 4: add_flag(o_ptr->art_flags, TR_ESP_ORC); break;
+ case 5: add_flag(o_ptr->art_flags, TR_ESP_TROLL); break;
+ case 6: add_flag(o_ptr->art_flags, TR_ESP_GIANT); break;
+ case 7: add_flag(o_ptr->art_flags, TR_ESP_DRAGON); break;
+ case 8: add_flag(o_ptr->art_flags, TR_ESP_HUMAN); break;
+ case 9: add_flag(o_ptr->art_flags, TR_ESP_GOOD); break;
+ case 10: add_flag(o_ptr->art_flags, TR_ESP_UNIQUE); break;
}
}
if (!artifact_bias && one_in_(3))
artifact_bias = BIAS_LAW;
break;
+ case 9:
+ add_flag(o_ptr->art_flags, TR_ESP_UNIQUE);
+ if (!artifact_bias && one_in_(3))
+ artifact_bias = BIAS_LAW;
+ break;
}
break;
}
static void get_random_name(char *return_name, bool armour, int power)
{
- if (randint1(100) <= TABLE_NAME)
+ int prob = randint1(100);
+
+ if (prob <= SINDARIN_NAME)
+ {
+ get_table_sindarin(return_name);
+ }
+ else if (prob <= TABLE_NAME)
{
get_table_name(return_name);
}
{
case 0:
#ifdef JP
-filename = "a_cursed_j.txt";
+ filename = "a_cursed_j.txt";
#else
filename = "a_cursed.txt";
#endif
-
break;
case 1:
#ifdef JP
-filename = "a_low_j.txt";
+ filename = "a_low_j.txt";
#else
filename = "a_low.txt";
#endif
-
break;
case 2:
#ifdef JP
-filename = "a_med_j.txt";
+ filename = "a_med_j.txt";
#else
filename = "a_med.txt";
#endif
-
break;
default:
#ifdef JP
-filename = "a_high_j.txt";
+ filename = "a_high_j.txt";
#else
filename = "a_high.txt";
#endif
-
}
break;
default:
{
case 0:
#ifdef JP
-filename = "w_cursed_j.txt";
+ filename = "w_cursed_j.txt";
#else
filename = "w_cursed.txt";
#endif
-
break;
case 1:
#ifdef JP
-filename = "w_low_j.txt";
+ filename = "w_low_j.txt";
#else
filename = "w_low.txt";
#endif
-
break;
case 2:
#ifdef JP
-filename = "w_med_j.txt";
+ filename = "w_med_j.txt";
#else
filename = "w_med.txt";
#endif
-
break;
default:
#ifdef JP
-filename = "w_high_j.txt";
+ filename = "w_high_j.txt";
#else
filename = "w_high.txt";
#endif
-
}
}
(void)get_rnd_line(filename, artifact_bias, return_name);
#ifdef JP
- if(return_name[0]==0)get_table_name(return_name);
+ if (return_name[0] == 0) get_table_name(return_name);
#endif
}
}
warrior_artifact_bias = 25;
break;
case CLASS_RANGER:
+ case CLASS_SNIPER:
artifact_bias = BIAS_RANGER;
warrior_artifact_bias = 30;
break;
|| !dummy_name[0])
{
/* Cancelled */
-#if 0
if (one_in_(2))
{
- get_table_sindarin(dummy_name);
+ get_table_sindarin_aux(dummy_name);
}
else
-#endif
{
get_table_name_aux(dummy_name);
}
}
-bool activate_random_artifact(object_type * o_ptr)
+bool activate_random_artifact(object_type *o_ptr)
{
int plev = p_ptr->lev;
int k, dir, dummy = 0;
- if (!o_ptr->art_name) return FALSE; /* oops? */
+ /* Paranoia */
+ if (!have_flag(o_ptr->art_flags, TR_ACTIVATE)) return FALSE;
+ if (!o_ptr->xtra2) return FALSE;
/* Activate for attack */
switch (o_ptr->xtra2)
case ACT_BERSERK:
{
+ (void)set_afraid(0);
(void)set_hero(randint1(50) + 50, FALSE);
(void)set_blessed(randint1(50) + 50, FALSE);
o_ptr->timeout = 100 + randint1(100);
}
+void get_bloody_moon_flags(object_type *o_ptr)
+{
+ int dummy, i;
+
+ for (i = 0; i < TR_FLAG_SIZE; i++)
+ o_ptr->art_flags[i] = a_info[ART_BLOOD].flags[i];
+
+ dummy = randint1(2) + randint1(2);
+ for (i = 0; i < dummy; i++)
+ {
+ int flag = randint0(26);
+ if (flag >= 20) add_flag(o_ptr->art_flags, TR_KILL_UNDEAD + flag - 20);
+ else if (flag == 19) add_flag(o_ptr->art_flags, TR_KILL_ANIMAL);
+ else if (flag == 18) add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
+ else add_flag(o_ptr->art_flags, TR_CHAOTIC + flag);
+ }
+
+ dummy = randint1(2);
+ for (i = 0; i < dummy; i++) one_resistance(o_ptr);
+
+ for (i = 0; i < 2; i++)
+ {
+ int tmp = randint0(11);
+ if (tmp < 6) add_flag(o_ptr->art_flags, TR_STR + tmp);
+ else add_flag(o_ptr->art_flags, TR_STEALTH + tmp - 6);
+ }
+}
+
+
void random_artifact_resistance(object_type * o_ptr, artifact_type *a_ptr)
{
bool give_resistance = FALSE, give_power = FALSE;
return;
}
}
+
if (o_ptr->name1 == ART_MURAMASA)
{
if (p_ptr->pclass != CLASS_SAMURAI)
if (o_ptr->name1 == ART_BLOOD)
{
- int dummy, i;
- dummy = randint1(2)+randint1(2);
- for (i = 0; i < dummy; i++)
- {
- int flag = randint0(19);
- if (flag == 18) add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
- else add_flag(o_ptr->art_flags, TR_CHAOTIC + flag);
- }
- dummy = randint1(2);
- for (i = 0; i < dummy; i++)
- one_resistance(o_ptr);
- dummy = 2;
- for (i = 0; i < dummy; i++)
+ get_bloody_moon_flags(o_ptr);
+ }
+
+ if (o_ptr->name1 == ART_HEAVENLY_MAIDEN)
+ {
+ if (p_ptr->psex != SEX_FEMALE)
{
- int tmp = randint0(11);
- if (tmp < 6) add_flag(o_ptr->art_flags, TR_STR + tmp);
- else add_flag(o_ptr->art_flags, TR_STEALTH + tmp - 6);
+ add_flag(o_ptr->art_flags, TR_AGGRAVATE);
}
}
/*
* Create the artifact of the specified number
*/
-void create_named_art(int a_idx, int y, int x)
+bool create_named_art(int a_idx, int y, int x)
{
object_type forge;
object_type *q_ptr;
q_ptr = &forge;
/* Ignore "empty" artifacts */
- if (!a_ptr->name) return;
+ if (!a_ptr->name) return FALSE;
/* Acquire the "kind" index */
i = lookup_kind(a_ptr->tval, a_ptr->sval);
/* Oops */
- if (!i) return;
+ if (!i) return FALSE;
/* Create the artifact */
object_prep(q_ptr, i);
random_artifact_resistance(q_ptr, a_ptr);
+ /*
+ * drop_near()Æâ¤ÇÉáÄ̤θÇÄꥢ¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤¬½Å¤Ê¤é¤Ê¤¤À¼Á¤Ë°Í¸¤¹¤ë.
+ * ²¾¤Ë2¸Ä°Ê¾å¸ºß²Äǽ¤«¤ÄÁõÈ÷Éʰʳ°¤Î¸ÇÄꥢ¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤¬ºîÀ®¤µ¤ì¤ì¤Ð
+ * ¤³¤Î´Ø¿ô¤ÎÊÖ¤êÃͤϿ®ÍѤǤ¤Ê¤¯¤Ê¤ë.
+ */
+
/* Drop the artifact from heaven */
- (void)drop_near(q_ptr, -1, y, x);
+ return drop_near(q_ptr, -1, y, x) ? TRUE : FALSE;
}