static void random_plus(object_type * o_ptr)
{
- int this_type = (o_ptr->tval <= TV_WEAPON_END ? 23 : 19);
+ int this_type = (object_is_weapon_ammo(o_ptr) ? 23 : 19);
switch (artifact_bias)
{
case 24:
case 25:
case 26:
- if (TV_ARMOR_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_ARMOR_END)
+ if (object_is_armour(o_ptr))
random_misc(o_ptr);
else
{
char new_name[1024];
int has_pval = 0;
int powers = randint1(5) + 1;
- int max_type = (o_ptr->tval <= TV_WEAPON_END ? 7 : 5);
+ int max_type = (object_is_weapon_ammo(o_ptr) ? 7 : 5);
int power_level;
s32b total_flags;
bool a_cursed = FALSE;
if (!a_scroll && one_in_(A_CURSED))
a_cursed = TRUE;
- if (((o_ptr->tval == TV_AMULET) || (o_ptr->tval == TV_RING)) && cursed_p(o_ptr))
+ if (((o_ptr->tval == TV_AMULET) || (o_ptr->tval == TV_RING)) && object_is_cursed(o_ptr))
a_cursed = TRUE;
while (one_in_(powers) || one_in_(7) || one_in_(10))
has_pval = TRUE;
break;
case 3: case 4:
- if (one_in_(2) && (o_ptr->tval <= TV_WEAPON_END) && (o_ptr->tval != TV_BOW))
+ if (one_in_(2) && object_is_weapon_ammo(o_ptr) && (o_ptr->tval != TV_BOW))
{
if (a_cursed && !one_in_(13)) break;
if (one_in_(13))
}
/* give it some plusses... */
- if (TV_ARMOR_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_ARMOR_END)
+ if (object_is_armour(o_ptr))
o_ptr->to_a += randint1(o_ptr->to_a > 19 ? 1 : 20 - o_ptr->to_a);
- else if (o_ptr->tval <= TV_SWORD)
+ else if (object_is_weapon_ammo(o_ptr))
{
o_ptr->to_h += randint1(o_ptr->to_h > 19 ? 1 : 20 - o_ptr->to_h);
o_ptr->to_d += randint1(o_ptr->to_d > 19 ? 1 : 20 - o_ptr->to_d);
if (a_cursed) curse_artifact(o_ptr);
if (!a_cursed &&
- (randint1((o_ptr->tval >= TV_ARMOR_BEGIN)
- ? ACTIVATION_CHANCE * 2 : ACTIVATION_CHANCE) == 1))
+ one_in_(object_is_armour(o_ptr) ? ACTIVATION_CHANCE * 2 : ACTIVATION_CHANCE))
{
o_ptr->xtra2 = 0;
give_activation_power(o_ptr);
}
- if (TV_ARMOR_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_ARMOR_END)
+ if (object_is_armour(o_ptr))
{
while ((o_ptr->to_d+o_ptr->to_h) > 20)
{
remove_flag(o_ptr->art_flags, TR_BRAND_COLD);
}
- if (o_ptr->tval >= TV_ARMOR_BEGIN)
+ if (!object_is_weapon_ammo(o_ptr))
{
/* For armors */
if (a_cursed) power_level = 0;
#endif
{
- get_random_name(new_name, (bool)(o_ptr->tval >= TV_ARMOR_BEGIN), power_level);
+ get_random_name(new_name, object_is_armour(o_ptr), power_level);
}
else
{
}
else
{
- get_random_name(new_name, (bool)(o_ptr->tval >= TV_ARMOR_BEGIN), power_level);
+ get_random_name(new_name, object_is_armour(o_ptr), power_level);
}
if (cheat_xtra)
/*
- * Favorite weapons
- */
-static bool is_favorite(object_type *o_ptr)
-{
- /* Only melee weapons match */
- if (!(o_ptr->tval == TV_POLEARM ||
- o_ptr->tval == TV_SWORD ||
- o_ptr->tval == TV_DIGGING ||
- o_ptr->tval == TV_HAFTED))
- {
- return FALSE;
- }
-
- /* Favorite weapons are varied depend on the class */
- switch (p_ptr->pclass)
- {
- case CLASS_PRIEST:
- {
- u32b flgs[TR_FLAG_SIZE];
- object_flags_known(o_ptr, flgs);
-
- if (!have_flag(flgs, TR_BLESSED) &&
- !(o_ptr->tval == TV_HAFTED))
- return FALSE;
- break;
- }
-
- case CLASS_MONK:
- case CLASS_FORCETRAINER:
- /* Icky to wield? */
- if (!(s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval]))
- return FALSE;
- break;
-
- case CLASS_BEASTMASTER:
- case CLASS_CAVALRY:
- {
- u32b flgs[TR_FLAG_SIZE];
- object_flags_known(o_ptr, flgs);
-
- /* Is it known to be suitable to using while riding? */
- if (!(have_flag(flgs, TR_RIDING)))
- return FALSE;
-
- break;
- }
-
- case CLASS_NINJA:
- /* Icky to wield? */
- if (s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval] <= WEAPON_EXP_BEGINNER)
- return FALSE;
- break;
-
- default:
- /* All weapons are okay for non-special classes */
- return TRUE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Rare weapons/aromors
- * including Blade of Chaos, Dragon armors, etc.
- */
-static bool is_rare(object_type *o_ptr)
-{
- switch(o_ptr->tval)
- {
- case TV_HAFTED:
- if (o_ptr->sval == SV_MACE_OF_DISRUPTION ||
- o_ptr->sval == SV_WIZSTAFF) return TRUE;
- break;
-
- case TV_POLEARM:
- if (o_ptr->sval == SV_SCYTHE_OF_SLICING ||
- o_ptr->sval == SV_DEATH_SCYTHE) return TRUE;
- break;
-
- case TV_SWORD:
- if (o_ptr->sval == SV_BLADE_OF_CHAOS ||
- o_ptr->sval == SV_DIAMOND_EDGE ||
- o_ptr->sval == SV_DOKUBARI ||
- o_ptr->sval == SV_HAYABUSA) return TRUE;
- break;
-
- case TV_SHIELD:
- if (o_ptr->sval == SV_DRAGON_SHIELD ||
- o_ptr->sval == SV_MIRROR_SHIELD) return TRUE;
- break;
-
- case TV_HELM:
- if (o_ptr->sval == SV_DRAGON_HELM) return TRUE;
- break;
-
- case TV_BOOTS:
- if (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE) return TRUE;
- break;
-
- case TV_CLOAK:
- if (o_ptr->sval == SV_ELVEN_CLOAK ||
- o_ptr->sval == SV_ETHEREAL_CLOAK ||
- o_ptr->sval == SV_SHADOW_CLOAK) return TRUE;
- break;
-
- case TV_GLOVES:
- if (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES) return TRUE;
- break;
-
- case TV_SOFT_ARMOR:
- if (o_ptr->sval == SV_KUROSHOUZOKU ||
- o_ptr->sval == SV_ABUNAI_MIZUGI) return TRUE;
- break;
-
- case TV_DRAG_ARMOR:
- return TRUE;
-
- default:
- break;
- }
-
- /* Any others are not "rare" objects. */
- return FALSE;
-}
-
-
-/*
* Get auto-picker entry from o_ptr.
*/
static void autopick_entry_from_object(autopick_type *entry, object_type *o_ptr)
entry->dice = 0;
/* Unaware */
- if (!object_aware_p(o_ptr))
+ if (!object_is_aware(o_ptr))
{
ADD_FLG(FLG_UNAWARE);
bol_mark = TRUE;
}
/* Not really identified */
- else if (!object_known_p(o_ptr))
+ else if (!object_is_known(o_ptr))
{
if (!(o_ptr->ident & IDENT_SENSE))
{
else
{
/* Ego objects */
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
- if (TV_WEAPON_BEGIN <= o_ptr->tval &&
- o_ptr->tval <= TV_ARMOR_END)
+ if (object_is_weapon_armour_ammo(o_ptr))
{
/*
* Base name of ego weapons and armors
/* Don't use the object description */
name = FALSE;
- if (TV_WEAPON_BEGIN <= o_ptr->tval &&
- o_ptr->tval <= TV_ARMOR_END)
+ if (object_is_weapon_armour_ammo(o_ptr))
{
/* Restrict to 'common' equipments */
- if (!is_rare(o_ptr)) ADD_FLG(FLG_COMMON);
+ if (!object_is_rare(o_ptr)) ADD_FLG(FLG_COMMON);
}
}
}
/* Artifact */
- else if (o_ptr->name1 || o_ptr->art_name)
+ else if (object_is_artifact(o_ptr))
ADD_FLG(FLG_ARTIFACT);
/* Non-ego, non-artifact */
else
{
/* Wearable nameless object */
- if ((TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END))
+ if (object_is_equipment(o_ptr))
ADD_FLG(FLG_NAMELESS);
bol_mark = TRUE;
}
-
- switch(o_ptr->tval)
+ /* Melee weapon with boosted dice */
+ if (object_is_melee_weapon(o_ptr))
{
- object_kind *k_ptr;
- case TV_HAFTED: case TV_POLEARM: case TV_SWORD: case TV_DIGGING:
- k_ptr = &k_info[o_ptr->k_idx];
+ object_kind *k_ptr = &k_info[o_ptr->k_idx];
+
if ((o_ptr->dd != k_ptr->dd) || (o_ptr->ds != k_ptr->ds))
ADD_FLG(FLG_BOOSTED);
}
- if (o_ptr->tval == TV_CORPSE && object_is_shoukinkubi(o_ptr))
+ /* Wanted monster's corpse */
+ if (object_is_shoukinkubi(o_ptr))
{
REM_FLG(FLG_WORTHLESS);
ADD_FLG(FLG_WANTED);
if (o_ptr->tval >= TV_LIFE_BOOK && 3 == o_ptr->sval)
ADD_FLG(FLG_FOURTH);
- if (o_ptr->tval == TV_SHOT || o_ptr->tval == TV_BOLT
- || o_ptr->tval == TV_ARROW)
+ if (object_is_ammo(o_ptr))
ADD_FLG(FLG_MISSILES);
else if (o_ptr->tval == TV_SCROLL || o_ptr->tval == TV_STAFF
|| o_ptr->tval == TV_WAND || o_ptr->tval == TV_ROD)
cptr ptr = entry->name;
/*** Unaware items ***/
- if (IS_FLG(FLG_UNAWARE) && object_aware_p(o_ptr))
+ if (IS_FLG(FLG_UNAWARE) && object_is_aware(o_ptr))
return FALSE;
/*** Unidentified ***/
if (IS_FLG(FLG_UNIDENTIFIED)
- && (object_known_p(o_ptr) || (o_ptr->ident & IDENT_SENSE)))
+ && (object_is_known(o_ptr) || (o_ptr->ident & IDENT_SENSE)))
return FALSE;
/*** Identified ***/
- if (IS_FLG(FLG_IDENTIFIED) && !object_known_p(o_ptr))
+ if (IS_FLG(FLG_IDENTIFIED) && !object_is_known(o_ptr))
return FALSE;
/*** *Identified* ***/
if (IS_FLG(FLG_STAR_IDENTIFIED) &&
- (!object_known_p(o_ptr) || !(o_ptr->ident & IDENT_MENTAL)))
+ (!object_is_known(o_ptr) || !(o_ptr->ident & IDENT_MENTAL)))
return FALSE;
/*** Dice boosted (weapon of slaying) ***/
if (IS_FLG(FLG_BOOSTED))
{
object_kind *k_ptr = &k_info[o_ptr->k_idx];
-
- switch( o_ptr->tval )
- {
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_SWORD:
- case TV_DIGGING:
- if ((o_ptr->dd != k_ptr->dd) || (o_ptr->ds != k_ptr->ds))
- break;
- else
- return FALSE;
- default:
+
+ /* Require melee weapon */
+ if (!object_is_melee_weapon(o_ptr))
+ return FALSE;
+
+ /* Require boosted dice */
+ if ((o_ptr->dd == k_ptr->dd) && (o_ptr->ds == k_ptr->ds))
return FALSE;
- }
}
/*** Weapons which dd*ds is more than nn ***/
/*** Weapons whic dd*ds is more than nn ***/
if (IS_FLG(FLG_MORE_BONUS))
{
- if (!object_known_p(o_ptr)) return FALSE;
+ if (!object_is_known(o_ptr)) return FALSE;
if (o_ptr->pval)
{
/*** Artifact object ***/
if (IS_FLG(FLG_ARTIFACT))
{
- if (!object_known_p(o_ptr) || (!o_ptr->name1 && !o_ptr->art_name))
+ if (!object_is_known(o_ptr) || !object_is_artifact(o_ptr))
return FALSE;
}
if (IS_FLG(FLG_EGO))
{
/* Need to be an ego item */
- if (!o_ptr->name2) return FALSE;
+ if (!object_is_ego(o_ptr)) return FALSE;
/* Need to be known to be an ego */
- if (!object_known_p(o_ptr) &&
+ if (!object_is_known(o_ptr) &&
!((o_ptr->ident & IDENT_SENSE) && o_ptr->feeling == FEEL_EXCELLENT))
return FALSE;
}
/*** Good ***/
if (IS_FLG(FLG_GOOD))
{
- if (!(TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END))
- return FALSE;
+ if (!object_is_equipment(o_ptr)) return FALSE;
/* Identified */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
/* Artifacts and Ego objects are not okay */
- if (o_ptr->name1 || o_ptr->art_name || o_ptr->name2)
+ if (!object_is_nameless(o_ptr))
return FALSE;
/* Average are not okay */
/*** Nameless ***/
if (IS_FLG(FLG_NAMELESS))
{
- if (!(TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END))
- return FALSE;
+ if (!object_is_equipment(o_ptr)) return FALSE;
/* Identified */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
/* Artifacts and Ego objects are not okay */
- if (o_ptr->name1 || o_ptr->art_name || o_ptr->name2)
+ if (!object_is_nameless(o_ptr))
return FALSE;
}
/*** Average ***/
if (IS_FLG(FLG_AVERAGE))
{
- if (!(TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END))
- return FALSE;
+ if (!object_is_equipment(o_ptr)) return FALSE;
/* Identified */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
/* Artifacts and Ego objects are not okay */
- if (o_ptr->name1 || o_ptr->art_name || o_ptr->name2)
+ if (!object_is_nameless(o_ptr))
+ return FALSE;
+
+ /* Cursed or broken objects are not okay */
+ if (object_is_cursed(o_ptr) || object_is_broken(o_ptr))
return FALSE;
/* Good are not okay */
}
/*** Rere equpiments ***/
- if (IS_FLG(FLG_RARE) && !is_rare(o_ptr))
+ if (IS_FLG(FLG_RARE) && !object_is_rare(o_ptr))
return FALSE;
/*** Common equpiments ***/
- if (IS_FLG(FLG_COMMON) && is_rare(o_ptr))
+ if (IS_FLG(FLG_COMMON) && object_is_rare(o_ptr))
return FALSE;
/*** Wanted monster's corpse/skeletons ***/
- if (IS_FLG(FLG_WANTED) &&
- (o_ptr->tval != TV_CORPSE || !object_is_shoukinkubi(o_ptr)))
+ if (IS_FLG(FLG_WANTED) && !object_is_shoukinkubi(o_ptr))
return FALSE;
/*** Unique monster's corpse/skeletons/statues ***/
/*** Items ***/
if (IS_FLG(FLG_WEAPONS))
{
- if (!(TV_WEAPON_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END))
+ if (!object_is_weapon(o_ptr))
return FALSE;
}
else if (IS_FLG(FLG_FAVORITE_WEAPONS))
{
- if (!is_favorite(o_ptr))
+ if (!object_is_favorite(o_ptr))
return FALSE;
}
else if (IS_FLG(FLG_ARMORS))
{
- if (!(TV_ARMOR_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_ARMOR_END))
+ if (!object_is_armour(o_ptr))
return FALSE;
}
else if (IS_FLG(FLG_MISSILES))
{
- switch(o_ptr->tval)
- {
- case TV_SHOT: case TV_BOLT: case TV_ARROW:
- break;
- default: return FALSE;
- }
+ if (!object_is_ammo(o_ptr)) return FALSE;
}
else if (IS_FLG(FLG_DEVICES))
{
if (object_value(o_ptr) > 0) return FALSE;
if (leave_equip)
- if ((o_ptr->tval >= TV_MISSILE_BEGIN) && (o_ptr->tval <= TV_ARMOR_END)) return FALSE;
+ if (!object_is_weapon_armour_ammo(o_ptr)) return FALSE;
if (leave_chest)
if ((o_ptr->tval == TV_CHEST) && o_ptr->pval) return FALSE;
if (leave_wanted)
{
- if (o_ptr->tval == TV_CORPSE
- && object_is_shoukinkubi(o_ptr)) return FALSE;
+ if (object_is_shoukinkubi(o_ptr)) return FALSE;
}
if (leave_corpse)
}
/* Known to be an artifact? */
- if ((object_known_p(o_ptr) &&
- (artifact_p(o_ptr) || o_ptr->art_name)) ||
+ if ((object_is_known(o_ptr) && object_is_artifact(o_ptr)) ||
((o_ptr->ident & IDENT_SENSE) &&
(o_ptr->feeling == FEEL_TERRIBLE || o_ptr->feeling == FEEL_SPECIAL)))
{
* the level of the item or the number of charges.
*/
/* The item must be "known" */
- if (!object_known_p(o_ptr))
+ if (!object_is_known(o_ptr))
{
#ifdef JP
msg_format("½¼Å¶¤¹¤ëÁ°¤Ë´ÕÄꤵ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡ª");
if (o_ptr->tval < TV_STAFF || o_ptr->tval > TV_ROD) continue;
/* need identified */
- if (!object_known_p(o_ptr)) total_cost += 50;
+ if (!object_is_known(o_ptr)) total_cost += 50;
/* Extract the object "level" */
lev = k_info[o_ptr->k_idx].level;
if (o_ptr->tval < TV_STAFF || o_ptr->tval > TV_ROD) continue;
/* Identify it */
- if (!object_known_p(o_ptr))
+ if (!object_is_known(o_ptr))
{
identify_item(o_ptr);
paid = compare_weapons();
break;
case BACT_ENCHANT_WEAPON:
- item_tester_hook = item_tester_hook_melee_weapon;
+ item_tester_hook = object_allow_enchant_melee_weapon;
enchant_item(bcost, 1, 1, 0);
break;
case BACT_ENCHANT_ARMOR:
- item_tester_hook = item_tester_hook_armour;
+ item_tester_hook = object_is_armour;
enchant_item(bcost, 0, 0, 1);
break;
case BACT_RECHARGE:
next_o_idx = o_ptr->next_o_idx;
/* Forbid artifact grids */
- if ((o_ptr->art_name) || artifact_p(o_ptr)) return (FALSE);
+ if (object_is_artifact(o_ptr)) return (FALSE);
}
/* Accept */
next_o_idx = o_ptr->next_o_idx;
/* Forbid artifact grids */
- if ((o_ptr->art_name) || artifact_p(o_ptr)) return (FALSE);
+ if (object_is_artifact(o_ptr)) return (FALSE);
}
/* Accept */
if (!chest_traps[o_ptr->pval]) continue;
/* Identify once */
- if (!object_known_p(o_ptr))
+ if (!object_is_known(o_ptr))
{
/* Message */
#ifdef JP
if (o_ptr->pval == 0) continue;
/* No (known) traps here */
- if (trapped && (!object_known_p(o_ptr) ||
+ if (trapped && (!object_is_known(o_ptr) ||
!chest_traps[o_ptr->pval])) continue;
/* OK */
if (j < 2) j = 2;
/* Must find the trap first. */
- if (!object_known_p(o_ptr))
+ if (!object_is_known(o_ptr))
{
#ifdef JP
msg_print("¥È¥é¥Ã¥×¤¬¸«¤¢¤¿¤é¤Ê¤¤¡£");
else
{
/* STICK TO */
- if (q_ptr->name1)
+ if (object_is_fixed_artifact(q_ptr))
{
char m_name[80];
#else
msg_format("The %s have gone to somewhere.", o_name);
#endif
- if (q_ptr->name1)
+ if (object_is_fixed_artifact(q_ptr))
{
a_info[j_ptr->name1].cur_num = 0;
}
/* Item is cursed */
- if (cursed_p(o_ptr) && (item >= INVEN_RARM))
+ if (object_is_cursed(o_ptr) && (item >= INVEN_RARM))
{
/* Oops */
#ifdef JP
j = 100;
if (!(summon_named_creature(0, y, x, q_ptr->pval,
- !(cursed_p(q_ptr)) ? PM_FORCE_PET : 0L)))
+ !(object_is_cursed(q_ptr)) ? PM_FORCE_PET : 0L)))
#ifdef JP
msg_print("¿Í·Á¤ÏDZ¤¸¶Ê¤¬¤êºÕ¤±»¶¤Ã¤Æ¤·¤Þ¤Ã¤¿¡ª");
#else
msg_print("The Figurine writhes and then shatters.");
#endif
- else if (cursed_p(q_ptr))
+ else if (object_is_cursed(q_ptr))
#ifdef JP
msg_print("¤³¤ì¤Ï¤¢¤Þ¤êÎɤ¯¤Ê¤¤µ¤¤¬¤¹¤ë¡£");
#else
#endif
if (!get_item(&slot, q, s, (USE_EQUIP))) return;
- if ((slot == INVEN_RARM) && !cursed_p(&inventory[INVEN_RARM]))
+ if ((slot == INVEN_RARM) && !object_is_cursed(&inventory[INVEN_RARM]))
{
object_type *or_ptr = &inventory[INVEN_RARM];
object_type *ol_ptr = &inventory[INVEN_LARM];
}
/* Prevent wielding into a cursed slot */
- if (cursed_p(&inventory[slot]))
+ if (object_is_cursed(&inventory[slot]))
{
/* Describe it */
object_desc(o_name, &inventory[slot], (OD_OMIT_PREFIX | OD_NAME_ONLY));
return;
}
- if (cursed_p(o_ptr) && confirm_wear &&
- (object_known_p(o_ptr) || (o_ptr->ident & IDENT_SENSE)))
+ if (object_is_cursed(o_ptr) && confirm_wear &&
+ (object_is_known(o_ptr) || (o_ptr->ident & IDENT_SENSE)))
{
char dummy[MAX_NLEN+80];
if (!get_check(dummy)) return;
}
- if ((o_ptr->name1 == ART_STONEMASK) && object_known_p(o_ptr) && (p_ptr->prace != RACE_VAMPIRE) && (p_ptr->prace != RACE_ANDROID))
+ if ((o_ptr->name1 == ART_STONEMASK) && object_is_known(o_ptr) && (p_ptr->prace != RACE_VAMPIRE) && (p_ptr->prace != RACE_ANDROID))
{
char dummy[MAX_NLEN+80];
/* Cursed! */
- if (cursed_p(o_ptr))
+ if (object_is_cursed(o_ptr))
{
/* Warn the player */
#ifdef JP
/* Item is cursed */
- if (cursed_p(o_ptr))
+ if (object_is_cursed(o_ptr))
{
if ((o_ptr->curse_flags & TRC_PERMA_CURSE) || (p_ptr->pclass != CLASS_BERSERKER))
{
/* Hack -- Cannot remove cursed items */
- if ((item >= INVEN_RARM) && cursed_p(o_ptr))
+ if ((item >= INVEN_RARM) && object_is_cursed(o_ptr))
{
/* Oops */
#ifdef JP
if (o_ptr->tval != tval) return;
/* Identified items only */
- if (!object_known_p(o_ptr)) return;
+ if (!object_is_known(o_ptr)) return;
/*
* HACK:Ring of Lordly protection and Dragon equipment
* have random resistances.
*/
- if (((TV_WEARABLE_BEGIN <= tval) && (tval <= TV_WEARABLE_END) && o_ptr->name2)
+ if ((object_is_wearable(o_ptr) && object_is_ego(o_ptr))
|| ((tval == TV_AMULET) && (o_ptr->sval == SV_AMULET_RESISTANCE))
|| ((tval == TV_RING) && (o_ptr->sval == SV_RING_LORDLY))
|| ((tval == TV_SHIELD) && (o_ptr->sval == SV_DRAGON_SHIELD))
|| ((tval == TV_HELM) && (o_ptr->sval == SV_DRAGON_HELM))
|| ((tval == TV_GLOVES) && (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES))
|| ((tval == TV_BOOTS) && (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE))
- || o_ptr->art_name || o_ptr->name1)
+ || object_is_artifact(o_ptr))
{
int i = 0;
object_desc(o_name, o_ptr, OD_NAME_ONLY);
next_o_idx = o_ptr->next_o_idx;
/* Ignore non-artifacts */
- if (!artifact_p(o_ptr)) continue;
+ if (!object_is_fixed_artifact(o_ptr)) continue;
/* Ignore known items */
- if (object_known_p(o_ptr)) continue;
+ if (object_is_known(o_ptr)) continue;
/* Note the artifact */
okay[o_ptr->name1] = FALSE;
if (!o_ptr->k_idx) continue;
/* Ignore non-artifacts */
- if (!artifact_p(o_ptr)) continue;
+ if (!object_is_fixed_artifact(o_ptr)) continue;
/* Ignore known items */
- if (object_known_p(o_ptr)) continue;
+ if (object_is_known(o_ptr)) continue;
/* Note the artifact */
okay[o_ptr->name1] = FALSE;
/* Combine / Reorder the pack (later) */
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
- if (!(object_aware_p(o_ptr)))
+ if (!(object_is_aware(o_ptr)))
{
chg_virtue(V_KNOWLEDGE, -1);
chg_virtue(V_PATIENCE, -1);
if (o_ptr->tval == TV_FOOD) object_tried(o_ptr);
/* The player is now aware of the object */
- if (ident && !object_aware_p(o_ptr))
+ if (ident && !object_is_aware(o_ptr))
{
object_aware(o_ptr);
gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
/* Combine / Reorder the pack (later) */
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
- if (!(object_aware_p(o_ptr)))
+ if (!(object_is_aware(o_ptr)))
{
chg_virtue(V_PATIENCE, -1);
chg_virtue(V_CHANCE, 1);
object_tried(q_ptr);
/* An identification was made */
- if (ident && !object_aware_p(q_ptr))
+ if (ident && !object_is_aware(q_ptr))
{
object_aware(q_ptr);
gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
/* Combine / Reorder the pack (later) */
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
- if (!(object_aware_p(o_ptr)))
+ if (!(object_is_aware(o_ptr)))
{
chg_virtue(V_PATIENCE, -1);
chg_virtue(V_CHANCE, 1);
object_tried(o_ptr);
/* An identification was made */
- if (ident && !object_aware_p(o_ptr))
+ if (ident && !object_is_aware(o_ptr))
{
object_aware(o_ptr);
gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
}
/* Read the scroll */
- do_cmd_read_scroll_aux(item, object_aware_p(o_ptr));
+ do_cmd_read_scroll_aux(item, object_is_aware(o_ptr));
}
/* Sound */
sound(SOUND_ZAP);
- ident = staff_effect(o_ptr->sval, &use_charge, FALSE, object_aware_p(o_ptr));
+ ident = staff_effect(o_ptr->sval, &use_charge, FALSE, object_is_aware(o_ptr));
- if (!(object_aware_p(o_ptr)))
+ if (!(object_is_aware(o_ptr)))
{
chg_virtue(V_PATIENCE, -1);
chg_virtue(V_CHANCE, 1);
object_tried(o_ptr);
/* An identification was made */
- if (ident && !object_aware_p(o_ptr))
+ if (ident && !object_is_aware(o_ptr))
{
object_aware(o_ptr);
gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
/* Allow direction to be cancelled for free */
- if (object_aware_p(o_ptr) && (o_ptr->sval == SV_WAND_HEAL_MONSTER
+ if (object_is_aware(o_ptr) && (o_ptr->sval == SV_WAND_HEAL_MONSTER
|| o_ptr->sval == SV_WAND_HASTE_MONSTER))
target_pet = TRUE;
if (!get_aim_dir(&dir))
/* Combine / Reorder the pack (later) */
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
- if (!(object_aware_p(o_ptr)))
+ if (!(object_is_aware(o_ptr)))
{
chg_virtue(V_PATIENCE, -1);
chg_virtue(V_CHANCE, 1);
object_tried(o_ptr);
/* Apply identification */
- if (ident && !object_aware_p(o_ptr))
+ if (ident && !object_is_aware(o_ptr))
{
object_aware(o_ptr);
gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
/* Get a direction (unless KNOWN not to need it) */
if (((o_ptr->sval >= SV_ROD_MIN_DIRECTION) && (o_ptr->sval != SV_ROD_HAVOC) && (o_ptr->sval != SV_ROD_AGGRAVATE) && (o_ptr->sval != SV_ROD_PESTICIDE)) ||
- !object_aware_p(o_ptr))
+ !object_is_aware(o_ptr))
{
/* Get a direction, allow cancel */
if (!get_aim_dir(&dir)) return;
/* Combine / Reorder the pack (later) */
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
- if (!(object_aware_p(o_ptr)))
+ if (!(object_is_aware(o_ptr)))
{
chg_virtue(V_PATIENCE, -1);
chg_virtue(V_CHANCE, 1);
object_tried(o_ptr);
/* Successfully determined the object function */
- if (ident && !object_aware_p(o_ptr))
+ if (ident && !object_is_aware(o_ptr))
{
object_aware(o_ptr);
gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
u32b flgs[TR_FLAG_SIZE];
/* Not known */
- if (!object_known_p(o_ptr)) return (FALSE);
+ if (!object_is_known(o_ptr)) return (FALSE);
/* Extract the flags */
object_flags(o_ptr, flgs);
lev = k_info[o_ptr->k_idx].level;
/* Hack -- use artifact level instead */
- if (artifact_p(o_ptr)) lev = a_info[o_ptr->name1].level;
+ if (object_is_fixed_artifact(o_ptr)) lev = a_info[o_ptr->name1].level;
else if (o_ptr->art_name)
{
switch (o_ptr->xtra2)
}
/* Artifacts */
- else if (o_ptr->name1)
+ else if (object_is_fixed_artifact(o_ptr))
{
/* Choose effect */
switch (o_ptr->name1)
return;
}
- if (item_tester_hook_smith(o_ptr))
+ if (object_is_smith(o_ptr))
{
switch (o_ptr->xtra3-1)
{
else if (o_ptr->tval == TV_RING)
{
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
bool success = TRUE;
else if (o_ptr->tval == TV_AMULET)
{
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
switch (o_ptr->name2)
{
else if (o_ptr->tval == TV_WHISTLE)
{
#if 0
- if (cursed_p(o_ptr))
+ if (object_is_cursed(o_ptr))
{
#ifdef JP
msg_print("¥«¥ó¹â¤¤²»¤¬¶Á¤ÅϤä¿¡£");
int i;
/* Not known */
- if (!object_known_p(o_ptr)) return (FALSE);
+ if (!object_is_known(o_ptr)) return (FALSE);
/* HACK - only items from the equipment can be activated */
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
#define term_screen (angband_term[0])
-#ifndef SCRIPT_OBJ_KIND
/*
* Determine if a given inventory item is "aware"
*/
-#define object_aware_p(T) \
+#define object_is_aware(T) \
(k_info[(T)->k_idx].aware)
/*
* Determine if a given inventory item is "tried"
*/
-#define object_tried_p(T) \
+#define object_is_tried(T) \
(k_info[(T)->k_idx].tried)
* Test One -- Check for special "known" tag
* Test Two -- Check for "Easy Know" + "Aware"
*/
-#define object_known_p(T) \
+#define object_is_known(T) \
(((T)->ident & (IDENT_KNOWN)) || \
(k_info[(T)->k_idx].easy_know && k_info[(T)->k_idx].aware))
(k_info[(T)->k_idx].x_char))
-#else /* SCRIPT_OBJ_KIND */
-
-
-/*
- * Determine if a given inventory item is "aware"
- */
-#define object_aware_p(T) \
- ((T)->aware)
-
-/*
- * Determine if a given inventory item is "tried"
- */
-#define object_tried_p(T) \
- ((T)->tried)
-
-
-/*
- * Determine if a given inventory item is "known"
- * Test One -- Check for special "known" tag
- * Test Two -- Check for "Easy Know" + "Aware"
- */
-#define object_known_p(T) \
- (((T)->ident & (IDENT_KNOWN)) || \
- ((T)->easy_know && (T)->aware))
-
-
-/*
- * Return the "attr" for a given item.
- * Use "flavor" if available.
- * Default to user definitions.
- */
-#define object_attr(T) \
- (((T)->flavor) ? \
- (misc_to_attr[(T)->flavor]) : \
- ((T)->x_attr))
-
-/*
- * Return the "char" for a given item.
- * Use "flavor" if available.
- * Default to user definitions.
- */
-#define object_char(T) \
- (((T)->flavor) ? \
- (misc_to_char[(T)->flavor]) : \
- ((T)->x_char))
-
-#endif /* SCRIPT_OBJ_KIND */
-
-
-
-
/*
* Artifacts use the "name1" field
*/
-#define artifact_p(T) \
+#define object_is_fixed_artifact(T) \
((T)->name1 ? TRUE : FALSE)
/*
* Ego-Items use the "name2" field
*/
-#define ego_item_p(T) \
+#define object_is_ego(T) \
((T)->name2 ? TRUE : FALSE)
/*
* Broken items.
*/
-#define broken_p(T) \
+#define object_is_broken(T) \
((T)->ident & (IDENT_BROKEN))
/*
* Cursed items.
*/
-#define cursed_p(T) \
+#define object_is_cursed(T) \
((T)->curse_flags)
static byte value_check_aux1(object_type *o_ptr)
{
/* Artifacts */
- if (artifact_p(o_ptr) || o_ptr->art_name)
+ if (object_is_artifact(o_ptr))
{
/* Cursed/Broken */
- if (cursed_p(o_ptr) || broken_p(o_ptr)) return FEEL_TERRIBLE;
+ if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_TERRIBLE;
/* Normal */
return FEEL_SPECIAL;
}
/* Ego-Items */
- if (ego_item_p(o_ptr))
+ if (object_is_ego(o_ptr))
{
/* Cursed/Broken */
- if (cursed_p(o_ptr) || broken_p(o_ptr)) return FEEL_WORTHLESS;
+ if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_WORTHLESS;
/* Normal */
return FEEL_EXCELLENT;
}
/* Cursed items */
- if (cursed_p(o_ptr)) return FEEL_CURSED;
+ if (object_is_cursed(o_ptr)) return FEEL_CURSED;
/* Broken items */
- if (broken_p(o_ptr)) return FEEL_BROKEN;
+ if (object_is_broken(o_ptr)) return FEEL_BROKEN;
if ((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET)) return FEEL_AVERAGE;
static byte value_check_aux2(object_type *o_ptr)
{
/* Cursed items (all of them) */
- if (cursed_p(o_ptr)) return FEEL_CURSED;
+ if (object_is_cursed(o_ptr)) return FEEL_CURSED;
/* Broken items (all of them) */
- if (broken_p(o_ptr)) return FEEL_BROKEN;
+ if (object_is_broken(o_ptr)) return FEEL_BROKEN;
/* Artifacts -- except cursed/broken ones */
- if (artifact_p(o_ptr) || o_ptr->art_name) return FEEL_UNCURSED;
+ if (object_is_artifact(o_ptr)) return FEEL_UNCURSED;
/* Ego-Items -- except cursed/broken ones */
- if (ego_item_p(o_ptr)) return FEEL_UNCURSED;
+ if (object_is_ego(o_ptr)) return FEEL_UNCURSED;
/* Good armor bonus */
if (o_ptr->to_a > 0) return FEEL_UNCURSED;
if (o_ptr->ident & (IDENT_SENSE))return;
/* It is fully known, no information needed */
- if (object_known_p(o_ptr)) return;
+ if (object_is_known(o_ptr)) return;
/* Check for a feeling */
feel = (heavy ? value_check_aux1(o_ptr) : value_check_aux2(o_ptr));
}
/* It is fully known, no information needed */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
#ifdef JP
msg_print("²¿¤â¿·¤·¤¤¤³¤È¤ÏȽ¤é¤Ê¤«¤Ã¤¿¡£");
if (o_ptr->tval == TV_LITE)
{
/* Hack -- Use some fuel (except on artifacts) */
- if (!(artifact_p(o_ptr) || o_ptr->sval == SV_LITE_FEANOR) && (o_ptr->xtra4 > 0))
+ if (!(object_is_fixed_artifact(o_ptr) || o_ptr->sval == SV_LITE_FEANOR) && (o_ptr->xtra4 > 0))
{
/* Decrease life-span */
if (o_ptr->name2 == EGO_LITE_LONG)
if (o_ptr->tval == TV_LITE)
{
/* Use some fuel (except on artifacts) */
- if (!artifact_p(o_ptr) && (o_ptr->xtra4 > 0))
+ if (!object_is_fixed_artifact(o_ptr) && (o_ptr->xtra4 > 0))
{
/* Heal the player a bit */
hp_player(o_ptr->xtra4 / 20);
o_ptr = &inventory[INVEN_LARM];
slot = INVEN_LARM;
}
- if (!cursed_p(o_ptr))
+ if (!object_is_cursed(o_ptr))
{
#ifdef JP
msg_print("Éð´ï¤òÍ¤Æ¤·¤Þ¤Ã¤¿¡ª");
if (o_ptr->name1 == ART_JUDGE)
{
#ifdef JP
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
msg_print("¡Ø¿³È½¤ÎÊõÀС٤Ϥ¢¤Ê¤¿¤ÎÂÎÎϤòµÛ¼ý¤·¤¿¡ª");
else
msg_print("¤Ê¤Ë¤«¤¬¤¢¤Ê¤¿¤ÎÂÎÎϤòµÛ¼ý¤·¤¿¡ª");
take_hit(DAMAGE_LOSELIFE, MIN(p_ptr->lev, 50), "¿³È½¤ÎÊõÀÐ", -1);
#else
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
msg_print("The Jewel of Judgement drains life from you!");
else
msg_print("Something drains life from you!");
q_ptr->discount = 0;
q_ptr->curse_flags = 0L;
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
level = (level + MAX(a_info[o_ptr->name1].level - 8, 5)) / 2;
level += MIN(20, a_info[o_ptr->name1].rarity/(a_info[o_ptr->name1].gen_flags & TRG_INSTA_ART ? 10 : 3));
}
- else if (o_ptr->name2)
+ else if (object_is_ego(o_ptr))
{
level += MAX(3, (e_info[o_ptr->name2].rating - 5)/2);
}
s32b total_flags = flag_cost(o_ptr, o_ptr->pval);
int fake_level;
- if (o_ptr->tval >= TV_ARMOR_BEGIN)
+ if (!object_is_weapon_ammo(o_ptr))
{
/* For armors */
if (total_flags < 15000) fake_level = 10;
if (value > 5000000L) value = 5000000L;
if ((o_ptr->tval == TV_DRAG_ARMOR) || (o_ptr->tval == TV_CARD)) level /= 2;
- if (o_ptr->name1 || o_ptr->name2 || o_ptr->art_name ||
+ if (object_is_artifact(o_ptr) || object_is_ego(o_ptr) ||
(o_ptr->tval == TV_DRAG_ARMOR) ||
((o_ptr->tval == TV_HELM) && (o_ptr->sval == SV_DRAGON_HELM)) ||
((o_ptr->tval == TV_SHIELD) && (o_ptr->sval == SV_DRAGON_SHIELD)) ||
extern void display_koff(int k_idx);
extern object_type *choose_warning_item(void);
extern bool process_warning(int xx, int yy);
-extern bool item_tester_hook_smith(object_type *o_ptr);
extern void do_cmd_kaji(bool only_browse);
/* racial.c */
extern bool remove_curse(void);
extern bool remove_all_curse(void);
extern bool alchemy(void);
-extern bool item_tester_hook_weapon(object_type *o_ptr);
-extern bool item_tester_hook_armour(object_type *o_ptr);
-extern bool item_tester_hook_weapon_armour(object_type *o_ptr);
extern bool enchant(object_type *o_ptr, int n, int eflag);
extern bool enchant_spell(int num_hit, int num_dam, int num_ac);
extern bool artifact_scroll(void);
/* obj_kind.c */
extern bool object_is_potion(object_type *o_ptr);
extern bool object_is_shoukinkubi(object_type *o_ptr);
+extern bool object_is_favorite(object_type *o_ptr);
+extern bool object_is_rare(object_type *o_ptr);
+extern bool object_is_weapon(object_type *o_ptr);
+extern bool object_is_weapon_ammo(object_type *o_ptr);
+extern bool object_is_ammo(object_type *o_ptr);
+extern bool object_is_armour(object_type *o_ptr);
+extern bool object_is_weapon_armour_ammo(object_type *o_ptr);
+extern bool object_is_weapon_armour_ammo(object_type *o_ptr);
+extern bool object_is_melee_weapon(object_type *o_ptr);
+extern bool object_is_wearable(object_type *o_ptr);
+extern bool object_is_equipment(object_type *o_ptr);
+extern bool object_refuse_enchant_weapon(object_type *o_ptr);
+extern bool object_allow_enchant_weapon(object_type *o_ptr);
+extern bool object_allow_enchant_melee_weapon(object_type *o_ptr);
+extern bool object_is_smith(object_type *o_ptr);
+extern bool object_is_artifact(object_type *o_ptr);
+extern bool object_is_nameless(object_type *o_ptr);
/* wild.c */
extern void set_floor_and_wall(byte type);
o_ptr = &inventory[INVEN_RARM];
/* Hack -- add in weapon info if known */
- if (object_known_p(o_ptr)) show_tohit += o_ptr->to_h;
- if (object_known_p(o_ptr)) show_todam += o_ptr->to_d;
+ if (object_is_known(o_ptr)) show_tohit += o_ptr->to_h;
+ if (object_is_known(o_ptr)) show_todam += o_ptr->to_d;
/* Melee attacks */
sprintf(buf, "(%+d,%+d)", show_tohit, show_todam);
o_ptr = &inventory[INVEN_LARM];
/* Hack -- add in weapon info if known */
- if (object_known_p(o_ptr)) show_tohit += o_ptr->to_h;
- if (object_known_p(o_ptr)) show_todam += o_ptr->to_d;
+ if (object_is_known(o_ptr)) show_tohit += o_ptr->to_h;
+ if (object_is_known(o_ptr)) show_todam += o_ptr->to_d;
/* Melee attacks */
sprintf(buf, "(%+d,%+d)", show_tohit, show_todam);
show_todam = 0;
/* Apply weapon bonuses */
- if (object_known_p(o_ptr)) show_tohit += o_ptr->to_h;
- if (object_known_p(o_ptr)) show_todam += o_ptr->to_d;
+ if (object_is_known(o_ptr)) show_tohit += o_ptr->to_h;
+ if (object_is_known(o_ptr)) show_todam += o_ptr->to_d;
if ((o_ptr->sval == SV_LIGHT_XBOW) || (o_ptr->sval == SV_HEAVY_XBOW))
show_tohit += p_ptr->weapon_exp[0][o_ptr->sval] / 400;
/* Average damage per round */
if (o_ptr->k_idx)
{
- if (object_known_p(o_ptr)) damage[i] += o_ptr->to_d * 100;
+ if (object_is_known(o_ptr)) damage[i] += o_ptr->to_d * 100;
basedam = ((o_ptr->dd + p_ptr->to_dd[i]) * (o_ptr->ds + p_ptr->to_ds[i] + 1)) * 50;
object_flags_known(o_ptr, flgs);
if ((o_ptr->ident & IDENT_MENTAL) && ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD)))
for (j = 0; j < TR_FLAG_SIZE; j++)
flgs[j] &= ~k_ptr->flags[j];
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
flgs[j] &= ~a_ptr->flags[j];
}
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
object_flags(o_ptr, flgs);
/* See if the object is "aware" */
- if (object_aware_p(o_ptr)) aware = TRUE;
+ if (object_is_aware(o_ptr)) aware = TRUE;
/* See if the object is "known" */
- if (object_known_p(o_ptr)) known = TRUE;
+ if (object_is_known(o_ptr)) known = TRUE;
/* Allow flavors to be hidden when aware */
if (aware && ((mode & OD_NO_FLAVOR) || plain_descriptions)) flavor = FALSE;
/* Known artifacts */
if (aware)
{
- if (artifact_p(o_ptr)) break;
+ if (object_is_fixed_artifact(o_ptr)) break;
if (k_ptr->gen_flags & TRG_INSTA_ART) break;
}
/* Known artifacts */
if (aware)
{
- if (artifact_p(o_ptr)) break;
+ if (object_is_fixed_artifact(o_ptr)) break;
if (k_ptr->gen_flags & TRG_INSTA_ART) break;
}
*/
if (known)
{
- if (artifact_p(o_ptr)) t = object_desc_str(t, "¡ú");
+ if (object_is_fixed_artifact(o_ptr)) t = object_desc_str(t, "¡ú");
else if (o_ptr->art_name) t = object_desc_str(t, "¡ù");
}
}
/* Hack -- The only one of its kind */
- else if (known && (artifact_p(o_ptr) || o_ptr->art_name))
+ else if (known && object_is_artifact(o_ptr))
{
t = object_desc_str(t, "The ");
}
}
/* Hack -- The only one of its kind */
- else if (known && (artifact_p(o_ptr) || o_ptr->art_name))
+ else if (known && object_is_artifact(o_ptr))
{
t = object_desc_str(t, "The ");
}
/* while (*s == '~') s++; */
#ifdef JP
- if (item_tester_hook_smith(o_ptr))
+ if (object_is_smith(o_ptr))
{
t = object_desc_str(t, format("ÃÃÌê»Õ%s¤Î", player_name));
}
}
}
/* ̾¤Î¤¢¤ë¥¢¥¤¥Æ¥à */
- else if (o_ptr->name2)
+ else if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
t = object_desc_str(t, e_name + e_ptr->name);
t = object_desc_str(t, "¡Ù");
}
}
- else if (o_ptr->name1)
+ else if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
if (strncmp(a_name + a_ptr->name, "¡Ø", 2) == 0)
}
}
#else
- if (item_tester_hook_smith(o_ptr))
+ if (object_is_smith(o_ptr))
{
t = object_desc_str(t,format(" of %s the Smith",player_name));
}
}
/* Grab any artifact name */
- else if (o_ptr->name1)
+ else if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
/* Grab any ego-item name */
else
{
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
if (have_flag(flgs, TR_SHOW_MODS)) show_weapon = TRUE;
/* Display the item like a weapon */
- if (item_tester_hook_smith(o_ptr) && (o_ptr->xtra3 == 1 + ESSENCE_SLAY_GLOVE))
+ if (object_is_smith(o_ptr) && (o_ptr->xtra3 == 1 + ESSENCE_SLAY_GLOVE))
show_weapon = TRUE;
/* Display the item like a weapon */
s16b energy_fire = bow_energy(bow_ptr->sval);
/* See if the bow is "known" - then set damage bonus */
- if (object_known_p(bow_ptr)) avgdam += (bow_ptr->to_d * 10);
+ if (object_is_known(bow_ptr)) avgdam += (bow_ptr->to_d * 10);
/* Effect of ammo */
if (known) avgdam += (o_ptr->to_d * 10);
}
/* Hack -- Process Lanterns/Torches */
- if ((o_ptr->tval == TV_LITE) && (!(artifact_p(o_ptr) || (o_ptr->sval == SV_LITE_FEANOR))))
+ if ((o_ptr->tval == TV_LITE) && (!(object_is_fixed_artifact(o_ptr) || (o_ptr->sval == SV_LITE_FEANOR))))
{
/* Hack -- Turns of light for normal lites */
#ifdef JP
}
/* Note "cursed" if the item is known to be cursed */
- else if (cursed_p(o_ptr) && (known || (o_ptr->ident & IDENT_SENSE)))
+ else if (object_is_cursed(o_ptr) && (known || (o_ptr->ident & IDENT_SENSE)))
{
#ifdef JP
strcpy(fake_insc_buf, "¼ö¤ï¤ì¤Æ¤¤¤ë");
}
/* Note "tried" if the object has been tested unsuccessfully */
- else if (!aware && object_tried_p(o_ptr))
+ else if (!aware && object_is_tried(o_ptr))
{
#ifdef JP
strcpy(fake_insc_buf, "̤ȽÌÀ");
if (!o_ptr->k_idx) continue;
/* Memorize location of the artifact */
- if (artifact_p(o_ptr))
+ if (object_is_fixed_artifact(o_ptr))
{
a_info[o_ptr->name1].floor_id = cur_floor_id;
}
if (!o_ptr->k_idx) continue;
/* Delete old memorized location of the artifact */
- if (artifact_p(o_ptr))
+ if (object_is_fixed_artifact(o_ptr))
{
a_info[o_ptr->name1].floor_id = 0;
}
if (!o_ptr->k_idx) continue;
/* Ignore non-artifact */
- if (!artifact_p(o_ptr)) continue;
+ if (!object_is_fixed_artifact(o_ptr)) continue;
/* Appear at a different floor? */
if (a_info[o_ptr->name1].floor_id != new_floor_id)
o_ptr->curse_flags |= TRC_CURSED;
if (o_ptr->art_flags[2] & 0x40000000L) o_ptr->curse_flags |= TRC_HEAVY_CURSE;
if (o_ptr->art_flags[2] & 0x80000000L) o_ptr->curse_flags |= TRC_PERMA_CURSE;
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
if (a_ptr->gen_flags & (TRG_HEAVY_CURSE)) o_ptr->curse_flags |= TRC_HEAVY_CURSE;
if (a_ptr->gen_flags & (TRG_PERMA_CURSE)) o_ptr->curse_flags |= TRC_PERMA_CURSE;
}
- else if (o_ptr->name2)
+ else if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
if (e_ptr->gen_flags & (TRG_HEAVY_CURSE)) o_ptr->curse_flags |= TRC_HEAVY_CURSE;
rd_byte(&o_ptr->xtra3);
if (h_older_than(1, 3, 0, 1))
{
- if (item_tester_hook_smith(o_ptr) && o_ptr->xtra3 >= 1+96)
+ if (object_is_smith(o_ptr) && o_ptr->xtra3 >= 1+96)
o_ptr->xtra3 += -96 + MIN_SPECIAL_ESSENCE;
}
}
/* Paranoia */
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr;
}
/* Paranoia */
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr;
if (o_ptr->tval < j_ptr->tval) continue;
/* Can happen in the home */
- if (!object_aware_p(o_ptr)) continue;
- if (!object_aware_p(j_ptr)) break;
+ if (!object_is_aware(o_ptr)) continue;
+ if (!object_is_aware(j_ptr)) break;
/* Objects sort by increasing sval */
if (o_ptr->sval < j_ptr->sval) break;
if (o_ptr->sval > j_ptr->sval) continue;
/* Objects in the home can be unknown */
- if (!object_known_p(o_ptr)) continue;
- if (!object_known_p(j_ptr)) break;
+ if (!object_is_known(o_ptr)) continue;
+ if (!object_is_known(j_ptr)) break;
/*
* Hack: otherwise identical rods sort by
if (!o_ptr->k_idx) continue;
/* Skip artifacts */
- if (artifact_p(o_ptr) || o_ptr->art_name) continue;
+ if (object_is_artifact(o_ptr)) continue;
/* Get a description */
object_desc(o_name, o_ptr, OD_OMIT_PREFIX);
if (p_ptr->is_dead) break;
/* Drain fuel */
- if ((o_ptr->xtra4 > 0) && (!artifact_p(o_ptr)))
+ if ((o_ptr->xtra4 > 0) && (!object_is_fixed_artifact(o_ptr)))
{
/* Reduce fuel */
o_ptr->xtra4 -= (250 + randint1(250));
if (have_flag(flgs, TR_KILL_HUMAN)) flg2 |= (RF2_HUMAN);
/* The object cannot be picked up by the monster */
- if (artifact_p(o_ptr) || (r_ptr->flags3 & flg3) || (r_ptr->flags2 & flg2) ||
- (o_ptr->art_name))
+ if (object_is_artifact(o_ptr) || (r_ptr->flags3 & flg3) || (r_ptr->flags2 & flg2))
{
/* Only give a message for "take_item" */
if ((r_ptr->flags2 & (RF2_TAKE_ITEM)) && (r_ptr->flags2 & (RF2_STUPID)))
{
if (new_curse & TRC_HEAVY_MASK) continue;
}
- if (((o_ptr->tval < TV_WEAPON_BEGIN) || (o_ptr->tval > TV_WEAPON_END)) && (new_curse == TRC_LOW_MELEE)) continue;
- if (((o_ptr->tval < TV_ARMOR_BEGIN) || (o_ptr->tval > TV_ARMOR_END)) && (new_curse == TRC_LOW_AC)) continue;
+ if (new_curse == TRC_LOW_MELEE && !object_is_weapon(o_ptr)) continue;
+ if (new_curse == TRC_LOW_AC && !object_is_armour(o_ptr)) continue;
break;
}
return new_curse;
}
if ((randint1(100) <= heavy_chance) &&
- (o_ptr->name1 || o_ptr->name2 || o_ptr->art_name))
+ (object_is_artifact(o_ptr) || object_is_ego(o_ptr)))
{
if (!(o_ptr->curse_flags & TRC_HEAVY_CURSE))
changed = TRUE;
}
else
{
- if (!cursed_p(o_ptr))
+ if (!object_is_cursed(o_ptr))
changed = TRUE;
o_ptr->curse_flags |= TRC_CURSED;
}
for (i=INVEN_RARM;i<INVEN_TOTAL;i++)
{
o_ptr = &inventory[i];
- if (!cursed_p(o_ptr))
+ if (!object_is_cursed(o_ptr))
{
object_flags(o_ptr, flgs);
u32b flgs[TR_FLAG_SIZE];
object_type *o_ptr = &inventory[i];
- if (cursed_p(o_ptr)) continue;
+ if (object_is_cursed(o_ptr)) continue;
object_flags(o_ptr, flgs);
object_type *o_ptr = &inventory[i];
if (!o_ptr->k_idx) continue;
- if (!cursed_p(o_ptr)) continue;
+ if (!object_is_cursed(o_ptr)) continue;
o_ptr->feeling = FEEL_CURSED;
}
bool object_is_shoukinkubi(object_type *o_ptr)
{
int i;
+
+ /* Require corpse or skeleton */
+ if (o_ptr->tval != TV_CORPSE) return FALSE;
+
+ /* No wanted monsters in vanilla town */
if (vanilla_town) return FALSE;
+
+ /* Today's wanted */
if (p_ptr->today_mon > 0 && o_ptr->pval == p_ptr->today_mon) return TRUE;
+
+ /* Tsuchinoko */
if (o_ptr->pval == MON_TSUCHINOKO) return TRUE;
+
+ /* Unique monster */
for (i = 0; i < MAX_KUBI; i++)
if (o_ptr->pval == kubi_r_idx[i]) break;
if (i < MAX_KUBI) return TRUE;
+
+ /* Not wanted */
+ return FALSE;
+}
+
+
+/*
+ * Favorite weapons
+ */
+bool object_is_favorite(object_type *o_ptr)
+{
+ /* Only melee weapons match */
+ if (!(o_ptr->tval == TV_POLEARM ||
+ o_ptr->tval == TV_SWORD ||
+ o_ptr->tval == TV_DIGGING ||
+ o_ptr->tval == TV_HAFTED))
+ {
+ return FALSE;
+ }
+
+ /* Favorite weapons are varied depend on the class */
+ switch (p_ptr->pclass)
+ {
+ case CLASS_PRIEST:
+ {
+ u32b flgs[TR_FLAG_SIZE];
+ object_flags_known(o_ptr, flgs);
+
+ if (!have_flag(flgs, TR_BLESSED) &&
+ !(o_ptr->tval == TV_HAFTED))
+ return FALSE;
+ break;
+ }
+
+ case CLASS_MONK:
+ case CLASS_FORCETRAINER:
+ /* Icky to wield? */
+ if (!(s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval]))
+ return FALSE;
+ break;
+
+ case CLASS_BEASTMASTER:
+ case CLASS_CAVALRY:
+ {
+ u32b flgs[TR_FLAG_SIZE];
+ object_flags_known(o_ptr, flgs);
+
+ /* Is it known to be suitable to using while riding? */
+ if (!(have_flag(flgs, TR_RIDING)))
+ return FALSE;
+
+ break;
+ }
+
+ case CLASS_NINJA:
+ /* Icky to wield? */
+ if (s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval] <= WEAPON_EXP_BEGINNER)
+ return FALSE;
+ break;
+
+ default:
+ /* All weapons are okay for non-special classes */
+ return TRUE;
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Rare weapons/aromors
+ * including Blade of Chaos, Dragon armors, etc.
+ */
+bool object_is_rare(object_type *o_ptr)
+{
+ switch(o_ptr->tval)
+ {
+ case TV_HAFTED:
+ if (o_ptr->sval == SV_MACE_OF_DISRUPTION ||
+ o_ptr->sval == SV_WIZSTAFF) return TRUE;
+ break;
+
+ case TV_POLEARM:
+ if (o_ptr->sval == SV_SCYTHE_OF_SLICING ||
+ o_ptr->sval == SV_DEATH_SCYTHE) return TRUE;
+ break;
+
+ case TV_SWORD:
+ if (o_ptr->sval == SV_BLADE_OF_CHAOS ||
+ o_ptr->sval == SV_DIAMOND_EDGE ||
+ o_ptr->sval == SV_DOKUBARI ||
+ o_ptr->sval == SV_HAYABUSA) return TRUE;
+ break;
+
+ case TV_SHIELD:
+ if (o_ptr->sval == SV_DRAGON_SHIELD ||
+ o_ptr->sval == SV_MIRROR_SHIELD) return TRUE;
+ break;
+
+ case TV_HELM:
+ if (o_ptr->sval == SV_DRAGON_HELM) return TRUE;
+ break;
+
+ case TV_BOOTS:
+ if (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE) return TRUE;
+ break;
+
+ case TV_CLOAK:
+ if (o_ptr->sval == SV_ELVEN_CLOAK ||
+ o_ptr->sval == SV_ETHEREAL_CLOAK ||
+ o_ptr->sval == SV_SHADOW_CLOAK) return TRUE;
+ break;
+
+ case TV_GLOVES:
+ if (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES) return TRUE;
+ break;
+
+ case TV_SOFT_ARMOR:
+ if (o_ptr->sval == SV_KUROSHOUZOKU ||
+ o_ptr->sval == SV_ABUNAI_MIZUGI) return TRUE;
+ break;
+
+ case TV_DRAG_ARMOR:
+ return TRUE;
+
+ default:
+ break;
+ }
+
+ /* Any others are not "rare" objects. */
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is weapon (including bows and ammo)
+ */
+bool object_is_weapon(object_type *o_ptr)
+{
+ if (TV_WEAPON_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is weapon (including bows and ammo)
+ */
+bool object_is_weapon_ammo(object_type *o_ptr)
+{
+ if (TV_MISSILE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is ammo
+ */
+bool object_is_ammo(object_type *o_ptr)
+{
+ if (TV_MISSILE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_MISSILE_END) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is armour
+ */
+bool object_is_armour(object_type *o_ptr)
+{
+ if (TV_ARMOR_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_ARMOR_END) return TRUE;
+
return FALSE;
}
+/*
+ * Check if an object is weapon, armour or ammo
+ */
+bool object_is_weapon_armour_ammo(object_type *o_ptr)
+{
+ if (object_is_weapon_ammo(o_ptr) || object_is_armour(o_ptr)) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Melee weapons
+ */
+bool object_is_melee_weapon(object_type *o_ptr)
+{
+ if (TV_DIGGING <= o_ptr->tval && o_ptr->tval <= TV_SWORD) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Wearable including all weapon, all armour, bow, light source, amulet, and ring
+ */
+bool object_is_wearable(object_type *o_ptr)
+{
+ if (TV_WEARABLE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEARABLE_END) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Equipment including all wearable objects and ammo
+ */
+bool object_is_equipment(object_type *o_ptr)
+{
+ if (TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Poison needle can not be enchanted
+ */
+bool object_refuse_enchant_weapon(object_type *o_ptr)
+{
+ if (o_ptr->tval == TV_SWORD && o_ptr->sval == SV_DOKUBARI) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is weapon (including bows and ammo) and allows enchantment
+ */
+bool object_allow_enchant_weapon(object_type *o_ptr)
+{
+ if (object_is_weapon_ammo(o_ptr) && !object_refuse_enchant_weapon(o_ptr)) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is melee weapon and allows enchantment
+ */
+bool object_allow_enchant_melee_weapon(object_type *o_ptr)
+{
+ if (object_is_melee_weapon(o_ptr) && !object_refuse_enchant_weapon(o_ptr)) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is made by a smith's special ability
+ */
+bool object_is_smith(object_type *o_ptr)
+{
+ if (object_is_weapon_armour_ammo(o_ptr) && o_ptr->xtra3) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is artifact
+ */
+bool object_is_artifact(object_type *o_ptr)
+{
+ if (object_is_fixed_artifact(o_ptr) || o_ptr->art_name) return TRUE;
+
+ return FALSE;
+}
+
+
+/*
+ * Check if an object is neither artifact, ego, nor 'smith' object
+ */
+bool object_is_nameless(object_type *o_ptr)
+{
+ if (!object_is_artifact(o_ptr) && !object_is_ego(o_ptr) && !object_is_smith(o_ptr))
+ return TRUE;
+
+ return FALSE;
+}
+
flgs[i] = k_ptr->flags[i];
/* Artifact */
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
}
/* Ego-item */
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
for (i = 0; i < TR_FLAG_SIZE; i++)
flgs[i] |= o_ptr->art_flags[i];
- if (item_tester_hook_smith(o_ptr))
+ if (object_is_smith(o_ptr))
{
int add = o_ptr->xtra3 - 1;
for (i = 0; i < TR_FLAG_SIZE; i++)
flgs[i] = 0;
- if (!object_aware_p(o_ptr)) return;
+ if (!object_is_aware(o_ptr)) return;
/* Base object */
for (i = 0; i < TR_FLAG_SIZE; i++)
flgs[i] = k_ptr->flags[i];
/* Must be identified */
- if (!object_known_p(o_ptr)) return;
+ if (!object_is_known(o_ptr)) return;
/* Ego-item (known basic flags) */
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
#ifdef SPOIL_ARTIFACTS
/* Full knowledge for some artifacts */
- if (artifact_p(o_ptr) || o_ptr->art_name) spoil = TRUE;
+ if (object_is_artifact(o_ptr)) spoil = TRUE;
#endif /* SPOIL_ARTIFACTS */
#ifdef SPOIL_EGO_ITEMS
/* Full knowledge for some ego-items */
- if (ego_item_p(o_ptr)) spoil = TRUE;
+ if (object_is_ego(o_ptr)) spoil = TRUE;
#endif /* SPOIL_EGO_ITEMS */
/* Need full knowledge or spoilers */
if (spoil || (o_ptr->ident & IDENT_MENTAL))
{
/* Artifact */
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
flgs[i] |= o_ptr->art_flags[i];
}
- if (item_tester_hook_smith(o_ptr))
+ if (object_is_smith(o_ptr))
{
int add = o_ptr->xtra3 - 1;
* for art_name
*/
- if (!(o_ptr->name1) &&
- !(o_ptr->name2) &&
- !(o_ptr->xtra1) &&
- (o_ptr->xtra2))
+ if (!object_is_fixed_artifact(o_ptr) &&
+ !object_is_ego(o_ptr) &&
+ !(o_ptr->xtra1) &&
+ (o_ptr->xtra2))
{
switch (o_ptr->xtra2)
{
}
- if (item_tester_hook_smith(o_ptr))
+ if (object_is_smith(o_ptr))
{
switch (o_ptr->xtra3 - 1)
{
if (o_ptr->tval == TV_RING)
{
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
switch (o_ptr->name2)
{
if (o_ptr->tval == TV_AMULET)
{
- if (o_ptr->name2)
+ if (object_is_ego(o_ptr))
{
switch (o_ptr->name2)
{
{ info[i] = &temp[j]; i++;}
}
- if (TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END)
+ if (object_is_equipment(o_ptr))
{
/* Descriptions of a basic equipment is just a flavor */
trivial_info = i;
#endif
}
}
- else if (artifact_p(o_ptr))
+ else if (object_is_fixed_artifact(o_ptr))
{
#ifdef JP
info[i++] = "¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â 3)¤ò¼ø¤±¤ë¡£";
}
- if (cursed_p(o_ptr))
+ if (object_is_cursed(o_ptr))
{
if (o_ptr->curse_flags & TRC_PERMA_CURSE)
{
chance = 90;
/* Hack -- only compact artifacts in emergencies */
- if ((artifact_p(o_ptr) || o_ptr->art_name) &&
+ if ((object_is_fixed_artifact(o_ptr) || o_ptr->art_name) &&
(cnt < 1000)) chance = 100;
/* Apply the saving throw */
if (!character_dungeon || preserve_mode)
{
/* Hack -- Preserve unknown artifacts */
- if (artifact_p(o_ptr) && !object_known_p(o_ptr))
+ if (object_is_fixed_artifact(o_ptr) && !object_is_known(o_ptr))
{
/* Mega-Hack -- Preserve the artifact */
a_info[o_ptr->name1].cur_num = 0;
*/
void object_aware(object_type *o_ptr)
{
- bool mihanmei = !object_aware_p(o_ptr);
+ bool mihanmei = !object_is_aware(o_ptr);
-#ifndef SCRIPT_OBJ_KIND
/* Fully aware of the effects */
k_info[o_ptr->k_idx].aware = TRUE;
-#else /* SCRIPT_OBJ_KIND */
- /* Fully aware of the effects */
- o_ptr->aware = TRUE;
-#endif /* SCRIPT_OBJ_KIND */
if(mihanmei && !(k_info[o_ptr->k_idx].gen_flags & TRG_INSTA_ART) && record_ident &&
!p_ptr->is_dead && ((o_ptr->tval >= TV_AMULET && o_ptr->tval <= TV_POTION) || (o_ptr->tval == TV_FOOD)))
*/
void object_tried(object_type *o_ptr)
{
-#ifndef SCRIPT_OBJ_KIND
/* Mark it as tried (even if "aware") */
k_info[o_ptr->k_idx].tried = TRUE;
-#else /* SCRIPT_OBJ_KIND */
- o_ptr->tried = TRUE;
-#endif /* SCRIPT_OBJ_KIND */
}
static s32b object_value_base(object_type *o_ptr)
{
/* Aware item -- use template cost */
- if (object_aware_p(o_ptr)) return (k_info[o_ptr->k_idx].cost);
+ if (object_is_aware(o_ptr)) return (k_info[o_ptr->k_idx].cost);
/* Analyze the type */
switch (o_ptr->tval)
flgs[i] &= ~(k_ptr->flags[i]);
/* Exclude fixed flags of the fixed artifact. */
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
}
/* Exclude fixed flags of the ego-item. */
- else if (o_ptr->name2)
+ else if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
if (have_flag(flgs, TR_DRAIN_EXP)) total -= 12500;
if (have_flag(flgs, TR_TELEPORT))
{
- if (cursed_p(o_ptr))
+ if (object_is_cursed(o_ptr))
total -= 7500;
else
total += 250;
object_flags(o_ptr, flgs);
/* Artifact */
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
}
/* Ego-Item */
- else if (o_ptr->name2)
+ else if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
/* Unknown items -- acquire a base value */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
/* Broken items -- worthless */
- if (broken_p(o_ptr)) return (0L);
+ if (object_is_broken(o_ptr)) return (0L);
/* Cursed items -- worthless */
- if (cursed_p(o_ptr)) return (0L);
+ if (object_is_cursed(o_ptr)) return (0L);
/* Real value (see above) */
value = object_value_real(o_ptr);
else
{
/* Hack -- Felt broken items */
- if ((o_ptr->ident & (IDENT_SENSE)) && broken_p(o_ptr)) return (0L);
+ if ((o_ptr->ident & (IDENT_SENSE)) && object_is_broken(o_ptr)) return (0L);
/* Hack -- Felt cursed items */
- if ((o_ptr->ident & (IDENT_SENSE)) && cursed_p(o_ptr)) return (0L);
+ if ((o_ptr->ident & (IDENT_SENSE)) && object_is_cursed(o_ptr)) return (0L);
/* Base value (see above) */
value = object_value_base(o_ptr);
bool can_player_destroy_object(object_type *o_ptr)
{
/* Artifacts cannot be destroyed */
- if (!artifact_p(o_ptr) && !o_ptr->art_name) return TRUE;
+ if (!object_is_artifact(o_ptr)) return TRUE;
/* If object is unidentified, makes fake inscription */
- if (!object_known_p(o_ptr))
+ if (!object_is_known(o_ptr))
{
byte feel = FEEL_SPECIAL;
/* Hack -- Handle icky artifacts */
- if (cursed_p(o_ptr) || broken_p(o_ptr)) feel = FEEL_TERRIBLE;
+ if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) feel = FEEL_TERRIBLE;
/* Hack -- inscribe the artifact */
o_ptr->feeling = feel;
{
/* Require either knowledge or known empty for both staffs. */
if ((!(o_ptr->ident & (IDENT_EMPTY)) &&
- !object_known_p(o_ptr)) ||
+ !object_is_known(o_ptr)) ||
(!(j_ptr->ident & (IDENT_EMPTY)) &&
- !object_known_p(j_ptr))) return 0;
+ !object_is_known(j_ptr))) return 0;
/* Require identical charges, since staffs are bulky. */
if (o_ptr->pval != j_ptr->pval) return 0;
{
/* Require either knowledge or known empty for both wands. */
if ((!(o_ptr->ident & (IDENT_EMPTY)) &&
- !object_known_p(o_ptr)) ||
+ !object_is_known(o_ptr)) ||
(!(j_ptr->ident & (IDENT_EMPTY)) &&
- !object_known_p(j_ptr))) return 0;
+ !object_is_known(j_ptr))) return 0;
/* Wand charges combine in O&ZAngband. */
case TV_WHISTLE:
{
/* Require full knowledge of both items */
- if (!object_known_p(o_ptr) || !object_known_p(j_ptr)) return 0;
+ if (!object_is_known(o_ptr) || !object_is_known(j_ptr)) return 0;
/* Fall through */
}
case TV_SHOT:
{
/* Require identical knowledge of both items */
- if (object_known_p(o_ptr) != object_known_p(j_ptr)) return 0;
+ if (object_is_known(o_ptr) != object_is_known(j_ptr)) return 0;
if (o_ptr->feeling != j_ptr->feeling) return 0;
/* Require identical "bonuses" */
/* Require identical "pval" code */
if (o_ptr->pval != j_ptr->pval) return 0;
- /* Require identical "artifact" names */
- if (o_ptr->name1 != j_ptr->name1) return 0;
-
- /* Random artifacts never stack */
- if (o_ptr->art_name || j_ptr->art_name) return 0;
+ /* Artifacts never stack */
+ if (object_is_artifact(o_ptr) || object_is_artifact(j_ptr)) return 0;
/* Require identical "ego-item" names */
if (o_ptr->name2 != j_ptr->name2) return 0;
default:
{
/* Require knowledge */
- if (!object_known_p(o_ptr) || !object_known_p(j_ptr)) return 0;
+ if (!object_is_known(o_ptr) || !object_is_known(j_ptr)) return 0;
/* Probably okay */
break;
o_ptr->number = (total > max_num) ? max_num : total;
/* Hack -- blend "known" status */
- if (object_known_p(j_ptr)) object_known(o_ptr);
+ if (object_is_known(j_ptr)) object_known(o_ptr);
/* Hack -- clear "storebought" if only one has it */
if (((o_ptr->ident & IDENT_STORE) || (j_ptr->ident & IDENT_STORE)) &&
object_desc(o_name, o_ptr, (OD_NAME_ONLY | OD_STORE));
/* Artifact */
- if (artifact_p(o_ptr))
+ if (object_is_fixed_artifact(o_ptr))
{
/* Silly message */
#ifdef JP
}
/* Ego-item */
- else if (ego_item_p(o_ptr))
+ else if (object_is_ego(o_ptr))
{
/* Silly message */
#ifdef JP
break;
}
}
- if ((one_in_(400) && (power > 0) && !cursed_p(o_ptr) && (level > 79))
+ if ((one_in_(400) && (power > 0) && !object_is_cursed(o_ptr) && (level > 79))
|| (power > 2)) /* power > 2 is debug only */
{
o_ptr->pval = MIN(o_ptr->pval, 4);
break;
}
}
- if ((one_in_(150) && (power > 0) && !cursed_p(o_ptr) && (level > 79))
+ if ((one_in_(150) && (power > 0) && !object_is_cursed(o_ptr) && (level > 79))
|| (power > 2)) /* power > 2 is debug only */
{
o_ptr->pval = MIN(o_ptr->pval, 4);
#endif
r_name + r_ptr->name, check - 1,
- !cursed_p(o_ptr) ? "" : " {cursed}");
+ !object_is_cursed(o_ptr) ? "" : " {cursed}");
}
break;
/* Hack -- analyze artifacts */
- if (o_ptr->name1)
+ if (object_is_fixed_artifact(o_ptr))
{
artifact_type *a_ptr = &a_info[o_ptr->name1];
if (o_ptr->art_name) rating += 30;
/* Hack -- analyze ego-items */
- else if (o_ptr->name2)
+ else if (object_is_ego(o_ptr))
{
ego_item_type *e_ptr = &e_info[o_ptr->name2];
if (e_ptr->gen_flags & (TRG_XTRA_RES)) one_resistance(o_ptr);
/* Hack -- apply extra penalties if needed */
- if (cursed_p(o_ptr) || broken_p(o_ptr))
+ if (object_is_cursed(o_ptr) || object_is_broken(o_ptr))
{
/* Hack -- obtain bonuses */
if (e_ptr->max_to_h) o_ptr->to_h -= randint1(e_ptr->max_to_h);
}
obj_level = k_info[j_ptr->k_idx].level;
- if (artifact_p(j_ptr)) obj_level = a_info[j_ptr->name1].level;
+ if (object_is_fixed_artifact(j_ptr)) obj_level = a_info[j_ptr->name1].level;
/* Notice "okay" out-of-depth objects */
- if (!cursed_p(j_ptr) && !broken_p(j_ptr) &&
+ if (!object_is_cursed(j_ptr) && !object_is_broken(j_ptr) &&
(obj_level > dun_level))
{
/* Rating increase */
else
{
/* Hack -- Preserve artifacts */
- if (q_ptr->name1)
+ if (object_is_fixed_artifact(q_ptr))
{
a_info[q_ptr->name1].cur_num = 0;
}
/* Handle normal "breakage" */
- if (!(j_ptr->art_name || artifact_p(j_ptr)) && (randint0(100) < chance))
+ if (!object_is_artifact(j_ptr) && (randint0(100) < chance))
{
/* Message */
#ifdef JP
/* Handle lack of space */
- if (!flag && !(artifact_p(j_ptr) || j_ptr->art_name))
+ if (!flag && !object_is_artifact(j_ptr))
{
/* Message */
#ifdef JP
/* Hack -- Preserve artifacts */
- if (j_ptr->name1)
+ if (object_is_fixed_artifact(j_ptr))
{
a_info[j_ptr->name1].cur_num = 0;
}
if ((o_ptr->tval != TV_STAFF) && (o_ptr->tval != TV_WAND)) return;
/* Require known item */
- if (!object_known_p(o_ptr)) return;
+ if (!object_is_known(o_ptr)) return;
#ifdef JP
if (o_ptr->pval <= 0)
if ((o_ptr->tval != TV_STAFF) && (o_ptr->tval != TV_WAND)) return;
/* Require known item */
- if (!object_known_p(o_ptr)) return;
+ if (!object_is_known(o_ptr)) return;
#ifdef JP
if (o_ptr->pval <= 0)
if (o_ptr->tval < j_ptr->tval) continue;
/* Non-aware (flavored) items always come last */
- if (!object_aware_p(o_ptr)) continue;
- if (!object_aware_p(j_ptr)) break;
+ if (!object_is_aware(o_ptr)) continue;
+ if (!object_is_aware(j_ptr)) break;
/* Objects sort by increasing sval */
if (o_ptr->sval < j_ptr->sval) break;
if (o_ptr->sval > j_ptr->sval) continue;
/* Unidentified objects always come last */
- if (!object_known_p(o_ptr)) continue;
- if (!object_known_p(j_ptr)) break;
+ if (!object_is_known(o_ptr)) continue;
+ if (!object_is_known(j_ptr)) break;
/* Hack: otherwise identical rods sort by
increasing recharge time --dsb */
if (o_ptr->tval < j_ptr->tval) continue;
/* Non-aware (flavored) items always come last */
- if (!object_aware_p(o_ptr)) continue;
- if (!object_aware_p(j_ptr)) break;
+ if (!object_is_aware(o_ptr)) continue;
+ if (!object_is_aware(j_ptr)) break;
/* Objects sort by increasing sval */
if (o_ptr->sval < j_ptr->sval) break;
if (o_ptr->sval > j_ptr->sval) continue;
/* Unidentified objects always come last */
- if (!object_known_p(o_ptr)) continue;
- if (!object_known_p(j_ptr)) break;
+ if (!object_is_known(o_ptr)) continue;
+ if (!object_is_known(j_ptr)) break;
/* Hack: otherwise identical rods sort by
increasing recharge time --dsb */
for (i = 0; i < sizeof(drain_value) / sizeof(int); i++)
drain_value[i] = 0;
- item_tester_hook = item_tester_hook_weapon_armour;
+ item_tester_hook = object_is_weapon_armour_ammo;
item_tester_no_ryoute = TRUE;
/* Get an item */
o_ptr = &o_list[0 - item];
}
- if (object_known_p(o_ptr) && (o_ptr->name1 || o_ptr->name2 || o_ptr->art_name || o_ptr->xtra3)) {
+ if (object_is_known(o_ptr) && !object_is_nameless(o_ptr))
+ {
char o_name[MAX_NLEN];
object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
#ifdef JP
{
drain_value[TR_DEX] += 20;
}
- if ((TV_MISSILE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_MISSILE_END) ||
- (TV_WEAPON_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END))
+ if (object_is_weapon_ammo(o_ptr))
{
if (old_ds > o_ptr->ds) drain_value[TR_ES_ATTACK] += (old_ds-o_ptr->ds)*10;
else if (mode == 1 || mode == 5)
item_tester_hook = item_tester_hook_melee_ammo;
else if (es_ptr->add == ESSENCE_ATTACK)
- item_tester_hook = item_tester_hook_weapon;
+ item_tester_hook = object_allow_enchant_weapon;
else if (es_ptr->add == ESSENCE_AC)
- item_tester_hook = item_tester_hook_armour;
+ item_tester_hook = object_is_armour;
else
- item_tester_hook = item_tester_hook_weapon_armour;
+ item_tester_hook = object_is_weapon_armour_ammo;
item_tester_no_ryoute = TRUE;
/* Get an item */
o_ptr = &o_list[0 - item];
}
- if ((mode != 10) && (o_ptr->name1 || o_ptr->art_name || o_ptr->xtra3))
+ if ((mode != 10) && (object_is_artifact(o_ptr) || object_is_smith(o_ptr)))
{
#ifdef JP
msg_print("¤½¤Î¥¢¥¤¥Æ¥à¤Ï¤³¤ì°Ê¾å²þÎɤǤ¤Ê¤¤¡£");
}
-bool item_tester_hook_smith(object_type *o_ptr)
-{
- switch (o_ptr->tval)
- {
- case TV_SWORD:
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_DIGGING:
- case TV_BOW:
- case TV_BOLT:
- case TV_ARROW:
- case TV_SHOT:
- case TV_DRAG_ARMOR:
- case TV_HARD_ARMOR:
- case TV_SOFT_ARMOR:
- case TV_SHIELD:
- case TV_CLOAK:
- case TV_CROWN:
- case TV_HELM:
- case TV_BOOTS:
- case TV_GLOVES:
- {
- if (o_ptr->xtra3) return (TRUE);
- }
- }
-
- return (FALSE);
-}
-
-
static void erase_essence(void)
{
int item;
char o_name[MAX_NLEN];
u32b flgs[TR_FLAG_SIZE];
- item_tester_hook = item_tester_hook_smith;
+ item_tester_hook = object_is_smith;
/* Get an item */
#ifdef JP
}
- if (!object_known_p(o_ptr))
+ if (!object_is_known(o_ptr))
{
#ifdef JP
msg_print("´ÕÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¼è¤ê¹þ¤á¤Ê¤¤¡£");
object_flags(o_ptr, flgs);
/* Check for artifact */
- if ((artifact_p(o_ptr) || o_ptr->art_name)) is_art = TRUE;
+ if (object_is_artifact(o_ptr)) is_art = TRUE;
/* Analyze the type */
switch (typ)
case GF_HOLY_FIRE:
case GF_HELL_FIRE:
{
- if (cursed_p(o_ptr))
+ if (object_is_cursed(o_ptr))
{
do_kill = TRUE;
#ifdef JP
tv = o_ptr->tval;
/* Artifacts, misc magic items, or enchanted wearables */
- if (artifact_p(o_ptr) ||
- ego_item_p(o_ptr) ||
- o_ptr->art_name ||
+ if (object_is_artifact(o_ptr) ||
+ object_is_ego(o_ptr) ||
(tv == TV_WHISTLE) ||
(tv == TV_AMULET) ||
(tv == TV_RING) ||
next_o_idx = o_ptr->next_o_idx;
/* Hack -- Preserve unknown artifacts */
- if (artifact_p(o_ptr) && (!object_known_p(o_ptr) || in_generate))
+ if (object_is_fixed_artifact(o_ptr) && (!object_is_known(o_ptr) || in_generate))
{
/* Mega-Hack -- Preserve the artifact */
a_info[o_ptr->name1].cur_num = 0;
if (!o_ptr->k_idx) return (FALSE);
/* Disenchant equipments only -- No disenchant on monster ball */
- if (o_ptr->tval < TV_EQUIP_BEGIN || TV_EQUIP_END < o_ptr->tval)
+ if (!object_is_weapon_armour_ammo(o_ptr))
return FALSE;
/* Nothing to disenchant */
/* Artifacts have 71% chance to resist */
- if ((artifact_p(o_ptr) || o_ptr->art_name) && (randint0(100) < 71))
+ if (object_is_artifact(o_ptr) && (randint0(100) < 71))
{
/* Message */
#ifdef JP
}
-static bool item_tester_hook_weapon_nobow(object_type *o_ptr)
-{
- switch (o_ptr->tval)
- {
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_DIGGING:
- {
- return (TRUE);
- }
- case TV_SWORD:
- {
- if (o_ptr->sval != SV_DOKUBARI) return (TRUE);
- }
- }
-
- return (FALSE);
-}
-
/*
* Brand the current weapon
*/
/* Assume enchant weapon */
- item_tester_hook = item_tester_hook_weapon_nobow;
+ item_tester_hook = object_allow_enchant_melee_weapon;
item_tester_no_ryoute = TRUE;
/* Get an item */
/* you can never modify artifacts / ego-items */
/* you can never modify cursed items */
/* TY: You _can_ modify broken items (if you're silly enough) */
- if (o_ptr->k_idx && !artifact_p(o_ptr) && !ego_item_p(o_ptr) &&
- !o_ptr->art_name && !cursed_p(o_ptr) &&
+ if (o_ptr->k_idx && !object_is_artifact(o_ptr) && !object_is_ego(o_ptr) &&
+ !object_is_cursed(o_ptr) &&
!((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_DOKUBARI)) &&
!((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE)) &&
!((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_DIAMOND_EDGE)))
if (!o_ptr->k_idx) continue;
/* Uncursed already */
- if (!cursed_p(o_ptr)) continue;
+ if (!object_is_cursed(o_ptr)) continue;
/* Heavily Cursed Items need a special spell */
if (!all && (o_ptr->curse_flags & TRC_HEAVY_CURSE)) continue;
}
-
-/*
- * Hook to specify "weapon"
- */
-bool item_tester_hook_weapon(object_type *o_ptr)
-{
- switch (o_ptr->tval)
- {
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_DIGGING:
- case TV_BOW:
- case TV_BOLT:
- case TV_ARROW:
- case TV_SHOT:
- {
- return (TRUE);
- }
- case TV_SWORD:
- {
- if (o_ptr->sval != SV_DOKUBARI) return (TRUE);
- }
- }
-
- return (FALSE);
-}
-
-static bool item_tester_hook_weapon2(object_type *o_ptr)
-{
- switch (o_ptr->tval)
- {
- case TV_SWORD:
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_DIGGING:
- case TV_BOW:
- case TV_BOLT:
- case TV_ARROW:
- case TV_SHOT:
- {
- return (TRUE);
- }
- }
-
- return (FALSE);
-}
-
-
-/*
- * Hook to specify "armour"
- */
-bool item_tester_hook_armour(object_type *o_ptr)
-{
- switch (o_ptr->tval)
- {
- case TV_DRAG_ARMOR:
- case TV_HARD_ARMOR:
- case TV_SOFT_ARMOR:
- case TV_SHIELD:
- case TV_CLOAK:
- case TV_CROWN:
- case TV_HELM:
- case TV_BOOTS:
- case TV_GLOVES:
- {
- return (TRUE);
- }
- }
-
- return (FALSE);
-}
-
-
-/*
- * Check if an object is weapon or armour (but not arrow, bolt, or shot)
- */
-bool item_tester_hook_weapon_armour(object_type *o_ptr)
-{
- switch (o_ptr->tval)
- {
- case TV_SWORD:
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_DIGGING:
- case TV_BOW:
- case TV_BOLT:
- case TV_ARROW:
- case TV_SHOT:
- case TV_DRAG_ARMOR:
- case TV_HARD_ARMOR:
- case TV_SOFT_ARMOR:
- case TV_SHIELD:
- case TV_CLOAK:
- case TV_CROWN:
- case TV_HELM:
- case TV_BOOTS:
- case TV_GLOVES:
- {
- return (TRUE);
- }
- }
-
- return (FALSE);
-}
-
-
-/*
- * Check if an object is nameless weapon or armour
- */
-static bool item_tester_hook_nameless_weapon_armour(object_type *o_ptr)
-{
- switch (o_ptr->tval)
- {
- case TV_SWORD:
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_DIGGING:
- case TV_BOW:
- case TV_BOLT:
- case TV_ARROW:
- case TV_SHOT:
- case TV_DRAG_ARMOR:
- case TV_HARD_ARMOR:
- case TV_SOFT_ARMOR:
- case TV_SHIELD:
- case TV_CLOAK:
- case TV_CROWN:
- case TV_HELM:
- case TV_BOOTS:
- case TV_GLOVES:
- if (o_ptr->name1 || o_ptr->art_name || o_ptr->name2 || o_ptr->xtra3)
- {
- if (object_known_p(o_ptr)) return FALSE;
- }
- return TRUE;
- }
-
- return FALSE;
-}
-
-
/*
* Break the curse of an item
*/
static void break_curse(object_type *o_ptr)
{
- if (cursed_p(o_ptr) && !(o_ptr->curse_flags & TRC_PERMA_CURSE) && !(o_ptr->curse_flags & TRC_HEAVY_CURSE) && (randint0(100) < 25))
+ if (object_is_cursed(o_ptr) && !(o_ptr->curse_flags & TRC_PERMA_CURSE) && !(o_ptr->curse_flags & TRC_HEAVY_CURSE) && (randint0(100) < 25))
{
#ifdef JP
msg_print("¤«¤±¤é¤ì¤Æ¤¤¤¿¼ö¤¤¤¬ÂǤÁÇˤé¤ì¤¿¡ª");
{
int i, chance, prob;
bool res = FALSE;
- bool a = (artifact_p(o_ptr) || o_ptr->art_name);
+ bool a = object_is_artifact(o_ptr);
bool force = (eflag & ENCH_FORCE);
/* Assume enchant weapon */
- item_tester_hook = item_tester_hook_weapon;
+ item_tester_hook = object_allow_enchant_weapon;
item_tester_no_ryoute = TRUE;
/* Enchant armor if requested */
- if (num_ac) item_tester_hook = item_tester_hook_armour;
+ if (num_ac) item_tester_hook = object_is_armour;
/* Get an item */
#ifdef JP
}
+/*
+ * Check if an object is nameless weapon or armour
+ */
+static bool item_tester_hook_nameless_weapon_armour(object_type *o_ptr)
+{
+ /* Require weapon or armour */
+ if (!object_is_weapon_armour_ammo(o_ptr)) return FALSE;
+
+ /* Require nameless object if the object is well known */
+ if (object_is_known(o_ptr) && !object_is_nameless(o_ptr))
+ return FALSE;
+
+ return TRUE;
+}
+
+
bool artifact_scroll(void)
{
int item;
item_tester_no_ryoute = TRUE;
+
/* Enchant weapon/armour */
item_tester_hook = item_tester_hook_nameless_weapon_armour;
((o_ptr->number > 1) ? "" : "s"));
#endif
- if (o_ptr->name1 || o_ptr->art_name)
+ if (object_is_artifact(o_ptr))
{
#ifdef JP
msg_format("%s¤Ï´û¤ËÅÁÀâ¤Î¥¢¥¤¥Æ¥à¤Ç¤¹¡ª", o_name );
okay = FALSE;
}
- else if (o_ptr->name2)
+ else if (object_is_ego(o_ptr))
{
#ifdef JP
msg_format("%s¤Ï´û¤Ë̾¤Î¤¢¤ë¥¢¥¤¥Æ¥à¤Ç¤¹¡ª", o_name );
if (!(o_ptr->ident & (IDENT_MENTAL)))
{
- if ((o_ptr->art_name) || (artifact_p(o_ptr)) || one_in_(5))
+ if (object_is_artifact(o_ptr) || one_in_(5))
chg_virtue(V_KNOWLEDGE, 1);
}
/* Description */
object_desc(o_name, o_ptr, OD_NAME_ONLY);
- if(record_fix_art && !old_known && artifact_p(o_ptr))
+ if(record_fix_art && !old_known && object_is_fixed_artifact(o_ptr))
do_cmd_write_nikki(NIKKI_ART, 0, o_name);
if(record_rand_art && !old_known && o_ptr->art_name)
do_cmd_write_nikki(NIKKI_ART, 0, o_name);
static bool item_tester_hook_identify(object_type *o_ptr)
{
- return (bool)!object_known_p(o_ptr);
+ return (bool)!object_is_known(o_ptr);
}
static bool item_tester_hook_identify_weapon_armour(object_type *o_ptr)
{
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
return FALSE;
- return item_tester_hook_weapon_armour(o_ptr);
+ return object_is_weapon_armour_ammo(o_ptr);
}
/*
{
if (only_equip)
{
- item_tester_hook = item_tester_hook_weapon_armour;
+ item_tester_hook = object_is_weapon_armour_ammo;
}
else
{
object_type *o_ptr;
cptr q, s;
- if (only_equip) item_tester_hook = item_tester_hook_weapon_armour;
+ if (only_equip) item_tester_hook = object_is_weapon_armour_ammo;
item_tester_no_ryoute = TRUE;
/* Get an item */
static bool item_tester_hook_identify_fully(object_type *o_ptr)
{
- return (bool)(!object_known_p(o_ptr) || !(o_ptr->ident & IDENT_MENTAL));
+ return (bool)(!object_is_known(o_ptr) || !(o_ptr->ident & IDENT_MENTAL));
}
static bool item_tester_hook_identify_fully_weapon_armour(object_type *o_ptr)
{
if (!item_tester_hook_identify_fully(o_ptr))
return FALSE;
- return item_tester_hook_weapon_armour(o_ptr);
+ return object_is_weapon_armour_ammo(o_ptr);
}
/*
if (!can_get_item())
{
if (only_equip)
- item_tester_hook = item_tester_hook_weapon_armour;
+ item_tester_hook = object_is_weapon_armour_ammo;
else
item_tester_hook = NULL;
}
if (fail)
{
/* Artifacts are never destroyed. */
- if (artifact_p(o_ptr))
+ if (object_is_fixed_artifact(o_ptr))
{
object_desc(o_name, o_ptr, OD_NAME_ONLY);
#ifdef JP
cptr q, s;
item_tester_no_ryoute = TRUE;
- /* Assume enchant weapon */
- item_tester_hook = item_tester_hook_weapon2;
+
+ /* Bless only weapons */
+ item_tester_hook = object_is_weapon;
/* Get an item */
#ifdef JP
/* Extract the flags */
object_flags(o_ptr, flgs);
- if (cursed_p(o_ptr))
+ if (object_is_cursed(o_ptr))
{
if (((o_ptr->curse_flags & TRC_HEAVY_CURSE) && (randint1(100) < 33)) ||
(o_ptr->curse_flags & TRC_PERMA_CURSE))
return TRUE;
}
- if (!(o_ptr->art_name || o_ptr->name1 || o_ptr->name2) || one_in_(3))
+ if (!(object_is_artifact(o_ptr) || object_is_ego(o_ptr)) || one_in_(3))
{
/* Describe */
#ifdef JP
/* Extract the flags */
object_flags(o_ptr, flgs);
- if (o_ptr->k_idx && !artifact_p(o_ptr) && !ego_item_p(o_ptr) &&
- !o_ptr->art_name && !cursed_p(o_ptr) && (o_ptr->sval != SV_MIRROR_SHIELD))
+ if (o_ptr->k_idx && !object_is_artifact(o_ptr) && !object_is_ego(o_ptr) &&
+ !object_is_cursed(o_ptr) && (o_ptr->sval != SV_MIRROR_SHIELD))
{
#ifdef JP
msg_format("%s¤Ïµ±¤¤¤¿¡ª", o_name);
if (!o_ptr->k_idx) continue;
/* Hack -- for now, skip artifacts */
- if (artifact_p(o_ptr) || o_ptr->art_name) continue;
+ if (object_is_artifact(o_ptr)) continue;
/* Give this item slot a shot at death */
if ((*typ)(o_ptr))
/* Nothing to damage */
if (!o_ptr->k_idx) return (FALSE);
- if (o_ptr->tval <= TV_WEAPON_END) return (FALSE);
+ if (!object_is_armour(o_ptr)) return (FALSE);
/* No damage left to be done */
if (o_ptr->ac + o_ptr->to_a <= 0) return (FALSE);
item_tester_no_ryoute = TRUE;
/* Select a piece of armour */
- item_tester_hook = item_tester_hook_armour;
+ item_tester_hook = object_is_armour;
/* Get an item */
#ifdef JP
add_flag(o_ptr->art_flags, TR_IGNORE_ACID);
- if ((o_ptr->to_a < 0) && !cursed_p(o_ptr))
+ if ((o_ptr->to_a < 0) && !object_is_cursed(o_ptr))
{
#ifdef JP
msg_format("%s¤Ï¿·ÉÊƱÍͤˤʤä¿¡ª",o_name);
object_desc(o_name, o_ptr, OD_OMIT_PREFIX);
/* Attempt a saving throw for artifacts */
- if ((o_ptr->art_name || artifact_p(o_ptr)) && (randint0(100) < 50))
+ if (object_is_artifact(o_ptr) && (randint0(100) < 50))
{
/* Cool */
#ifdef JP
object_desc(o_name, o_ptr, OD_OMIT_PREFIX);
/* Attempt a saving throw */
- if ((artifact_p(o_ptr) || o_ptr->art_name) && (randint0(100) < 50) && !force)
+ if (object_is_artifact(o_ptr) && (randint0(100) < 50) && !force)
{
/* Cool */
#ifdef JP
if (o_ptr->tval != TV_BOLT) continue;
/* Skip artifacts and ego-items */
- if (o_ptr->art_name || artifact_p(o_ptr) || ego_item_p(o_ptr))
+ if (object_is_artifact(o_ptr) || object_is_ego(o_ptr))
continue;
/* Skip cursed/broken items */
- if (cursed_p(o_ptr) || broken_p(o_ptr)) continue;
+ if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) continue;
/* Randomize */
if (randint0(100) < 75) continue;
if (fail)
{
/* Artifacts are never destroyed. */
- if (artifact_p(o_ptr))
+ if (object_is_fixed_artifact(o_ptr))
{
object_desc(o_name, o_ptr, OD_NAME_ONLY);
#ifdef JP
case TV_DIGGING:
case TV_BOW:
{
- if (o_ptr->art_name) break;
- if (o_ptr->name2) break;
+ if (object_is_artifact(o_ptr)) break;
+ if (object_is_ego(o_ptr)) break;
if (cost <= 10L) size += damroll(3, 5);
if (cost <= 100L) size += damroll(3, 5);
break;
if (o_ptr->to_d != j_ptr->to_d) return (0);
if (o_ptr->to_a != j_ptr->to_a) return (0);
- /* Require identical "artifact" names */
- if (o_ptr->name1 != j_ptr->name1) return (0);
-
/* Require identical "ego-item" names */
if (o_ptr->name2 != j_ptr->name2) return (0);
- /* Random artifacts don't stack !*/
- if (o_ptr->art_name || j_ptr->art_name) return (0);
+ /* Artifacts don't stack! */
+ if (object_is_artifact(o_ptr) || object_is_artifact(j_ptr)) return (0);
/* Hack -- Identical art_flags! */
for (i = 0; i < TR_FLAG_SIZE; i++)
if (o_ptr->tval < j_ptr->tval) continue;
/* Can happen in the home */
- if (!object_aware_p(o_ptr)) continue;
- if (!object_aware_p(j_ptr)) break;
+ if (!object_is_aware(o_ptr)) continue;
+ if (!object_is_aware(j_ptr)) break;
/* Objects sort by increasing sval */
if (o_ptr->sval < j_ptr->sval) break;
if (o_ptr->sval > j_ptr->sval) continue;
/* Objects in the home can be unknown */
- if (!object_known_p(o_ptr)) continue;
- if (!object_known_p(j_ptr)) break;
+ if (!object_is_known(o_ptr)) continue;
+ if (!object_is_known(j_ptr)) break;
/*
* Hack: otherwise identical rods sort by
int i, j;
/* Ego items are never crap */
- if (o_ptr->name2) return (FALSE);
+ if (object_is_ego(o_ptr)) return (FALSE);
/* Good items are never crap */
if (o_ptr->to_a > 0) return (FALSE);
/* Hack -- Cannot remove cursed items */
- if ((item >= INVEN_RARM) && cursed_p(o_ptr))
+ if ((item >= INVEN_RARM) && object_is_cursed(o_ptr))
{
/* Oops */
#ifdef JP
/* Get the item */
o_ptr = &st_ptr->stock[i];
- if (!(artifact_p(o_ptr) || o_ptr->art_name))
+ if (!object_is_artifact(o_ptr))
{
/* Hack -- Sell all non-artifact old items for "half price" */
o_ptr->discount = 50;
s16b next_o_idx; /* Next object in stack (if any) */
s16b held_m_idx; /* Monster holding us (if any) */
-
-#ifdef SCRIPT_OBJ_KIND
- char *name;
-
- byte d_attr; /* Default object attribute */
- byte d_char; /* Default object character */
-
-
- byte x_attr; /* Desired object attribute */
- byte x_char; /* Desired object character */
-
-
- byte flavor; /* Special object flavor (or zero) */
-
- bool easy_know; /* This object is always known (if aware) */
-
-
- bool aware; /* The player is "aware" of the item's effects */
-
- bool tried; /* The player has "tried" one of the items */
-#endif /* SCRIPT_OBJ_KIND */
};
/*
* Artifact lights -- large radius light.
*/
- if ((o_ptr->tval == TV_LITE) && artifact_p(o_ptr))
+ if ((o_ptr->tval == TV_LITE) && object_is_fixed_artifact(o_ptr))
{
#ifdef JP
*misc_list++ = "±Êµ×¸÷¸»(Ⱦ·Â3)";
* being "lightly cursed".
*/
-/* if (cursed_p(o_ptr)) */
+/* if (object_is_cursed(o_ptr)) */
{
if (have_flag(flgs, TR_TY_CURSE))
{
{
obj_desc_list artifact;
- if (!object_known_p(o_ptr) || !o_ptr->art_name
+ if (!object_is_known(o_ptr) || !o_ptr->art_name
|| o_ptr->tval != group_artifact[i].tval)
return;
/* Hack -- leave artifacts alone */
- if (artifact_p(o_ptr) || o_ptr->art_name) return;
+ if (object_is_artifact(o_ptr)) return;
p = "Enter new 'pval' setting: ";
sprintf(tmp_val, "%d", o_ptr->pval);
/* Hack -- leave artifacts alone */
- if (artifact_p(o_ptr) || o_ptr->art_name) return;
+ if (object_is_artifact(o_ptr)) return;
/* Get local object */
if (!get_com("[a]ccept, [w]orthless, [c]ursed, [n]ormal, [g]ood, [e]xcellent, [s]pecial? ", &ch, FALSE))
{
/* Preserve wizard-generated artifacts */
- if (artifact_p(q_ptr))
+ if (object_is_fixed_artifact(q_ptr))
{
a_info[q_ptr->name1].cur_num = 0;
q_ptr->name1 = 0;
}
/* Preserve wizard-generated artifacts */
- if (artifact_p(q_ptr))
+ if (object_is_fixed_artifact(q_ptr))
{
a_info[q_ptr->name1].cur_num = 0;
q_ptr->name1 = 0;
apply_magic(q_ptr, dun_level, AM_GOOD | AM_GREAT | AM_SPECIAL);
/* Failed to create artifact; make a random one */
- if (!artifact_p(q_ptr) && !q_ptr->art_name) create_artifact(q_ptr, FALSE);
+ if (!object_is_artifact(q_ptr)) create_artifact(q_ptr, FALSE);
break;
}
}
/* XXX XXX XXX Mega-Hack -- allow multiple artifacts */
- if (artifact_p(o_ptr)) a_info[o_ptr->name1].cur_num = 0;
+ if (object_is_fixed_artifact(o_ptr)) a_info[o_ptr->name1].cur_num = 0;
/* Interact */
/* XXX XXX XXX Mega-Hack -- allow multiple artifacts */
- if (artifact_p(q_ptr)) a_info[q_ptr->name1].cur_num = 0;
+ if (object_is_fixed_artifact(q_ptr)) a_info[q_ptr->name1].cur_num = 0;
/* Test for the same tval and sval. */
/* Hack -- Normally only make a single artifact */
- if (artifact_p(o_ptr)) a_info[o_ptr->name1].cur_num = 1;
+ if (object_is_fixed_artifact(o_ptr)) a_info[o_ptr->name1].cur_num = 1;
}
/* Never duplicate artifacts */
- if (artifact_p(o_ptr) || o_ptr->art_name) return;
+ if (object_is_artifact(o_ptr)) return;
/* Store old quantity. -LM- */
tmp_qnt = o_ptr->number;
}
/* Artifact Lites provide permanent, bright, lite */
- else if (artifact_p(o_ptr))
+ else if (object_is_fixed_artifact(o_ptr))
{
p_ptr->cur_lite += 3;
}
if (have_flag(flgs, TR_TELEPORT))
{
- if (cursed_p(o_ptr)) p_ptr->cursed |= TRC_TELEPORT;
+ if (object_is_cursed(o_ptr)) p_ptr->cursed |= TRC_TELEPORT;
else
{
cptr insc = quark_str(o_ptr->inscription);
p_ptr->to_a += o_ptr->to_a;
/* Apply the mental bonuses to armor class, if known */
- if (object_known_p(o_ptr)) p_ptr->dis_to_a += o_ptr->to_a;
+ if (object_is_known(o_ptr)) p_ptr->dis_to_a += o_ptr->to_a;
if (o_ptr->curse_flags & TRC_LOW_MELEE)
{
p_ptr->to_d_m += bonus_to_d;
/* Apply the mental bonuses tp hit/damage, if known */
- if (object_known_p(o_ptr)) p_ptr->dis_to_h_b += bonus_to_h;
+ if (object_is_known(o_ptr)) p_ptr->dis_to_h_b += bonus_to_h;
/* To Melee */
if ((i == INVEN_LEFT || i == INVEN_RIGHT) && !p_ptr->ryoute)
p_ptr->to_d[i-INVEN_RIGHT] += bonus_to_d;
/* Apply the mental bonuses tp hit/damage, if known */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
p_ptr->dis_to_h[i-INVEN_RIGHT] += bonus_to_h;
p_ptr->dis_to_d[i-INVEN_RIGHT] += bonus_to_d;
p_ptr->to_d[1] += (bonus_to_d > 0) ? bonus_to_d/2 : bonus_to_d;
/* Apply the mental bonuses tp hit/damage, if known */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
p_ptr->dis_to_h[0] += (bonus_to_h > 0) ? (bonus_to_h+1)/2 : bonus_to_h;
p_ptr->dis_to_h[1] += (bonus_to_h > 0) ? bonus_to_h/2 : bonus_to_h;
p_ptr->to_d[0] += bonus_to_d;
/* Apply the mental bonuses to hit/damage, if known */
- if (object_known_p(o_ptr))
+ if (object_is_known(o_ptr))
{
p_ptr->dis_to_h[0] += bonus_to_h;
p_ptr->dis_to_d[0] += bonus_to_d;
*/
#define SORT_R_INFO
-/*
- * Use a scripting language
- */
-/* #define USE_SCRIPT */
-
-#ifdef USE_SCRIPT
-/*
- * Python is statically linked into ZAngband
- */
-# define STATIC_PYTHON
-/* # define SCRIPT_OBJ_KIND */
-#endif /* USE_SCRIPT */
#ifndef HAVE_CONFIG_H
+
#ifndef MSDOS
+/*
+ * Use world score server
+ */
#define WORLD_SCORE
#endif
+
#endif /* HAVE_CONFIG_H */