u32b flags2; /* Flags, set 2 */
u32b flags3; /* Flags, set 3 */
+ u32b gen_flags; /* flags for generate */
+
byte locale[4]; /* Allocation level(s) */
byte chance[4]; /* Allocation chance(s) */
u32b flags2; /* Artifact Flags, set 2 */
u32b flags3; /* Artifact Flags, set 3 */
+ u32b gen_flags; /* flags for generate */
+
byte level; /* Artifact level */
byte rarity; /* Artifact rarity */
u32b flags1; /* Ego-Item Flags, set 1 */
u32b flags2; /* Ego-Item Flags, set 2 */
u32b flags3; /* Ego-Item Flags, set 3 */
+
+ u32b gen_flags; /* flags for generate */
};
u32b art_flags2; /* Flags, set 2 for the random artifacts of*/
u32b art_flags3; /* Flags, set 3 Zangband */
+ u32b curse_flags; /* Flags for curse */
+
s16b next_o_idx; /* Next object in stack (if any) */
s16b held_m_idx; /* Monster holding us (if any) */
struct monster_type
{
- s16b r_idx; /* Monster race index */
+ s16b r_idx; /* Monster race index */
+ s16b ap_r_idx; /* Monster race appearance index */
+ byte sub_align; /* Sub-alignment for a neutral monster */
- byte fy; /* Y location on map */
- byte fx; /* X location on map */
+ byte fy; /* Y location on map */
+ byte fx; /* X location on map */
- s16b hp; /* Current Hit points */
- s16b maxhp; /* Max Hit points */
- s16b max_maxhp; /* Max Max Hit points */
+ s16b hp; /* Current Hit points */
+ s16b maxhp; /* Max Hit points */
+ s16b max_maxhp; /* Max Max Hit points */
s16b csleep; /* Inactive counter */
- byte mspeed; /* Monster "speed" */
- s16b energy; /* Monster "energy" */
+ byte mspeed; /* Monster "speed" */
+ s16b energy_need; /* Monster "energy" */
byte fast; /* Monster is stunned */
byte slow; /* Monster is stunned */
byte monfear; /* Monster is afraid */
byte invulner; /* Monster is temporarily invulnerable */
- byte cdis; /* Current dis from player */
+ byte cdis; /* Current dis from player */
- byte mflag; /* Extra monster flags */
- byte mflag2; /* Extra monster flags */
+ byte mflag; /* Extra monster flags */
+ byte mflag2; /* Extra monster flags */
- bool ml; /* Monster is "visible" */
+ bool ml; /* Monster is "visible" */
s16b hold_o_idx; /* Object being held (if any) */
byte hitdie; /* Hit dice (sides) */
u16b expfact; /* Experience factor
- * Note: was byte, causing overflow for Amberite
- * characters (such as Amberite Paladins)
- */
+ * Note: was byte, causing overflow for Amberite
+ * characters (such as Amberite Paladins)
+ */
s16b age; /* Characters age */
s16b ht; /* Height */
s16b stat_max_max[6]; /* Maximal "maximal" stat values */
s16b stat_cur[6]; /* Current "natural" stat values */
+ s16b learned_spells;
+ s16b add_spells;
+
u32b count;
- s16b fast; /* Timed -- Fast */
- s16b slow; /* Timed -- Slow */
- s16b blind; /* Timed -- Blindness */
+ s16b fast; /* Timed -- Fast */
+ s16b slow; /* Timed -- Slow */
+ s16b blind; /* Timed -- Blindness */
s16b paralyzed; /* Timed -- Paralysis */
s16b confused; /* Timed -- Confusion */
s16b afraid; /* Timed -- Fear */
- s16b image; /* Timed -- Hallucination */
+ s16b image; /* Timed -- Hallucination */
s16b poisoned; /* Timed -- Poisoned */
- s16b cut; /* Timed -- Cut */
- s16b stun; /* Timed -- Stun */
+ s16b cut; /* Timed -- Cut */
+ s16b stun; /* Timed -- Stun */
s16b protevil; /* Timed -- Protection */
s16b invuln; /* Timed -- Invulnerable */
s16b ult_res; /* Timed -- Ultimate Resistance */
- s16b hero; /* Timed -- Heroism */
- s16b shero; /* Timed -- Super Heroism */
+ s16b hero; /* Timed -- Heroism */
+ s16b shero; /* Timed -- Super Heroism */
s16b shield; /* Timed -- Shield Spell */
s16b blessed; /* Timed -- Blessed */
s16b tim_invis; /* Timed -- See Invisible */
byte mimic_form;
s16b tim_mimic;
s16b tim_sh_fire;
+ s16b tim_sh_holy;
+ s16b tim_eyeeye;
/* for mirror master */
s16b tim_reflect; /* Timed -- Reflect */
s16b virtues[8];
s16b vir_types[8];
- s16b word_recall; /* Word of recall counter */
- byte recall_dungeon;
+ s16b word_recall; /* Word of recall counter */
+ byte recall_dungeon; /* Dungeon set to be recalled */
+
+ s16b energy_need; /* Energy needed for next move */
+
+ s16b food; /* Current nutrition */
+
+ u32b special_attack; /* Special attack capacity -LM- */
+ u32b special_defense; /* Special block capacity -LM- */
+ byte action; /* Currently action */
- s16b energy; /* Current energy */
+ u32b spell_learned1; /* bit mask of spells learned */
+ u32b spell_learned2; /* bit mask of spells learned */
+ u32b spell_worked1; /* bit mask of spells tried and worked */
+ u32b spell_worked2; /* bit mask of spells tried and worked */
+ u32b spell_forgotten1; /* bit mask of spells learned but forgotten */
+ u32b spell_forgotten2; /* bit mask of spells learned but forgotten */
+ byte spell_order[64]; /* order spells learned/remembered/forgotten */
- s16b food; /* Current nutrition */
+ s16b spell_exp[64]; /* Proficiency of spells */
+ s16b weapon_exp[5][64]; /* Proficiency of weapons */
+ s16b skill_exp[10]; /* Proficiency of misc. skill */
- u32b total_weight; /* Total weight being carried */
+ s32b magic_num1[108]; /* Array for non-spellbook type magic */
+ byte magic_num2[108]; /* Flags for non-spellbook type magics */
+
+ s16b mane_spell[MAX_MANE];
+ s16b mane_dam[MAX_MANE];
+ s16b mane_num;
+
+ s16b player_hp[PY_MAX_LEVEL];
+ char died_from[80]; /* What killed the player */
+ char history[4][60]; /* Textual "history" for the Player */
+
+ u16b total_winner; /* Total winner */
+ u16b panic_save; /* Panic save */
+
+ u16b noscore; /* Cheating flags */
+
+ bool wait_report_score; /* Waiting to report score */
+ bool is_dead; /* Player is dead */
+
+ bool wizard; /* Player is in wizard mode */
+
+ s16b riding; /* Riding on a monster of this index */
+ byte knowledge; /* Knowledge about yourself */
+ s32b visit; /* Visited towns */
+
+ byte start_race; /* Race at birth */
+ s32b old_race1; /* Record of race changes */
+ s32b old_race2; /* Record of race changes */
+ s16b old_realm; /* Record of realm changes */
+
+ s16b pet_follow_distance; /* Length of the imaginary "leash" for pets */
+ s16b pet_extra_flags; /* Various flags for controling pets */
- u32b special_attack; /* Special attack capacity -LM- */
- u32b special_defense; /* Special block capacity -LM- */
- byte action; /* Currently action */
+ s16b today_mon; /* Wanted monster */
- s16b health_who; /* Health bar trackee */
+ bool dtrap; /* Whether you are on trap-safe grids */
+
+
+ /*** Temporary fields ***/
+
+ bool playing; /* True if player is playing */
+ bool leaving; /* True if player is leaving */
+
+ byte exit_bldg; /* Goal obtained in arena? -KMW- */
+ byte leftbldg; /* did we just leave a special area? -KMW- */
+
+ bool leaving_dungeon; /* True if player is leaving the dungeon */
+ bool teleport_town;
+
+ s16b health_who; /* Health bar trackee */
s16b monster_race_idx; /* Monster race trackee */
s16b object_kind_idx; /* Object kind trackee */
s16b new_spells; /* Number of spells available */
-
s16b old_spells;
- s16b learned_spells;
- s16b add_spells;
+
+ s16b old_food_aux; /* Old value of food */
bool old_cumber_armor;
bool old_cumber_glove;
bool old_monlite;
s16b old_lite; /* Old radius of lite (if any) */
- s16b old_view; /* Old radius of view (if any) */
-
- s16b old_food_aux; /* Old value of food */
-
bool cumber_armor; /* Mana draining armor */
bool cumber_glove; /* Mana draining gloves */
s16b stat_use[6]; /* Current modified stats */
s16b stat_top[6]; /* Maximal modified stats */
+ bool sutemi;
+ bool counter;
+
+ s32b align; /* Good/evil/neutral */
+ s16b run_py;
+ s16b run_px;
+
+
+ /*** Extracted fields ***/
+
+ u32b total_weight; /* Total weight being carried */
+
s16b stat_add[6]; /* Modifiers to stat values */
s16b stat_ind[6]; /* Indexes into stat tables */
bool sustain_con; /* Keep constitution */
bool sustain_chr; /* Keep charisma */
- bool aggravate; /* Aggravate monsters */
- bool teleport; /* Random teleporting */
- bool sutemi;
- bool counter;
+ u32b cursed; /* Player is cursed */
- bool exp_drain; /* Experience draining */
-
- bool can_swim; /* No damage falling */
- bool ffall; /* No damage falling */
- bool lite; /* Permanent light */
+ bool can_swim; /* No damage falling */
+ bool ffall; /* No damage falling */
+ bool lite; /* Permanent light */
bool free_act; /* Never paralyzed */
bool see_inv; /* Can see invisible */
bool regenerate; /* Regenerate hit pts */
s16b to_d_m; /* Bonus to dam (misc) */
s16b to_a; /* Bonus to ac */
+ s16b to_m_chance; /* Minusses to cast chance */
+
bool ryoute;
bool migite;
bool hidarite;
byte tval_ammo; /* Correct ammo tval */
s16b pspeed; /* Current speed */
+};
- /*** Pet commands ***/
- s16b pet_follow_distance; /* Length of the imaginary "leash" for pets */
- s16b pet_extra_flags; /* Length of the imaginary "leash" for pets */
- /*** Temporary fields ***/
- byte exit_bldg; /* Goal obtained in arena? -KMW- */
- byte leftbldg; /* did we just leave a special area? -KMW- */
- bool leaving; /* True if player is leaving */
+/*
+ * A structure to hold "rolled" information
+ */
+typedef struct birther birther;
- bool leaving_dungeon; /* True if player is leaving the dungeon */
- bool teleport_town;
+struct birther
+{
+ byte psex; /* Sex index */
+ byte prace; /* Race index */
+ byte pclass; /* Class index */
+ byte pseikaku; /* Seikaku index */
+ byte realm1; /* First magic realm */
+ byte realm2; /* Second magic realm */
- s32b align; /* Good/evil/neutral */
- s16b today_mon;
+ s16b age;
+ s16b ht;
+ s16b wt;
+ s16b sc;
- s16b riding;
- byte knowledge;
- s32b visit;
+ s32b au;
- s32b magic_num1[108];
- byte magic_num2[108];
+ s16b stat_max[6]; /* Current "maximal" stat values */
+ s16b stat_max_max[6]; /* Maximal "maximal" stat values */
+ s16b player_hp[PY_MAX_LEVEL];
- byte start_race;
- s32b old_race1;
- s32b old_race2;
- s16b old_realm;
+ s16b chaos_patron;
- s16b run_py;
- s16b run_px;
+ s16b vir_types[8];
+
+ char history[4][60];
+
+ byte quests;
+ bool quick_ok;
};
};
-
+/*
+ * A structure type for entry of auto-picker/destroyer
+ */
+typedef struct {
+ cptr name; /* Items which have 'name' as part of its name match */
+ cptr insc; /* Items will be auto-inscribed as 'insc' */
+ u32b flag[2]; /* Misc. keyword to be matched */
+ byte action; /* Auto-pickup or Destroy or Leave items */
+ byte dice; /* Weapons which have more than 'dice' dice match */
+ byte bonus; /* Items which have more than 'bonus' magical bonus match */
+} autopick_type;