diff -u -b c:/temp/zangband/zangband/src/artifact.c c:/tmp/zangband/zangband/src/artifact.c --- c:/temp/zangband/zangband/src/artifact.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/artifact.c Mon Oct 22 00:03:00 2001 @@ -1407,6 +1407,7 @@ case CLASS_HIGH_MAGE: artifact_bias = BIAS_MAGE; break; + case CLASS_HIGH_PRIEST: case CLASS_PRIEST: artifact_bias = BIAS_PRIESTLY; break; diff -u -b c:/temp/zangband/zangband/src/avatar.c c:/tmp/zangband/zangband/src/avatar.c --- c:/temp/zangband/zangband/src/avatar.c Sat Aug 4 09:21:26 2001 +++ c:/tmp/zangband/zangband/src/avatar.c Mon Oct 22 00:03:00 2001 @@ -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 c:/temp/zangband/zangband/src/birth.c c:/tmp/zangband/zangband/src/birth.c --- c:/temp/zangband/zangband/src/birth.c Sat Aug 25 04:35:44 2001 +++ c:/tmp/zangband/zangband/src/birth.c Mon Oct 22 00:03:10 2001 @@ -588,6 +588,48 @@ {"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, 100 }, + {"real bearskins by ", 30, 161, 162, 60 }, + {"old pillows by ", 70, 161, 162, 50 }, + {"old cushions by ", 100, 161, 162, 50 }, + {"a royal Archmage's child. ", 10, 162, 163, 100 }, + {"a high priest's child. ", 20, 162, 163, 60 }, + {"a ranger lord's child. ", 30, 162, 163, 60 }, + {"a Necromancer's child. ", 50, 162, 163, 50 }, + {"a Wizard's child. ", 100, 162, 163, 50 }, + {"You are irrestistibly huggable, with ", 100, 163, 164, 50 }, + {"diamonds for eyes, and ", 10, 164, 165, 100 }, + {"emeralds for eyes, and ", 20, 164, 165, 75 }, + {"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 }, + {"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 }, + }; @@ -898,6 +940,73 @@ /* 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; + } + + /* + * 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; + } + } + /* Initialize rewards information -KMW- */ p_ptr->inside_quest = 0; @@ -1130,6 +1239,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; @@ -1457,6 +1581,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 */ + }, }; @@ -1484,6 +1615,7 @@ switch (p_ptr->prace) { case RACE_GOLEM: + case RACE_TEDDYBEAR: case RACE_SKELETON: case RACE_ZOMBIE: case RACE_VAMPIRE: @@ -2048,6 +2180,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]; @@ -2893,8 +3031,17 @@ /* Break if "happy" */ if (accept) break; + /* very_fast_autoroller option */ + if (very_fast_autoroller) + { + /* Take note every 1000 rolls */ + flag = (!(auto_round % 1000L)); + } + else /* original autoroller */ + { /* Take note every x rolls */ flag = (!(auto_round % AUTOROLLER_STEP)); + } /* Update display occasionally */ if (flag || (auto_round < last_round + 100)) @@ -2928,8 +3075,17 @@ /* Make sure they see everything */ Term_fresh(); + /* very_fast_autoroller option */ + if (very_fast_autoroller) + { + /* Delay 1/20 second */ + if (flag) Term_xtra(TERM_XTRA_DELAY, 50); + } + else /* original autoroller */ + { /* Delay 1/10 second */ if (flag) Term_xtra(TERM_XTRA_DELAY, 100); + } /* Do not wait for a key */ inkey_scan = TRUE; diff -u -b c:/temp/zangband/zangband/src/cave.c c:/tmp/zangband/zangband/src/cave.c --- c:/temp/zangband/zangband/src/cave.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/cave.c Mon Oct 22 00:03:10 2001 @@ -1185,6 +1185,7 @@ *c = 248; break; case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: if (p_ptr->lev < 20) *a = TERM_L_BLUE; else @@ -1225,6 +1226,7 @@ { case RACE_GNOME: case RACE_HOBBIT: + case RACE_TEDDYBEAR: *c = 144; break; case RACE_DWARF: @@ -1247,6 +1249,7 @@ case RACE_HALF_GIANT: case RACE_HALF_TITAN: case RACE_CYCLOPS: + case RACE_KLINGON: *c = 145; break; case RACE_YEEK: @@ -1284,6 +1287,7 @@ case RACE_SKELETON: 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) @@ -1305,6 +1309,7 @@ *c = 244; break; case RACE_BEASTMAN: + case RACE_SHADOWMAN: *c = 154; break; } diff -u -b c:/temp/zangband/zangband/src/cmd4.c c:/tmp/zangband/zangband/src/cmd4.c --- c:/temp/zangband/zangband/src/cmd4.c Tue Aug 21 06:40:20 2001 +++ c:/tmp/zangband/zangband/src/cmd4.c Mon Oct 22 00:03:00 2001 @@ -1080,24 +1080,25 @@ prt("(6) Birth Options", 9, 5); prt("(7) Artificial Intelligence Options", 10, 5); prt("(8) Testing Options", 11, 5); + prt("(9) EXTRA Options V1.6", 12, 5); /* Special choices */ - prt("(D) Base Delay Factor", 13, 5); - prt("(H) Hitpoint Warning", 14, 5); - prt("(A) Autosave Options", 15, 5); + prt("(D) Base Delay Factor", 14, 5); + prt("(H) Hitpoint Warning", 15, 5); + prt("(A) Autosave Options", 16, 5); /* Window flags */ - prt("(W) Window Flags", 16, 5); + prt("(W) Window Flags", 17, 5); /* Cheating */ - prt("(C) Cheating Options", 17, 5); + prt("(C) Cheating Options", 18, 5); /* Dump Options */ - prt("(|) Dump Options to a Pref File", 19, 5); + prt("(|) Dump Options to a Pref File", 20, 5); /* Prompt */ - prt("Command: ", 20, 0); + prt("Command: ", 21, 0); /* Get command */ k = inkey(); @@ -1190,6 +1191,17 @@ { /* Spawn */ do_cmd_options_aux(8, "Testing Options"); + + /* Save the changes */ + init_options(flags); + break; + } + + /* EXTRA options */ + case '9': + { + /* Spawn */ + do_cmd_options_aux(9, "EXTRA Options V1.6"); /* Save the changes */ init_options(flags); diff -u -b c:/temp/zangband/zangband/src/cmd5.c c:/tmp/zangband/zangband/src/cmd5.c --- c:/temp/zangband/zangband/src/cmd5.c Sat Aug 4 09:21:26 2001 +++ c:/tmp/zangband/zangband/src/cmd5.c Mon Oct 22 00:03:00 2001 @@ -722,7 +722,8 @@ (void)fire_ball(GF_HOLY_FIRE, dir, (damroll(3, 6) + plev + - (plev / ((p_ptr->pclass == CLASS_PRIEST || + (plev / (((p_ptr->pclass == CLASS_PRIEST || + (p_ptr->pclass == CLASS_HIGH_PRIEST)) || p_ptr->pclass == CLASS_HIGH_MAGE) ? 2 : 4))), ((plev < 30) ? 2 : 3)); @@ -1202,7 +1203,8 @@ (void)fire_ball(GF_MISSILE, dir, (damroll(3, 5) + plev + - (plev / (((p_ptr->pclass == CLASS_MAGE) || + (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 diff -u -b c:/temp/zangband/zangband/src/cmd6.c c:/tmp/zangband/zangband/src/cmd6.c --- c:/temp/zangband/zangband/src/cmd6.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/cmd6.c Mon Oct 22 00:03:10 2001 @@ -346,9 +346,11 @@ } } 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)) + { msg_print("The food of mortals is poor sustenance for you."); (void)set_food(p_ptr->food + ((o_ptr->pval) / 20)); @@ -1037,6 +1039,7 @@ /* Do nothing */ break; case RACE_GOLEM: + case RACE_TEDDYBEAR: case RACE_ZOMBIE: case RACE_SPECTRE: case RACE_GHOUL: diff -u -b c:/temp/zangband/zangband/src/defines.h c:/tmp/zangband/zangband/src/defines.h --- c:/temp/zangband/zangband/src/defines.h Fri Aug 31 23:21:26 2001 +++ c:/tmp/zangband/zangband/src/defines.h Mon Oct 22 00:03:00 2001 @@ -312,7 +312,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 @@ -473,7 +473,7 @@ /* * The racial powers */ -#define MAX_RACE_POWERS 28 +#define MAX_RACE_POWERS 32 /* Monk martial arts... */ @@ -902,11 +902,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 /* @@ -923,6 +926,7 @@ #define CLASS_MONK 8 #define CLASS_MINDCRAFTER 9 #define CLASS_HIGH_MAGE 10 +#define CLASS_HIGH_PRIEST 11 /*** Screen Locations ***/ @@ -3620,10 +3624,10 @@ #define center_player p_ptr->options[154] #define avoid_center p_ptr->options[155] /* {TRUE, 0, NULL, "Number 172" }, p_ptr->options[156] */ -/* {TRUE, 0, NULL, "Number 173" }, 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] */ +#define greater_vault_level p_ptr->options[157] +#define lesser_vault_level p_ptr->options[158] +#define random_vault_level p_ptr->options[159] +#define generate_small_level p_ptr->options[160] /* {TRUE, 0, NULL, "Number 177" }, p_ptr->options[161] */ /* {TRUE, 0, NULL, "Number 178" }, p_ptr->options[162] */ /* {TRUE, 0, NULL, "Number 179" }, p_ptr->options[163] */ @@ -3661,18 +3665,19 @@ #define point_based p_ptr->birth[16] #define silly_monsters p_ptr->birth[17] #define ironman_nightmare p_ptr->birth[18] -/* {TRUE, 0, NULL, "Number 211" }, 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] */ +/* some EXTRA options */ +#define birth_mutation p_ptr->birth[19] +#define patched_mutations p_ptr->birth[20] +#define very_fast_autoroller 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 try_stairs_building p_ptr->birth[26] +#define try_home_building 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] */ +#define try_scroll_building p_ptr->birth[29] +#define try_potion_building p_ptr->birth[30] /* {TRUE, 0, NULL, "Number 223" }, p_ptr->birth[31] */ /* Option Set 7 */ diff -u -b c:/temp/zangband/zangband/src/dungeon.c c:/tmp/zangband/zangband/src/dungeon.c --- c:/temp/zangband/zangband/src/dungeon.c Tue Aug 14 08:06:16 2001 +++ c:/tmp/zangband/zangband/src/dungeon.c Mon Oct 22 00:03:00 2001 @@ -152,8 +152,21 @@ { case CLASS_WARRIOR: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(4500L / + (plev * plev + 40))) return; + } + else + { /* Good sensing */ - if (!one_in_(9000L / (plev * plev + 40))) return; + if (0 != rand_int(9000L / + (plev * plev + 40))) return; + } /* Heavy sensing */ heavy = TRUE; @@ -165,17 +178,44 @@ case CLASS_MAGE: case CLASS_HIGH_MAGE: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(120000L / + (plev + 5))) return; + } + else + { /* Very bad (light) sensing */ - if (!one_in_(240000L / (plev + 5))) return; + if (0 != rand_int(240000L / + (plev + 5))) return; + } /* Done */ break; } case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: + { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(5000L / + (plev * plev + 40))) return; + } + else { /* Good (light) sensing */ - if (!one_in_(10000L / (plev * plev + 40))) return; + if (0 != rand_int(10000L / + (plev * plev + 40))) return; + } /* Done */ break; @@ -183,8 +223,21 @@ case CLASS_ROGUE: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(10000L / + (plev * plev + 40))) return; + } + else + { /* Okay sensing */ - if (!one_in_(20000L / (plev * plev + 40))) return; + if (0 != rand_int(20000L / + (plev * plev + 40))) return; + } /* Heavy sensing */ heavy = TRUE; @@ -195,8 +248,21 @@ case CLASS_RANGER: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(47500L / + (plev * plev + 40))) return; + } + else + { /* Bad sensing */ - if (!one_in_(95000L / (plev * plev + 40))) return; + if (0 != rand_int(95000L / + (plev * plev + 40))) return; + } /* Changed! */ heavy = TRUE; @@ -207,8 +273,21 @@ case CLASS_PALADIN: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(38888L / + (plev * plev + 40))) return; + } + else + { /* Bad sensing */ - if (!one_in_(77777L / (plev * plev + 40))) return; + if (0 != rand_int(77777L / + (plev * plev + 40))) return; + } /* Heavy sensing */ heavy = TRUE; @@ -219,8 +298,21 @@ case CLASS_WARRIOR_MAGE: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(37500L / + (plev * plev + 40))) return; + } + else + { /* Bad sensing */ - if (!one_in_(75000L / (plev * plev + 40))) return; + if (0 != rand_int(75000L / + (plev * plev + 40))) return; + } /* Done */ break; @@ -228,8 +320,21 @@ case CLASS_MINDCRAFTER: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(27500L / + (plev * plev + 40))) return; + } + else + { /* Bad sensing */ - if (!one_in_(55000L / (plev * plev + 40))) return; + if (0 != rand_int(55000L / + (plev * plev + 40))) return; + } /* Done */ break; @@ -237,8 +342,21 @@ case CLASS_CHAOS_WARRIOR: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(40000L / + (plev * plev + 40))) return; + } + else + { /* Bad sensing */ - if (!one_in_(80000L / (plev * plev + 40))) return; + if (0 != rand_int(80000L / + (plev * plev + 40))) return; + } /* Changed! */ heavy = TRUE; @@ -249,8 +367,21 @@ case CLASS_MONK: { + /* take care of sapient_sensing */ + if (sapient_sensing && + ((plev > 14) || + ((p_ptr->prace == RACE_HUMAN) && + (plev > 9)))) + { + if (0 != rand_int(10000L / + (plev * plev + 40))) return; + } + else + { /* Okay sensing */ - if (!one_in_(20000L / (plev * plev + 40))) return; + if (0 != rand_int(20000L / + (plev * plev + 40))) return; + } /* Done */ break; @@ -315,6 +446,14 @@ /* Occasional failure on inventory items */ if ((i < INVEN_WIELD) && !one_in_(5)) continue; + /* sapient_sensing gets heavy pseudo-id at level 25 */ + /* humans at level 20 */ + if (sapient_sensing && ((plev > 24) || + ((p_ptr->prace == RACE_HUMAN) && (plev > 19)))) + { + heavy = TRUE; + } + /* Good luck */ if ((p_ptr->muta3 & MUT3_GOOD_LUCK) && !one_in_(13)) { @@ -2757,6 +2896,14 @@ (void)gain_mutation(0); hack_mutation = FALSE; } + + if (hack_mutation2) + { + msg_print("You feel different!"); + (void)gain_mutation(0); + hack_mutation2 = FALSE; + } + /*** Check for interupts ***/ diff -u -b c:/temp/zangband/zangband/src/effects.c c:/tmp/zangband/zangband/src/effects.c --- c:/temp/zangband/zangband/src/effects.c Sat Aug 4 09:21:26 2001 +++ c:/tmp/zangband/zangband/src/effects.c Mon Oct 22 00:03:12 2001 @@ -91,6 +91,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) { @@ -1328,6 +1336,12 @@ v = 0; } + /* Teddybears are very stun resistant */ + if(p_ptr->prace == RACE_TEDDYBEAR) + { + v = v / 10; + } + /* Knocked out */ if (p_ptr->stun > 100) { @@ -1486,6 +1500,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)) @@ -2538,6 +2553,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 c:/temp/zangband/zangband/src/externs.h c:/tmp/zangband/zangband/src/externs.h --- c:/temp/zangband/zangband/src/externs.h Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/externs.h Mon Oct 22 00:03:00 2001 @@ -149,6 +149,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; diff -u -b c:/temp/zangband/zangband/src/files.c c:/tmp/zangband/zangband/src/files.c --- c:/temp/zangband/zangband/src/files.c Wed Aug 15 06:06:38 2001 +++ c:/tmp/zangband/zangband/src/files.c Mon Oct 22 00:03:00 2001 @@ -1582,6 +1582,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; @@ -1779,6 +1784,26 @@ if (p_ptr->lev > 19) (*f2) |= (TR2_RES_NETHER); (*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_SEE_INVIS); + (*f2) |= (TR2_FREE_ACT); + (*f2) |= (TR2_RES_POIS); + (*f3) |= (TR3_FEATHER); + (*f2) |= (TR2_IM_COLD); + (*f2) |= (TR2_SUST_CHR); break; default: ; /* Do nothing */ diff -u -b c:/temp/zangband/zangband/src/generate.c c:/tmp/zangband/zangband/src/generate.c --- c:/temp/zangband/zangband/src/generate.c Sat Aug 4 23:30:06 2001 +++ c:/tmp/zangband/zangband/src/generate.c Mon Oct 22 00:03:00 2001 @@ -401,6 +401,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; @@ -529,6 +534,38 @@ if ((x % 3) == 2) x--; } + /* Attempt to place a greater vault */ + if (greater_vault_level && do_greater_vault) + { + do_greater_vault = FALSE; + force_vault(y, x, 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(y, x, 8); + } + else + { + force_vault(y, x, 7); + } + continue; + } + + /* Attempt to place a lesser vault */ + if (lesser_vault_level && do_lesser_vault) + { + do_lesser_vault = FALSE; + force_vault(y, x, 7); + continue; + } + /* Attempt an "unusual" room */ if (ironman_rooms || (randint0(DUN_UNUSUAL) < p_ptr->depth)) { @@ -1041,7 +1078,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) msg_print("A 'small' dungeon level."); diff -u -b c:/temp/zangband/zangband/src/melee1.c c:/tmp/zangband/zangband/src/melee1.c --- c:/temp/zangband/zangband/src/melee1.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/melee1.c Mon Oct 22 00:03:12 2001 @@ -1329,6 +1329,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 c:/temp/zangband/zangband/src/mutation.c c:/tmp/zangband/zangband/src/mutation.c --- c:/temp/zangband/zangband/src/mutation.c Tue Aug 14 07:34:52 2001 +++ c:/tmp/zangband/zangband/src/mutation.c Mon Oct 22 00:03:00 2001 @@ -840,6 +840,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 @@ -849,6 +879,7 @@ count -= 10; mod = 5; } + } /* No negative modifier */ if (count <= 0) return 100; diff -u -b c:/temp/zangband/zangband/src/racial.c c:/tmp/zangband/zangband/src/racial.c --- c:/temp/zangband/zangband/src/racial.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/racial.c Mon Oct 22 00:03:00 2001 @@ -211,6 +211,23 @@ { switch (p_ptr->prace) { + case RACE_HUMAN: + { + if (sapient_sensing && + (racial_aux(30, 15, A_WIS, 10))) + { + msg_print("You research the object."); + if (plev < 40) + { + (void)ident_spell(); + } + else + { + (void)identify_fully(); + } + } + break; + } case RACE_DWARF: { msg_print("You examine your surroundings."); @@ -467,6 +484,7 @@ } break; case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: case CLASS_PALADIN: if (one_in_(3)) { @@ -598,6 +616,7 @@ (void)sleep_monsters(); break; } + case RACE_GHOUL: { if (mut_ptr->level == 30) @@ -611,6 +630,44 @@ } break; } + + case RACE_KLINGON: + { + msg_print("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: + { + msg_print("You open a dimensional gate. Choose a destination."); + (void)dimension_door(); + break; + } + + case RACE_TEDDYBEAR: + { + msg_print("You cast a big loving hug!"); + /* Charm Monster */ + if (!get_aim_dir(&dir)) return; + + (void)charm_monster(dir, (2 * plev)); + break; + } default: msg_print("This race has no bonus power."); p_ptr->energy_use = 0; diff -u -b c:/temp/zangband/zangband/src/rooms.c c:/tmp/zangband/zangband/src/rooms.c --- c:/temp/zangband/zangband/src/rooms.c Mon Aug 6 07:54:14 2001 +++ c:/tmp/zangband/zangband/src/rooms.c Mon Oct 22 00:03:00 2001 @@ -3985,3 +3985,19 @@ return (TRUE); } +/* + * Force a vault onto this level + */ +void force_vault(int by0, int bx0, int type) +{ + /* greater vault */ + if (type == 8) + { + build_type8(by0, bx0); + } + /* lesser vault */ + else + { + build_type7(by0, bx0); + } +} diff -u -b c:/temp/zangband/zangband/src/rooms.h c:/tmp/zangband/zangband/src/rooms.h --- c:/temp/zangband/zangband/src/rooms.h Mon Jan 29 13:34:34 2001 +++ c:/tmp/zangband/zangband/src/rooms.h Mon Oct 22 00:03:00 2001 @@ -15,3 +15,4 @@ /* Externs */ extern bool room_build(int y0, int x0, int typ); +extern void force_vault(int by0, int bx0, int type); diff -u -b c:/temp/zangband/zangband/src/spells1.c c:/tmp/zangband/zangband/src/spells1.c --- c:/temp/zangband/zangband/src/spells1.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/spells1.c Mon Oct 22 00:03:12 2001 @@ -3199,6 +3199,10 @@ case GF_FIRE: { if (fuzzy) msg_print("You are hit by fire!"); + if (p_ptr->prace == RACE_TEDDYBEAR) + { + dam = (3 * dam) / 2; + } fire_dam(dam, killer); break; } @@ -3587,7 +3591,15 @@ if (fuzzy) msg_print("You are hit by something!"); if (p_ptr->resist_lite) { - dam *= 4; dam /= rand_range(7, 12); + if (p_ptr->prace == RACE_SHADOWMAN) + { + dam *= 2; + } + else + { + dam *= 4; + } + dam /= rand_range(7, 12); } else if (!blind && !p_ptr->resist_blind) { @@ -3620,8 +3632,15 @@ if (fuzzy) msg_print("You are hit by something!"); if (p_ptr->resist_dark) { - dam *= 4; dam /= rand_range(7, 12); - + if (p_ptr->prace == RACE_SHADOWMAN) + { + dam *= 2; + } + else + { + dam *= 4; + } + dam /= rand_range(7, 12); if (p_ptr->prace == RACE_VAMPIRE) dam = 0; } else if (!blind && !p_ptr->resist_blind) @@ -3820,6 +3839,7 @@ { /* Some races are immune */ case RACE_GOLEM: + case RACE_TEDDYBEAR: case RACE_SKELETON: case RACE_ZOMBIE: case RACE_VAMPIRE: diff -u -b c:/temp/zangband/zangband/src/spells3.c c:/tmp/zangband/zangband/src/spells3.c --- c:/temp/zangband/zangband/src/spells3.c Thu Aug 23 07:39:38 2001 +++ c:/tmp/zangband/zangband/src/spells3.c Mon Oct 22 00:03:00 2001 @@ -3117,6 +3117,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)) @@ -3125,7 +3126,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; @@ -3199,7 +3202,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 c:/temp/zangband/zangband/src/tables.c c:/tmp/zangband/zangband/src/tables.c --- c:/temp/zangband/zangband/src/tables.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/tables.c Mon Oct 22 00:03:12 2001 @@ -1524,162 +1524,212 @@ * 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, 110, + 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 }, + 110, 110, 112, 122, 110, 110, 110, 115, 120, 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}, }; @@ -1832,7 +1882,7 @@ 72, 6, 180, 25, 66, 4, 150, 20, 0, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Elf", @@ -1843,7 +1893,7 @@ 66, 6, 130, 15, 62, 6, 100, 10, 2, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "Elf", @@ -1854,7 +1904,7 @@ 60, 4, 100, 6, 54, 4, 80, 6, 3, - 0x75F, + (0x75F + (1 << CLASS_HIGH_PRIEST)), }, { "Hobbit", @@ -1876,7 +1926,7 @@ 42, 3, 90, 6, 39, 3, 75, 3, 4, - 0x60F, + (0x60F + (1 << CLASS_HIGH_PRIEST)), }, { "Dwarf", @@ -1887,7 +1937,7 @@ 48, 3, 150, 10, 46, 3, 120, 10, 5, - 0x005, + (0x005 + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Orc", @@ -1898,7 +1948,7 @@ 66, 1, 150, 5, 62, 1, 120, 5, 3, - 0x18D, + (0x18D + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Troll", @@ -1909,7 +1959,7 @@ 96, 10, 250, 50, 84, 8, 225, 40, 3, - 0x005, + (0x005 + (1 << CLASS_HIGH_PRIEST)), }, { "Amberite", @@ -1920,7 +1970,7 @@ 82, 5, 190, 20, 78, 6, 180, 15, 0, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "High-Elf", @@ -1931,7 +1981,7 @@ 90, 10, 190, 20, 82, 10, 180, 15, 4, - 0x75F, + (0x75F + (1 << CLASS_HIGH_PRIEST)), }, { "Barbarian", @@ -1942,7 +1992,7 @@ 82, 5, 200, 20, 78, 6, 190, 15, 0, - 0x09D, + (0x09D + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Ogre", @@ -1953,7 +2003,7 @@ 92, 10, 255, 60, 80, 8, 235, 60, 3, - 0x407, + (0x407 + (1 << CLASS_HIGH_PRIEST)), }, { "Half-Giant", @@ -1975,7 +2025,7 @@ 111, 11, 255, 86, 99, 11, 250, 86, 0, - 0x727, + (0x727 + (1 << CLASS_HIGH_PRIEST)), }, { "Cyclops", @@ -1986,7 +2036,7 @@ 92, 10, 255, 60, 80, 8, 235, 60, 1, - 0x005, + (0x005 + (1 << CLASS_HIGH_PRIEST)), }, { "Yeek", @@ -1997,7 +2047,7 @@ 50, 3, 90, 6, 50, 3, 75, 3, 2, - 0x60F, + (0x60F + (1 << CLASS_HIGH_PRIEST)), }, { "Klackon", @@ -2030,7 +2080,7 @@ 43, 3, 92, 6, 40, 3, 78, 3, 5, - 0x40F, + (0x40F + (1 << CLASS_HIGH_PRIEST)), }, { "Dark-Elf", @@ -2041,7 +2091,7 @@ 60, 4, 100, 6, 54, 4, 80, 6, 5, - 0x7DF, + (0x7DF + (1 << CLASS_HIGH_PRIEST)), }, { "Draconian", @@ -2052,7 +2102,7 @@ 76, 1, 160, 5, 72, 1, 130, 5, 2, - 0x757, + (0x757 + (1 << CLASS_HIGH_PRIEST)), }, { "Mindflayer", @@ -2063,7 +2113,7 @@ 68, 6, 142, 15, 63, 6, 112, 10, 4, - 0x746, + (0x746 + (1 << CLASS_HIGH_PRIEST)), }, { "Imp", @@ -2096,7 +2146,7 @@ 72, 6, 50, 5, 66, 4, 50, 5, 2, - 0x70F, + (0x70F + (1 << CLASS_HIGH_PRIEST)), }, { "Zombie", @@ -2118,7 +2168,7 @@ 72, 6, 180, 25, 66, 4, 150, 20, 5, - 0x7FF, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), }, { "Spectre", @@ -2129,7 +2179,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", @@ -2140,7 +2191,7 @@ 32, 2, 75, 2, 29, 2, 65, 2, 4, - 0x65E, + (0x65E + (1 << CLASS_HIGH_PRIEST)), }, { "Beastman", @@ -2162,8 +2213,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, + 7, 225, + 3, 2, + 30, 2, 30, 4, + 30, 2, 30, 4, + 3, + (0x7FF + (1 << CLASS_HIGH_PRIEST)), + }, }; @@ -2265,6 +2349,15 @@ 7, 13, 9, 0, 0, 0, 15, 10, 0, 30, 12 }, + + { + "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 + }, + }; @@ -4580,6 +4673,7 @@ { { + /* Monk: Life */ { 1, 1, 30, 4 }, { 2, 2, 35, 4 }, { 3, 3, 35, 4 }, @@ -4619,41 +4713,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 */ @@ -4697,41 +4791,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 */ @@ -4773,7 +4867,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}, @@ -4809,10 +4994,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}, @@ -4848,97 +5032,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}, @@ -5415,6 +5509,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} + }, + } + }, }; @@ -5442,13 +5823,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 */ }; @@ -5471,6 +5857,7 @@ (CH_NONE), /* Monk */ (CH_NONE), /* Mindcrafter */ (CH_NONE), /* High-Mage */ + (CH_NONE), /* High-Priest */ }; @@ -6053,6 +6440,20 @@ "Ipsissimus", "Archimage", }, + + /* High Priest; Same as Priest */ + { + "Believer", + "Acolyte", + "Adept", + "Curate", + "Canon", + "Priest", + "High Priest", + "Cardinal", + "Inquisitor", + "Pope", + }, }; @@ -6332,10 +6733,10 @@ {FALSE, 5, "center_player", "Always center on the player (*slow*)" }, {FALSE, 5, "avoid_center", "Avoid centering while running" }, {TRUE, 0, NULL, "Number 172" }, - {TRUE, 0, NULL, "Number 173" }, - {TRUE, 0, NULL, "Number 174" }, - {TRUE, 0, NULL, "Number 175" }, - {TRUE, 0, NULL, "Number 176" }, + {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 177" }, {TRUE, 0, NULL, "Number 178" }, {TRUE, 0, NULL, "Number 179" }, @@ -6371,18 +6772,18 @@ {FALSE, 6, "point_based", "Generate character using a point system" }, {TRUE, 6, "silly_monsters", "Allow silly monsters" }, {FALSE, 6, "ironman_nightmare", "Nightmare mode (this isn't even remotely fair!)" }, - {TRUE, 0, NULL, "Number 211" }, - {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" }, + {FALSE, 9, "birth_mutation", "BIRTH - Mutation at birth" }, + {FALSE, 9, "patched_mutations", "BIRTH - Mutations are easier on the regen rate" }, + {FALSE, 9, "very_fast_autoroller", "BIRTH - VERY fast autoroller" }, + {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, "try_stairs_building", "BIRTH - Attempt stairs in every town" }, + {FALSE, 9, "try_home_building", "BIRTH - Attempt a home in every town" }, {TRUE, 0, NULL, "Number 220" }, - {TRUE, 0, NULL, "Number 221" }, - {TRUE, 0, NULL, "Number 222" }, + {FALSE, 9, "try_scroll_building", "BIRTH - Attempt a scroll shop in every town" }, + {FALSE, 9, "try_potion_building", "BIRTH - Attempt a potion shop in every town" }, {TRUE, 0, NULL, "Number 223" }, {FALSE, 0, NULL, "Number 224" }, {FALSE, 5, "monster_light", "Allow monsters to carry lights" }, @@ -7997,6 +8398,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)", @@ -8274,6 +8685,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_WIS, 10, + 0 + }, + + { + RACE_SHADOWMAN, + "You can open dimensional doorways.", + "(nothing)", + "(nothing)", + "Dimension Door", + 15, 12, A_INT, 12, + 0 + }, + + { + RACE_TEDDYBEAR, + "You can cast big loving hugs!", + "(nothing)", + "(nothing)", + "Charm Monster", + 15, 12, A_CHR, 12, + 0 + }, + }; diff -u -b c:/temp/zangband/zangband/src/variable.c c:/tmp/zangband/zangband/src/variable.c --- c:/temp/zangband/zangband/src/variable.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/variable.c Mon Oct 22 00:03:00 2001 @@ -115,6 +115,8 @@ /* 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 c:/temp/zangband/zangband/src/wild.h c:/tmp/zangband/zangband/src/wild.h --- c:/temp/zangband/zangband/src/wild.h Tue Jun 19 08:49:54 2001 +++ c:/tmp/zangband/zangband/src/wild.h Mon Oct 22 00:03:00 2001 @@ -38,7 +38,7 @@ #define TOWN_HGT 22 /* Starting town has pre-defined stores */ -#define START_STORE_NUM 6 +#define START_STORE_NUM 8 /* Road constants used to define with of the path */ diff -u -b c:/temp/zangband/zangband/src/wild1.c c:/tmp/zangband/zangband/src/wild1.c --- c:/temp/zangband/zangband/src/wild1.c Mon Aug 6 07:54:16 2001 +++ c:/tmp/zangband/zangband/src/wild1.c Mon Oct 22 00:03:00 2001 @@ -144,15 +144,32 @@ }; /* The stores in the starting town */ -static int wild_first_town[START_STORE_NUM] = +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 -}; + 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; + if (try_scroll_building) + { + wild_first_town[6] = BUILD_SCROLL0; + } + else + { + wild_first_town[6] = BUILD_NONE; + } + if (try_potion_building) + { + wild_first_town[7] = BUILD_POTION0; + } + else + { + wild_first_town[7] = BUILD_NONE; + } +} /* Find a place for the player */ static void place_player_start(s32b *x, s32b *y, u16b this_town) @@ -245,7 +262,7 @@ s32b total = 0; /* Draw stairs first for small towns */ - if ((build_num < 11) && (!build[BUILD_STAIRS])) return (BUILD_STAIRS); + if ((build_num <= 11) && (!build[BUILD_STAIRS])) return (BUILD_STAIRS); for (i = 0; i < MAX_CITY_BUILD; i++) @@ -270,8 +287,15 @@ /* Effects for cities */ if (build_num > 11) { + if (try_stairs_building && (!build[BUILD_STAIRS])) + { + return (BUILD_STAIRS); + } + else + { /* Hack - Dungeons are not in large cities */ wild_build[BUILD_STAIRS].gen = 0; + } /* Hack - Increase possibility of 'general' features */ for (i = 0; i < MAX_CITY_BUILD; i++) @@ -301,6 +325,21 @@ wild_build[BUILD_STORE_HOME].gen = 0; } + if (try_home_building && (!build[BUILD_STORE_HOME])) + { + return (BUILD_STORE_HOME); + } + + if (try_scroll_building && (!build[BUILD_SCROLL0])) + { + return (BUILD_SCROLL0); + } + + if (try_potion_building && (!build[BUILD_POTION0])) + { + return (BUILD_POTION0); + } + total = 0; /* Calculate total */ @@ -835,6 +874,8 @@ /* No towns yet */ town_count = 1; + build_starting_town(); + /* * Try to add max_towns towns. */ @@ -905,6 +946,7 @@ } else { + /* Blank spot */ general_init(best_town, i, BUILD_NONE); } diff -u -b c:/temp/zangband/zangband/src/xtra1.c c:/tmp/zangband/zangband/src/xtra1.c --- c:/temp/zangband/zangband/src/xtra1.c Mon Aug 27 12:49:18 2001 +++ c:/tmp/zangband/zangband/src/xtra1.c Mon Oct 22 00:03:00 2001 @@ -1903,6 +1903,7 @@ /* Mana halved if armour is 40 pounds over weight limit. */ case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: case CLASS_MINDCRAFTER: { msp -= msp * (cur_wgt - max_wgt) / 800 + 1; @@ -2186,11 +2187,12 @@ } /* - * Priest. + * Priest, High-Priest * Can use 12 lb weapons without penalty at level 1, * and 22 lb weapons without penalty at 50th level. */ case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: { add_skill = 30 + (1 * p_ptr->lev / 2) - (weight / 4); if (add_skill > 0) add_skill = 0; @@ -2533,6 +2535,11 @@ break; 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; case CLASS_MINDCRAFTER: @@ -2546,7 +2553,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 */ { @@ -2720,6 +2728,26 @@ p_ptr->resist_cold = TRUE; 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->see_inv = TRUE; + p_ptr->free_act = TRUE; + p_ptr->resist_pois = TRUE; + p_ptr->ffall = TRUE; + p_ptr->immune_cold = TRUE; + p_ptr->sustain_chr = TRUE; + break; } } @@ -2937,6 +2965,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++) { @@ -3372,6 +3407,7 @@ /* Priest, Mindcrafter */ case CLASS_PRIEST: + case CLASS_HIGH_PRIEST: case CLASS_MINDCRAFTER: num = 4; wgt = 35; mul = 3; break; @@ -3480,7 +3516,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 */ @@ -3497,6 +3534,19 @@ /* Affect Skill -- stealth (bonus one) */ p_ptr->skill_stl += 1; + + /* 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++; + } /* Affect Skill -- disarming (DEX and INT) */ p_ptr->skill_dis += adj_dex_dis[p_ptr->stat_ind[A_DEX]];