diff -u -b ../Z_old/zangband-2.7.2/src/artifact.c zangband-2.7.2/src/artifact.c --- ../Z_old/zangband-2.7.2/src/artifact.c 2002-09-22 10:04:55.000000000 -0400 +++ zangband-2.7.2/src/artifact.c 2003-01-15 05:04:24.000000000 -0500 @@ -1402,6 +1402,7 @@ case CLASS_HIGH_MAGE: artifact_bias = BIAS_MAGE; break; + case CLASS_HIGH_PRIEST: case CLASS_PRIEST: artifact_bias = BIAS_PRIESTLY; break; @@ -1548,22 +1549,21 @@ power_level = 3; } + /* Make the object an artifact */ + o_ptr->flags3 |= TR3_INSTA_ART; + if (a_scroll) { char dummy_name[80]; dummy_name[0] = 0; - (void)identify_fully_aux(o_ptr); - o_ptr->info |= OB_STOREB; - - if (!(get_string(dummy_name, 80, - "What do you want to call the artifact? "))) + if ((o_ptr->sval == SV_DRAGON_HELM) || + (o_ptr->sval == SV_DRAGON_SHIELD)) { - get_random_name(new_name, o_ptr->tval, power_level); - } - else - { - strnfmt(new_name, 1024, "'%s'", dummy_name); + dragon_resist(o_ptr); } + + o_ptr->info |= OB_STOREB; + /* Identify it fully */ object_aware(o_ptr); object_known(o_ptr); @@ -1573,6 +1573,18 @@ o_ptr->kn_flags1 = o_ptr->flags1; o_ptr->kn_flags2 = o_ptr->flags2; o_ptr->kn_flags3 = o_ptr->flags3; + + (void)identify_fully_aux(o_ptr); + + if (!(get_string(dummy_name, 80, + "What do you want to call the artifact? "))) + { + get_random_name(new_name, o_ptr->tval, power_level); + } + else + { + strnfmt(new_name, 1024, "'%s'", dummy_name); + } } else { @@ -1596,9 +1608,6 @@ /* Window stuff */ p_ptr->window |= (PW_INVEN | PW_EQUIP); - /* Make the object an artifact */ - o_ptr->flags3 |= TR3_INSTA_ART; - /* Set the cost */ o_ptr->cost = k_info[o_ptr->k_idx].cost + flag_cost(o_ptr, o_ptr->pval); diff -u -b ../Z_old/zangband-2.7.2/src/avatar.c zangband-2.7.2/src/avatar.c --- ../Z_old/zangband-2.7.2/src/avatar.c 2002-01-11 11:50:34.000000000 -0500 +++ zangband-2.7.2/src/avatar.c 2003-01-15 05:04:24.000000000 -0500 @@ -135,6 +135,11 @@ p_ptr->vir_types[i++] = V_FAITH; p_ptr->vir_types[i++] = V_TEMPERANCE; break; + case CLASS_HIGH_PRIEST: + p_ptr->vir_types[i++] = V_PATIENCE; + p_ptr->vir_types[i++] = V_FAITH; + p_ptr->vir_types[i++] = V_TEMPERANCE; + break; case CLASS_ROGUE: p_ptr->vir_types[i++] = V_HONOUR; break; @@ -182,6 +187,7 @@ p_ptr->vir_types[i++] = V_INDIVIDUALISM; break; case RACE_ELF: case RACE_SPRITE: + case RACE_SHADOWMAN: p_ptr->vir_types[i++] = V_NATURE; break; case RACE_HOBBIT: case RACE_HALF_OGRE: @@ -193,7 +199,8 @@ case RACE_GNOME: case RACE_CYCLOPS: p_ptr->vir_types[i++] = V_KNOWLEDGE; break; - case RACE_HALF_ORC: case RACE_AMBERITE: case RACE_KOBOLD: + case RACE_HALF_ORC: case RACE_AMBERITE: + case RACE_KOBOLD: case RACE_KLINGON: p_ptr->vir_types[i++] = V_HONOUR; break; case RACE_HALF_TROLL: case RACE_BARBARIAN: @@ -205,7 +212,7 @@ case RACE_HALF_GIANT: case RACE_GOLEM: p_ptr->vir_types[i++] = V_JUSTICE; break; - case RACE_HALF_TITAN: + case RACE_HALF_TITAN: case RACE_TEDDYBEAR: p_ptr->vir_types[i++] = V_HARMONY; break; case RACE_YEEK: diff -u -b ../Z_old/zangband-2.7.2/src/birth.c zangband-2.7.2/src/birth.c --- ../Z_old/zangband-2.7.2/src/birth.c 2002-10-16 13:55:29.000000000 -0400 +++ zangband-2.7.2/src/birth.c 2003-01-15 05:04:24.000000000 -0500 @@ -591,6 +591,53 @@ {"and canine feet.", 100, 133, 0, 50}, {"You have ", 100, 134, 120, 50}, + + {"You are born into a honorable family. ", 100, 150, 151, 50}, + + {"You have prominent brow ridges, and a cunning nature. ", 100, 151, 152, 50}, + + {"Your family motto is: ", 100, 152, 153, 50}, + + {"Today is a good day to DIE!", 25, 153, 0, 50}, + {"Death before dishonor!", 50, 153, 0, 50}, + {"The weak shall die and the strong survive.", 75, 153, 0, 50}, + {"Victory comes to the strong and the cunning.", 100, 153, 0, 50}, + + {"You were born in the middle of a mighty forest to good parents. ", 100, 139, 140, 50}, + + {"You have the chameleon skin of your race. ", 100, 140, 141, 50}, + + {"The ancient ones have foretold that you will battle the evil serpent. ", 100, 141, 0, 50}, + + {"You were crafted from ", 100, 160, 161, 50 }, + {"precious furs by ", 10, 161, 162, 120 }, + {"common furs by ", 20, 161, 162, 75 }, + {"real bearskins by ", 30, 161, 162, 60 }, + {"old pillows by ", 70, 161, 162, 50 }, + {"old blankets by ", 80, 161, 162, 50 }, + {"old cushions by ", 90, 161, 162, 50 }, + {"old rags by ", 100, 161, 162, 10 }, + {"a royal Archmage's child. ", 10, 162, 163, 120 }, + {"a high priest's child. ", 20, 162, 163, 75 }, + {"a ranger lord's child. ", 30, 162, 163, 60 }, + {"a Necromancer's child. ", 50, 162, 163, 50 }, + {"a Wizard's child. ", 60, 162, 163, 50 }, + {"a Hedge witch's child. ", 100, 162, 163, 40 }, + {"You are irrestistibly huggable, with ", 100, 163, 164, 50 }, + {"diamonds for eyes, and ", 10, 164, 165, 150 }, + {"emeralds for eyes, and ", 20, 164, 165, 100 }, + {"sapphires for eyes, and ", 30, 164, 165, 75 }, + {"rubies for eyes, and ", 40, 164, 165, 75 }, + {"gold buttons for eyes, and ", 50, 164, 165, 60 }, + {"silver buttons for eyes, and ", 60, 164, 165, 50 }, + {"colored glass beads for eyes, and ", 70, 164, 165, 50 }, + {"plain wooden buttons for eyes, and ", 100, 164, 165, 25 }, + {"soft brown fur.", 20, 165, 0, 20 }, + {"soft ivory white fur.", 40, 165, 0, 20 }, + {"soft yellowish-brown fur.", 60, 165, 0, 20 }, + {"soft silver-gray fur.", 80, 165, 0, 20 }, + {"soft black fur.", 100, 165, 0, 20 }, + }; @@ -813,6 +860,97 @@ /* Experience factor */ p_ptr->expfact = rp_ptr->r_exp + cp_ptr->c_exp; + /* + * using the birth_mutation option gives a 3% experience penalty + */ + if (birth_mutation) + { + p_ptr->expfact += 3; + } + + /* + * using the patched_mutations option gives a 5% experience penalty + * for Chaos-Warriors 3% for all others + */ + if (patched_mutations) + { + if (p_ptr->pclass == CLASS_CHAOS_WARRIOR) + { + p_ptr->expfact += 5; + } + else + { + p_ptr->expfact += 3; + } + } + + /* + * confusion resistant chaos warriors get a 5% experience penalty + */ + if (confu_resis_chaos_war && (p_ptr->pclass == CLASS_CHAOS_WARRIOR)) + { + p_ptr->expfact += 5; + } + + /* + * use free_artifact get a 2% experience penalty + */ + if (free_artifact) + { + p_ptr->expfact += 2; + } + + /* + * use born_augmentated get a 3% experience penalty + */ + if (born_augmentated) + { + p_ptr->expfact += 3; + } + + /* + * use born_rich get a 2% experience penalty + */ + if (born_rich) + { + p_ptr->expfact += 2; + } + + /* + * never confused chaos warriors get a 3% experience penalty + */ + if (never_confu_chaos_war && (p_ptr->pclass == CLASS_CHAOS_WARRIOR)) + { + p_ptr->expfact += 3; + } + + /* + * klackon/sprite speed monks get a 5% experience penalty + */ + if (speed_monk && (p_ptr->pclass == CLASS_MONK) && + ((p_ptr->prace == RACE_KLACKON) || (p_ptr->prace == RACE_SPRITE))) + { + p_ptr->expfact += 5; + } + + /* + * sapient_sensing get a 10% experience penalty + */ + if (sapient_sensing) + { + /* + * humans only get a 5% experience penalty + */ + if (p_ptr->prace == RACE_HUMAN) + { + p_ptr->expfact += 5; + } + else + { + p_ptr->expfact += 10; + } + } + /* Hitdice */ p_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp; @@ -1044,6 +1182,21 @@ chart = 107; break; } + case RACE_KLINGON: + { + chart = 150; + break; + } + case RACE_SHADOWMAN: + { + chart = 139; + break; + } + case RACE_TEDDYBEAR: + { + chart = 160; + break; + } default: { chart = 0; @@ -1185,6 +1338,9 @@ /* Minimum 100 gold */ if (gold < 100) gold = 100; + /* if your born rich then you are 10X richer than others */ + if (born_rich) gold *= 10; + /* Save the gold */ p_ptr->au = gold; } @@ -1367,6 +1523,13 @@ {TV_SWORD, SV_DAGGER}, {TV_RING, SV_RING_SUSTAIN_INT} }, + + { + /* High Priest */ + {TV_SORCERY_BOOK, 0 }, /* Hack: for Life / Death book */ + {TV_HAFTED, SV_MACE }, + {TV_RING, SV_RING_SUSTAIN_WIS} /* Hack: for realm2 book */ + }, }; @@ -1385,6 +1548,7 @@ switch (p_ptr->prace) { case RACE_GOLEM: + case RACE_TEDDYBEAR: case RACE_SKELETON: case RACE_ZOMBIE: case RACE_VAMPIRE: @@ -1486,6 +1650,38 @@ (void)inven_carry(q_ptr); } + if (free_artifact) + { + /* Hack -- Give the player scrolls of artifact creation */ + q_ptr = object_prep(lookup_kind(TV_SCROLL, SV_SCROLL_ARTIFACT)); + + q_ptr->number = 1; + + object_aware(q_ptr); + object_known(q_ptr); + + /* These objects are "storebought" */ + q_ptr->info |= OB_STOREB; + + (void)inven_carry(q_ptr); + } + + if (born_augmentated) + { + /* Hack -- Give the player scrolls of artifact creation */ + q_ptr = object_prep(lookup_kind(TV_POTION, SV_POTION_AUGMENTATION)); + + q_ptr->number = 1; + + object_aware(q_ptr); + object_known(q_ptr); + + /* These objects are "storebought" */ + q_ptr->info |= OB_STOREB; + + (void)inven_carry(q_ptr); + } + /* Hack -- Give the player three useful objects */ for (i = 0; i < 3; i++) { @@ -1498,9 +1694,11 @@ else if (tv == TV_DEATH_BOOK) tv = TV_LIFE_BOOK + p_ptr->realm2 - 1; else if (tv == TV_RING && sv == SV_RING_RES_FEAR && - p_ptr->prace == RACE_BARBARIAN) + (p_ptr->prace == RACE_BARBARIAN || + p_ptr->prace == RACE_KLINGON)) { /* Barbarians do not need a ring of resist fear */ + /* Klingons do not need a ring of resist fear */ sv = SV_RING_SUSTAIN_STR; } @@ -1647,6 +1845,12 @@ hack_mutation = FALSE; } + /* the birth_mutation option gives a mutation at character birth */ + if (birth_mutation) + { + hack_mutation2 = TRUE; + } + /* Save the race pointer */ rp_ptr = &race_info[p_ptr->prace]; diff -u -b ../Z_old/zangband-2.7.2/src/cave.c zangband-2.7.2/src/cave.c --- ../Z_old/zangband-2.7.2/src/cave.c 2002-11-25 15:07:12.000000000 -0500 +++ zangband-2.7.2/src/cave.c 2003-01-15 05:04:24.000000000 -0500 @@ -1417,6 +1417,7 @@ break; } case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: { if (p_ptr->lev < 20) *a = TERM_L_BLUE; @@ -1470,6 +1471,7 @@ { case RACE_GNOME: case RACE_HOBBIT: + case RACE_TEDDYBEAR: { *c = 144; break; @@ -1504,6 +1506,7 @@ case RACE_HALF_GIANT: case RACE_HALF_TITAN: case RACE_CYCLOPS: + case RACE_KLINGON: { *c = 145; break; @@ -1562,6 +1565,7 @@ { if (p_ptr->pclass == CLASS_MAGE || p_ptr->pclass == CLASS_PRIEST || + p_ptr->pclass == CLASS_HIGH_PRIEST || p_ptr->pclass == CLASS_HIGH_MAGE || p_ptr->pclass == CLASS_MONK || p_ptr->pclass == CLASS_MINDCRAFTER) @@ -1592,6 +1596,7 @@ break; } case RACE_BEASTMAN: + case RACE_SHADOWMAN: { *c = 154; break; diff -u -b ../Z_old/zangband-2.7.2/src/cmd4.c zangband-2.7.2/src/cmd4.c --- ../Z_old/zangband-2.7.2/src/cmd4.c 2002-12-22 10:59:52.000000000 -0500 +++ zangband-2.7.2/src/cmd4.c 2003-01-15 05:04:24.000000000 -0500 @@ -780,7 +780,7 @@ /* * Screen titles for each option sub-window */ -static cptr option_window_title[8] = +static cptr option_window_title[9] = { "User Interface Options", "Disturbance Options", @@ -789,7 +789,8 @@ "Display Options", "Birth Options", "Artificial Intelligence Options", - "Testing Options" + "Testing Options", + "EXTRA Options V1.10" }; /* @@ -1167,7 +1168,7 @@ } /* Number of things in the main options menu */ -#define OPTION_MENU_MAX 18 +#define OPTION_MENU_MAX 19 /* The main options menu */ @@ -1181,6 +1182,7 @@ {"Birth Options", NULL, do_cmd_options_aux, MN_ACTIVE | MN_SELECT | MN_CLEAR}, {"Artificial Intelligence Options", NULL, do_cmd_options_aux, MN_ACTIVE | MN_SELECT | MN_CLEAR}, {"Testing Options", NULL, do_cmd_options_aux, MN_ACTIVE | MN_SELECT | MN_CLEAR}, + {"EXTRA Options V1.10", NULL, do_cmd_options_aux, MN_ACTIVE | MN_SELECT | MN_CLEAR}, MENU_SEPERATOR, {"Cheating Options", NULL, do_cmd_options_cheat, MN_ACTIVE | MN_SELECT | MN_CLEAR}, {"Base Delay Factor", NULL, do_cmd_options_delay, MN_ACTIVE | MN_SELECT}, diff -u -b ../Z_old/zangband-2.7.2/src/cmd5.c zangband-2.7.2/src/cmd5.c --- ../Z_old/zangband-2.7.2/src/cmd5.c 2002-09-15 06:22:48.000000000 -0400 +++ zangband-2.7.2/src/cmd5.c 2003-01-15 05:04:24.000000000 -0500 @@ -659,9 +659,9 @@ (void)fire_ball(GF_HOLY_FIRE, dir, (damroll(3, 6) + plev + - (plev / ((p_ptr->pclass == CLASS_PRIEST || - p_ptr->pclass == - CLASS_HIGH_MAGE) ? 2 : 4))), + (plev / (((p_ptr->pclass == CLASS_PRIEST || + (p_ptr->pclass == CLASS_HIGH_PRIEST)) || + p_ptr->pclass == CLASS_HIGH_MAGE) ? 2 : 4))), ((plev < 30) ? 2 : 3)); break; @@ -1151,9 +1151,9 @@ (void)fire_ball(GF_MISSILE, dir, (damroll(3, 5) + plev + - (plev / (((p_ptr->pclass == CLASS_MAGE) || - (p_ptr->pclass == - CLASS_HIGH_MAGE)) ? 2 : 4))), + (plev / ((((p_ptr->pclass == CLASS_MAGE) || + (p_ptr->pclass == CLASS_HIGH_PRIEST)) || + (p_ptr->pclass == CLASS_HIGH_MAGE)) ? 2 : 4))), ((plev < 30) ? 2 : 3)); /* Shouldn't actually use GF_MANA, as it will destroy all * items on the floor */ diff -u -b ../Z_old/zangband-2.7.2/src/cmd6.c zangband-2.7.2/src/cmd6.c --- ../Z_old/zangband-2.7.2/src/cmd6.c 2002-09-11 16:12:16.000000000 -0400 +++ zangband-2.7.2/src/cmd6.c 2003-01-15 05:04:24.000000000 -0500 @@ -127,6 +127,7 @@ } } else if ((p_ptr->prace == RACE_GOLEM) || + (p_ptr->prace == RACE_TEDDYBEAR) || (p_ptr->prace == RACE_ZOMBIE) || (p_ptr->prace == RACE_SPECTRE) || (p_ptr->prace == RACE_GHOUL)) { @@ -231,6 +232,7 @@ /* Do nothing */ break; case RACE_GOLEM: + case RACE_TEDDYBEAR: case RACE_ZOMBIE: case RACE_SPECTRE: case RACE_GHOUL: @@ -1300,6 +1302,12 @@ } } + /* dragon armor artifacts half recharge time */ + if(o_ptr->flags3 & TR3_INSTA_ART) + { + o_ptr->timeout /= 2; + } + /* Window stuff */ p_ptr->window |= (PW_INVEN | PW_EQUIP); @@ -1355,6 +1363,120 @@ } +/* + * Use an item + * XXX - Add actions for other item types + */ +void do_cmd_use(void) +{ + object_type *o_ptr, *j_ptr; + cptr q, s; + + /* Prepare the hook */ + /* item_tester_hook = item_tester_hook_activate; */ + + /* Get an item */ + q = "Use which item? "; + s = "You have nothing to use."; + o_ptr = get_item(q, s, (USE_INVEN | USE_EQUIP | USE_FLOOR)); + + if (!o_ptr) return; + + switch (o_ptr->tval) + { + /* Spike a door */ + case TV_SPIKE: + { + do_cmd_spike(); + break; + } + + /* Eat some food */ + case TV_FOOD: + { + do_cmd_eat_food_aux(o_ptr); + break; + } + + /* Aim a wand */ + case TV_WAND: + { + do_cmd_aim_wand_aux(o_ptr); + break; + } + + /* Use a staff */ + case TV_STAFF: + { + do_cmd_use_staff_aux(o_ptr); + break; + } + + /* Zap a rod */ + case TV_ROD: + { + do_cmd_zap_rod_aux(o_ptr); + break; + } + + /* Quaff a potion */ + case TV_POTION: + { + do_cmd_quaff_potion_aux(o_ptr); + break; + } + + /* Read a scroll */ + case TV_SCROLL: + { + /* Check some conditions */ + if (p_ptr->blind) + { + msgf("You can't see anything."); + return; + } + if (no_lite()) + { + msgf("You have no light to read by."); + return; + } + if (p_ptr->confused) + { + msgf("You are too confused!"); + return; + } + do_cmd_read_scroll_aux(o_ptr); + break; + } + + /* Fire ammo */ + case TV_SHOT: + case TV_ARROW: + case TV_BOLT: + { + /* Get the "bow" (if any) */ + j_ptr = &p_ptr->equipment[EQUIP_BOW]; + + /* Require a launcher */ + if (!j_ptr->tval) + { + msgf("You have nothing to fire with."); + return; + } + do_cmd_fire_aux(o_ptr, j_ptr); + break; + } + + /* Activate an artifact */ + default: + { + do_cmd_activate_aux(o_ptr); + break; + } + } +} + + void do_cmd_activate(void) { object_type *o_ptr; diff -u -b ../Z_old/zangband-2.7.2/src/defines.h zangband-2.7.2/src/defines.h --- ../Z_old/zangband-2.7.2/src/defines.h 2002-12-22 16:41:13.000000000 -0500 +++ zangband-2.7.2/src/defines.h 2003-01-15 05:04:24.000000000 -0500 @@ -335,7 +335,7 @@ /* * Maximum number of player "class" types (see "table.c", etc) */ -#define MAX_CLASS 11 +#define MAX_CLASS 12 /* The number of "patrons" available (for Chaos Warriors) */ #define MAX_PATRON 16 @@ -496,7 +496,7 @@ /* * The racial powers */ -#define MAX_RACE_POWERS 28 +#define MAX_RACE_POWERS 32 /* Monk martial arts... */ @@ -948,11 +948,14 @@ #define RACE_SPRITE 28 #define RACE_BEASTMAN 29 #define RACE_GHOUL 30 +#define RACE_KLINGON 31 +#define RACE_SHADOWMAN 32 +#define RACE_TEDDYBEAR 33 /* * Maximum number of player "race" types (see "table.c", etc) */ -#define MAX_RACES 31 +#define MAX_RACES 34 /* @@ -969,6 +972,7 @@ #define CLASS_MONK 8 #define CLASS_MINDCRAFTER 9 #define CLASS_HIGH_MAGE 10 +#define CLASS_HIGH_PRIEST 11 /*** Screen Locations ***/ @@ -3767,14 +3771,14 @@ #define avoid_center p_ptr->options[155] /* {TRUE, 0, NULL, "Number 172" }, p_ptr->options[156] */ #define limit_messages p_ptr->options[157] -/* {TRUE, 0, NULL, "Number 174" }, p_ptr->options[158] */ -/* {TRUE, 0, NULL, "Number 175" }, p_ptr->options[159] */ -/* {TRUE, 0, NULL, "Number 176" }, p_ptr->options[160] */ -/* {TRUE, 0, NULL, "Number 177" }, p_ptr->options[161] */ +#define greater_vault_level p_ptr->options[158] +#define lesser_vault_level p_ptr->options[159] +#define random_vault_level p_ptr->options[160] +#define generate_small_level p_ptr->options[161] /* {TRUE, 0, NULL, "Number 178" }, p_ptr->options[162] */ /* {TRUE, 0, NULL, "Number 179" }, p_ptr->options[163] */ -/* {TRUE, 0, NULL, "Number 180" }, p_ptr->options[164] */ -/* {TRUE, 0, NULL, "Number 181" }, p_ptr->options[165] */ +#define use_command p_ptr->options[164] +#define dragon_artifacts p_ptr->options[165] /* {TRUE, 0, NULL, "Number 182" }, p_ptr->options[166] */ /* {TRUE, 0, NULL, "Number 183" }, p_ptr->options[167] */ /* {TRUE, 0, NULL, "Number 184" }, p_ptr->options[168] */ @@ -3809,17 +3813,17 @@ #define ironman_nightmare p_ptr->birth[18] #define ironman_deep_quests p_ptr->birth[19] /* {TRUE, 0, NULL, "Number 212" }, p_ptr->birth[20] */ -/* {TRUE, 0, NULL, "Number 213" }, p_ptr->birth[21] */ -/* {TRUE, 0, NULL, "Number 214" }, p_ptr->birth[22] */ -/* {TRUE, 0, NULL, "Number 215" }, p_ptr->birth[23] */ -/* {TRUE, 0, NULL, "Number 216" }, p_ptr->birth[24] */ -/* {TRUE, 0, NULL, "Number 217" }, p_ptr->birth[25] */ -/* {TRUE, 0, NULL, "Number 218" }, p_ptr->birth[26] */ -/* {TRUE, 0, NULL, "Number 219" }, p_ptr->birth[27] */ -/* {TRUE, 0, NULL, "Number 220" }, p_ptr->birth[28] */ -/* {TRUE, 0, NULL, "Number 221" }, p_ptr->birth[29] */ -/* {TRUE, 0, NULL, "Number 222" }, p_ptr->birth[30] */ -/* {TRUE, 0, NULL, "Number 223" }, p_ptr->birth[31] */ + /* {TRUE, 0, NULL, "Number 213" }, p_ptr->birth[21] */ +#define speed_monk p_ptr->birth[22] +#define confu_resis_chaos_war p_ptr->birth[23] +#define never_confu_chaos_war p_ptr->birth[24] +#define sapient_sensing p_ptr->birth[25] +#define build_magetower p_ptr->birth[26] +#define free_artifact p_ptr->birth[27] +#define birth_mutation p_ptr->birth[28] +#define patched_mutations p_ptr->birth[29] +#define born_rich p_ptr->birth[30] +#define born_augmentated p_ptr->birth[31] /* Option Set 7 */ diff -u -b ../Z_old/zangband-2.7.2/src/dungeon.c zangband-2.7.2/src/dungeon.c --- ../Z_old/zangband-2.7.2/src/dungeon.c 2002-12-11 15:10:23.000000000 -0500 +++ zangband-2.7.2/src/dungeon.c 2003-01-15 05:04:24.000000000 -0500 @@ -159,6 +159,15 @@ /* Occasional failure on inventory items */ if (!wield && !one_in_(5)) return; + /* sapient_sensing gets heavy pseudo-id at level 25 */ + /* humans at level 20 */ + if (sapient_sensing && ((p_ptr->lev > 24) || + ((p_ptr->prace == RACE_HUMAN) && + (p_ptr->lev > 19)))) + { + heavy = TRUE; + } + /* Good luck */ if ((p_ptr->muta3 & MUT3_GOOD_LUCK) && !one_in_(13)) { @@ -307,6 +316,7 @@ } case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: { /* Good (light) sensing */ difficulty = 10000L; @@ -398,6 +408,13 @@ /* Sensing gets better as you get more experienced */ difficulty /= p_ptr->lev * p_ptr->lev + 40; + /* sapient sensing doubles sensing speed after a certain player level */ + if (sapient_sensing && ((p_ptr->lev > 14) || + ((p_ptr->prace == RACE_HUMAN) && (p_ptr->lev > 9)))) + { + difficulty /= 2; + } + /* Does it work? */ if (!(one_in_(difficulty))) return; @@ -2320,7 +2337,14 @@ case 'z': { /* Zap a rod */ + if (use_command && rogue_like_commands) + { + do_cmd_use(); + } + else + { do_cmd_zap_rod(); + } break; } @@ -2341,7 +2365,14 @@ case 'u': { /* Use a staff */ + if (use_command && !rogue_like_commands) + { + do_cmd_use(); + } + else + { do_cmd_use_staff(); + } break; } @@ -2591,6 +2622,14 @@ hack_mutation = FALSE; } + if (hack_mutation2) + { + msgf("You feel different!"); + (void)gain_mutation(0); + hack_mutation2 = FALSE; + } + + /*** Check for interupts ***/ /* Complete resting */ diff -u -b ../Z_old/zangband-2.7.2/src/effects.c zangband-2.7.2/src/effects.c --- ../Z_old/zangband-2.7.2/src/effects.c 2002-11-24 09:14:27.000000000 -0500 +++ zangband-2.7.2/src/effects.c 2003-01-15 05:04:24.000000000 -0500 @@ -86,6 +86,14 @@ /* Hack -- Force good values */ v = (v > 10000) ? 10000 : (v < 0) ? 0 : v; + /* + * never_confu_chaos_war option + */ + if (never_confu_chaos_war) + { + v = 0; + } + /* Open */ if (v) { @@ -1325,6 +1333,12 @@ v = 0; } + /* Teddybears are very stun resistant */ + if(p_ptr->prace == RACE_TEDDYBEAR) + { + v = v / 10; + } + /* Knocked out */ if (p_ptr->stun > 100) { @@ -1491,6 +1505,7 @@ v = (v > 10000) ? 10000 : (v < 0) ? 0 : v; if (p_ptr->prace == RACE_GOLEM || + p_ptr->prace == RACE_TEDDYBEAR || p_ptr->prace == RACE_SKELETON || p_ptr->prace == RACE_SPECTRE || (p_ptr->prace == RACE_ZOMBIE && p_ptr->lev > 11)) @@ -2626,6 +2641,78 @@ /* Experience factor */ p_ptr->expfact = rp_ptr->r_exp + cp_ptr->c_exp; + /* + * using the birth_mutation option gives a + * 3% experience penalty + */ + if (birth_mutation) + { + p_ptr->expfact += 3; + } + + /* + * using the patched_mutations option gives a + * 5% experience penalty for Chaos-Warriors, 3% for all others + */ + if (patched_mutations) + { + if (p_ptr->pclass == CLASS_CHAOS_WARRIOR) + { + p_ptr->expfact += 5; + } + else + { + p_ptr->expfact += 3; + } + } + + /* + * confusion resistant chaos warriors get a 5% experience + * penalty over normal chaos warriors + */ + if (confu_resis_chaos_war && + (p_ptr->pclass == CLASS_CHAOS_WARRIOR)) + { + p_ptr->expfact += 5; + } + + /* + * never confused chaos warriors get a 3% experience + * penalty over normal chaos warriors + */ + if (never_confu_chaos_war && + (p_ptr->pclass == CLASS_CHAOS_WARRIOR)) + { + p_ptr->expfact += 3; + } + + /* + * klackon/sprite speed monks get a 5% experience penalty + * over normal monks + */ + if (speed_monk && (p_ptr->pclass == CLASS_MONK) && + ((p_ptr->prace == RACE_KLACKON) || + (p_ptr->prace == RACE_SPRITE))) + { + p_ptr->expfact += 5; + } + + /* + * sapient_sensing get a 10% experience penalty + */ + if (sapient_sensing) + { + /* humans get a 5% experience penalty */ + if (p_ptr->prace == RACE_HUMAN) + { + p_ptr->expfact += 5; + } + else + { + p_ptr->expfact += 10; + } + } + /* Calculate the height/weight for males */ if (p_ptr->psex == SEX_MALE) { diff -u -b ../Z_old/zangband-2.7.2/src/externs.h zangband-2.7.2/src/externs.h --- ../Z_old/zangband-2.7.2/src/externs.h 2002-11-25 14:53:05.000000000 -0500 +++ zangband-2.7.2/src/externs.h 2003-01-15 05:04:24.000000000 -0500 @@ -144,6 +144,9 @@ extern store_type **store_cache; extern char summon_kin_type; extern bool hack_mutation; +/* a hack on a hack :-) */ +extern bool hack_mutation2; + extern bool track_follow; extern bool track_target; extern byte hitpoint_warn; @@ -429,6 +432,7 @@ extern void do_cmd_activate(void); extern void do_cmd_rerate(void); extern void ring_of_power(int dir); +extern void do_cmd_use(void); /* dungeon.c */ extern void sense_item(object_type *o_ptr, bool heavy, bool wield, bool msg); @@ -685,6 +689,7 @@ extern void display_koff(int k_idx); extern object_type *test_floor(int *num, cave_type *c_ptr, int mode); extern void show_floor(int x, int y); +extern void dragon_resist(object_type *o_ptr); /* racial.c */ extern bool racial_aux(s16b min_level, int cost, int use_stat, int difficulty); diff -u -b ../Z_old/zangband-2.7.2/src/files.c zangband-2.7.2/src/files.c --- ../Z_old/zangband-2.7.2/src/files.c 2002-10-16 12:58:45.000000000 -0400 +++ zangband-2.7.2/src/files.c 2003-01-15 05:04:24.000000000 -0500 @@ -1584,6 +1584,11 @@ case CLASS_CHAOS_WARRIOR: if (p_ptr->lev > 29) (*f2) |= (TR2_RES_CHAOS); + if (confu_resis_chaos_war) + { + if (p_ptr->lev > 34) + (*f2) |= (TR2_RES_CONF); + } if (p_ptr->lev > 39) (*f2) |= (TR2_RES_FEAR); break; @@ -1782,6 +1787,30 @@ (*f2) |= (TR2_RES_POIS); (*f2) |= (TR2_RES_COLD); break; + case RACE_KLINGON: + (*f2) |= (TR2_SUST_CON); + (*f2) |= (TR2_RES_FEAR); + if (p_ptr->lev > 19) (*f3) |= (TR3_REGEN); + break; + case RACE_SHADOWMAN: + (*f2) |= (TR2_RES_BLIND); + (*f2) |= (TR2_RES_LITE); + (*f2) |= (TR2_RES_DARK); + (*f3) |= (TR3_SEE_INVIS); + (*f3) |= (TR3_TELEPATHY); + break; + case RACE_TEDDYBEAR: + (*f3) |= (TR3_SLOW_DIGEST); + (*f3) |= (TR3_SEE_INVIS); + (*f2) |= (TR2_FREE_ACT); + (*f2) |= (TR2_RES_POIS); + (*f3) |= (TR3_FEATHER); + if (p_ptr->lev > 29) (*f2) |= (TR2_IM_COLD); + else (*f2) |= (TR2_RES_COLD); + if (p_ptr->lev > 39) + (*f2) |= (TR2_HOLD_LIFE); + (*f2) |= (TR2_SUST_CHR); + break; default: ; /* Do nothing */ } @@ -2787,6 +2816,33 @@ if (munchkin_death) fprintf(fff, "\n You possess munchkinish power over death."); + + fprintf(fff, "\n\n [EXTRA Options Patch 1.10]\n"); + + if (birth_mutation) + fprintf(fff, "\n Birth Mutation: ON"); + + if (patched_mutations) + fprintf(fff, "\n Patched Mutations: ON"); + + if (speed_monk) + fprintf(fff, "\n Speed Monk: ON"); + + if (confu_resis_chaos_war) + fprintf(fff, "\n Confusion Resistant Chaos Warrior: ON"); + + if (never_confu_chaos_war) + fprintf(fff, "\n Never Confused Chaos Warrior: ON"); + + if (sapient_sensing) + fprintf(fff, "\n Sapient Sensing: ON"); + + if (build_magetower) + fprintf(fff, "\n Build Magetower in each town: ON"); + + if (free_artifact) + fprintf(fff, "\n Free Artifact: ON"); + /* Show (known) flags grid */ if (full) { diff -u -b ../Z_old/zangband-2.7.2/src/generate.c zangband-2.7.2/src/generate.c --- ../Z_old/zangband-2.7.2/src/generate.c 2002-09-11 15:41:43.000000000 -0400 +++ zangband-2.7.2/src/generate.c 2003-01-15 05:04:24.000000000 -0500 @@ -399,6 +399,11 @@ bool destroyed = FALSE; bool empty_level = FALSE; bool cavern = FALSE; + + bool do_greater_vault = TRUE; + bool do_random_vault = TRUE; + bool do_lesser_vault = TRUE; + int laketype = 0; @@ -521,6 +526,38 @@ y = randint0(dun->row_rooms); x = randint0(dun->col_rooms); + /* Attempt to place a greater vault */ + if (greater_vault_level && do_greater_vault) + { + do_greater_vault = FALSE; + force_vault(x, y, 8); + continue; + } + + /* Attempt to place a random vault */ + if (random_vault_level && do_random_vault) + { + do_random_vault = FALSE; + /* greater vault frequency increases with depth */ + if (rand_int(MAX_DEPTH) < p_ptr->depth) + { + force_vault(x, y, 8); + } + else + { + force_vault(x, y, 7); + } + continue; + } + + /* Attempt to place a lesser vault */ + if (lesser_vault_level && do_lesser_vault) + { + do_lesser_vault = FALSE; + force_vault(x, y, 7); + continue; + } + /* Attempt an "unusual" room */ if (ironman_rooms || (randint0(DUN_UNUSUAL) < p_ptr->depth)) { @@ -966,7 +1003,8 @@ { int level_height, level_width; - if (ironman_small_levels || (one_in_(SMALL_LEVEL) && small_levels)) + if (ironman_small_levels || generate_small_level || + (one_in_(SMALL_LEVEL) && small_levels)) { if (cheat_room) msgf("A 'small' dungeon level."); Common subdirectories: ../Z_old/zangband-2.7.2/src/lua and zangband-2.7.2/src/lua diff -u -b ../Z_old/zangband-2.7.2/src/melee1.c zangband-2.7.2/src/melee1.c --- ../Z_old/zangband-2.7.2/src/melee1.c 2002-11-24 08:45:59.000000000 -0500 +++ zangband-2.7.2/src/melee1.c 2003-01-15 05:04:24.000000000 -0500 @@ -1320,6 +1320,7 @@ p_ptr->prace == RACE_SPECTRE || p_ptr->prace == RACE_SKELETON || p_ptr->prace == RACE_GOLEM || + p_ptr->prace == RACE_TEDDYBEAR || p_ptr->prace == RACE_GHOUL) && (damage > 2) && !(resist_drain)) { diff -u -b ../Z_old/zangband-2.7.2/src/mutation.c zangband-2.7.2/src/mutation.c --- ../Z_old/zangband-2.7.2/src/mutation.c 2002-09-11 15:49:51.000000000 -0400 +++ zangband-2.7.2/src/mutation.c 2003-01-15 05:04:24.000000000 -0500 @@ -841,6 +841,36 @@ int mod = 10; int count = count_mutations(); + + /* mutations are 'easier' on the regeneration rate */ + if (patched_mutations) + { + /* + * everyone gets 1 "free" mutation + */ + count -= 1; + + /* + * Chaos Warriors get 4 extra "free" mutations + */ + if (p_ptr->pclass == CLASS_CHAOS_WARRIOR) + { + count -= 4; + } + + /* + * Beastman get 5 extra "free" mutations and + * only 5% decrease per additional mutation + */ + if (p_ptr->prace == RACE_BEASTMAN) + { + count -= 5; + mod = 5; + } + } + else + { + /* * Beastman get 10 "free" mutations and * only 5% decrease per additional mutation @@ -850,6 +880,7 @@ count -= 10; mod = 5; } + } /* No negative modifier */ if (count <= 0) return 100; diff -u -b ../Z_old/zangband-2.7.2/src/object1.c zangband-2.7.2/src/object1.c --- ../Z_old/zangband-2.7.2/src/object1.c 2002-12-11 14:39:59.000000000 -0500 +++ zangband-2.7.2/src/object1.c 2003-01-15 05:04:24.000000000 -0500 @@ -770,54 +770,106 @@ { case SV_DRAGON_BLUE: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe lightning (330) every 25+d25 turns"; + } return "breathe lightning (330) every 50+d50 turns"; } case SV_DRAGON_WHITE: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe frost (370) every 25+d25 turns"; + } return "breathe frost (370) every 50+d50 turns"; } case SV_DRAGON_BLACK: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe acid (430) every 25+d25 turns"; + } return "breathe acid (430) every 50+d50 turns"; } case SV_DRAGON_GREEN: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe poison gas (500) every 25+d25 turns"; + } return "breathe poison gas (500) every 50+d50 turns"; } case SV_DRAGON_RED: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe fire (670) every 25+d25 turns"; + } return "breathe fire (670) every 50+d50 turns"; } case SV_DRAGON_MULTIHUED: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe multi-hued (840) every 13+d13 turns"; + } return "breathe multi-hued (840) every 25+d25 turns"; } case SV_DRAGON_BRONZE: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe confusion (400) every 25+d25 turns"; + } return "breathe confusion (400) every 50+d50 turns"; } case SV_DRAGON_GOLD: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe sound (430) every 25+d25 turns"; + } return "breathe sound (430) every 50+d50 turns"; } case SV_DRAGON_CHAOS: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe chaos/disenchant (740) every 15+d15 turns"; + } return "breathe chaos/disenchant (740) every 30+d30 turns"; } case SV_DRAGON_LAW: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe sound/shards (750) every 15+d15 turns"; + } return "breathe sound/shards (750) every 30+d30 turns"; } case SV_DRAGON_BALANCE: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe balance (850) every 15+d15 turns"; + } return "breathe balance (850) every 30+d30 turns"; } case SV_DRAGON_SHINING: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe light/darkness (670) every 15+d15 turns"; + } return "breathe light/darkness (670) every 30+d30 turns"; } case SV_DRAGON_POWER: { + if(o_ptr->flags3 & TR3_INSTA_ART) + { + return "breathe the elements (1000) every 15+d15 turns"; + } return "breathe the elements (1000) every 30+d30 turns"; } } diff -u -b ../Z_old/zangband-2.7.2/src/object2.c zangband-2.7.2/src/object2.c --- ../Z_old/zangband-2.7.2/src/object2.c 2002-12-14 08:40:13.000000000 -0500 +++ zangband-2.7.2/src/object2.c 2003-01-15 05:04:24.000000000 -0500 @@ -2756,7 +2756,7 @@ } -static void dragon_resist(object_type *o_ptr) +void dragon_resist(object_type *o_ptr) { do { @@ -2823,6 +2823,12 @@ /* Mention the item */ if (cheat_peek) object_mention(o_ptr); + /* Roll for random artifact */ + if ((one_in_(21) && dragon_artifacts)) + { + (void)create_artifact(o_ptr, FALSE); + break; + } break; } @@ -2900,8 +2906,18 @@ /* Mention the item */ if (cheat_peek) object_mention(o_ptr); + + /* Roll for random artifact */ + if ((one_in_(21) && dragon_artifacts)) + { + (void)create_artifact(o_ptr, FALSE); + break; + } + else + { dragon_resist(o_ptr); } + } else { /* Very good */ @@ -3092,8 +3108,18 @@ /* Mention the item */ if (cheat_peek) object_mention(o_ptr); + + /* Roll for random artifact */ + if ((one_in_(21) && dragon_artifacts)) + { + (void)create_artifact(o_ptr, FALSE); + break; + } + else + { dragon_resist(o_ptr); } + } else { /* Very good */ diff -u -b ../Z_old/zangband-2.7.2/src/racial.c zangband-2.7.2/src/racial.c --- ../Z_old/zangband-2.7.2/src/racial.c 2002-12-21 15:49:20.000000000 -0500 +++ zangband-2.7.2/src/racial.c 2003-01-15 05:04:24.000000000 -0500 @@ -220,6 +220,23 @@ { switch (p_ptr->prace) { + case RACE_HUMAN: + { + if (sapient_sensing && + (racial_aux(30, 15, A_WIS, 10))) + { + msgf("You research the object."); + if (plev < 40) + { + (void)ident_spell(); + } + else + { + (void)identify_fully(); + } + } + break; + } case RACE_DWARF: { msgf("You examine your surroundings."); @@ -474,6 +491,7 @@ } break; case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: case CLASS_PALADIN: if (one_in_(3)) { @@ -605,6 +623,7 @@ (void)sleep_monsters(); break; } + case RACE_GHOUL: { if (mut_ptr->level == 30) @@ -618,6 +637,51 @@ } break; } + + case RACE_KLINGON: + { + msgf("Today is a good day to DIE!"); + /* Battle Frenzy */ + (void)set_shero(p_ptr->shero + + rand_range(25, 50)); + (void)hp_player(30); + (void)set_afraid(0); + if (!p_ptr->fast) + { + (void)set_fast(rand_range(plev / 2, + 20 + plev)); + } + else + { + (void)set_fast(p_ptr->fast + + randint1(5)); + } + break; + } + + case RACE_SHADOWMAN: + { + msgf("You open a dimensional gate. Choose a destination."); + (void)dimension_door(); + break; + } + + case RACE_TEDDYBEAR: + { + if (plev < 40) + { + msgf("You cast a big loving hug!"); + /* Charm Monster */ + if (!get_aim_dir(&dir)) return; + (void)charm_monster(dir, (3 * plev)); + } + else + { + msgf("You snuggle up to your friends..."); + (void)charm_monsters(plev * 3); + } + break; + } default: msgf("This race has no bonus power."); p_ptr->energy_use = 0; diff -u -b ../Z_old/zangband-2.7.2/src/rooms.c zangband-2.7.2/src/rooms.c --- ../Z_old/zangband-2.7.2/src/rooms.c 2002-11-25 15:11:30.000000000 -0500 +++ zangband-2.7.2/src/rooms.c 2003-01-15 05:04:24.000000000 -0500 @@ -4350,3 +4350,20 @@ return (TRUE); } + +/* + * Force a vault onto this level + */ +void force_vault(int bx0, int by0, int type) +{ + /* greater vault */ + if (type == 8) + { + build_type8(bx0, by0); + } + /* lesser vault */ + else + { + build_type7(bx0, by0); + } +} diff -u -b ../Z_old/zangband-2.7.2/src/rooms.h zangband-2.7.2/src/rooms.h --- ../Z_old/zangband-2.7.2/src/rooms.h 2001-12-03 16:39:35.000000000 -0500 +++ zangband-2.7.2/src/rooms.h 2003-01-15 05:04:24.000000000 -0500 @@ -15,3 +15,4 @@ /* Externs */ extern bool room_build(int x0, int y0, int typ); +extern void force_vault(int bx0, int by0, int type); diff -u -b ../Z_old/zangband-2.7.2/src/spells1.c zangband-2.7.2/src/spells1.c --- ../Z_old/zangband-2.7.2/src/spells1.c 2002-11-25 15:11:56.000000000 -0500 +++ zangband-2.7.2/src/spells1.c 2003-01-15 05:04:24.000000000 -0500 @@ -3595,6 +3595,10 @@ { (void)set_blind(p_ptr->blind + rand_range(2, 7)); } + if (p_ptr->prace == RACE_SHADOWMAN) + { + dam /= 2; + } if (p_ptr->prace == RACE_VAMPIRE) { msgf("The light scorches your flesh!"); @@ -3625,7 +3629,7 @@ { dam *= 4; dam /= rand_range(7, 12); - + if (p_ptr->prace == RACE_SHADOWMAN) dam /= 2; if (p_ptr->prace == RACE_VAMPIRE) dam = 0; } else if (!blind && !p_ptr->resist_blind) @@ -3858,6 +3862,7 @@ { /* Some races are immune */ case RACE_GOLEM: + case RACE_TEDDYBEAR: case RACE_SKELETON: case RACE_ZOMBIE: case RACE_VAMPIRE: diff -u -b ../Z_old/zangband-2.7.2/src/spells3.c zangband-2.7.2/src/spells3.c --- ../Z_old/zangband-2.7.2/src/spells3.c 2002-12-11 14:59:58.000000000 -0500 +++ zangband-2.7.2/src/spells3.c 2003-01-15 05:04:24.000000000 -0500 @@ -1931,7 +1931,7 @@ ((o_ptr->number > 1) ? "" : "s")); /* No artifact creation of Dragon Scale Mail */ - if (o_ptr->tval == TV_DRAG_ARMOR) + if ((o_ptr->tval == TV_DRAG_ARMOR) && (!dragon_artifacts)) { /* ToDo: Maybe allow some of the DSMs to be enchanted */ msgf("The %s %s already magical!", @@ -3125,6 +3125,7 @@ * (added high mage, mindcrafter) */ if ((p_ptr->pclass != CLASS_PRIEST) && + (p_ptr->pclass != CLASS_HIGH_PRIEST) && (p_ptr->pclass != CLASS_MAGE) && (p_ptr->pclass != CLASS_MINDCRAFTER) && (p_ptr->pclass != CLASS_HIGH_MAGE)) @@ -3133,7 +3134,9 @@ } /* Hack -- Priest prayer penalty for "edged" weapons -DGK */ - if ((p_ptr->pclass == CLASS_PRIEST) && p_ptr->icky_wield) chance += 25; + if (((p_ptr->pclass == CLASS_PRIEST) || + (p_ptr->pclass == CLASS_HIGH_PRIEST)) && + p_ptr->icky_wield) chance += 25; /* Minimum failure rate */ if (chance < minfail) chance = minfail; @@ -3207,7 +3210,8 @@ int plev = p_ptr->lev; /* See below */ - int orb = (plev / ((p_ptr->pclass == CLASS_PRIEST || + int orb = (plev / (((p_ptr->pclass == CLASS_PRIEST || + p_ptr->pclass == CLASS_HIGH_PRIEST) || p_ptr->pclass == CLASS_HIGH_MAGE) ? 2 : 4)); /* Analyze the spell */ diff -u -b ../Z_old/zangband-2.7.2/src/tables.c zangband-2.7.2/src/tables.c --- ../Z_old/zangband-2.7.2/src/tables.c 2002-11-25 14:31:02.000000000 -0500 +++ zangband-2.7.2/src/tables.c 2003-01-15 05:04:24.000000000 -0500 @@ -1480,162 +1480,214 @@ * Hum, HfE, Elf, Hal, Gno, Dwa, HfO, HfT, Dun, HiE, Barbarian, * HfOg, HGn, HTn, Cyc, Yek, Klc, Kbd, Nbl, DkE, Drc, Mind Flayer, * Imp, Glm, Skl, Zombie, Vampire, Spectre, Sprite, Beastman, Ghoul + * Klingon, ShadowMan, TeddyBear */ /* Human */ { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105, 100, 124, 120, 110, 125, 115, 120, 120, 120, 120, 115, 120, - 115, 105, 125, 125, 125, 125, 105, 120, 125 }, + 115, 105, 125, 125, 125, 125, 105, 120, 125, 110, 110, + 100}, + /* Half-Elf */ { 110, 100, 100, 105, 110, 120, 125, 130, 110, 100, 110, 120, 115, 108, 115, 110, 110, 120, 120, 115, 115, 110, - 120, 110, 110, 110, 120, 110, 100, 125, 110 }, + 120, 110, 110, 110, 120, 110, 100, 125, 110, 110, 110, + 100}, /* Elf */ { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 110, 120, 120, 105, 120, 110, 105, 125, 125, 110, 115, 108, - 120, 115, 110, 110, 120, 110, 100, 125, 125}, + 120, 115, 110, 110, 120, 110, 100, 125, 125, 110, 110, + 100}, + /* Halfling */ { 115, 110, 105, 95, 105, 110, 115, 130, 115, 105, 115, 125, 120, 120, 125, 115, 110, 120, 120, 120, 115, 115, - 120, 110, 120, 120, 130, 110, 110, 130, 120 }, + 120, 110, 120, 120, 130, 110, 110, 130, 120, 110, 110, + 100}, /* Gnome */ { 115, 115, 110, 105, 95, 110, 115, 130, 115, 110, 115, 120, 125, 110, 120, 110, 105, 120, 110, 110, 105, 110, - 120, 101, 110, 110, 120, 120, 115, 130, 110 }, + 120, 101, 110, 110, 120, 120, 115, 130, 110, 110, 110, + 100}, /* Dwarf */ { 115, 120, 120, 110, 110, 95, 125, 135, 115, 120, 115, 125, 140, 130, 130, 120, 115, 115, 115, 135, 125, 120, - 120, 105, 115, 115, 115, 115, 120, 130, 125 }, + 120, 105, 115, 115, 115, 115, 120, 130, 125, 110, 110, + 100}, /* Half-Orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 115, 120, 125, 115, 120}, + 115, 125, 120, 120, 115, 120, 125, 115, 120, 110, 110, + 100}, /* Half-Troll */ { 110, 115, 115, 110, 110, 130, 110, 110, 110, 115, 110, 110, 115, 120, 110, 120, 120, 110, 110, 110, 115, 110, - 110, 115, 112, 112, 115, 112, 120, 110, 110 }, + 110, 115, 112, 112, 115, 112, 120, 110, 110, 110, 110, + 100}, /* Amberite (Dunedain) */ { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105, 100, 120, 120, 105, 120, 115, 105, 115, 120, 110, 105, 105, - 120, 105, 120, 120, 125, 120, 105, 135, 120 }, + 120, 105, 120, 120, 125, 120, 105, 135, 120, 110, 110, + 100}, /* High_Elf */ { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 110, 125, 125, 101, 120, 115, 110, 115, 125, 110, 110, 110, - 125, 115, 120, 120, 125, 120, 100, 125, 120 }, + 125, 115, 120, 120, 125, 120, 100, 125, 120, 110, 110, + 100}, /* Human / Barbarian (copied from human) */ { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105, 100, 124, 120, 110, 125, 115, 120, 120, 120, 120, 115, 120, - 115, 105, 125, 125, 130, 125, 115, 120, 125 }, + 115, 105, 125, 125, 130, 125, 115, 120, 125, 110, 110, + 100}, /* Half-Ogre: theoretical, copied from half-troll */ { 110, 115, 115, 110, 110, 130, 110, 110, 110, 115, 110, 110, 115, 120, 110, 120, 120, 110, 110, 110, 115, 110, - 110, 115, 112, 112, 115, 112, 120, 110, 110 }, + 110, 115, 112, 112, 115, 112, 120, 110, 110, 110, 110, + 100}, /* Half-Giant: theoretical, copied from half-troll */ { 110, 115, 115, 110, 110, 130, 110, 110, 110, 115, 110, 110, 115, 120, 110, 120, 120, 110, 110, 110, 115, 110, - 110, 115, 112, 112, 115, 112, 130, 120, 110 }, + 110, 115, 112, 112, 115, 112, 130, 120, 110, 110, 110, + 100}, /* Half-Titan: theoretical, copied from High_Elf */ { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 110, 125, 125, 101, 120, 115, 110, 115, 125, 110, 110, 110, - 125, 115, 120, 120, 120, 120, 130, 130, 120 }, + 125, 115, 120, 120, 120, 120, 130, 130, 120, 110, 110, + 100}, /* Cyclops: theoretical, copied from half-troll */ { 110, 115, 115, 110, 110, 130, 110, 110, 110, 115, 110, 110, 115, 120, 110, 120, 120, 110, 110, 110, 115, 110, - 110, 115, 112, 112, 115, 112, 130, 130, 110 }, + 110, 115, 112, 112, 115, 112, 130, 130, 110, 110, 110, + 100}, /* Yeek: theoretical, copied from Half-Orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 120 }, + 115, 125, 120, 120, 120, 120, 130, 130, 120, 110, 110, + 100}, /* Klackon: theoretical, copied from Gnome */ { 115, 115, 110, 105, 95, 110, 115, 130, 115, 110, 115, 120, 125, 110, 120, 110, 105, 120, 110, 110, 105, 110, - 120, 101, 110, 110, 120, 120, 130, 130, 110 }, + 120, 101, 110, 110, 120, 120, 130, 130, 110, 110, 100, + 100}, /* Kobold: theoretical, copied from Half-Orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 110 }, + 115, 125, 120, 120, 120, 120, 130, 130, 110, 110, 110, + 100}, /* Nibelung: theoretical, copied from Dwarf */ { 115, 120, 120, 110, 110, 95, 125, 135, 115, 120, 115, 125, 140, 130, 130, 120, 115, 115, 115, 135, 125, 120, - 120, 105, 115, 115, 120, 120, 130, 130, 115 }, + 120, 105, 115, 115, 120, 120, 130, 130, 115, 110, 110, + 100}, /* Dark Elf */ { 110, 110, 110, 115, 120, 130, 115, 115, 120, 110, 115, 115, 115, 116, 115, 120, 120, 115, 115, 101, 110, 110, - 110, 110, 112, 122, 110, 110, 110, 115, 122 }, + 110, 110, 112, 122, 110, 110, 110, 115, 122, 110, 110, + 100}, /* Draconian: theoretical, copied from High_Elf */ { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 110, 125, 125, 101, 120, 115, 110, 115, 125, 110, 110, 110, - 125, 115, 120, 120, 120, 120, 130, 130, 120 }, + 125, 115, 120, 120, 120, 120, 130, 130, 120, 110, 110, + 100}, /* Mind Flayer: theoretical, copied from High_Elf */ { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 110, 125, 125, 101, 120, 115, 110, 115, 125, 110, 110, 110, - 125, 115, 120, 120, 120, 120, 130, 130, 115 }, + 125, 115, 120, 120, 120, 120, 130, 130, 115, 110, 110, + 100}, /* Imp: theoretical, copied from High_Elf */ { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 110, 125, 125, 101, 120, 115, 110, 115, 125, 110, 110, 110, - 125, 115, 120, 120, 120, 120, 130, 130, 110 }, + 125, 115, 120, 120, 120, 120, 130, 130, 110, 110, 110, + 100}, /* Golem: theoretical, copied from High_Elf */ { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 110, 125, 125, 101, 120, 115, 110, 115, 125, 110, 110, 110, - 125, 115, 120, 120, 120, 120, 130, 130, 120 }, + 125, 115, 120, 120, 120, 120, 130, 130, 120, 110, 110, + 100}, /* Skeleton: theoretical, copied from half-orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 110 }, + 115, 125, 120, 120, 120, 120, 130, 130, 110, 110, 110, + 100}, /* Zombie: Theoretical, copied from half-orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 110 }, + 115, 125, 120, 120, 120, 120, 130, 130, 110, 110, 110, + 100}, /* Vampire: Theoretical, copied from half-orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 110 }, + 115, 125, 120, 120, 120, 120, 130, 130, 110, 110, 110, + 100}, /* Spectre: Theoretical, copied from half-orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 110 }, + 115, 125, 120, 120, 120, 120, 130, 130, 110, 110, 110, + 100}, /* Sprite: Theoretical, copied from half-orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 130 }, + 115, 125, 120, 120, 120, 120, 130, 130, 130, 110, 110, + 100}, /* Beastman: Theoretical, copied from half-orc */ { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115, 110, 110, 120, 110, 120, 125, 115, 115, 110, 120, 110, - 115, 125, 120, 120, 120, 120, 130, 130, 115 }, + 115, 125, 120, 120, 120, 120, 130, 130, 115, 110, 110, + 100}, /* Ghoul */ { 120, 125, 125, 120, 117, 120, 113, 110, 120, 125, 115, 112, 111, 120, 111, 125, 120, 116, 115, 110, 115, 105, - 105, 120, 105, 105, 105, 105, 130, 115, 100 }, + 105, 120, 105, 105, 105, 105, 130, 115, 100, 110, 110, + 100}, + + /* Klingon */ + { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105, 100, + 124, 120, 110, 125, 115, 120, 120, 120, 120, 115, 120, + 115, 105, 125, 125, 130, 125, 115, 120, 120, 100, 110, + 100}, + + /* ShadowMan */ + { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105, 100, + 124, 120, 110, 125, 115, 120, 120, 120, 120, 115, 120, + 115, 105, 125, 125, 130, 125, 115, 120, 120, 110, 100, + 100}, + + /* TeddyBear */ + { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100}, }; @@ -1788,7 +1840,7 @@ 72, 6, 180, 25, 66, 4, 150, 20, 0, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Elf", @@ -1799,7 +1851,7 @@ 66, 6, 130, 15, 62, 6, 100, 10, 2, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "Elf", @@ -1810,7 +1862,7 @@ 60, 4, 100, 6, 54, 4, 80, 6, 3, - 0x75F, + (0x75F + (1 << CLASS_HIGH_PRIEST)), }, { "Hobbit", @@ -1832,7 +1884,7 @@ 42, 3, 90, 6, 39, 3, 75, 3, 4, - 0x60F, + (0x60F + (1 << CLASS_HIGH_PRIEST)), }, { "Dwarf", @@ -1843,7 +1895,7 @@ 48, 3, 150, 10, 46, 3, 120, 10, 5, - 0x005, + (0x005 + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Orc", @@ -1854,7 +1906,7 @@ 66, 1, 150, 5, 62, 1, 120, 5, 3, - 0x18D, + (0x18D + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Troll", @@ -1865,7 +1917,7 @@ 96, 10, 250, 50, 84, 8, 225, 40, 3, - 0x005, + (0x005 + (1 << CLASS_HIGH_PRIEST)), }, { "Amberite", @@ -1876,7 +1928,7 @@ 82, 5, 190, 20, 78, 6, 180, 15, 0, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "High-Elf", @@ -1887,7 +1939,7 @@ 90, 10, 190, 20, 82, 10, 180, 15, 4, - 0x75F, + (0x75F + (1 << CLASS_HIGH_PRIEST)), }, { "Barbarian", @@ -1898,7 +1950,7 @@ 82, 5, 200, 20, 78, 6, 190, 15, 0, - 0x09D, + (0x09D + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Ogre", @@ -1909,7 +1961,7 @@ 92, 10, 255, 60, 80, 8, 235, 60, 3, - 0x407, + (0x407 + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Giant", @@ -1931,7 +1983,7 @@ 111, 11, 255, 86, 99, 11, 250, 86, 0, - 0x727, + (0x727 + (1 << CLASS_HIGH_PRIEST)), }, { "Cyclops", @@ -1942,7 +1994,7 @@ 92, 10, 255, 60, 80, 8, 235, 60, 1, - 0x005, + (0x005 + (1 << CLASS_HIGH_PRIEST)), }, { "Yeek", @@ -1953,7 +2005,7 @@ 50, 3, 90, 6, 50, 3, 75, 3, 2, - 0x60F, + (0x60F + (1 << CLASS_HIGH_PRIEST)), }, { "Klackon", @@ -1986,7 +2038,7 @@ 43, 3, 92, 6, 40, 3, 78, 3, 5, - 0x40F, + (0x40F + (1 << CLASS_HIGH_PRIEST)), }, { "Dark-Elf", @@ -1997,7 +2049,7 @@ 60, 4, 100, 6, 54, 4, 80, 6, 5, - 0x7DF, + (0x7DF + (1 << CLASS_HIGH_PRIEST)), }, { "Draconian", @@ -2008,7 +2060,7 @@ 76, 1, 160, 5, 72, 1, 130, 5, 2, - 0x757, + (0x757 + (1 << CLASS_HIGH_PRIEST)), }, { "Mindflayer", @@ -2019,7 +2071,7 @@ 68, 6, 142, 15, 63, 6, 112, 10, 4, - 0x746, + (0x746 + (1 << CLASS_HIGH_PRIEST)), }, { "Imp", @@ -2052,7 +2104,7 @@ 72, 6, 50, 5, 66, 4, 50, 5, 2, - 0x70F, + (0x70F + (1 << CLASS_HIGH_PRIEST)), }, { "Zombie", @@ -2074,7 +2126,7 @@ 72, 6, 180, 25, 66, 4, 150, 20, 5, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "Spectre", @@ -2085,7 +2137,8 @@ 72, 6, 100, 25, 66, 4, 100, 20, 5, - 0x74E, /* Mage, Priest, Rogue, Warrior-Mage, Monk */ + (0x74E + (1 << CLASS_HIGH_PRIEST)), + /* Mage, Priest, Rogue, Warrior-Mage, Monk */ }, { "Sprite", @@ -2096,7 +2149,7 @@ 32, 2, 75, 2, 29, 2, 65, 2, 4, - 0x65E, + (0x65E + (1 << CLASS_HIGH_PRIEST)), }, { "Beastman", @@ -2118,8 +2171,41 @@ 72, 6, 100, 25, 66, 4, 100, 20, 2, - 0x70F, - } + (0x70F + (1 << CLASS_HIGH_PRIEST)), + }, + { + "Klingon", + { 3, -1, -1, 0, 4, -2 }, + 0, 0, 9, 3, 3, 7, 15, -3, + 13, 175, + 14, 6, + 72, 6, 185, 30, + 66, 4, 155, 25, + 2, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), + }, + { + "ShadowMan", + { -1, +2, +2, 0, -2, -1 }, + 15, 12, 15, 7, 15, 15, -3, -2, + 9, 175, + 24, 6, + 60, 6, 150, 20, + 54, 6, 120, 15, + 6, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), + }, + { + "TeddyBear", + { +1, -1, -1, 0, +1, +3 }, + 15, 18, 18, 5, 12, 15, -9, +9, + 8, 175, + 3, 2, + 30, 2, 30, 4, + 30, 2, 30, 4, + 3, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), + }, }; @@ -2221,6 +2307,15 @@ 7, 13, 9, 0, 0, 0, 15, 10, 0, 30, 12, FALSE }, + + { + "High-Priest", + {-1, -3, 4, -1, -1, 2}, + 25, 30, 32, 2, 16, 8, 16, 7, + 7, 10, 12, 0, 0, 0, 50, 18, + 2, 20, 20, FALSE + }, + }; @@ -4536,6 +4631,7 @@ { { + /* Monk: Life */ { 1, 1, 30, 4 }, { 2, 2, 35, 4 }, { 3, 3, 35, 4 }, @@ -4575,41 +4671,41 @@ /* Monk: Sorcery */ { - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, + { 1, 1, 23, 4 }, + { 2, 2, 24, 4 }, + { 3, 3, 25, 1 }, + { 4, 4, 30, 1 }, + { 5, 5, 30, 1 }, + { 6, 6, 35, 5 }, + { 7, 7, 30, 4 }, + { 8, 8, 75, 9 }, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, + { 10, 9, 75, 8 }, + { 11, 10, 75, 8 }, + { 12, 11, 75, 7 }, + { 13, 12, 50, 6 }, + { 20, 15, 60, 8 }, + { 27, 18, 60, 8 }, + { 33, 25, 70, 15 }, + { 40, 40, 75, 20 }, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, + { 4, 4, 25, 15 }, + { 12, 12, 70, 40 }, + { 14, 12, 80, 40 }, + { 15, 12, 70, 30 }, + { 16, 14, 60, 25 }, + { 19, 19, 85, 50 }, + { 24, 22, 60, 25 }, + { 28, 28, 75, 19 }, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0} + { 12, 12, 40, 20 }, + { 19, 19, 75, 70 }, + { 30, 35, 95, 160 }, + { 35, 45, 80, 120 }, + { 42, 85, 95, 200 }, + { 45, 100, 95, 200 }, + { 46, 55, 90, 175 }, + { 48, 75, 75, 250 }, }, /* Monk: Nature Magic */ @@ -4653,41 +4749,41 @@ /* Monk: Chaos Magic */ { - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, + { 2, 2, 20, 4 }, + { 3, 3, 22, 4 }, + { 4, 4, 25, 4 }, + { 5, 5, 30, 6 }, + { 8, 8, 30, 1 }, + { 11, 11, 45, 5 }, + { 17, 15, 45, 6 }, + { 18, 17, 35, 5 }, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, + { 21, 21, 45, 7 }, + { 23, 22, 45, 9 }, + { 27, 25, 50, 20 }, + { 29, 30, 50, 11 }, + { 33, 33, 50, 12 }, + { 37, 35, 60, 8 }, + { 41, 40, 80, 15 }, + { 48, 50, 85, 40 }, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, + { 12, 12, 45, 9 }, + { 17, 16, 60, 20 }, + { 20, 18, 80, 35 }, + { 27, 25, 60, 35 }, + { 35, 30, 85, 150 }, + { 45, 55, 85, 250 }, + { 49, 95, 80, 250 }, + { 50, 111, 80, 250 }, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0} + { 24, 20, 66, 8 }, + { 40, 35, 85, 35 }, + { 42, 40, 75, 40 }, + { 46, 44, 85, 100 }, + { 48, 48, 80, 150 }, + { 49, 50, 85, 200 }, + { 50, 100, 80, 250 }, + { 50, 100, 85, 250 }, }, /* Monk: Death Magic */ @@ -4729,7 +4825,98 @@ { 50, 115, 95, 250 } }, - /* Monk: No Trump magic */ + /* Monk: Trump magic */ + { + { 1, 1, 25, 3 }, + { 5, 5, 25, 4 }, + { 7, 7, 37, 8 }, + { 8, 7, 40, 8 }, + { 10, 10, 20, 4 }, + { 12, 12, 30, 6 }, + { 18, 15, 30, 6 }, + { 20, 18, 30, 5 }, + + { 24, 23, 40, 8 }, + { 28, 25, 30, 8 }, + { 31, 26, 30, 8 }, + { 33, 30, 35, 9 }, + { 38, 32, 40, 12 }, + { 40, 38, 35, 10 }, + { 44, 42, 40, 15 }, + { 48, 46, 35, 12 }, + + { 19, 18, 40, 20 }, + { 29, 27, 35, 25 }, + { 31, 30, 35, 30 }, + { 35, 33, 35, 35 }, + { 40, 80, 40, 100 }, + { 42, 120, 45, 250 }, + { 46, 55, 25, 75 }, + { 50, 135, 45, 200 }, + + { 33, 30, 30, 50 }, + { 40, 60, 45, 100 }, + { 42, 95, 40, 150 }, + { 45, 95, 40, 150 }, + { 46, 120, 40, 200 }, + { 48, 125, 40, 150 }, + { 49, 130, 40, 200 }, + { 50, 135, 40, 220 } + }, + + /* Monk: Arcane Magic */ + { + { 1, 1, 20, 4 }, + { 2, 1, 33, 5 }, + { 2, 2, 33, 4 }, + { 3, 3, 33, 5 }, + { 4, 4, 33, 5 }, + { 5, 5, 40, 6 }, + { 6, 6, 33, 7 }, + { 7, 7, 44, 5 }, + + { 8, 8, 40, 7 }, + { 9, 9, 60, 7 }, + { 11, 10, 50, 6 }, + { 12, 11, 50, 6 }, + { 13, 12, 50, 6 }, + { 14, 13, 50, 6 }, + { 15, 14, 50, 5 }, + { 16, 15, 50, 5 }, + + { 17, 16, 50, 5 }, + { 18, 17, 50, 5 }, + { 19, 18, 33, 6 }, + { 20, 20, 50, 8 }, + { 23, 22, 60, 9 }, + { 25, 23, 60, 9 }, + { 29, 25, 70, 12 }, + { 30, 27, 60, 13 }, + + { 35, 30, 80, 50 }, + { 39, 38, 80, 25 }, + { 41, 40, 60, 25 }, + { 43, 42, 70, 25 }, + { 45, 44, 66, 30 }, + { 47, 45, 80, 40 }, + { 48, 65, 70, 50 }, + { 50, 140, 80, 200 } + } + } + }, + + { + /*** Mindcrafter ***/ + + TV_LIFE_BOOK, + 0, + + A_WIS, + 0, + + 99, + 300, + { { { 99, 0, 0, 0}, { 99, 0, 0, 0}, @@ -4765,10 +4952,9 @@ { 99, 0, 0, 0}, { 99, 0, 0, 0}, { 99, 0, 0, 0}, - { 99, 0, 0, 0}, + { 99, 0, 0, 0} }, - /* Monk: No Arcane Magic */ { { 99, 0, 0, 0}, { 99, 0, 0, 0}, @@ -4804,97 +4990,7 @@ { 99, 0, 0, 0}, { 99, 0, 0, 0}, { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - } - } - }, - - { - /*** Mindcrafter ***/ - - TV_LIFE_BOOK, - 0, - - A_WIS, - 0, - - 99, - 300, - { - { - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0} - }, - - { - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0}, - { 99, 0, 0, 0} + { 99, 0, 0, 0} }, { { 99, 0, 0, 0}, @@ -5371,6 +5467,293 @@ } } }, + + { + /*** High Priest ***/ + + TV_LIFE_BOOK, + 0, + + A_WIS, + 1, + + 1, + 350, + { + /* High Priest: Life Magic */ + { + { 1, 1, 5, 4 }, + { 1, 1, 10, 4 }, + { 1, 1, 15, 4 }, + { 2, 1, 20, 1 }, + { 2, 2, 22, 2 }, + { 3, 3, 23, 2 }, + { 4, 3, 27, 4 }, + { 6, 3, 33, 4 }, + + { 5, 4, 28, 5 }, + { 7, 4, 28, 4 }, + { 7, 5, 30, 4 }, + { 8, 6, 28, 4 }, + { 8, 6, 30, 4 }, + { 9, 6, 32, 4 }, + { 18, 11, 50, 7 }, + { 31, 37, 80, 15 }, + + { 12, 9, 35, 50 }, + { 13, 9, 65, 60 }, + { 14, 9, 40, 70 }, + { 21, 13, 40, 70 }, + { 22, 13, 55, 120 }, + { 22, 17, 65, 250 }, + { 36, 21, 80, 200 }, + { 41, 29, 65, 250 }, + + { 1, 3, 30, 80 }, + { 11, 9, 30, 100 }, + { 26, 33, 60, 130 }, + { 31, 47, 70, 250 }, + { 36, 33, 60, 130 }, + { 36, 27, 60, 200 }, + { 38, 60, 65, 200 }, + { 41, 60, 65, 250 }, + }, + + /* High Priest: Sorcery */ + { + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0} + }, + + /* High Priest: Nature Magic */ + { + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0} + }, + + /* High Priest: Chaos Magic */ + { + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0} + }, + + /* High Priest: Death Magic */ + { + { 1, 1, 20, 4 }, + { 1, 1, 20, 4 }, + { 1, 1, 20, 4 }, + { 1, 2, 20, 3 }, + { 2, 2, 20, 4 }, + { 4, 7, 55, 6 }, + { 6, 6, 20, 4 }, + { 7, 6, 20, 4 }, + + { 9, 8, 25, 5 }, + { 10, 8, 15, 4 }, + { 13, 10, 35, 10 }, + { 19, 13, 45, 16 }, + { 25, 52, 75, 30 }, + { 29, 24, 45, 16 }, + { 32, 24, 80, 25 }, + { 39, 32, 80, 150 }, + + { 6, 12, 60, 180 }, + { 6, 8, 60, 30 }, + { 7, 7, 10, 15 }, + { 23, 16, 55, 50 }, + { 28, 24, 40, 125 }, + { 28, 64, 50, 90 }, + { 34, 28, 50, 200 }, + { 36, 53, 60, 100 }, + + { 14, 13, 50, 50 }, + { 20, 48, 70 , 250 }, + { 24, 28, 70, 250 }, + { 27, 24, 45, 40 }, + { 31, 24, 55, 70 }, + { 37, 80, 70, 250 }, + { 39, 68, 65, 250 }, + { 42, 60, 65, 250 } + }, + + /* High Priest: Trump Magic */ + { + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0} + }, + + /* High Priest: Arcane Magic */ + { + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0}, + { 99, 0, 0, 0} + }, + } + }, }; @@ -5398,13 +5781,18 @@ CH_ARCANE), /* Rogue */ (CH_NATURE), /* Ranger */ (CH_LIFE | CH_DEATH), /* Paladin */ - (CH_ARCANE), /* Warrior-Mage */ + (CH_LIFE | CH_SORCERY | CH_NATURE | + CH_CHAOS | CH_DEATH | CH_TRUMP | + CH_ARCANE), /* Warrior-Mage */ (CH_CHAOS), /* Chaos-Warrior */ - (CH_LIFE | CH_NATURE | CH_DEATH), /* Monk */ + (CH_LIFE | CH_SORCERY | CH_NATURE | + CH_CHAOS | CH_DEATH | CH_TRUMP | + CH_ARCANE), /* Monk */ (CH_NONE), /* Mindcrafter */ (CH_LIFE | CH_SORCERY | CH_NATURE | CH_CHAOS | CH_DEATH | CH_TRUMP | CH_ARCANE), /* High-Mage */ + (CH_LIFE | CH_DEATH), /* High-Priest */ }; @@ -5427,6 +5815,7 @@ (CH_NONE), /* Monk */ (CH_NONE), /* Mindcrafter */ (CH_NONE), /* High-Mage */ + (CH_NONE), /* High-Priest */ }; @@ -5979,6 +6368,20 @@ "Ipsissimus", "Archimage", }, + + /* High Priest; Same as Priest */ + { + "Believer", + "Acolyte", + "Adept", + "Curate", + "Canon", + "Priest", + "High Priest", + "Cardinal", + "Inquisitor", + "Pope", + }, }; @@ -6324,14 +6727,14 @@ {FALSE, 5, "avoid_center", "Avoid centering while running" }, {TRUE, 0, NULL, "Number 172" }, {TRUE, 5, "limit_messages", "Only display last 50 messages in dumps" }, - {TRUE, 0, NULL, "Number 174" }, - {TRUE, 0, NULL, "Number 175" }, - {TRUE, 0, NULL, "Number 176" }, - {TRUE, 0, NULL, "Number 177" }, + {FALSE, 9, "greater_vault_level", "Attempt to create a level with a greater vault" }, + {FALSE, 9, "lesser_vault_level", "Attempt to create a level with a lesser vault" }, + {FALSE, 9, "random_vault_level", "Attempt to create a level with a random vault" }, + {FALSE, 9, "generate_small_level", "Attempt to create a small level"}, {TRUE, 0, NULL, "Number 178" }, {TRUE, 0, NULL, "Number 179" }, - {TRUE, 0, NULL, "Number 180" }, - {TRUE, 0, NULL, "Number 181" }, + {FALSE, 9, "use_command", "Allow unified use command" }, + {FALSE, 9, "dragon_artifacts", "Allow dragon artifacts" }, {TRUE, 0, NULL, "Number 182" }, {TRUE, 0, NULL, "Number 183" }, {TRUE, 0, NULL, "Number 184" }, @@ -6365,16 +6768,16 @@ {FALSE, 6, "ironman_deep_quests", "Random quests are very difficult" }, {TRUE, 0, NULL, "Number 212" }, {TRUE, 0, NULL, "Number 213" }, - {TRUE, 0, NULL, "Number 214" }, - {TRUE, 0, NULL, "Number 215" }, - {TRUE, 0, NULL, "Number 216" }, - {TRUE, 0, NULL, "Number 217" }, - {TRUE, 0, NULL, "Number 218" }, - {TRUE, 0, NULL, "Number 219" }, - {TRUE, 0, NULL, "Number 220" }, - {TRUE, 0, NULL, "Number 221" }, - {TRUE, 0, NULL, "Number 222" }, - {TRUE, 0, NULL, "Number 223" }, + {FALSE, 9, "speed_monk", "BIRTH - Monks get racial AND class speed bonuses" }, + {FALSE, 9, "confu_resis_chaos_war", "BIRTH - Chaos Warriors gain confusion resistance" }, + {FALSE, 9, "never_confu_chaos_war", "BIRTH - Chaos Warriors are never confused" }, + {FALSE, 9, "sapient_sensing", "BIRTH - Gain a stronger faster pseudo sense" }, + {FALSE, 9, "build_magetower", "BIRTH - Build Magetower in each town" }, + {FALSE, 9, "free_artifact", "BIRTH - Start with Scroll of Artifact Creation" }, + {FALSE, 9, "birth_mutation", "BIRTH - Mutation at birth" }, + {FALSE, 9, "patched_mutations", "BIRTH - Mutations are easier on the regen rate" }, + {FALSE, 9, "born_rich", "BIRTH - Strat the game with extra money" }, + {FALSE, 9, "born_augmentated", "BIRTH - Start with a potion of Augmentation" }, {FALSE, 0, NULL, "Number 224" }, {FALSE, 5, "monster_light", "Allow monsters to carry lights" }, {TRUE, 0, NULL, "Turn on muliplayer client - server code" }, @@ -8124,6 +8527,16 @@ const mutation_type race_powers[MAX_RACE_POWERS] = { { + RACE_HUMAN, + "You can research to discover the true nature of objects.", + "(nothing)", + "(nothing)", + "Research object", + 30, 15, A_WIS, 10, + 0 + }, + + { RACE_DWARF, "You can find traps, doors and stairs.", "(nothing)", @@ -8401,6 +8814,37 @@ "Sense living", 30, 10, A_WIS, 12, 0 - } + }, + + { + RACE_KLINGON, + "You can enter into a Battle Frenzy.", + "(nothing)", + "(nothing)", + "Battle Frenzy", + 30, 20, A_CON, 10, + 0 + }, + + { + RACE_SHADOWMAN, + "You can open dimensional doorways.", + "(nothing)", + "(nothing)", + "Dimension Door", + 15, 12, A_INT, 12, + 0 + }, + + { + RACE_TEDDYBEAR, + "You can charm others.", + "(nothing)", + "(nothing)", + "Charm Monsters", + 15, 12, A_CHR, 12, + 0 + }, + }; Common subdirectories: ../Z_old/zangband-2.7.2/src/tk and zangband-2.7.2/src/tk diff -u -b ../Z_old/zangband-2.7.2/src/variable.c zangband-2.7.2/src/variable.c --- ../Z_old/zangband-2.7.2/src/variable.c 2002-11-17 17:28:40.000000000 -0500 +++ zangband-2.7.2/src/variable.c 2003-01-15 05:04:24.000000000 -0500 @@ -104,6 +104,7 @@ /* Is this needed? */ bool hack_mutation; +bool hack_mutation2; /* a hack on a hack :-) */ s16b o_max = 1; /* Number of allocated objects */ s16b o_cnt = 0; /* Number of live objects */ diff -u -b ../Z_old/zangband-2.7.2/src/wild.h zangband-2.7.2/src/wild.h --- ../Z_old/zangband-2.7.2/src/wild.h 2002-02-23 11:19:52.000000000 -0500 +++ zangband-2.7.2/src/wild.h 2003-01-15 05:04:24.000000000 -0500 @@ -50,7 +50,7 @@ (((TOWN_HGT / WILD_BLOCK_SIZE) + 1) * WILD_BLOCK_SIZE) /* Starting town has pre-defined stores */ -#define START_STORE_NUM 7 +#define START_STORE_NUM 8 /* Town types */ #define TOWN_OLD 1 diff -u -b ../Z_old/zangband-2.7.2/src/wild2.c zangband-2.7.2/src/wild2.c --- ../Z_old/zangband-2.7.2/src/wild2.c 2002-12-22 12:34:06.000000000 -0500 +++ zangband-2.7.2/src/wild2.c 2003-01-15 05:08:07.000000000 -0500 @@ -156,17 +156,32 @@ }; /* The stores in the starting town */ -static int wild_first_town[START_STORE_NUM] = +static int wild_first_town[START_STORE_NUM]; +void build_starting_town() { - BUILD_STAIRS, - BUILD_STORE_HOME, - BUILD_SUPPLIES0, - BUILD_WARHALL0, - BUILD_STORE_TEMPLE, - BUILD_STORE_MAGIC, - BUILD_BLACK0 -}; - + wild_first_town[0] = BUILD_STAIRS; + wild_first_town[1] = BUILD_STORE_HOME; + wild_first_town[2] = BUILD_SUPPLIES0; + wild_first_town[3] = BUILD_WARHALL0; + wild_first_town[4] = BUILD_STORE_TEMPLE; + wild_first_town[5] = BUILD_STORE_MAGIC; + wild_first_town[6] = BUILD_BLACK0; + if (build_magetower) + { + if (randint0(2)) + { + wild_first_town[7] = BUILD_MAGETOWER0; + } + else + { + wild_first_town[7] = BUILD_MAGETOWER1; + } + } + else + { + wild_first_town[7] = BUILD_NONE; + } +} /* * Return the building name given a building "type" @@ -311,6 +326,20 @@ s32b total = 0; + /* Try to build a magetower */ + if (build_magetower && + (!(build[BUILD_MAGETOWER0] || build[BUILD_MAGETOWER1]))) + { + if (randint0(2)) + { + return(BUILD_MAGETOWER0); + } + else + { + return(BUILD_MAGETOWER1); + } + } + /* Draw stairs first for small towns */ if ((build_num < 11) && (!build[BUILD_STAIRS])) return (BUILD_STAIRS); @@ -1347,6 +1376,8 @@ /* No towns yet */ place_count = 1; + build_starting_town(); + /* * Try to add z_info->wp_max towns. */ diff -u -b ../Z_old/zangband-2.7.2/src/xtra1.c zangband-2.7.2/src/xtra1.c --- ../Z_old/zangband-2.7.2/src/xtra1.c 2002-09-25 15:12:09.000000000 -0400 +++ zangband-2.7.2/src/xtra1.c 2003-01-15 05:04:24.000000000 -0500 @@ -1750,6 +1750,9 @@ /* Hack: High mages have a 25% mana bonus */ if (msp && (p_ptr->pclass == CLASS_HIGH_MAGE)) msp += msp / 4; + /* Hack: High Priests have a 25% mana bonus */ + if (msp && (p_ptr->pclass == CLASS_HIGH_PRIEST)) msp += msp / 4; + /* Only mages are affected */ if (mp_ptr->spell_book == TV_SORCERY_BOOK) @@ -1818,6 +1821,7 @@ } case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: case CLASS_MINDCRAFTER: { /* Mana halved if armour is 40 pounds over weight limit. */ @@ -2132,9 +2136,10 @@ } case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: { /* - * Priest. + * Priest, High-Priest. * Can use 12 lb weapons without penalty at level 1, * and 22 lb weapons without penalty at 50th level. */ @@ -2485,6 +2490,11 @@ case CLASS_CHAOS_WARRIOR: { if (p_ptr->lev > 29) p_ptr->resist_chaos = TRUE; + if (confu_resis_chaos_war) + { + if (p_ptr->lev > 34) + p_ptr->resist_confu = TRUE; + } if (p_ptr->lev > 39) p_ptr->resist_fear = TRUE; break; } @@ -2502,7 +2512,8 @@ if (!p_ptr->monk_armour_stat) { #ifndef MONK_HACK - if (!((p_ptr->prace == RACE_KLACKON) || + if (speed_monk || + !((p_ptr->prace == RACE_KLACKON) || (p_ptr->prace == RACE_SPRITE))) #endif /* MONK_HACK */ { @@ -2739,6 +2750,35 @@ p_ptr->resist_pois = TRUE; break; } + case RACE_KLINGON: + { + p_ptr->sustain_con = TRUE; + p_ptr->resist_fear = TRUE; + if (p_ptr->lev > 19) p_ptr->regenerate = TRUE; + break; + } + case RACE_SHADOWMAN: + { + p_ptr->resist_blind = TRUE; + p_ptr->resist_lite = TRUE; + p_ptr->resist_dark = TRUE; + p_ptr->see_inv = TRUE; + p_ptr->telepathy = TRUE; + break; + } + case RACE_TEDDYBEAR: + { + p_ptr->slow_digest = TRUE; + p_ptr->see_inv = TRUE; + p_ptr->free_act = TRUE; + p_ptr->resist_pois = TRUE; + p_ptr->ffall = TRUE; + if (p_ptr->lev > 29) p_ptr->immune_cold = TRUE; + else p_ptr->resist_cold = TRUE; + if (p_ptr->lev > 39) p_ptr->hold_life = TRUE; + p_ptr->sustain_chr = TRUE; + break; + } } @@ -2944,6 +2984,13 @@ p_ptr->dis_to_a += 20 + (p_ptr->lev / 5); } + /* TeddyBears get an intrinsic AC bonus */ + if (p_ptr->prace == RACE_TEDDYBEAR) + { + p_ptr->to_a += 5; + p_ptr->dis_to_a += 5; + } + /* Calculate stats */ for (i = 0; i < A_MAX; i++) { @@ -3356,7 +3403,8 @@ } /* Priest weapon penalty for non-blessed edged weapons */ - if ((p_ptr->pclass == CLASS_PRIEST) && (!p_ptr->bless_blade) && + if (((p_ptr->pclass == CLASS_PRIEST) || + (p_ptr->pclass == CLASS_HIGH_PRIEST)) && (!p_ptr->bless_blade) && ((o_ptr->tval == TV_SWORD) || (o_ptr->tval == TV_POLEARM))) { /* Reduce the real bonuses */ @@ -3541,6 +3589,19 @@ } } + /* ShadowMan get extra stealth bonus as they advance in levels */ + if (p_ptr->prace == RACE_SHADOWMAN) + { + p_ptr->skill_stl += (p_ptr->lev / 10); + } + + /* klingons get extra blows as they advance in levels */ + if (p_ptr->prace == RACE_KLINGON) + { + if (p_ptr->lev > 14) p_ptr->num_blow++; + if (p_ptr->lev > 34) p_ptr->num_blow++; + } + /* Hack -- handle "xtra" mode */ if (character_xtra) return;