diff -c2 -w -r angband-281/README gw-angband-2.8.1/README *** angband-281/README Mon Mar 3 22:54:21 1997 --- gw-angband-2.8.1/README Fri May 16 12:05:30 1997 *************** *** 1,2 **** --- 1,16 ---- + === GW-Angband Information === + + GW-Angband is a variant of Angband. For some details, see the online help + files. For more details, see "http://kellnet.com/wooledge/angband.html". + Bug reports for GW-Angband should be sent to the author, Greg Wooledge, at + "wooledge@kellnet.com". + + GW-Angband 2.8.1 is a re-application of the GW-Angband changes to the + Angband 2.8.1 code base. This means that you will be able to enjoy the + many wonderful features that Ben Harrison has added to Angband recently. + There are also a very small number of little bug fixes & changes. + + === Angband Information === + This is the README file for Angband 2.8.1 (03/04/97) diff -c2 -w -r angband-281/lib/edit/a_info.txt gw-angband-2.8.1/lib/edit/a_info.txt *** angband-281/lib/edit/a_info.txt Tue Mar 4 10:33:14 1997 --- gw-angband-2.8.1/lib/edit/a_info.txt Thu May 15 16:46:52 1997 *************** *** 661,665 **** W:5:40:12:15000 P:0:2d4:4:3:0 ! F:SLAY_ORC | RES_POIS | RES_DISEN | ACTIVATE | SHOW_MODS --- 661,665 ---- W:5:40:12:15000 P:0:2d4:4:3:0 ! F:SLAY_ORC | BRAND_POIS | RES_POIS | RES_DISEN | ACTIVATE | SHOW_MODS *************** *** 693,697 **** P:0:3d5:20:12:0 F:DEX | HIDE_TYPE | ! F:SLAY_DEMON | SLAY_ORC | FREE_ACT | RES_COLD | FEATHER | F:SLOW_DIGEST | ACTIVATE | SHOW_MODS --- 693,697 ---- P:0:3d5:20:12:0 F:DEX | HIDE_TYPE | ! F:SLAY_DEMON | SLAY_ORC | BRAND_COLD | FREE_ACT | RES_COLD | FEATHER | F:SLOW_DIGEST | ACTIVATE | SHOW_MODS *************** *** 1066,1070 **** N:108:of Ulmo I:22:5:4 ! W:30:90:70:120000 P:0:4d8:15:19:0 F:DEX | HIDE_TYPE | --- 1066,1070 ---- N:108:of Ulmo I:22:5:4 ! W:30:90:100:120000 P:0:4d8:15:19:0 F:DEX | HIDE_TYPE | diff -c2 -w -r angband-281/lib/edit/e_info.txt gw-angband-2.8.1/lib/edit/e_info.txt *** angband-281/lib/edit/e_info.txt Tue Mar 4 10:33:21 1997 --- gw-angband-2.8.1/lib/edit/e_info.txt Thu May 15 16:46:55 1997 *************** *** 615,619 **** # 120 (unused) ! # 121 (unused) N:122:of Flame --- 615,622 ---- # 120 (unused) ! N:121:of Venom ! X:23:8 ! F:BRAND_POIS ! W:0:0:0:20 N:122:of Flame diff -c2 -w -r angband-281/lib/edit/k_info.txt gw-angband-2.8.1/lib/edit/k_info.txt *** angband-281/lib/edit/k_info.txt Tue Mar 4 10:33:32 1997 --- gw-angband-2.8.1/lib/edit/k_info.txt Thu May 15 16:47:02 1997 *************** *** 2323,2334 **** ##### Basic Books ##### ! N:330:[Magic for Beginners] G:?:R I:90:0:0 ! W:5:0:30:25 A:5/1 P:0:1d1:0:0:0 ! N:331:[Conjurings and Tricks] G:?:R I:90:1:0 --- 2323,2334 ---- ##### Basic Books ##### ! N:330:[An Introduction to Spellcasting] G:?:R I:90:0:0 ! W:5:0:30:30 A:5/1 P:0:1d1:0:0:0 ! N:331:[The Art of Divination] G:?:R I:90:1:0 *************** *** 2337,2352 **** P:0:1d1:0:0:0 ! N:332:[Incantations and Illusions] G:?:R I:90:2:0 ! W:20:0:30:400 ! A:20/1 P:0:1d1:0:0:0 ! N:333:[Sorcery and Evocations] G:?:R I:90:3:0 ! W:30:0:30:800 ! A:30/1 P:0:1d1:0:0:0 --- 2337,2352 ---- P:0:1d1:0:0:0 ! N:332:[Elementary Evocations] G:?:R I:90:2:0 ! W:15:0:30:200 ! A:15/1 P:0:1d1:0:0:0 ! N:333:[The Space-Time Continuum] G:?:R I:90:3:0 ! W:20:0:30:300 ! A:20/1 P:0:1d1:0:0:0 *************** *** 2668,2708 **** ##### Special Books (note resistances) ##### ! N:379:[Resistance of Scarabtarices] ! G:?:r ! I:90:4:0 ! W:40:0:30:5000 ! A:40/1 ! P:0:1d1:0:0:0 ! F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! ! N:380:[Mordenkainen's Escapes] G:?:r I:90:5:0 ! W:50:0:30:10000 ! A:50/1 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! N:381:[Kelek's Grimoire of Power] G:?:r I:90:6:0 ! W:60:0:30:30000 ! A:60/1 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! N:382:[Tenser's Transformations] G:?:r I:90:7:0 ! W:80:0:30:50000 ! A:80/2 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! N:383:[Raal's Tome of Destruction] G:?:r I:90:8:0 ! W:100:0:30:100000 ! A:100/4 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD --- 2668,2709 ---- ##### Special Books (note resistances) ##### ! # This one is borderline. It's really tempting to make it non-resistant. ! N:379:[Matter and Energy] G:?:r I:90:5:0 ! W:30:0:30:5000 ! A:30/3 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! N:380:[Grimoire of Black Magic] G:?:r I:90:6:0 ! W:35:0:30:8000 ! A:35/6 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! N:381:[Evocations for Experts] G:?:r I:90:7:0 ! W:40:0:30:20000 ! A:40/4 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! N:382:[Defensive Magic] G:?:r I:90:8:0 ! W:60:0:30:40000 ! A:60/4 ! P:0:1d1:0:0:0 ! F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD ! ! N:383:[The Chaos Compendium] ! G:?:r ! I:90:9:0 ! W:80:0:30:100000 ! A:80/4 P:0:1d1:0:0:0 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD *************** *** 2824,2829 **** P:0:1d2:0:0:0 ! ## XXX 399 XXX ## ! ##### Dragon Scale Mail ##### --- 2825,2835 ---- P:0:1d2:0:0:0 ! # Extra mage spell book ! N:399:[Anatomy and Physiology] ! G:?:R ! I:90:4:0 ! W:25:0:30:1000 ! A:25/1 ! P:0:1d1:0:0:0 ##### Dragon Scale Mail ##### diff -c2 -w -r angband-281/lib/edit/r_info.txt gw-angband-2.8.1/lib/edit/r_info.txt *** angband-281/lib/edit/r_info.txt Tue Mar 4 10:33:40 1997 --- gw-angband-2.8.1/lib/edit/r_info.txt Thu May 15 16:47:06 1997 *************** *** 698,702 **** F:INVISIBLE | COLD_BLOOD | PASS_WALL | TAKE_ITEM | F:EVIL | UNDEAD | ! F:IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP S:1_IN_15 | S:BLINK --- 698,702 ---- F:INVISIBLE | COLD_BLOOD | PASS_WALL | TAKE_ITEM | F:EVIL | UNDEAD | ! F:IM_COLD | IM_POIS | HURT_LITE | NO_SLEEP S:1_IN_15 | S:BLINK *************** *** 999,1003 **** F:DROP_60 | DROP_90 | F:INVISIBLE | COLD_BLOOD | PASS_WALL | ! F:EVIL | UNDEAD | NO_CONF | NO_SLEEP D:It is a very ugly green ghost with a voracious appetite. --- 999,1003 ---- F:DROP_60 | DROP_90 | F:INVISIBLE | COLD_BLOOD | PASS_WALL | ! F:EVIL | UNDEAD | NO_SLEEP D:It is a very ugly green ghost with a voracious appetite. *************** *** 1298,1302 **** F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL | F:EVIL | UNDEAD | ! F:IM_COLD | NO_CONF | NO_SLEEP S:1_IN_15 | S:TPORT | DRAIN_MANA --- 1298,1302 ---- F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL | F:EVIL | UNDEAD | ! F:IM_COLD | NO_SLEEP S:1_IN_15 | S:TPORT | DRAIN_MANA *************** *** 2030,2034 **** F:RAND_50 | RAND_25 | F:EMPTY_MIND | INVISIBLE | COLD_BLOOD | BASH_DOOR | ! F:EVIL | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirlwind of sentient air. --- 2030,2034 ---- F:RAND_50 | RAND_25 | F:EMPTY_MIND | INVISIBLE | COLD_BLOOD | BASH_DOOR | ! F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirlwind of sentient air. *************** *** 2077,2081 **** F:DROP_60 | DROP_90 | F:INVISIBLE | COLD_BLOOD | PASS_WALL | ! F:EVIL | UNDEAD | IM_COLD | NO_CONF | NO_SLEEP S:1_IN_15 | S:TPORT | SCARE --- 2077,2081 ---- F:DROP_60 | DROP_90 | F:INVISIBLE | COLD_BLOOD | PASS_WALL | ! F:EVIL | UNDEAD | IM_COLD | NO_SLEEP S:1_IN_15 | S:TPORT | SCARE *************** *** 2725,2729 **** F:RAND_25 | F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | ! F:EVIL | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirlpool of sentient liquid. --- 2725,2729 ---- F:RAND_25 | F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | ! F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirlpool of sentient liquid. *************** *** 2748,2752 **** F:EMPTY_MIND | COLD_BLOOD | F:PASS_WALL | ! F:EVIL | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | HURT_ROCK | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirling form of sentient rock. --- 2748,2752 ---- F:EMPTY_MIND | COLD_BLOOD | F:PASS_WALL | ! F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | HURT_ROCK | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirling form of sentient rock. *************** *** 2760,2764 **** F:RAND_25 | F:EMPTY_MIND | BASH_DOOR | ! F:EVIL | IM_FIRE | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirlwind of sentient flame. --- 2760,2764 ---- F:RAND_25 | F:EMPTY_MIND | BASH_DOOR | ! F:IM_FIRE | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR D:A whirlwind of sentient flame. *************** *** 3392,3396 **** F:RAND_50 | RAND_25 | F:WEIRD_MIND | BASH_DOOR | ! F:ANIMAL | NO_CONF | NO_SLEEP S:1_IN_9 | S:BR_CONF --- 3392,3396 ---- F:RAND_50 | RAND_25 | F:WEIRD_MIND | BASH_DOOR | ! F:ANIMAL S:1_IN_9 | S:BR_CONF *************** *** 3408,3412 **** F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | ! F:NO_CONF | NO_SLEEP S:1_IN_10 | S:SCARE | DRAIN_MANA --- 3408,3412 ---- F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | ! F:NO_SLEEP S:1_IN_10 | S:SCARE | DRAIN_MANA *************** *** 3485,3489 **** F:RAND_50 | COLD_BLOOD | REGENERATE | F:EVIL | ANIMAL | UNDEAD | IM_COLD | IM_POIS | ! F:NO_CONF | NO_SLEEP | NO_FEAR D:An undead bat that flies at your neck hungrily. --- 3485,3489 ---- F:RAND_50 | COLD_BLOOD | REGENERATE | F:EVIL | ANIMAL | UNDEAD | IM_COLD | IM_POIS | ! F:NO_SLEEP | NO_FEAR D:An undead bat that flies at your neck hungrily. *************** *** 3531,3535 **** F:RAND_50 | DROP_1D2 | F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL | ! F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP S:1_IN_15 | S:TPORT | DRAIN_MANA --- 3531,3535 ---- F:RAND_50 | DROP_1D2 | F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL | ! F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_SLEEP S:1_IN_15 | S:TPORT | DRAIN_MANA *************** *** 3699,3703 **** F:DROP_1D2 | F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | ! F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP S:1_IN_8 | S:SCARE | CAUSE_2 | DARKNESS --- 3699,3703 ---- F:DROP_1D2 | F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | ! F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_SLEEP S:1_IN_8 | S:SCARE | CAUSE_2 | DARKNESS *************** *** 3788,3792 **** F:FRIENDS | F:BASH_DOOR | ! F:ANIMAL | NO_CONF | NO_SLEEP S:1_IN_5 | S:BR_SOUN --- 3788,3792 ---- F:FRIENDS | F:BASH_DOOR | ! F:ANIMAL S:1_IN_5 | S:BR_SOUN *************** *** 3805,3809 **** F:FRIENDS | F:BASH_DOOR | ! F:ANIMAL | NO_CONF | NO_SLEEP S:1_IN_5 | S:BR_NEXU --- 3805,3809 ---- F:FRIENDS | F:BASH_DOOR | ! F:ANIMAL S:1_IN_5 | S:BR_NEXU *************** *** 4019,4023 **** F:ONLY_ITEM | DROP_1D2 | F:OPEN_DOOR | BASH_DOOR | ! F:ANIMAL | NO_CONF | NO_SLEEP D:An evil reptile that preys on unsuspecting travellers. Its eyes stare D:deeply at you and your soul starts to wilt! --- 4019,4023 ---- F:ONLY_ITEM | DROP_1D2 | F:OPEN_DOOR | BASH_DOOR | ! F:ANIMAL D:An evil reptile that preys on unsuspecting travellers. Its eyes stare D:deeply at you and your soul starts to wilt! *************** *** 4160,4164 **** F:DROP_60 | DROP_90 | DROP_2D2 | F:OPEN_DOOR | BASH_DOOR | ! F:DRAGON | NO_CONF | NO_SLEEP S:1_IN_11 | S:SCARE | --- 4160,4164 ---- F:DROP_60 | DROP_90 | DROP_2D2 | F:OPEN_DOOR | BASH_DOOR | ! F:DRAGON S:1_IN_11 | S:SCARE | *************** *** 4258,4262 **** F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | F:EVIL | UNDEAD | ! F:IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP S:1_IN_8 | S:SCARE | CAUSE_3 | DARKNESS --- 4258,4262 ---- F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | F:EVIL | UNDEAD | ! F:IM_COLD | IM_POIS | HURT_LITE | NO_SLEEP S:1_IN_8 | S:SCARE | CAUSE_3 | DARKNESS *************** *** 4285,4289 **** F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL | F:EVIL | UNDEAD | IM_COLD | ! F:IM_POIS | NO_CONF | NO_SLEEP S:1_IN_15 | S:BLIND | HOLD | DRAIN_MANA --- 4285,4289 ---- F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL | F:EVIL | UNDEAD | IM_COLD | ! F:IM_POIS | NO_SLEEP S:1_IN_15 | S:BLIND | HOLD | DRAIN_MANA *************** *** 4449,4453 **** F:FORCE_SLEEP | FRIENDS | DROP_60 | F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | ! F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP S:1_IN_8 | S:HOLD | SCARE | CAUSE_2 | DARKNESS --- 4449,4453 ---- F:FORCE_SLEEP | FRIENDS | DROP_60 | F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | ! F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_SLEEP S:1_IN_8 | S:HOLD | SCARE | CAUSE_2 | DARKNESS *************** *** 4481,4485 **** F:OPEN_DOOR | BASH_DOOR | F:EVIL | DRAGON | ! F:IM_FIRE | NO_CONF | NO_SLEEP S:1_IN_6 | S:SLOW | CONF | SCARE | --- 4481,4485 ---- F:OPEN_DOOR | BASH_DOOR | F:EVIL | DRAGON | ! F:IM_FIRE S:1_IN_6 | S:SLOW | CONF | SCARE | *************** *** 4499,4503 **** F:OPEN_DOOR | BASH_DOOR | F:EVIL | DRAGON | ! F:IM_COLD | NO_CONF | NO_SLEEP S:1_IN_6 | S:SLOW | CONF | SCARE | --- 4499,4503 ---- F:OPEN_DOOR | BASH_DOOR | F:EVIL | DRAGON | ! F:IM_COLD | NO_CONF S:1_IN_6 | S:SLOW | CONF | SCARE | *************** *** 4535,4539 **** F:ONLY_ITEM | DROP_2D2 | F:INVISIBLE | PASS_WALL | ! F:EVIL | DRAGON | NO_CONF | NO_SLEEP S:1_IN_6 | S:SLOW | CONF | SCARE | --- 4535,4539 ---- F:ONLY_ITEM | DROP_2D2 | F:INVISIBLE | PASS_WALL | ! F:EVIL | DRAGON S:1_IN_6 | S:SLOW | CONF | SCARE | *************** *** 4648,4652 **** F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:EVIL | IM_FIRE | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_6 | --- 4648,4652 ---- F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:IM_FIRE | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_6 | *************** *** 4683,4687 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_BODY | KILL_ITEM | BASH_DOOR | POWERFUL | ! F:EVIL | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_6 | --- 4683,4687 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_BODY | KILL_ITEM | BASH_DOOR | POWERFUL | ! F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_6 | *************** *** 4799,4803 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL | ! F:EVIL | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | HURT_ROCK | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_8 | --- 4799,4803 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL | ! F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | HURT_ROCK | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_8 | *************** *** 4815,4819 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_BODY | KILL_ITEM | BASH_DOOR | POWERFUL | ! F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_8 | --- 4815,4819 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_BODY | KILL_ITEM | BASH_DOOR | POWERFUL | ! F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_8 | *************** *** 4889,4893 **** F:FORCE_SLEEP | FRIENDS | F:BASH_DOOR | ! F:ANIMAL | NO_CONF | NO_SLEEP | S:1_IN_5 | S:BR_GRAV --- 4889,4893 ---- F:FORCE_SLEEP | FRIENDS | F:BASH_DOOR | ! F:ANIMAL S:1_IN_5 | S:BR_GRAV *************** *** 4921,4925 **** F:FORCE_SLEEP | FRIENDS | F:BASH_DOOR | ! F:ANIMAL | NO_CONF | NO_SLEEP S:1_IN_5 | S:BR_INER --- 4921,4925 ---- F:FORCE_SLEEP | FRIENDS | F:BASH_DOOR | ! F:ANIMAL S:1_IN_5 | S:BR_INER *************** *** 4938,4942 **** F:FRIENDS | F:BASH_DOOR | ! F:ANIMAL | NO_CONF | NO_SLEEP S:1_IN_8 | S:BR_WALL --- 4938,4942 ---- F:FRIENDS | F:BASH_DOOR | ! F:ANIMAL S:1_IN_8 | S:BR_WALL *************** *** 4973,4977 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:EVIL | IM_ACID | IM_FIRE | F:IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR --- 4973,4977 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:IM_ACID | IM_FIRE | F:IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR *************** *** 4989,4993 **** F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:EVIL | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_5 | --- 4989,4993 ---- F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_5 | *************** *** 5128,5132 **** F:OPEN_DOOR | BASH_DOOR | F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | ! F:IM_POIS | NO_CONF | NO_SLEEP S:1_IN_5 | S:SCARE | --- 5128,5132 ---- F:OPEN_DOOR | BASH_DOOR | F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | ! F:IM_POIS S:1_IN_5 | S:SCARE | *************** *** 5291,5295 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:EVIL | IM_COLD | IM_ELEC | F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR --- 5291,5295 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:IM_COLD | IM_ELEC | F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR *************** *** 5413,5417 **** F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL | ! F:EVIL | IM_FIRE | IM_ELEC | F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR --- 5413,5417 ---- F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL | ! F:IM_FIRE | IM_ELEC | F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR *************** *** 5519,5523 **** F:ONLY_ITEM | DROP_4D2 | F:INVISIBLE | OPEN_DOOR | BASH_DOOR | ! F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP S:1_IN_6 | S:SLOW | CONF | SCARE | --- 5519,5523 ---- F:ONLY_ITEM | DROP_4D2 | F:INVISIBLE | OPEN_DOOR | BASH_DOOR | ! F:EVIL | DRAGON | IM_COLD S:1_IN_6 | S:SLOW | CONF | SCARE | *************** *** 5720,5724 **** F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:EVIL | IM_FIRE | F:IM_POIS | NO_CONF | NO_SLEEP S:1_IN_4 | --- 5720,5724 ---- F:EMPTY_MIND | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:IM_FIRE | F:IM_POIS | NO_CONF | NO_SLEEP S:1_IN_4 | *************** *** 5816,5820 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:EVIL | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_4 | --- 5816,5820 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_4 | *************** *** 6577,6581 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL | ! F:EVIL | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:HURT_ROCK | F:NO_CONF | NO_SLEEP | NO_FEAR --- 6577,6581 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL | ! F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:HURT_ROCK | F:NO_CONF | NO_SLEEP | NO_FEAR *************** *** 6616,6620 **** F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_5 | --- 6616,6620 ---- F:EMPTY_MIND | COLD_BLOOD | F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | ! F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | F:NO_CONF | NO_SLEEP | NO_FEAR S:1_IN_5 | *************** *** 7391,7395 **** F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | ! F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS S:1_IN_2 | S:TELE_TO | BLIND | --- 7391,7395 ---- F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | ! F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP S:1_IN_2 | S:TELE_TO | BLIND | diff -c2 -w -r angband-281/lib/file/news.txt gw-angband-2.8.1/lib/file/news.txt *** angband-281/lib/file/news.txt Mon Mar 3 22:48:28 1997 --- gw-angband-2.8.1/lib/file/news.txt Thu May 15 16:46:30 1997 *************** *** 1,7 **** ! *********************** ! ** Angband 2.8.1 ** ! *********************** Based on Moria: Copyright (c) 1985 Robert Alan Koeneke --- 1,7 ---- ! ************************ ! ** GW-Angband 2.8.1 ** ! ************************ Based on Moria: Copyright (c) 1985 Robert Alan Koeneke *************** *** 11,22 **** Geoff Hill, Charles Teague, and others Angband 2.5 - 2.6: Charles Swiger (cs4w+@andrew.cmu.edu) - Angband 2.7 - 2.8: Ben Harrison (benh@voicenet.com) - Curses/X11 Module: Ben Harrison, Torbj|rn Lindgren ! Angband 2.8.0 is available for Unix, X11, Macintosh, IBM, Windows, etc. ! Be sure to read the online help, especially "general.txt" and "version.txt". ! ! Visit the Angband Home Page at "http://www.voicenet.com/~benh/Angband/". ! Send all comments, bug reports, patches, etc, to "benh@voicenet.com". --- 11,19 ---- Geoff Hill, Charles Teague, and others Angband 2.5 - 2.6: Charles Swiger (cs4w+@andrew.cmu.edu) Angband 2.7 - 2.8: Ben Harrison (benh@voicenet.com) Curses/X11 Module: Ben Harrison, Torbj|rn Lindgren + GW-Angband 2.7+ : Greg Wooledge (wooledge@kellnet.com) ! This is a variant of Angband by Greg Wooledge. Send all general comments, ! bug reports, patches, etc., to the above address, unless they also apply ! to Angband 2.7.X or Angband 2.8.X, in which case send them to Ben Harrison. diff -c2 -w -r angband-281/lib/help/birth.txt gw-angband-2.8.1/lib/help/birth.txt *** angband-281/lib/help/birth.txt Mon Mar 3 22:44:11 1997 --- gw-angband-2.8.1/lib/help/birth.txt Fri May 16 12:18:37 1997 *************** *** 108,112 **** === Races === ! There are ten different races that you can choose from in Angband. Some races are restricted as to what profession they may be, and each race has its own adjustments to a character's stats and abilities. Most races also --- 108,112 ---- === Races === ! There are eleven different races that you can choose from in Angband. Some races are restricted as to what profession they may be, and each race has its own adjustments to a character's stats and abilities. Most races also *************** *** 208,211 **** --- 208,225 ---- unseen, and resist light effects just like regular elves. + Kobold + Kobolds are a race of small, subterranean tribal humanoids. + It is rumored that they are a corruption of the gnomes, + created by some dark sorcerer. Whether this is true or not, + kobolds do seem to possess an innate resistance to harmful + magic similar to that of the gnomes. Kobolds are hardy and + agile, but generally lack strength and cunning. They have a + strong sense of community, and often band together to resist + incursions by rival tribes and other enemies. Their + underground lifestyle makes them feel very much athome in + caves and dungeons; they are often able to locate things + which escape the notice of races unaccustomed to the darkness. + Their dietary habits are notorious; kobolds often use "spices" + which are fatal to other races. === Classes (outdated) === *************** *** 258,269 **** for him to overcome. A rogue has a high stealth allowing him to sneak around many creatures without having to fight, ! or sneak up and get the first blow. A rogue's perception is ! higher than any other class, and many times he will notice a ! trap or secret door before having to search. A rogue is ! better than warriors or paladins with magical devices, but ! still can not rely on their performance. Rogues can also ! learn a few spells, but not the powerful offensive spells ! magi can use. A rogue's primary stats are Intelligence and ! Dexterity. Ranger --- 272,284 ---- for him to overcome. A rogue has a high stealth allowing him to sneak around many creatures without having to fight, ! or sneak up and get the first blow. If a rogue attacks a ! sleeping creature, he will often be able to strike a vital ! organ. A rogue's perception is higher than any other class, ! and many times he will notice a trap or secret door before ! having to search. A rogue is better than warriors or ! paladins with magical devices, but still can not rely on ! their performance. Rogues can also learn a few spells, but ! not the powerful offensive spells magi can use. A rogue's ! primary stats are Dexterity and Intelligence. Ranger *************** *** 429,432 **** --- 444,448 ---- Dunadan Yes Yes Yes Yes Yes Yes High-Elf Yes Yes Yes Yes Yes No + Kobold Yes No Yes Yes No No *************** *** 464,467 **** --- 480,484 ---- Dunadan +1 +2 +2 +2 +3 +2 10 +80% High-Elf +1 +3 -1 +3 +1 +5 10 +100% + Kobold -2 -1 0 +2 +2 -1 9 +15% STR INT WIS DEX CON CHR *************** *** 483,487 **** Half-Elf 6 7 7 6 4 6 6 20 feet Elf 8 9 7 7 3 9 7 30 feet ! Hobbit 10 10 10 10 1 10 10 40 feet Gnome 9 7 9 9 2 8 9 40 feet Dwarf 6 8 3 5 9 5 8 50 feet --- 500,504 ---- Half-Elf 6 7 7 6 4 6 6 20 feet Elf 8 9 7 7 3 9 7 30 feet ! Hobbit 10 9 10 10 1 10 10 40 feet Gnome 9 7 9 9 2 8 9 40 feet Dwarf 6 8 3 5 9 5 8 50 feet *************** *** 490,493 **** --- 507,511 ---- Dunadan 9 8 7 8 7 8 7 None High-Elf 9 8 8 9 7 10 10 40 feet + Kobold 9 10 10 10 3 6 8 50 feet diff -c2 -w -r angband-281/lib/help/version.txt gw-angband-2.8.1/lib/help/version.txt *** angband-281/lib/help/version.txt Mon Mar 3 22:45:12 1997 --- gw-angband-2.8.1/lib/help/version.txt Thu May 15 16:48:19 1997 *************** *** 1,5 **** === Version Information === ! This file was last updated for Angband 2.7.9. Make sure to read the newsgroup "rec.games.roguelike.angband" if possible. --- 1,26 ---- === Version Information === ! This file was last updated for GW-Angband 2.8.1. ! ! GW-Angband is a variant of Angband 2.7.X and 2.8.X. This variant attempts ! primarily to address certain inconsistencies in the original Angband game -- ! most specifically, in the Mage class. The biggest changes between Angband ! and GW-Angband are in the mage spells, which are in some cases altered ! dramatically. This is accompanied by a minor revision of the combat system, ! which further weakens mage/priest combat, but gives a slight advantage to ! warriors and rogues, both of whom rely extensively on combat. ! ! As long as I was doing all that, I thought it would be worthwhile to add some ! new features to the game. However, I have attempted wherever possible to ! maintain the "spirit" of the original game; thus, most of my changes are ! subtle. Priests and paladins may not notice much of a change at all, and ! in some cases the player may easily forget that (s)he is playing a variant ! and not the original game. ! ! Information on GW-Angband is available from my web page: ! ! http://kellnet.com/wooledge/angband.html ! ! === Original Angband Information === Make sure to read the newsgroup "rec.games.roguelike.angband" if possible. diff -c2 -w -r angband-281/src/Makefile gw-angband-2.8.1/src/Makefile *** angband-281/src/Makefile Fri Mar 7 15:52:32 1997 --- gw-angband-2.8.1/src/Makefile Fri May 16 12:03:48 1997 *************** *** 137,142 **** ## Variation -- Use "main-xaw.c" instead of "main-x11.c" ## ! #CFLAGS = -Wall -O1 -pipe -g -D"USE_XAW" -D"USE_GCU" ! #LIBS = -lXaw -lXmu -lXt -lX11 -lcurses -ltermcap --- 137,142 ---- ## Variation -- Use "main-xaw.c" instead of "main-x11.c" ## ! CFLAGS = -Wall -O2 -pipe -g -D"USE_XAW" -D"USE_GCU" ! LIBS = -L/usr/X11R6/lib -lXaw -lXmu -lXt -lX11 -lcurses *************** *** 217,221 **** install: testing ! cp testing .. --- 217,221 ---- install: testing ! mv testing ../angband diff -c2 -w -r angband-281/src/birth.c gw-angband-2.8.1/src/birth.c *** angband-281/src/birth.c Fri Mar 7 15:50:12 1997 --- gw-angband-2.8.1/src/birth.c Thu May 15 16:15:40 1997 *************** *** 76,79 **** --- 76,80 ---- * Half-Orc --> 19 --> 20 --> 2 --> 3 --> 50 --> 51 --> 52 --> 53 * Half-Troll --> 22 --> 23 --> 62 --> 63 --> 64 --> 65 --> 66 + * Kobols --> 24 --> 25 --> 26 --> 27 --> 28 --> 29 --> 30 * * XXX XXX XXX This table *must* be correct or drastic errors may occur! *************** *** 171,174 **** --- 172,212 ---- {"Clan Chief. ", 100, 23, 62, 80}, + {"You are the runt of ", 20, 24, 25, 40}, + {"You come from ", 80, 24, 25, 50}, + {"You are the largest of ", 100, 24, 25, 55}, + + {"a litter of 3 pups. ", 15, 25, 26, 45}, + {"a litter of 4 pups. ", 40, 25, 26, 45}, + {"a litter of 5 pups. ", 70, 25, 26, 50}, + {"a litter of 6 pups. ", 85, 25, 26, 50}, + {"a litter of 7 pups. ", 95, 25, 26, 55}, + {"a litter of 8 pups. ", 100, 25, 26, 55}, + + {"Your father was a fungus farmer, ", 10, 26, 27, 40}, + {"Your father was a hunter, ", 45, 26, 27, 45}, + {"Your father was a warrior, ", 70, 26, 27, 50}, + {"Your father was a shaman, ", 90, 26, 27, 55}, + {"Your father was the Chief of his tribe, ", 100, 26, 27, 60}, + + {"and your mother was a prisoner of war. ", 20, 27, 28, 45}, + {"and your mother was a prostitute. ", 30, 27, 28, 45}, + {"and your mother was a cook. ", 95, 27, 28, 50}, + {"and your mother was a member of the Chief's harem. ", 100, 27, 28, 55}, + + {"You have black eyes, ", 10, 28, 29, 50}, + {"You have dark brown eyes, ", 40, 28, 29, 50}, + {"You have brown eyes, ", 80, 28, 29, 50}, + {"You have light brown eyes, ", 99, 28, 29, 50}, + {"You have glowing red eyes, ", 100, 28, 29, 55}, + + {"dark brown skin, ", 40, 29, 30, 50}, + {"dark grey skin, ", 60, 29, 30, 50}, + {"olive green skin, ", 95, 29, 30, 50}, + {"deep blue skin, ", 100, 29, 30, 55}, + + {"and large, flat teeth.", 10, 30, 0, 45}, + {"and small, sharp teeth.", 90, 30, 0, 50}, + {"and large, sharp teeth.", 100, 30, 0, 55}, + {"You have dark brown eyes, ", 20, 50, 51, 50}, {"You have brown eyes, ", 60, 50, 51, 50}, *************** *** 646,649 **** --- 684,693 ---- { chart = 22; + break; + } + + case RACE_KOBOLD: + { + chart = 24; break; } diff -c2 -w -r angband-281/src/cmd1.c gw-angband-2.8.1/src/cmd1.c *** angband-281/src/cmd1.c Thu Mar 6 21:46:26 1997 --- gw-angband-2.8.1/src/cmd1.c Thu May 15 14:25:06 1997 *************** *** 117,121 **** * Factor in weapon weight, total plusses, player level. */ ! s16b critical_norm(int weight, int plus, int dam) { int i, k; --- 117,121 ---- * Factor in weapon weight, total plusses, player level. */ ! s16b critical_norm(int weight, int plus, int dam, monster_type *m_ptr) { int i, k; *************** *** 125,129 **** /* Chance */ ! if (randint(5000) <= i) { k = weight + randint(650); --- 125,131 ---- /* Chance */ ! /* Rogues always get critical hits against sleeping foes. -GJW */ ! if ( (p_ptr->pclass == CLASS_ROGUE && m_ptr->csleep > 0) || ! (randint(5000) <= i) ) { k = weight + randint(650); *************** *** 377,380 **** --- 379,398 ---- } + /* Brand (Poison) */ + if (f1 & (TR1_BRAND_POIS)) + { + /* Notice immunity */ + if (r_ptr->flags3 & (RF3_IM_POIS)) + { + if (m_ptr->ml) r_ptr->r_flags3 |= RF3_IM_POIS; + } + + /* Otherwise, take the damage */ + else + { + if (mult < 3) mult = 3; + } + } + break; } *************** *** 915,922 **** - /* Disturb the monster */ - m_ptr->csleep = 0; - - /* Extract monster name (or "it") */ monster_desc(m_name, m_ptr, 0); --- 933,936 ---- *************** *** 970,974 **** k = tot_dam_aux(o_ptr, k, m_ptr); if (p_ptr->impact && (k > 50)) do_quake = TRUE; ! k = critical_norm(o_ptr->weight, o_ptr->to_h, k); k += o_ptr->to_d; } --- 984,989 ---- k = tot_dam_aux(o_ptr, k, m_ptr); if (p_ptr->impact && (k > 50)) do_quake = TRUE; ! k = critical_norm(o_ptr->weight, o_ptr->to_h, ! k, m_ptr); k += o_ptr->to_d; } *************** *** 988,991 **** --- 1003,1010 ---- /* Damage, check for fear and death */ if (mon_take_hit(c_ptr->m_idx, k, &fear, NULL)) break; + + /* Disturb the monster (AFTER damage is done -GJW) */ + m_ptr->csleep = 0; + /* Confusion attack */ diff -c2 -w -r angband-281/src/cmd4.c gw-angband-2.8.1/src/cmd4.c *** angband-281/src/cmd4.c Mon Mar 3 22:19:07 1997 --- gw-angband-2.8.1/src/cmd4.c Thu May 15 14:25:37 1997 *************** *** 833,837 **** /* Why are we here */ ! prt("Angband options", 2, 0); /* Give some choices */ --- 833,837 ---- /* Why are we here */ ! prt("GW-Angband options", 2, 0); /* Give some choices */ *************** *** 2140,2144 **** { /* Silly message */ ! msg_format("You are playing Angband %d.%d.%d. Type '?' for more info.", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); } --- 2140,2144 ---- { /* Silly message */ ! msg_format("You are playing GW-Angband %d.%d.%d. Type '?' for more info.", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); } diff -c2 -w -r angband-281/src/cmd5.c gw-angband-2.8.1/src/cmd5.c *** angband-281/src/cmd5.c Mon Mar 3 22:19:23 1997 --- gw-angband-2.8.1/src/cmd5.c Fri May 16 11:37:39 1997 *************** *** 494,498 **** --- 494,612 ---- } + /* + * Brand some ammunition. Used by Cubragol and a mage spell. The spell was + * moved here from cmd6.c where it used to be for Cubragol only. I've also + * expanded it to do either frost, fire or venom, at random. -GJW + */ + void brand_ammo (int brand_type, int bolts_only) + { + int a; + int allowable; + + if (bolts_only) + allowable = TV_BOLT; + else + allowable = TV_BOLT | TV_ARROW | TV_SHOT; + + for (a = 0; a < INVEN_PACK; a++) + { + object_type *o_ptr = &inventory[a]; + + if ((bolts_only) && (o_ptr->tval != TV_BOLT)) continue; + if ((!bolts_only) && (o_ptr->tval != TV_BOLT) && + (o_ptr->tval != TV_ARROW) && (o_ptr->tval != TV_SHOT)) + continue; + if ((!artifact_p(o_ptr)) && (!ego_item_p(o_ptr)) && + (!cursed_p(o_ptr) && !broken_p(o_ptr))) + break; + } + + /* Enchant the ammo (or fail) */ + if ((a < INVEN_PACK) && (rand_int(100) < 50)) + { + object_type *o_ptr = &inventory[a]; + char *ammo_name, *aura_name, msg[48]; + int aura_type, r; + + if (brand_type == 1) r = 0; /* fire only */ + else if (brand_type == 2) r = 99; /* poison only */ + else r = rand_int (100); + + if (r < 33) + { + aura_name = "fiery"; + aura_type = EGO_FLAME; + } + else if (r < 67) + { + aura_name = "frosty"; + aura_type = EGO_FROST; + } + else + { + aura_name = "sickly"; + aura_type = EGO_VENOM; + } + + if (o_ptr->tval == TV_BOLT) + ammo_name = "bolts"; + else if (o_ptr->tval == TV_ARROW) + ammo_name = "arrows"; + else + ammo_name = "shots"; + + sprintf (msg, "Your %s are covered in a %s aura!", + ammo_name, aura_name); + msg_print (msg); + o_ptr->name2 = aura_type; + enchant (o_ptr, rand_int(3) + 4, ENCH_TOHIT | ENCH_TODAM); + } + else + { + if (flush_failure) flush(); + msg_print ("The enchantment failed."); + } + } + + /* + * Brand the current weapon + */ + static void brand_weapon(void) + { + object_type *o_ptr; + + o_ptr = &inventory[INVEN_WIELD]; + + /* you can never modify artifacts / ego-items */ + /* you can never modify broken / cursed items */ + if ((o_ptr->k_idx) && + (!artifact_p(o_ptr)) && (!ego_item_p(o_ptr)) && + (!broken_p(o_ptr)) && (!cursed_p(o_ptr))) + { + char *act = NULL; + char o_name[80]; + + if (rand_int(100) < 25) + { + act = "is covered in a fiery shield!"; + o_ptr->name2 = EGO_BRAND_FIRE; + } + else + { + act = "glows deep, icy blue!"; + o_ptr->name2 = EGO_BRAND_COLD; + } + + object_desc(o_name, o_ptr, FALSE, 0); + msg_format("Your %s %s", o_name, act); + enchant(o_ptr, rand_int(3) + 4, ENCH_TOHIT | ENCH_TODAM); + } + else + { + if (flush_failure) flush(); + msg_print("The Branding failed."); + } + } /* *************** *** 602,606 **** { /* Hack -- chance of "beam" instead of "bolt" */ ! beam = ((p_ptr->pclass == 1) ? plev : (plev / 2)); /* Spells. */ --- 716,720 ---- { /* Hack -- chance of "beam" instead of "bolt" */ ! beam = ((p_ptr->pclass == CLASS_MAGE) ? plev : (plev / 2)); /* Spells. */ *************** *** 635,640 **** case 4: { ! (void)detect_treasure(); ! (void)detect_objects_gold(); break; } --- 749,755 ---- case 4: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_POIS, dir, ! 10 + (plev / 2), 2); break; } *************** *** 642,647 **** case 5: { ! (void)hp_player(damroll(2, 8)); ! (void)set_cut(p_ptr->cut - 15); break; } --- 757,763 ---- case 5: { ! if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam(beam-10, GF_ELEC, dir, ! damroll(3+((plev-5)/4), 8)); break; } *************** *** 649,653 **** case 6: { ! (void)detect_objects_normal(); break; } --- 765,771 ---- case 6: { ! if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam(beam-10, GF_COLD, dir, ! damroll(5+((plev-5)/4), 8)); break; } *************** *** 655,661 **** case 7: { ! (void)detect_traps(); ! (void)detect_doors(); ! (void)detect_stairs(); break; } --- 773,779 ---- case 7: { ! if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam(beam, GF_ACID, dir, ! damroll(6+((plev-5)/4), 8)); break; } *************** *** 664,690 **** { if (!get_aim_dir(&dir)) return; ! fire_ball(GF_POIS, dir, ! 10 + (plev / 2), 2); break; } case 9: - { if (!get_aim_dir(&dir)) return; ! (void)confuse_monster(dir, plev); break; - } case 10: - { if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam(beam-10, GF_ELEC, dir, ! damroll(3+((plev-5)/4), 8)); break; - } case 11: { ! (void)destroy_doors_touch(); break; } --- 782,805 ---- { if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam(beam, GF_FIRE, dir, ! damroll(8+((plev-5)/4), 8)); break; } case 9: if (!get_aim_dir(&dir)) return; ! fire_ball(GF_SOUND, dir, 10 + plev, 2); break; case 10: if (!get_aim_dir(&dir)) return; ! fire_ball(GF_SHARDS, dir, 20 + (plev * 2), 2); break; case 11: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_POIS, dir, ! 40 + (plev / 2), 3); break; } *************** *** 693,697 **** { if (!get_aim_dir(&dir)) return; ! (void)sleep_monster(dir); break; } --- 808,813 ---- { if (!get_aim_dir(&dir)) return; ! fire_ball(GF_COLD, dir, ! 30 + (plev), 2); break; } *************** *** 699,703 **** case 13: { ! (void)set_poisoned(0); break; } --- 815,821 ---- case 13: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_ACID, dir, ! 40 + (plev), 2); break; } *************** *** 705,709 **** case 14: { ! teleport_player(plev * 5); break; } --- 823,829 ---- case 14: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_FIRE, dir, ! 55 + (plev), 2); break; } *************** *** 712,732 **** { if (!get_aim_dir(&dir)) return; ! msg_print("A line of blue shimmering light appears."); ! lite_line(dir); break; } ! case 16: { ! if (!get_aim_dir(&dir)) return; fire_bolt_or_beam(beam-10, GF_COLD, dir, damroll(5+((plev-5)/4), 8)); break; } case 17: { ! if (!get_aim_dir(&dir)) return; ! (void)wall_to_mud(dir); break; } --- 832,922 ---- { if (!get_aim_dir(&dir)) return; ! fire_ball(GF_ICE, dir, ! 70 + (plev), 3); break; } ! case 16: /* Wonder */ { ! /* This spell should become more useful (more ! controlled) as the player gains experience levels. ! Thus, add 1/5 of the player's level to the die roll. ! This eliminates the worst effects later on, while ! keeping the results quite random. It also allows ! some potent effects only at high level. */ ! ! int die = randint(100) + plev / 5; ! ! if (!get_aim_dir(&dir)) return; ! if (die > 100) ! msg_print ("You feel a surge of power!"); ! if (die < 8) clone_monster (dir); ! else if (die < 14) speed_monster (dir); ! else if (die < 26) heal_monster (dir); ! else if (die < 31) poly_monster (dir); ! else if (die < 36) ! fire_bolt_or_beam (beam - 10, ! GF_MISSILE, dir, ! damroll(3 + ((plev - 1) / 5), 4)); ! else if (die < 41) confuse_monster (dir, plev); ! else if (die < 46) fire_ball (GF_POIS, dir, 20 + (plev / 2), 3); ! else if (die < 51) lite_line (dir); ! else if (die < 56) ! fire_bolt_or_beam (beam - 10, GF_ELEC, dir, ! damroll(3+((plev-5)/4),8)); ! else if (die < 61) fire_bolt_or_beam (beam - 10, GF_COLD, dir, damroll(5+((plev-5)/4),8)); + else if (die < 66) + fire_bolt_or_beam (beam, GF_ACID, dir, + damroll(6+((plev-5)/4),8)); + else if (die < 71) + fire_bolt_or_beam (beam, GF_FIRE, dir, + damroll(8+((plev-5)/4),8)); + else if (die < 76) drain_life (dir, 75); + else if (die < 81) fire_ball (GF_ELEC, dir, 30 + plev / 2, 2); + else if (die < 86) fire_ball (GF_ACID, dir, 40 + plev, 2); + else if (die < 91) fire_ball (GF_ICE, dir, 70 + plev, 3); + else if (die < 96) fire_ball (GF_FIRE, dir, 80 + plev, 3); + else if (die < 101) drain_life (dir, 100 + plev); + else if (die < 104) earthquake (py, px, 12); + else if (die < 106) destroy_area (py, px, 15, TRUE); + else if (die < 108) genocide(); + else if (die < 110) dispel_monsters (120); + else /* RARE */ + { + dispel_monsters (150); + slow_monsters(); + sleep_monsters(); + hp_player (300); + } break; } + /* Hacked by GJW */ case 17: { ! int i; ! bool save_use_old_target = use_old_target; ! ! do ! { ! use_old_target = FALSE; ! if (!get_aim_dir(&dir)) ! { ! use_old_target = save_use_old_target; ! return; ! } ! if (!dir || (dir == 5)) ! { ! msg_print ("This spell requires a compass direction."); ! dir = command_dir = 0; ! } ! } while (!dir || (dir == 5)); ! use_old_target = save_use_old_target; ! for (i = 0; i < 2 + plev / 20; i++) ! { ! fire_ball(GF_METEOR, dir, 30 + plev / 2, 1); ! } break; } *************** *** 734,738 **** case 18: { ! (void)set_food(PY_FOOD_MAX - 1); break; } --- 924,930 ---- case 18: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_MANA, dir, ! 300 + (plev * 2), 3); break; } *************** *** 740,744 **** case 19: { ! (void)recharge(5); break; } --- 932,937 ---- case 19: { ! (void)hp_player(damroll(2, 8)); ! (void)set_cut(p_ptr->cut - 15); break; } *************** *** 746,750 **** case 20: { ! (void)sleep_monsters_touch(); break; } --- 939,945 ---- case 20: { ! (void)detect_traps(); ! (void)detect_doors(); ! (void)detect_stairs(); break; } *************** *** 752,757 **** case 21: { ! if (!get_aim_dir(&dir)) return; ! (void)poly_monster(dir); break; } --- 947,952 ---- case 21: { ! (void)detect_treasure(); ! (void)detect_objects_gold(); break; } *************** *** 759,763 **** case 22: { ! (void)ident_spell(); break; } --- 954,958 ---- case 22: { ! (void)detect_objects_normal(); break; } *************** *** 765,769 **** case 23: { ! (void)sleep_monsters(); break; } --- 960,964 ---- case 23: { ! (void)ident_spell(); break; } *************** *** 771,777 **** case 24: { ! if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam(beam, GF_FIRE, dir, ! damroll(8+((plev-5)/4), 8)); break; } --- 966,970 ---- case 24: { ! (void)detect_monsters_invis(); break; } *************** *** 779,784 **** case 25: { ! if (!get_aim_dir(&dir)) return; ! (void)slow_monster(dir); break; } --- 972,976 ---- case 25: { ! (void)detect_monsters_evil(); break; } *************** *** 786,792 **** case 26: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_COLD, dir, ! 30 + (plev), 2); break; } --- 978,982 ---- case 26: { ! (void)destroy_doors_touch(); break; } *************** *** 794,798 **** case 27: { ! (void)recharge(40); break; } --- 984,988 ---- case 27: { ! (void)set_poisoned(0); break; } *************** *** 800,805 **** case 28: { ! if (!get_aim_dir(&dir)) return; ! (void)teleport_monster(dir); break; } --- 990,994 ---- case 28: { ! teleport_player(plev * 5); break; } *************** *** 807,818 **** case 29: { ! if (!p_ptr->fast) ! { ! (void)set_fast(randint(20) + plev); ! } ! else ! { ! (void)set_fast(p_ptr->fast + randint(5)); ! } break; } --- 996,1001 ---- case 29: { ! if (!get_aim_dir(&dir)) return; ! (void)slow_monster(dir); break; } *************** *** 821,826 **** { if (!get_aim_dir(&dir)) return; ! fire_ball(GF_FIRE, dir, ! 55 + (plev), 2); break; } --- 1004,1008 ---- { if (!get_aim_dir(&dir)) return; ! (void)teleport_monster(dir); break; } *************** *** 828,832 **** case 31: { ! destroy_area(py, px, 15, TRUE); break; } --- 1010,1021 ---- case 31: { ! if (!p_ptr->fast) ! { ! (void)set_fast(randint(20) + plev); ! } ! else ! { ! (void)set_fast(p_ptr->fast + randint(5)); ! } break; } *************** *** 834,838 **** case 32: { ! (void)genocide(); break; } --- 1023,1027 ---- case 32: { ! (void)teleport_player_level(); break; } *************** *** 846,850 **** case 34: { ! (void)stair_creation(); break; } --- 1035,1039 ---- case 34: { ! (void)set_food(PY_FOOD_MAX - 1); break; } *************** *** 852,856 **** case 35: { ! (void)teleport_player_level(); break; } --- 1041,1047 ---- case 35: { ! if (!get_aim_dir(&dir)) return; ! msg_print("A line of blue shimmering light appears."); ! lite_line(dir); break; } *************** *** 858,862 **** case 36: { ! earthquake(py, px, 10); break; } --- 1049,1054 ---- case 36: { ! if (!get_aim_dir(&dir)) return; ! (void)wall_to_mud(dir); break; } *************** *** 864,877 **** case 37: { ! if (!p_ptr->word_recall) ! { ! p_ptr->word_recall = rand_int(20) + 15; ! msg_print("The air about you becomes charged..."); ! } ! else ! { ! p_ptr->word_recall = 0; ! msg_print("A tension leaves the air around you..."); ! } break; } --- 1056,1060 ---- case 37: { ! (void)stair_creation(); break; } *************** *** 879,885 **** case 38: { ! if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam(beam, GF_ACID, dir, ! damroll(6+((plev-5)/4), 8)); break; } --- 1062,1066 ---- case 38: { ! (void)recharge(5); break; } *************** *** 887,893 **** case 39: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_POIS, dir, ! 20 + (plev / 2), 3); break; } --- 1068,1072 ---- case 39: { ! recharge(100); break; } *************** *** 895,901 **** case 40: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_ACID, dir, ! 40 + (plev), 2); break; } --- 1074,1079 ---- case 40: { ! brand_ammo (p_ptr->pclass==CLASS_ROGUE? 2 : 0, ! 0); break; } *************** *** 904,909 **** { if (!get_aim_dir(&dir)) return; ! fire_ball(GF_COLD, dir, ! 70 + (plev), 3); break; } --- 1082,1086 ---- { if (!get_aim_dir(&dir)) return; ! (void)confuse_monster(dir, plev); break; } *************** *** 912,917 **** { if (!get_aim_dir(&dir)) return; ! fire_ball(GF_METEOR, dir, ! 65 + (plev), 3); break; } --- 1089,1093 ---- { if (!get_aim_dir(&dir)) return; ! (void)sleep_monster(dir); break; } *************** *** 919,931 **** case 43: { ! if (!get_aim_dir(&dir)) return; ! fire_ball(GF_MANA, dir, ! 300 + (plev * 2), 3); break; } ! case 44: { ! (void)detect_monsters_evil(); break; } --- 1095,1106 ---- case 43: { ! (void)sleep_monsters(); break; } ! case 44: /* Bedlam */ { ! if (!get_aim_dir(&dir)) return; ! fire_ball (GF_OLD_CONF, dir, plev, 4); break; } *************** *** 933,937 **** case 45: { ! (void)detect_objects_magic(); break; } --- 1108,1112 ---- case 45: { ! (void)genocide(); break; } *************** *** 939,955 **** case 46: { ! recharge(100); break; } case 47: ! { ! (void)genocide(); break; - } case 48: { ! (void)mass_genocide(); break; } --- 1114,1130 ---- case 46: { ! (void)mass_genocide(); break; } case 47: ! if (!get_aim_dir(&dir)) return; ! fire_bolt_or_beam (beam / 4, GF_NETHER, dir, ! damroll (17, plev)); break; case 48: { ! (void)set_oppose_cold(p_ptr->oppose_cold + randint(20) + 20); break; } *************** *** 963,967 **** case 50: { ! (void)set_oppose_cold(p_ptr->oppose_cold + randint(20) + 20); break; } --- 1138,1144 ---- case 50: { ! (void)hp_player(10); ! (void)set_hero(p_ptr->hero + randint(25) + 25); ! (void)set_afraid(0); break; } *************** *** 969,973 **** case 51: { ! (void)set_oppose_acid(p_ptr->oppose_acid + randint(20) + 20); break; } --- 1146,1152 ---- case 51: { ! (void)hp_player(30); ! (void)set_shero(p_ptr->shero + randint(25) + 25); ! (void)set_afraid(0); break; } *************** *** 991,1011 **** case 54: { ! (void)hp_player(10); ! (void)set_hero(p_ptr->hero + randint(25) + 25); ! (void)set_afraid(0); break; } case 55: { ! (void)set_shield(p_ptr->shield + randint(20) + 30); break; } case 56: { ! (void)hp_player(30); ! (void)set_shero(p_ptr->shero + randint(25) + 25); ! (void)set_afraid(0); break; } --- 1170,1188 ---- case 54: { ! (void)set_shield(p_ptr->shield + randint(20) + 30); break; } + /* case 55: { ! (void)set_invuln(p_ptr->invuln + randint(8) + 8); break; } + */ case 56: { ! (void)detect_objects_magic(); break; } *************** *** 1013,1023 **** case 57: { ! if (!p_ptr->fast) { ! (void)set_fast(randint(30) + 30 + plev); } else { ! (void)set_fast(p_ptr->fast + randint(10)); } break; --- 1190,1202 ---- case 57: { ! if (!p_ptr->word_recall) { ! p_ptr->word_recall = rand_int(20) + 15; ! msg_print("The air about you becomes charged..."); } else { ! p_ptr->word_recall = 0; ! msg_print("A tension leaves the air around you..."); } break; *************** *** 1026,1032 **** case 58: { ! (void)set_invuln(p_ptr->invuln + randint(8) + 8); break; } } --- 1205,1236 ---- case 58: { ! if (!get_aim_dir(&dir)) return; ! (void)poly_monster(dir); break; } + + case 59: + { + earthquake(py, px, 10); + break; + } + + case 60: + { + destroy_area(py, px, 15, TRUE); + break; + } + + case 61: + if (!get_aim_dir(&dir)) return; + fire_bolt_or_beam (2 * beam, GF_GRAVITY, dir, + 40 + damroll (plev,7)); + break; + + case 62: + if (!get_aim_dir(&dir)) return; + fire_bolt_or_beam (beam, GF_CHAOS, dir, + damroll (13, plev)); + break; } *************** *** 1100,1149 **** /* - * Brand the current weapon - */ - static void brand_weapon(void) - { - object_type *o_ptr; - - o_ptr = &inventory[INVEN_WIELD]; - - /* you can never modify artifacts / ego-items */ - /* you can never modify broken / cursed items */ - if ((o_ptr->k_idx) && - (!artifact_p(o_ptr)) && (!ego_item_p(o_ptr)) && - (!broken_p(o_ptr)) && (!cursed_p(o_ptr))) - { - cptr act = NULL; - - char o_name[80]; - - if (rand_int(100) < 25) - { - act = "is covered in a fiery shield!"; - o_ptr->name2 = EGO_BRAND_FIRE; - } - - else - { - act = "glows deep, icy blue!"; - o_ptr->name2 = EGO_BRAND_COLD; - } - - object_desc(o_name, o_ptr, FALSE, 0); - - msg_format("Your %s %s", o_name, act); - - enchant(o_ptr, rand_int(3) + 4, ENCH_TOHIT | ENCH_TODAM); - } - - else - { - if (flush_failure) flush(); - msg_print("The Branding failed."); - } - } - - - /* * Pray a prayer */ --- 1304,1307 ---- *************** *** 1363,1367 **** fire_ball(GF_HOLY_ORB, dir, (damroll(3, 6) + plev + ! (plev / ((p_ptr->pclass == 2) ? 2 : 4))), ((plev < 30) ? 2 : 3)); break; --- 1521,1525 ---- fire_ball(GF_HOLY_ORB, dir, (damroll(3, 6) + plev + ! (plev / ((p_ptr->pclass == CLASS_PRIEST) ? 2 : 4))), ((plev < 30) ? 2 : 3)); break; diff -c2 -w -r angband-281/src/cmd6.c gw-angband-2.8.1/src/cmd6.c *** angband-281/src/cmd6.c Mon Mar 3 22:19:52 1997 --- gw-angband-2.8.1/src/cmd6.c Thu May 15 15:37:12 1997 *************** *** 2750,2796 **** /* ! * Enchant some bolts */ static bool brand_bolts(void) { ! int i; ! ! /* Use the first acceptable bolts */ ! for (i = 0; i < INVEN_PACK; i++) ! { ! object_type *o_ptr = &inventory[i]; ! ! /* Skip non-bolts */ ! if (o_ptr->tval != TV_BOLT) continue; ! ! /* Skip artifacts and ego-items */ ! if (artifact_p(o_ptr) || ego_item_p(o_ptr)) continue; ! ! /* Skip cursed/broken items */ ! if (cursed_p(o_ptr) || broken_p(o_ptr)) continue; ! ! /* Randomize */ ! if (rand_int(100) < 75) continue; ! ! /* Message */ ! msg_print("Your bolts are covered in a fiery aura!"); ! ! /* Ego-item */ ! o_ptr->name2 = EGO_FLAME; ! ! /* Enchant */ ! enchant(o_ptr, rand_int(3) + 4, ENCH_TOHIT | ENCH_TODAM); ! ! /* Notice */ ! return (TRUE); ! } ! ! /* Flush */ ! if (flush_failure) flush(); ! ! /* Fail */ ! msg_print("The fiery enchantment failed."); ! ! /* Notice */ return (TRUE); } --- 2750,2758 ---- /* ! * Enchant some bolts -- merged with the mage spell -GJW */ static bool brand_bolts(void) { ! brand_ammo (1, 1); return (TRUE); } diff -c2 -w -r angband-281/src/config.h gw-angband-2.8.1/src/config.h *** angband-281/src/config.h Mon Mar 3 22:19:58 1997 --- gw-angband-2.8.1/src/config.h Fri May 16 12:04:17 1997 *************** *** 179,183 **** * OPTION: Hack -- Compile in support for "Wizard Commands" */ ! /* #define ALLOW_WIZARD */ /* --- 179,183 ---- * OPTION: Hack -- Compile in support for "Wizard Commands" */ ! #define ALLOW_WIZARD /* diff -c2 -w -r angband-281/src/defines.h gw-angband-2.8.1/src/defines.h *** angband-281/src/defines.h Mon Mar 3 22:20:22 1997 --- gw-angband-2.8.1/src/defines.h Thu May 15 16:48:58 1997 *************** *** 34,38 **** /* ! * Current version number of Angband: 2.8.1 */ #define VERSION_MAJOR 2 --- 34,38 ---- /* ! * Current version number of GW-Angband: 2.8.1 */ #define VERSION_MAJOR 2 *************** *** 90,94 **** * Maximum number of player "race" types (see "table.c", etc) */ ! #define MAX_RACES 10 /* --- 90,94 ---- * Maximum number of player "race" types (see "table.c", etc) */ ! #define MAX_RACES 11 /* *************** *** 379,382 **** --- 379,383 ---- #define RACE_DUNADAN 8 #define RACE_HIGH_ELF 9 + #define RACE_KOBOLD 10 /* *************** *** 814,818 **** #define EGO_HURT_DRAGON 119 /* xxx */ ! /* xxx */ #define EGO_FLAME 122 #define EGO_FROST 123 --- 815,819 ---- #define EGO_HURT_DRAGON 119 /* xxx */ ! #define EGO_VENOM 121 #define EGO_FLAME 122 #define EGO_FROST 123 *************** *** 1341,1345 **** * Special "sval" limit -- first "good" magic/prayer book */ ! #define SV_BOOK_MIN_GOOD 4 --- 1342,1347 ---- * Special "sval" limit -- first "good" magic/prayer book */ ! #define SV_MBOOK_MIN_GOOD 5 ! #define SV_PBOOK_MIN_GOOD 4 *************** *** 1747,1751 **** #define TR1_XXX5 0x02000000L /* Later */ #define TR1_IMPACT 0x04000000L /* Cause Earthquakes */ ! #define TR1_XXX6 0x08000000L /* Later */ #define TR1_BRAND_ACID 0x10000000L #define TR1_BRAND_ELEC 0x20000000L --- 1749,1753 ---- #define TR1_XXX5 0x02000000L /* Later */ #define TR1_IMPACT 0x04000000L /* Cause Earthquakes */ ! #define TR1_BRAND_POIS 0x08000000L #define TR1_BRAND_ACID 0x10000000L #define TR1_BRAND_ELEC 0x20000000L diff -c2 -w -r angband-281/src/dungeon.c gw-angband-2.8.1/src/dungeon.c *** angband-281/src/dungeon.c Mon Mar 3 22:20:47 1997 --- gw-angband-2.8.1/src/dungeon.c Thu May 15 12:05:11 1997 *************** *** 806,809 **** --- 806,810 ---- } + #if 0 /* Invulnerability */ if (p_ptr->invuln) *************** *** 811,814 **** --- 812,816 ---- (void)set_invuln(p_ptr->invuln - 1); } + #endif /* Heroism */ diff -c2 -w -r angband-281/src/externs.h gw-angband-2.8.1/src/externs.h *** angband-281/src/externs.h Thu Mar 6 21:52:08 1997 --- gw-angband-2.8.1/src/externs.h Thu May 15 15:36:48 1997 *************** *** 51,55 **** extern player_class class_info[MAX_CLASS]; extern player_magic magic_info[MAX_CLASS]; ! extern u32b spell_flags[2][9][2]; extern cptr spell_names[2][64]; extern byte chest_traps[64]; --- 51,55 ---- extern player_class class_info[MAX_CLASS]; extern player_magic magic_info[MAX_CLASS]; ! extern u32b spell_flags[2][12][2]; extern cptr spell_names[2][64]; extern byte chest_traps[64]; *************** *** 386,390 **** extern bool test_hit_norm(int chance, int ac, int vis); extern s16b critical_shot(int weight, int plus, int dam); ! extern s16b critical_norm(int weight, int plus, int dam); extern s16b tot_dam_aux(object_type *o_ptr, int tdam, monster_type *m_ptr); extern void search(void); --- 386,390 ---- extern bool test_hit_norm(int chance, int ac, int vis); extern s16b critical_shot(int weight, int plus, int dam); ! extern s16b critical_norm(int weight, int plus, int dam, monster_type *m_ptr); extern s16b tot_dam_aux(object_type *o_ptr, int tdam, monster_type *m_ptr); extern void search(void); *************** *** 448,451 **** --- 448,452 ---- /* cmd5.c */ + extern void brand_ammo (int brand_type, int bolts_only); extern void do_cmd_browse(void); extern void do_cmd_study(void); *************** *** 542,545 **** --- 543,547 ---- extern bool multiply_monster(int m_idx); extern void update_smart_learn(int m_idx, int what); + extern bool monster_saves (int mlev, int plev); /* object1.c */ *************** *** 786,790 **** extern bool set_shero(int v); extern bool set_protevil(int v); ! extern bool set_invuln(int v); extern bool set_tim_invis(int v); extern bool set_tim_infra(int v); --- 788,792 ---- extern bool set_shero(int v); extern bool set_protevil(int v); ! /* extern bool set_invuln(int v); */ extern bool set_tim_invis(int v); extern bool set_tim_infra(int v); diff -c2 -w -r angband-281/src/files.c gw-angband-2.8.1/src/files.c *** angband-281/src/files.c Mon Mar 3 22:21:42 1997 --- gw-angband-2.8.1/src/files.c Thu May 15 14:35:28 1997 *************** *** 1929,1933 **** /* Begin dump */ ! fprintf(fff, " [Angband %d.%d.%d Character Dump]\n\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); --- 1929,1933 ---- /* Begin dump */ ! fprintf(fff, " [GW-Angband %d.%d.%d Character Dump]\n\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); *************** *** 2280,2284 **** /* Show a general "title" */ ! prt(format("[Angband %d.%d.%d, %s, Line %d/%d]", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, caption, line, size), 0, 0); --- 2280,2284 ---- /* Show a general "title" */ ! prt(format("[GW-Angband %d.%d.%d, %s, Line %d/%d]", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, caption, line, size), 0, 0); *************** *** 2635,2642 **** { /* Verify */ ! if (!get_check("Do you really want to quit? ")) return; /* Special Verification for suicide */ ! prt("Please verify QUITTING by typing the '@' sign: ", 0, 0); flush(); i = inkey(); --- 2635,2642 ---- { /* Verify */ ! if (!get_check("Do you really want to commit suicide? ")) return; /* Special Verification for suicide */ ! prt("Please verify SUICIDE by typing the '@' sign: ", 0, 0); flush(); i = inkey(); *************** *** 3250,3254 **** /* Title */ ! put_str(" Angband Hall of Fame", 0, 0); /* Indicate non-top scores */ --- 3250,3254 ---- /* Title */ ! put_str(" GW-Angband Hall of Fame", 0, 0); /* Indicate non-top scores */ diff -c2 -w -r angband-281/src/init1.c gw-angband-2.8.1/src/init1.c *** angband-281/src/init1.c Mon Mar 3 22:23:07 1997 --- gw-angband-2.8.1/src/init1.c Thu May 15 14:35:52 1997 *************** *** 395,399 **** "XXX5", "IMPACT", ! "XXX6", "BRAND_ACID", "BRAND_ELEC", --- 395,399 ---- "XXX5", "IMPACT", ! "BRAND_POIS", "BRAND_ACID", "BRAND_ELEC", diff -c2 -w -r angband-281/src/init2.c gw-angband-2.8.1/src/init2.c *** angband-281/src/init2.c Mon Mar 3 22:23:39 1997 --- gw-angband-2.8.1/src/init2.c Thu May 15 16:02:39 1997 *************** *** 2003,2012 **** { TV_MAGIC_BOOK, 0 }, { TV_MAGIC_BOOK, 0 }, - { TV_MAGIC_BOOK, 0 }, { TV_MAGIC_BOOK, 1 }, { TV_MAGIC_BOOK, 1 }, { TV_MAGIC_BOOK, 2 }, { TV_MAGIC_BOOK, 2 }, ! { TV_MAGIC_BOOK, 3 } } }; --- 2003,2012 ---- { TV_MAGIC_BOOK, 0 }, { TV_MAGIC_BOOK, 0 }, { TV_MAGIC_BOOK, 1 }, { TV_MAGIC_BOOK, 1 }, { TV_MAGIC_BOOK, 2 }, { TV_MAGIC_BOOK, 2 }, ! { TV_MAGIC_BOOK, 3 }, ! { TV_MAGIC_BOOK, 4 } } }; diff -c2 -w -r angband-281/src/melee2.c gw-angband-2.8.1/src/melee2.c *** angband-281/src/melee2.c Mon Mar 3 22:33:01 1997 --- gw-angband-2.8.1/src/melee2.c Thu May 15 12:09:58 1997 *************** *** 2475,2480 **** } ! /* Still stunned */ ! if (m_ptr->stunned) return; } --- 2475,2480 ---- } ! /* Still stunned -- but not helpless!! -GJW */ ! if (m_ptr->stunned && (rand_int(100) < 40)) return; } diff -c2 -w -r angband-281/src/monster1.c gw-angband-2.8.1/src/monster1.c *** angband-281/src/monster1.c Mon Mar 3 22:33:17 1997 --- gw-angband-2.8.1/src/monster1.c Thu May 15 12:11:15 1997 *************** *** 946,949 **** --- 946,951 ---- if (flags3 & (RF3_IM_COLD)) vp[vn++] = "cold"; if (flags3 & (RF3_IM_POIS)) vp[vn++] = "poison"; + if (flags3 & (RF3_NO_CONF)) vp[vn++] = "confusion"; + if (flags3 & (RF3_NO_SLEEP)) vp[vn++] = "sleep"; /* Describe immunities */ *************** *** 1005,1010 **** if (flags3 & (RF3_NO_STUN)) vp[vn++] = "stunned"; if (flags3 & (RF3_NO_FEAR)) vp[vn++] = "frightened"; - if (flags3 & (RF3_NO_CONF)) vp[vn++] = "confused"; - if (flags3 & (RF3_NO_SLEEP)) vp[vn++] = "slept"; /* Describe non-effects */ --- 1007,1010 ---- diff -c2 -w -r angband-281/src/monster2.c gw-angband-2.8.1/src/monster2.c *** angband-281/src/monster2.c Mon Mar 3 22:33:44 1997 --- gw-angband-2.8.1/src/monster2.c Thu May 15 12:13:08 1997 *************** *** 2097,2099 **** } ! --- 2097,2110 ---- } ! /* ! * Determine a monster's saving throw. For simplicity, for now, assume that ! * the monster's chance is based only on its level. Return TRUE if the monster ! * succeeds, and FALSE if the monster bites it. -GJW ! */ ! bool monster_saves (int mlev, int plev) ! { ! int prob = 50 + 3 * (mlev - plev); ! if (prob < 5) prob = 5; /* always has a chance */ ! else if (prob > 95) prob = 95; /* so does the player */ ! return (rand_int(100) < prob); ! } diff -c2 -w -r angband-281/src/object1.c gw-angband-2.8.1/src/object1.c *** angband-281/src/object1.c Mon Mar 3 22:34:18 1997 --- gw-angband-2.8.1/src/object1.c Thu May 15 14:36:25 1997 *************** *** 2453,2456 **** --- 2453,2460 ---- info[i++] = "It does extra damage from frost."; } + if (f1 & (TR1_BRAND_POIS)) + { + info[i++] = "It does extra damage from poison."; + } if (f1 & (TR1_IMPACT)) diff -c2 -w -r angband-281/src/object2.c gw-angband-2.8.1/src/object2.c *** angband-281/src/object2.c Mon Mar 3 22:34:58 1997 --- gw-angband-2.8.1/src/object2.c Fri May 16 11:38:08 1997 *************** *** 61,69 **** else { /* Previous object */ ! o_ptr = &o_list[prev_o_idx]; /* Remove from list */ ! o_ptr->next_o_idx = next_o_idx; } --- 61,71 ---- else { + object_type *q_ptr; + /* Previous object */ ! q_ptr = &o_list[prev_o_idx]; /* Remove from list */ ! q_ptr->next_o_idx = next_o_idx; } *************** *** 115,123 **** else { /* Previous object */ ! o_ptr = &o_list[prev_o_idx]; /* Remove from list */ ! o_ptr->next_o_idx = next_o_idx; } --- 117,127 ---- else { + object_type *q_ptr; + /* Previous object */ ! q_ptr = &o_list[prev_o_idx]; /* Remove from list */ ! q_ptr->next_o_idx = next_o_idx; } *************** *** 1979,1983 **** /* Hack -- Super-charge the damage dice */ ! while (rand_int(10L * o_ptr->dd * o_ptr->ds) == 0) o_ptr->dd++; /* Hack -- Lower the damage dice */ --- 1983,1987 ---- /* Hack -- Super-charge the damage dice */ ! while (rand_int(4L * o_ptr->dd * o_ptr->ds) == 0) o_ptr->dd++; /* Hack -- Lower the damage dice */ *************** *** 2045,2049 **** { /* Roll for ego-item */ ! switch (randint(10)) { case 1: case 2: case 3: --- 2049,2053 ---- { /* Roll for ego-item */ ! switch (randint(11)) { case 1: case 2: case 3: *************** *** 2082,2085 **** --- 2086,2095 ---- break; } + + case 11: + { + o_ptr->name2 = EGO_VENOM; + break; + } } *************** *** 2754,2758 **** { /* Bonus to damage */ ! o_ptr->to_d = 5 + randint(5) + m_bonus(10, level); /* Cursed */ --- 2764,2768 ---- { /* Bonus to damage */ ! o_ptr->to_d = 1 + randint(5) + m_bonus(6, level); /* Cursed */ *************** *** 2776,2780 **** { /* Bonus to hit */ ! o_ptr->to_h = 5 + randint(5) + m_bonus(10, level); /* Cursed */ --- 2786,2790 ---- { /* Bonus to hit */ ! o_ptr->to_h = 1 + randint(5) + m_bonus(6, level); /* Cursed */ *************** *** 2820,2825 **** { /* Bonus to damage and to hit */ ! o_ptr->to_d = randint(5) + m_bonus(10, level); ! o_ptr->to_h = randint(5) + m_bonus(10, level); /* Cursed */ --- 2830,2835 ---- { /* Bonus to damage and to hit */ ! o_ptr->to_d = 1 + randint(5) + m_bonus(6, level); ! o_ptr->to_h = 1 + randint(5) + m_bonus(6, level); /* Cursed */ *************** *** 3333,3340 **** } ! /* Ammo -- Arrows/Bolts are good */ case TV_BOLT: case TV_ARROW: { return (TRUE); } --- 3343,3352 ---- } ! /* Ammo -- Arrows/Bolts are good unless damaged -GJW */ case TV_BOLT: case TV_ARROW: { + if (k_ptr->to_h < 0) return (FALSE); + if (k_ptr->to_d < 0) return (FALSE); return (TRUE); } *************** *** 3342,3348 **** /* Books -- High level books are good */ case TV_MAGIC_BOOK: case TV_PRAYER_BOOK: { ! if (k_ptr->sval >= SV_BOOK_MIN_GOOD) return (TRUE); return (FALSE); } --- 3354,3365 ---- /* Books -- High level books are good */ case TV_MAGIC_BOOK: + { + if (k_ptr->sval >= SV_MBOOK_MIN_GOOD) return (TRUE); + return (FALSE); + } + case TV_PRAYER_BOOK: { ! if (k_ptr->sval >= SV_PBOOK_MIN_GOOD) return (TRUE); return (FALSE); } *************** *** 4422,4425 **** --- 4439,4449 ---- if (!object_known_p(j_ptr)) break; + /* Hack -- otherwise identical rods sort by increasing + recharge time --dsb */ + if (o_ptr->tval == TV_ROD) { + if (o_ptr->pval < j_ptr->pval) break; + if (o_ptr->pval > j_ptr->pval) continue; + } + /* Determine the "value" of the pack item */ j_value = object_value(j_ptr); *************** *** 4761,4764 **** --- 4785,4795 ---- if (!object_known_p(j_ptr)) break; + /* Hack -- otherwise identical rods sort by increasing + recharge time --dsb */ + if (o_ptr->tval == TV_ROD) { + if (o_ptr->pval < j_ptr->pval) break; + if (o_ptr->pval > j_ptr->pval) continue; + } + /* Determine the "value" of the pack item */ j_value = object_value(j_ptr); *************** *** 5043,5077 **** case 0: sprintf(p, " dam %dd4", 3+((plev-1)/5)); break; case 2: strcpy(p, " range 10"); break; ! case 5: strcpy(p, " heal 2d8"); break; ! case 8: sprintf(p, " dam %d", 10 + (plev / 2)); break; ! case 10: sprintf(p, " dam %dd8", (3+((plev-5)/4))); break; ! case 14: sprintf(p, " range %d", plev * 10); break; ! case 15: strcpy(p, " dam 6d8"); break; ! case 16: sprintf(p, " dam %dd8", (5+((plev-5)/4))); break; ! case 24: sprintf(p, " dam %dd8", (8+((plev-5)/4))); break; ! case 26: sprintf(p, " dam %d", 30 + plev); break; ! case 29: sprintf(p, " dur %d+d20", plev); break; ! case 30: sprintf(p, " dam %d", 55 + plev); break; ! case 38: sprintf(p, " dam %dd8", (6+((plev-5)/4))); break; ! case 39: sprintf(p, " dam %d", 40 + plev/2); break; ! case 40: sprintf(p, " dam %d", 40 + plev); break; ! case 41: sprintf(p, " dam %d", 70 + plev); break; ! case 42: sprintf(p, " dam %d", 65 + plev); break; ! case 43: sprintf(p, " dam %d", 300 + plev*2); break; case 49: strcpy(p, " dur 20+d20"); break; ! case 50: strcpy(p, " dur 20+d20"); break; ! case 51: strcpy(p, " dur 20+d20"); break; case 52: strcpy(p, " dur 20+d20"); break; case 53: strcpy(p, " dur 20+d20"); break; ! case 54: strcpy(p, " dur 25+d25"); break; ! case 55: strcpy(p, " dur 30+d20"); break; ! case 56: strcpy(p, " dur 25+d25"); break; ! case 57: sprintf(p, " dur %d+d25", 30+plev); break; ! case 58: strcpy(p, " dur 6+d8"); break; } } /* Priest spells */ ! if (mp_ptr->spell_book == TV_PRAYER_BOOK) { int plev = p_ptr->lev; --- 5074,5111 ---- case 0: sprintf(p, " dam %dd4", 3+((plev-1)/5)); break; case 2: strcpy(p, " range 10"); break; ! case 4: sprintf(p, " dam %d", 10 + (plev / 2)); break; ! case 5: sprintf(p, " dam %dd8", (3+((plev-5)/4))); break; ! case 6: sprintf(p, " dam %dd8", (5+((plev-5)/4))); break; ! case 7: sprintf(p, " dam %dd8", (6+((plev-5)/4))); break; ! case 8: sprintf(p, " dam %dd8", (8+((plev-5)/4))); break; ! case 9: sprintf(p, " dam %d", 10 + plev); break; ! case 10: sprintf(p, " dam %d", 20 + plev * 2); break; ! case 11: sprintf(p, " dam %d", 40 + plev/2); break; ! case 12: sprintf(p, " dam %d", 30 + plev); break; ! case 13: sprintf(p, " dam %d", 40 + plev); break; ! case 14: sprintf(p, " dam %d", 55 + plev); break; ! case 15: sprintf(p, " dam %d", 70 + plev); break; ! case 17: sprintf(p, " dam %dx%d", 30+plev/2, 2+plev/20); break; ! case 18: sprintf(p, " dam %d", 300 + plev*2); break; ! case 19: strcpy(p, " heal 2d8"); break; ! case 28: sprintf(p, " range %d", plev * 5); break; ! case 31: sprintf(p, " dur %d+d20", plev); break; ! case 35: strcpy(p, " dam 6d8"); break; ! case 47: sprintf(p, " dam 17d%d", plev); break; ! case 48: strcpy(p, " dur 20+d20"); break; case 49: strcpy(p, " dur 20+d20"); break; ! case 50: strcpy(p, " dur 25+d25"); break; ! case 51: strcpy(p, " dur 25+d25"); break; case 52: strcpy(p, " dur 20+d20"); break; case 53: strcpy(p, " dur 20+d20"); break; ! case 54: strcpy(p, " dur 30+d20"); break; ! /* case 55: strcpy(p, " dur 6+d8"); break; */ ! case 61: sprintf(p, " dam 40+%dd7", plev); break; ! case 62: sprintf(p, " dam 13d%d", plev); break; } } /* Priest spells */ ! else if (mp_ptr->spell_book == TV_PRAYER_BOOK) { int plev = p_ptr->lev; diff -c2 -w -r angband-281/src/spells1.c gw-angband-2.8.1/src/spells1.c *** angband-281/src/spells1.c Mon Mar 3 22:36:00 1997 --- gw-angband-2.8.1/src/spells1.c Thu May 15 15:23:57 1997 *************** *** 2002,2006 **** /* Polymorph setting (true or false) */ ! int do_poly = 0; /* Teleport setting (max distance) */ --- 2002,2006 ---- /* Polymorph setting (true or false) */ ! int do_poly = FALSE; /* Teleport setting (max distance) */ *************** *** 2026,2030 **** cptr note = NULL; ! /* Assume a default death */ cptr note_dies = " dies."; --- 2026,2030 ---- cptr note = NULL; ! cptr note_unaffected = " is unaffected!"; cptr note_dies = " dies."; *************** *** 2208,2219 **** { if (seen) obvious = TRUE; ! do_poly = TRUE; do_conf = (5 + randint(11) + r) / (r + 1); if (r_ptr->flags4 & (RF4_BR_CHAO)) { note = " resists."; dam *= 3; dam /= (randint(6)+6); - do_poly = FALSE; } break; } --- 2208,2241 ---- { if (seen) obvious = TRUE; ! ! /* Start with the assumption that the monster will be ! confused. */ do_conf = (5 + randint(11) + r) / (r + 1); + + /* Then, factor in special powers. */ + if ((r_ptr->flags3 & RF3_NO_CONF) || + (r_ptr->flags1 & RF1_UNIQUE)) + { + if (rand_int(100) < 70) do_conf = 0; + } + if (r_ptr->flags4 & (RF4_BR_CHAO)) { note = " resists."; dam *= 3; dam /= (randint(6)+6); } + + /* 60% chance to attempt polymorph; then monster gets a + saving throw. Note that the chaos-wielder's level + is irrelevant, as is the damage done. -GJW */ + else + { + if (rand_int (100) < 60) + { + if (rand_int(3000) > r_ptr->level * r_ptr->level) + do_poly = TRUE; + } + } + break; } *************** *** 2258,2261 **** --- 2280,2284 ---- note = " resists somewhat."; dam /= 2; + do_conf /= 2; /* Can now be confused! -GJW */ } break; *************** *** 2329,2333 **** { if (seen) obvious = TRUE; ! do_dist = 10; if (r_ptr->flags4 & (RF4_BR_GRAV)) { --- 2352,2356 ---- { if (seen) obvious = TRUE; ! do_dist = 10 - (r_ptr->level / 20); if (r_ptr->flags4 & (RF4_BR_GRAV)) { *************** *** 2385,2389 **** } ! note = " is unaffected!"; obvious = FALSE; dam = 0; --- 2408,2412 ---- } ! note = note_unaffected; obvious = FALSE; dam = 0; *************** *** 2403,2409 **** /* Powerful monsters can resist */ if ((r_ptr->flags1 & (RF1_UNIQUE)) || ! (r_ptr->level > randint((dam - 10) < 1 ? 1 : (dam - 10)) + 10)) { ! note = " is unaffected!"; do_poly = FALSE; obvious = FALSE; --- 2426,2432 ---- /* Powerful monsters can resist */ if ((r_ptr->flags1 & (RF1_UNIQUE)) || ! (monster_saves (r_ptr->level, dam - 10))) { ! note = note_unaffected; do_poly = FALSE; obvious = FALSE; *************** *** 2426,2430 **** /* Speed up */ ! if (m_ptr->mspeed < 150) m_ptr->mspeed += 10; /* Attempt to clone. */ --- 2449,2453 ---- /* Speed up */ ! if (m_ptr->mspeed < 150) m_ptr->mspeed += 5; /* Attempt to clone. */ *************** *** 2489,2495 **** /* Powerful monsters can resist */ if ((r_ptr->flags1 & (RF1_UNIQUE)) || ! (r_ptr->level > randint((dam - 10) < 1 ? 1 : (dam - 10)) + 10)) { ! note = " is unaffected!"; obvious = FALSE; } --- 2512,2518 ---- /* Powerful monsters can resist */ if ((r_ptr->flags1 & (RF1_UNIQUE)) || ! (monster_saves (r_ptr->level, dam))) { ! note = note_unaffected; obvious = FALSE; } *************** *** 2498,2502 **** else { ! if (m_ptr->mspeed > 60) m_ptr->mspeed -= 10; note = " starts moving slower."; } --- 2521,2525 ---- else { ! if (m_ptr->mspeed > 60) m_ptr->mspeed -= 5; note = " starts moving slower."; } *************** *** 2511,2520 **** case GF_OLD_SLEEP: { if (seen) obvious = TRUE; /* Attempt a saving throw */ ! if ((r_ptr->flags1 & (RF1_UNIQUE)) || ! (r_ptr->flags3 & (RF3_NO_SLEEP)) || ! (r_ptr->level > randint((dam - 10) < 1 ? 1 : (dam - 10)) + 10)) { /* Memorize a flag */ --- 2534,2545 ---- case GF_OLD_SLEEP: { + int dam2 = dam; + if (seen) obvious = TRUE; /* Attempt a saving throw */ ! if (r_ptr->flags3 & (RF3_NO_SLEEP)) dam2 -= 10; ! if (((r_ptr->flags1 & (RF1_UNIQUE)) && (rand_int(100) < 75)) || ! (monster_saves (r_ptr->level, dam2))) { /* Memorize a flag */ *************** *** 2525,2529 **** /* No obvious effect */ ! note = " is unaffected!"; obvious = FALSE; } --- 2550,2554 ---- /* No obvious effect */ ! note = note_unaffected; obvious = FALSE; } *************** *** 2544,2547 **** --- 2569,2574 ---- case GF_OLD_CONF: { + int dam2 = dam; + if (seen) obvious = TRUE; *************** *** 2550,2556 **** /* Attempt a saving throw */ ! if ((r_ptr->flags1 & (RF1_UNIQUE)) || ! (r_ptr->flags3 & (RF3_NO_CONF)) || ! (r_ptr->level > randint((dam - 10) < 1 ? 1 : (dam - 10)) + 10)) { /* Memorize a flag */ --- 2577,2583 ---- /* Attempt a saving throw */ ! if (r_ptr->flags3 & (RF3_NO_CONF)) dam2 -= 10; ! if (((r_ptr->flags1 & (RF1_UNIQUE)) && (rand_int(100) < 75)) || ! (monster_saves (r_ptr->level, dam2))) { /* Memorize a flag */ *************** *** 2564,2568 **** /* No obvious effect */ ! note = " is unaffected!"; obvious = FALSE; } --- 2591,2595 ---- /* No obvious effect */ ! note = note_unaffected; obvious = FALSE; } *************** *** 2744,2751 **** /* Attempt a saving throw */ ! if (r_ptr->level > randint((dam - 10) < 1 ? 1 : (dam - 10)) + 10) { /* No obvious effect */ ! note = " is unaffected!"; obvious = FALSE; do_fear = 0; --- 2771,2778 ---- /* Attempt a saving throw */ ! if (monster_saves (r_ptr->level, dam)) { /* No obvious effect */ ! note = note_unaffected; obvious = FALSE; do_fear = 0; *************** *** 2782,2789 **** /* Attempt a saving throw */ ! if (r_ptr->level > randint((dam - 10) < 1 ? 1 : (dam - 10)) + 10) { /* No obvious effect */ ! note = " is unaffected!"; obvious = FALSE; do_fear = 0; --- 2809,2816 ---- /* Attempt a saving throw */ ! if (monster_saves (r_ptr->level, dam)) { /* No obvious effect */ ! note = note_unaffected; obvious = FALSE; do_fear = 0; *************** *** 2816,2823 **** if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flags3 & (RF3_NO_FEAR)) || ! (r_ptr->level > randint((dam - 10) < 1 ? 1 : (dam - 10)) + 10)) { /* No obvious effect */ ! note = " is unaffected!"; obvious = FALSE; do_fear = 0; --- 2843,2850 ---- if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flags3 & (RF3_NO_FEAR)) || ! (monster_saves (r_ptr->level, dam))) { /* No obvious effect */ ! note = note_unaffected; obvious = FALSE; do_fear = 0; *************** *** 2924,2931 **** - /* "Unique" monsters cannot be polymorphed */ - if (r_ptr->flags1 & (RF1_UNIQUE)) do_poly = FALSE; - - /* "Unique" monsters can only be "killed" by the player */ if (r_ptr->flags1 & (RF1_UNIQUE)) --- 2951,2954 ---- *************** *** 2943,2951 **** } ! /* Mega-Hack -- Handle "polymorph" -- monsters get a saving throw */ ! else if (do_poly && (randint(90) > r_ptr->level)) { /* Default -- assume no polymorph */ ! note = " is unaffected!"; /* Pick a "new" monster race */ --- 2966,2974 ---- } ! /* Mega-Hack -- Handle "polymorph" */ ! else if (do_poly) { /* Default -- assume no polymorph */ ! note = note_unaffected; /* Pick a "new" monster race */ *************** *** 3026,3030 **** /* Confusion and Chaos breathers (and sleepers) never confuse */ else if (do_conf && - !(r_ptr->flags3 & (RF3_NO_CONF)) && !(r_ptr->flags4 & (RF4_BR_CONF)) && !(r_ptr->flags4 & (RF4_BR_CHAO))) --- 3049,3052 ---- diff -c2 -w -r angband-281/src/spells2.c gw-angband-2.8.1/src/spells2.c *** angband-281/src/spells2.c Mon Mar 3 22:36:47 1997 --- gw-angband-2.8.1/src/spells2.c Thu May 15 14:37:58 1997 *************** *** 260,263 **** --- 260,270 ---- }; + static int enchant_table_dam[20] = + { + 0, 10, 50, 100, 100, + 100, 200, 300, 400, 500, + 600, 700, 700, 700, 800, + 800, 850, 900, 950, 975 + }; /* *************** *** 741,744 **** --- 748,755 ---- info[i++] = "Your weapon freezes your foes."; } + if (f1 & (TR1_BRAND_POIS)) + { + info[i++] = "Your weapon poisons your foes."; + } /* Special "slay" flags */ *************** *** 1654,1659 **** { if (o_ptr->to_d < 0) chance = 0; ! else if (o_ptr->to_d > 15) chance = 1000; ! else chance = enchant_table[o_ptr->to_d]; if ((randint(1000) > chance) && (!a || (rand_int(100) < 50))) --- 1665,1685 ---- { if (o_ptr->to_d < 0) chance = 0; ! /* Generally limit +to-dam to weapon's natural damage ! limitation. E.g., a tulwar (2d4) can go to +8. ! Note the effect upon missiles.... -GJW */ ! else if (o_ptr->to_d > 19) chance = 1000; ! else ! { ! if (o_ptr->tval == TV_BOW) ! chance = enchant_table[o_ptr->to_d]; ! else ! { ! chance = enchant_table_dam[o_ptr->to_d]; ! if ((o_ptr->dd * o_ptr->ds <= o_ptr->to_d) && ! (chance < 995)) ! chance = 995; ! } ! } ! if ((randint(1000) > chance) && (!a || (rand_int(100) < 50))) diff -c2 -w -r angband-281/src/store.c gw-angband-2.8.1/src/store.c *** angband-281/src/store.c Mon Mar 3 22:37:24 1997 --- gw-angband-2.8.1/src/store.c Thu May 15 14:39:41 1997 *************** *** 343,378 **** static byte rgold_adj[MAX_RACES][MAX_RACES] = { ! /*Hum, HfE, Elf, Hal, Gno, Dwa, HfO, HfT, Dun, HiE*/ /* Human */ ! { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105}, /* Half-Elf */ ! { 110, 100, 100, 105, 110, 120, 125, 130, 110, 100}, /* Elf */ ! { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100}, /* Halfling */ ! { 115, 110, 105, 95, 105, 110, 115, 130, 115, 105}, /* Gnome */ ! { 115, 115, 110, 105, 95, 110, 115, 130, 115, 110}, /* Dwarf */ ! { 115, 120, 120, 110, 110, 95, 125, 135, 115, 120}, /* Half-Orc */ ! { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125}, /* Half-Troll */ ! { 110, 115, 115, 110, 110, 130, 110, 110, 110, 115}, /* Dunedain */ ! { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105}, /* High_Elf */ ! { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100} }; --- 343,380 ---- static byte rgold_adj[MAX_RACES][MAX_RACES] = { ! /*Hum, HfE, Elf, Hal, Gno, Dwa, HfO, HfT, Dun, HiE, Kob*/ /* Human */ ! { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105, 120}, /* Half-Elf */ ! { 110, 100, 100, 105, 110, 120, 125, 130, 110, 100, 115}, /* Elf */ ! { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 120}, /* Halfling */ ! { 115, 110, 105, 95, 105, 110, 115, 130, 115, 105, 115}, /* Gnome */ ! { 115, 115, 110, 105, 95, 110, 115, 130, 115, 110, 110}, /* Dwarf */ ! { 115, 120, 120, 110, 110, 95, 125, 135, 115, 120, 115}, /* Half-Orc */ ! { 115, 120, 125, 115, 115, 130, 110, 115, 115, 125, 115}, /* Half-Troll */ ! { 110, 115, 115, 110, 110, 130, 110, 110, 110, 115, 115}, /* Dunedain */ ! { 100, 105, 105, 110, 113, 115, 120, 125, 100, 105, 120}, /* High_Elf */ ! { 110, 105, 100, 105, 110, 120, 125, 130, 110, 100, 125}, + /* Kobold */ + { 110, 115, 120, 110, 105, 110, 110, 120, 110, 125, 90} }; *************** *** 899,902 **** --- 901,911 ---- if (!object_known_p(j_ptr)) break; + /* Hack -- otherwise identical rods sort by increasing + recharge time --dsb */ + if (o_ptr->tval == TV_ROD) { + if (o_ptr->pval < j_ptr->pval) break; + if (o_ptr->pval > j_ptr->pval) continue; + } + /* Objects sort by decreasing value */ j_value = object_value(j_ptr); *************** *** 985,988 **** --- 994,1004 ---- if (o_ptr->sval < j_ptr->sval) break; if (o_ptr->sval > j_ptr->sval) continue; + + /* Hack -- otherwise identical rods sort by increasing + recharge time --dsb */ + if (o_ptr->tval == TV_ROD) { + if (o_ptr->pval < j_ptr->pval) break; + if (o_ptr->pval > j_ptr->pval) continue; + } /* Evaluate that slot */ diff -c2 -w -r angband-281/src/tables.c gw-angband-2.8.1/src/tables.c *** angband-281/src/tables.c Thu Mar 6 21:47:06 1997 --- gw-angband-2.8.1/src/tables.c Fri May 16 11:36:50 1997 *************** *** 472,513 **** byte adj_dex_ta[] = { ! 128 + -4 /* 3 */, ! 128 + -3 /* 4 */, ! 128 + -2 /* 5 */, ! 128 + -1 /* 6 */, ! 128 + 0 /* 7 */, ! 128 + 0 /* 8 */, 128 + 0 /* 9 */, 128 + 0 /* 10 */, 128 + 0 /* 11 */, 128 + 0 /* 12 */, ! 128 + 0 /* 13 */, ! 128 + 0 /* 14 */, ! 128 + 1 /* 15 */, ! 128 + 1 /* 16 */, ! 128 + 1 /* 17 */, ! 128 + 2 /* 18/00-18/09 */, ! 128 + 2 /* 18/10-18/19 */, ! 128 + 2 /* 18/20-18/29 */, ! 128 + 2 /* 18/30-18/39 */, ! 128 + 2 /* 18/40-18/49 */, ! 128 + 3 /* 18/50-18/59 */, ! 128 + 3 /* 18/60-18/69 */, ! 128 + 3 /* 18/70-18/79 */, ! 128 + 4 /* 18/80-18/89 */, ! 128 + 5 /* 18/90-18/99 */, ! 128 + 6 /* 18/100-18/109 */, ! 128 + 7 /* 18/110-18/119 */, ! 128 + 8 /* 18/120-18/129 */, ! 128 + 9 /* 18/130-18/139 */, ! 128 + 9 /* 18/140-18/149 */, ! 128 + 10 /* 18/150-18/159 */, ! 128 + 11 /* 18/160-18/169 */, ! 128 + 12 /* 18/170-18/179 */, ! 128 + 13 /* 18/180-18/189 */, ! 128 + 14 /* 18/190-18/199 */, ! 128 + 15 /* 18/200-18/209 */, ! 128 + 15 /* 18/210-18/219 */, ! 128 + 15 /* 18/220+ */ }; --- 472,513 ---- byte adj_dex_ta[] = { ! 128 + -10 /* 3 */, ! 128 + -7 /* 4 */, ! 128 + -5 /* 5 */, ! 128 + -3 /* 6 */, ! 128 + -2 /* 7 */, ! 128 + -1 /* 8 */, 128 + 0 /* 9 */, 128 + 0 /* 10 */, 128 + 0 /* 11 */, 128 + 0 /* 12 */, ! 128 + 1 /* 13 */, ! 128 + 1 /* 14 */, ! 128 + 2 /* 15 */, ! 128 + 2 /* 16 */, ! 128 + 3 /* 17 */, ! 128 + 4 /* 18/00-18/09 */, ! 128 + 5 /* 18/10-18/19 */, ! 128 + 6 /* 18/20-18/29 */, ! 128 + 6 /* 18/30-18/39 */, ! 128 + 7 /* 18/40-18/49 */, ! 128 + 8 /* 18/50-18/59 */, ! 128 + 9 /* 18/60-18/69 */, ! 128 + 10 /* 18/70-18/79 */, ! 128 + 11 /* 18/80-18/89 */, ! 128 + 12 /* 18/90-18/99 */, ! 128 + 13 /* 18/100-18/109 */, ! 128 + 15 /* 18/110-18/119 */, ! 128 + 17 /* 18/120-18/129 */, ! 128 + 19 /* 18/130-18/139 */, ! 128 + 21 /* 18/140-18/149 */, ! 128 + 22 /* 18/150-18/159 */, ! 128 + 23 /* 18/160-18/169 */, ! 128 + 24 /* 18/170-18/179 */, ! 128 + 25 /* 18/180-18/189 */, ! 128 + 26 /* 18/190-18/199 */, ! 128 + 28 /* 18/200-18/209 */, ! 128 + 30 /* 18/210-18/219 */, ! 128 + 32 /* 18/220+ */ }; *************** *** 564,571 **** byte adj_dex_th[] = { ! 128 + -3 /* 3 */, ! 128 + -2 /* 4 */, ! 128 + -2 /* 5 */, ! 128 + -1 /* 6 */, 128 + -1 /* 7 */, 128 + 0 /* 8 */, --- 564,571 ---- byte adj_dex_th[] = { ! 128 + -6 /* 3 */, ! 128 + -4 /* 4 */, ! 128 + -3 /* 5 */, ! 128 + -2 /* 6 */, 128 + -1 /* 7 */, 128 + 0 /* 8 */, *************** *** 576,605 **** 128 + 0 /* 13 */, 128 + 0 /* 14 */, ! 128 + 0 /* 15 */, ! 128 + 1 /* 16 */, ! 128 + 2 /* 17 */, ! 128 + 3 /* 18/00-18/09 */, ! 128 + 3 /* 18/10-18/19 */, ! 128 + 3 /* 18/20-18/29 */, ! 128 + 3 /* 18/30-18/39 */, ! 128 + 3 /* 18/40-18/49 */, ! 128 + 4 /* 18/50-18/59 */, ! 128 + 4 /* 18/60-18/69 */, ! 128 + 4 /* 18/70-18/79 */, ! 128 + 4 /* 18/80-18/89 */, ! 128 + 5 /* 18/90-18/99 */, ! 128 + 6 /* 18/100-18/109 */, ! 128 + 7 /* 18/110-18/119 */, ! 128 + 8 /* 18/120-18/129 */, ! 128 + 9 /* 18/130-18/139 */, ! 128 + 9 /* 18/140-18/149 */, ! 128 + 10 /* 18/150-18/159 */, ! 128 + 11 /* 18/160-18/169 */, ! 128 + 12 /* 18/170-18/179 */, ! 128 + 13 /* 18/180-18/189 */, ! 128 + 14 /* 18/190-18/199 */, ! 128 + 15 /* 18/200-18/209 */, ! 128 + 15 /* 18/210-18/219 */, ! 128 + 15 /* 18/220+ */ }; --- 576,605 ---- 128 + 0 /* 13 */, 128 + 0 /* 14 */, ! 128 + 1 /* 15 */, ! 128 + 2 /* 16 */, ! 128 + 3 /* 17 */, ! 128 + 4 /* 18/00-18/09 */, ! 128 + 4 /* 18/10-18/19 */, ! 128 + 5 /* 18/20-18/29 */, ! 128 + 5 /* 18/30-18/39 */, ! 128 + 6 /* 18/40-18/49 */, ! 128 + 6 /* 18/50-18/59 */, ! 128 + 7 /* 18/60-18/69 */, ! 128 + 7 /* 18/70-18/79 */, ! 128 + 8 /* 18/80-18/89 */, ! 128 + 8 /* 18/90-18/99 */, ! 128 + 9 /* 18/100-18/109 */, ! 128 + 10 /* 18/110-18/119 */, ! 128 + 11 /* 18/120-18/129 */, ! 128 + 12 /* 18/130-18/139 */, ! 128 + 13 /* 18/140-18/149 */, ! 128 + 14 /* 18/150-18/159 */, ! 128 + 15 /* 18/160-18/169 */, ! 128 + 16 /* 18/170-18/179 */, ! 128 + 17 /* 18/180-18/189 */, ! 128 + 18 /* 18/190-18/199 */, ! 128 + 19 /* 18/200-18/209 */, ! 128 + 20 /* 18/210-18/219 */, ! 128 + 20 /* 18/220+ */ }; *************** *** 672,684 **** 19 /* 17 */, 20 /* 18/00-18/09 */, ! 22 /* 18/10-18/19 */, ! 24 /* 18/20-18/29 */, ! 26 /* 18/30-18/39 */, ! 28 /* 18/40-18/49 */, ! 30 /* 18/50-18/59 */, ! 30 /* 18/60-18/69 */, ! 30 /* 18/70-18/79 */, ! 30 /* 18/80-18/89 */, ! 30 /* 18/90-18/99 */, 30 /* 18/100-18/109 */, 30 /* 18/110-18/119 */, --- 672,684 ---- 19 /* 17 */, 20 /* 18/00-18/09 */, ! 21 /* 18/10-18/19 */, ! 22 /* 18/20-18/29 */, ! 23 /* 18/30-18/39 */, ! 24 /* 18/40-18/49 */, ! 25 /* 18/50-18/59 */, ! 26 /* 18/60-18/69 */, ! 27 /* 18/70-18/79 */, ! 28 /* 18/80-18/89 */, ! 29 /* 18/90-18/99 */, 30 /* 18/100-18/109 */, 30 /* 18/110-18/119 */, *************** *** 1031,1039 **** * * Warrior --> num = 6; mul = 5; div = MAX(30, weapon_weight); ! * Mage --> num = 4; mul = 2; div = MAX(40, weapon_weight); ! * Priest --> num = 5; mul = 3; div = MAX(35, weapon_weight); * Rogue --> num = 5; mul = 3; div = MAX(30, weapon_weight); * Ranger --> num = 5; mul = 4; div = MAX(35, weapon_weight); ! * Paladin --> num = 5; mul = 4; div = MAX(30, weapon_weight); * * To get "P", we look up the relevant "adj_str_blow[]" (see above), --- 1031,1039 ---- * * Warrior --> num = 6; mul = 5; div = MAX(30, weapon_weight); ! * Mage --> num = 4; mul = 3; div = 2 * MAX(35, weapon_weight); ! * Priest --> num = 5; mul = 3; div = MAX(40, weapon_weight); * Rogue --> num = 5; mul = 3; div = MAX(30, weapon_weight); * Ranger --> num = 5; mul = 4; div = MAX(35, weapon_weight); ! * Paladin --> num = 5; mul = 4; div = MAX(35, weapon_weight); * * To get "P", we look up the relevant "adj_str_blow[]" (see above), *************** *** 1052,1065 **** /* 0 */ ! { 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3 }, /* 1 */ ! { 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4 }, /* 2 */ ! { 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5 }, /* 3 */ ! { 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5 }, /* 4 */ --- 1052,1065 ---- /* 0 */ ! { 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2 }, /* 1 */ ! { 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3 }, /* 2 */ ! { 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4 }, /* 3 */ ! { 1, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5 }, /* 4 */ *************** *** 1175,1178 **** --- 1175,1179 ---- }, { + /* Alchemist */ { "Mauser the Chemist", 10000, 190, 111, 5, 8, RACE_HALF_ELF}, { "Wizzle the Chaotic", 10000, 190, 110, 6, 8, RACE_HOBBIT}, *************** *** 1191,1195 **** { "Lo-Hak the Awful", 20000, 250, 150, 10, 5, RACE_HALF_TROLL}, { "Histor the Goblin", 20000, 250, 150, 10, 5, RACE_HALF_ORC}, ! { "Durwin the Shifty", 30000, 250, 150, 10, 5, RACE_HUMAN}, { "Drago the Fair", 30000, 250, 150, 10, 5, RACE_ELF}, }, --- 1192,1196 ---- { "Lo-Hak the Awful", 20000, 250, 150, 10, 5, RACE_HALF_TROLL}, { "Histor the Goblin", 20000, 250, 150, 10, 5, RACE_HALF_ORC}, ! { "Durwin the Blue", 25000, 250, 150, 10, 5, RACE_KOBOLD}, { "Drago the Fair", 30000, 250, 150, 10, 5, RACE_ELF}, }, *************** *** 1470,1473 **** --- 1471,1486 ---- 4, 0x1F + }, + + { + "Kobold", + { -2, -1, 0, +2, +2, -1 }, + 10, 5, 10, 4, 15, 15, -5, 15, + 9, 115, + 15, 10, + 38, 4, 70, 5, + 36, 3, 60, 4, + 5, + 0x0D } }; *************** *** 1659,1735 **** { ! { 1, 1, 22, 4}, ! { 1, 1, 23, 4}, ! { 1, 2, 24, 4}, ! { 1, 2, 26, 4}, ! { 99, 0, 0, 0}, ! { 3, 3, 25, 3}, ! { 99, 0, 0, 0}, ! { 3, 3, 25, 1}, ! { 3, 3, 27, 3}, ! ! { 3, 4, 30, 1}, ! { 5, 4, 30, 4}, ! { 5, 5, 30, 6}, ! { 5, 5, 30, 4}, ! { 5, 5, 35, 4}, ! { 7, 6, 35, 5}, ! { 7, 6, 30, 5}, ! { 7, 6, 40, 6}, ! { 9, 7, 44, 8}, ! ! { 9, 7, 45, 8}, ! { 9, 7, 75, 9}, ! { 9, 7, 45, 8}, ! { 11, 7, 45, 9}, ! { 11, 7, 75, 6}, ! { 13, 7, 50, 6}, ! { 15, 9, 50, 6}, ! { 17, 9, 50, 7}, ! ! { 19, 12, 55, 8}, ! { 21, 12, 90, 8}, ! { 23, 12, 60, 8}, ! { 25, 12, 65, 10}, ! { 29, 18, 65, 12}, ! { 33, 21, 80, 15}, ! { 37, 25, 95, 21}, ! ! { 7, 7, 20, 28}, ! { 9, 12, 40, 44}, ! { 15, 17, 60, 29}, ! { 20, 18, 60, 24}, ! { 25, 25, 75, 19}, ! ! { 10, 6, 50, 12}, ! { 12, 9, 60, 16}, ! { 20, 15, 70, 20}, ! { 27, 25, 75, 29}, ! { 35, 35, 85, 34}, ! { 42, 45, 95, 200}, ! ! { 5, 5, 50, 8}, ! { 10, 10, 70, 40}, ! { 25, 30, 95, 160}, ! { 30, 50, 70, 40}, ! { 40, 75, 80, 100}, ! ! { 4, 5, 50, 20}, ! { 4, 5, 50, 20}, ! { 4, 5, 50, 20}, ! { 8, 10, 75, 40}, ! { 15, 20, 85, 60}, ! ! { 5, 5, 50, 80}, ! { 10, 12, 75, 120}, ! { 15, 20, 80, 200}, ! { 22, 30, 50, 250}, /* 350 */ ! { 45, 70, 75, 250}, /* 450 */ ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0} } }, --- 1672,1748 ---- { ! { 1, 1, 22, 4}, /* magic missile 0 */ ! { 1, 1, 23, 4}, /* detect monster */ ! { 1, 2, 24, 4}, /* phase door */ ! { 1, 2, 26, 4}, /* light area */ ! ! { 3, 3, 27, 3}, /* stinking cloud */ ! { 5, 4, 30, 4}, /* lightning bolt 5 */ ! { 7, 6, 40, 6}, /* frost bolt */ ! { 10, 7, 50, 7}, /* acid bolt */ ! { 15, 9, 50, 8}, /* fire bolt */ ! { 16, 10, 40, 6}, /* shock wave */ ! { 20, 20, 50, 10}, /* explosion 10 */ ! ! { 17, 9, 50, 8}, /* cloudkill */ ! { 19, 12, 55, 8}, /* frost ball */ ! { 20, 15, 70, 20}, /* acid ball */ ! { 26, 18, 65, 12}, /* fire ball */ ! { 27, 24, 75, 24}, /* ice storm 15 */ ! { 15, 8, 30, 12}, /* wonder */ ! { 30, 30, 85, 34}, /* meteor storm */ ! { 42, 45, 95, 200}, /* mana storm */ ! ! { 3, 3, 25, 3}, /* cure light wounds */ ! { 3, 3, 25, 2}, /* find traps 20 */ ! { 99, 0, 0, 0}, /* detect treasure */ ! { 99, 0, 0, 0}, /* detect objects */ ! { 11, 7, 75, 6}, /* identify */ ! { 15, 5, 40, 6}, /* detect invisible */ ! { 25, 5, 50, 8}, /* detect evil 25 */ ! { 5, 5, 30, 6}, /* trap destruction */ ! ! { 5, 5, 35, 4}, /* cure poison */ ! { 7, 6, 35, 5}, /* teleport self */ ! { 17, 9, 50, 7}, /* slow monster */ ! { 23, 12, 60, 8}, /* teleport other 30 */ ! { 25, 12, 65, 10}, /* haste */ ! { 28, 17, 65, 20}, /* teleport level */ ! ! { 7, 7, 20, 28}, /* door creation */ ! { 9, 7, 45, 8}, /* satisfy hunger */ ! { 7, 6, 30, 5}, /* spear of light 35 */ ! { 9, 7, 44, 8}, /* stone to mud */ ! { 9, 12, 40, 44}, /* stair creation */ ! { 9, 7, 75, 9}, /* recharge 1 */ ! { 25, 30, 95, 160}, /* recharge 3 */ ! { 32, 60, 95, 180}, /* elemental brand 40 */ ! ! { 3, 4, 30, 1}, /* confusion */ ! { 5, 5, 30, 4}, /* sleep 1 */ ! { 13, 7, 50, 6}, /* sleep 3 */ ! { 20, 15, 60, 24}, /* bedlam */ ! { 33, 25, 95, 25}, /* genocide 45 */ ! { 40, 75, 80, 100}, /* mass genocide */ ! { 45, 40, 80, 80}, /* rend soul */ ! ! { 10, 5, 50, 10}, /* resist cold */ ! { 10, 5, 50, 10}, /* resist fire */ ! { 99, 0, 0, 0}, /* heroism 50 */ ! { 99, 0, 0, 0}, /* berserker */ ! { 25, 10, 45, 20}, /* resist poison */ ! { 28, 20, 65, 30}, /* resistance */ ! { 32, 24, 75, 30}, /* shield */ ! { 99, 0, 0, 0}, /* was GoI 55 */ ! ! { 30, 10, 70, 10}, /* detect enchantment */ ! { 30, 25, 75, 15}, /* WoR */ ! { 11, 7, 45, 9}, /* polymorph other */ ! { 20, 18, 60, 24}, /* earthquake */ ! { 33, 21, 80, 15}, /* destruction 60 */ ! { 35, 30, 60, 25}, /* rift */ ! { 38, 40, 90, 40}, /* chaos strike */ ! { 99, 0, 0, 0} /* (blank) */ } }, *************** *** 1837,1913 **** { ! { 99, 0, 0, 0}, ! { 5, 1, 50, 1}, ! { 7, 2, 55, 1}, ! { 9, 3, 60, 1}, ! { 10, 3, 60, 1}, ! { 11, 4, 65, 1}, ! { 12, 4, 65, 1}, ! { 13, 5, 70, 1}, ! { 99, 0, 0, 0}, ! ! { 15, 6, 75, 1}, ! { 99, 0, 0, 0}, ! { 17, 7, 80, 1}, ! { 19, 8, 85, 1}, ! { 21, 9, 90, 1}, ! { 22, 9, 50, 1}, ! { 23, 10, 95, 1}, ! { 99, 0, 0, 0}, ! { 24, 11, 70, 1}, ! ! { 25, 12, 95, 1}, ! { 27, 15, 99, 1}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 28, 18, 50, 2}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! ! { 99, 0, 0, 0}, ! { 30, 20, 99, 6}, ! { 99, 0, 0, 0}, ! { 32, 25, 70, 6}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! ! { 7, 7, 20, 25}, ! { 9, 12, 40, 45}, ! { 15, 17, 60, 30}, ! { 99, 0, 0, 0}, ! { 30, 35, 75, 15}, ! { 13, 16, 50, 10}, ! { 18, 20, 60, 10}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! ! { 5, 5, 50, 10}, ! { 10, 10, 70, 40}, ! { 35, 40, 95, 100}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! ! { 10, 12, 50, 40}, ! { 10, 12, 50, 40}, ! { 10, 12, 50, 40}, ! { 15, 20, 75, 60}, ! { 25, 30, 85, 80}, ! ! { 10, 11, 50, 40}, ! { 15, 20, 75, 80}, ! { 20, 25, 80, 160}, ! { 26, 30, 50, 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} } }, --- 1850,1917 ---- { ! { 99, 0, 0, 0}, /* mm 0 */ ! { 5, 1, 50, 1}, /* det m */ ! { 7, 2, 55, 1}, /* phase */ ! { 9, 3, 60, 1}, /* light */ ! ! { 99, 0, 0, 0}, /* stinky */ ! { 99, 0, 0, 0}, /* lightning 5 */ ! { 99, 0, 0, 0}, /* frost */ ! { 99, 0, 0, 0}, /* acid */ ! { 99, 0, 0, 0}, /* fire */ ! { 35, 25, 80, 50}, /* shock wave */ ! { 99, 0, 0, 0}, /* explosion 10 */ ! ! { 25, 20, 60, 15}, /* cloudkill */ ! { 99, 0, 0, 0}, /* frost ball */ ! { 99, 0, 0, 0}, /* acid ball */ ! { 99, 0, 0, 0}, /* ice storm 15 */ ! { 10, 10, 70, 10}, /* wonder */ ! { 99, 0, 0, 0}, /* meteor */ ! { 99, 0, 0, 0}, /* mana */ ! ! { 11, 4, 65, 1}, /* cure light */ ! { 13, 5, 50, 1}, /* traps 20 */ ! { 10, 3, 60, 1}, /* treasure */ ! { 12, 4, 65, 1}, /* objects */ ! { 28, 18, 60, 2}, /* identify */ ! { 20, 10, 50, 4}, /* invisible */ ! { 30, 15, 70, 6}, /* evil 25 */ ! { 14, 7, 60, 2}, /* trap destruct */ ! ! { 21, 9, 90, 1}, /* cure poison */ ! { 22, 9, 50, 1}, /* teleport */ ! { 99, 0, 0, 0}, /* slow mon */ ! { 31, 25, 70, 3}, /* tele other 30 */ ! { 32, 25, 70, 6}, /* haste */ ! { 25, 20, 60, 20}, /* tele level */ ! ! { 17, 7, 30, 15}, /* doors */ ! { 25, 12, 95, 1}, /* hunger */ ! { 23, 10, 95, 1}, /* spear light 35 */ ! { 24, 11, 70, 1}, /* stone/mud */ ! { 25, 12, 40, 25}, /* stairs */ ! { 27, 15, 99, 1}, /* recharge 1 */ ! { 35, 40, 95, 100}, /* recharge 3 */ ! { 30, 60, 80, 120}, /* elemental brand 40 */ ! ! { 16, 12, 50, 40}, /* RC */ ! { 19, 12, 50, 40}, /* RF */ ! { 22, 11, 50, 40}, /* hero 50 */ ! { 25, 25, 60, 160}, /* berserker */ ! { 26, 20, 75, 60}, /* RP */ ! { 31, 30, 85, 80}, /* R */ ! { 34, 20, 75, 80}, /* shield */ ! { 99, 0, 0, 0}, /* was GoI 55 */ ! ! { 27, 10, 50, 10}, /* detect enchantment */ ! { 36, 40, 80, 18}, /* WoR */ ! { 99, 0, 0, 0}, /* poly */ ! { 99, 0, 0, 0}, /* quake */ ! { 99, 0, 0, 0}, /* destruct 60 */ ! { 99, 0, 0, 0}, /* rift */ ! { 99, 0, 0, 0}, /* chaos */ ! { 99, 0, 0, 0} /* (blank) */ } }, *************** *** 1926,2002 **** { ! { 3, 1, 30, 1}, ! { 3, 2, 35, 2}, ! { 3, 2, 35, 2}, ! { 5, 3, 35, 1}, ! { 99, 0, 0, 0}, ! { 5, 3, 40, 1}, ! { 99, 0, 0, 0}, ! { 5, 4, 45, 2}, ! { 7, 5, 40, 3}, ! ! { 7, 6, 40, 2}, ! { 9, 7, 40, 3}, ! { 9, 8, 45, 3}, ! { 11, 8, 40, 3}, ! { 11, 9, 45, 3}, ! { 13, 10, 45, 3}, ! { 13, 11, 55, 4}, ! { 15, 12, 50, 4}, ! { 15, 13, 50, 4}, ! ! { 17, 17, 55, 3}, ! { 17, 17, 90, 4}, ! { 21, 17, 55, 3}, ! { 21, 19, 60, 3}, ! { 23, 25, 90, 3}, ! { 23, 20, 60, 3}, ! { 25, 20, 60, 3}, ! { 25, 21, 65, 3}, ! ! { 27, 21, 65, 3}, ! { 29, 23, 95, 3}, ! { 31, 25, 70, 3}, ! { 33, 25, 75, 4}, ! { 35, 25, 80, 5}, ! { 37, 30, 95, 10}, ! { 99, 0, 0, 0}, ! ! { 8, 17, 20, 25}, ! { 19, 22, 40, 21}, ! { 25, 27, 60, 17}, ! { 30, 28, 60, 16}, ! { 35, 35, 75, 13}, ! ! { 20, 16, 50, 6}, ! { 22, 19, 60, 9}, ! { 30, 25, 70, 13}, ! { 33, 35, 75, 25}, ! { 35, 45, 85, 35}, ! { 99, 0, 0, 0}, ! ! { 10, 15, 50, 4}, ! { 15, 20, 70, 25}, ! { 35, 60, 95, 115}, ! { 99, 0, 0, 0}, ! { 99, 0, 0, 0}, ! { 8, 15, 50, 30}, ! { 8, 15, 50, 30}, ! { 8, 15, 50, 30}, ! { 16, 25, 75, 50}, ! { 25, 40, 85, 70}, ! ! { 10, 15, 50, 40}, ! { 15, 20, 75, 80}, ! { 25, 30, 80, 125}, ! { 32, 50, 50, 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} } }, --- 1930,2006 ---- { ! { 3, 1, 30, 1}, /* mm 0 */ ! { 3, 2, 35, 2}, /* detect mon */ ! { 3, 2, 35, 2}, /* phase */ ! { 5, 3, 35, 1}, /* light */ ! ! { 7, 5, 40, 3}, /* stinky */ ! { 9, 7, 40, 3}, /* lightning 5 */ ! { 15, 12, 50, 4}, /* frost */ ! { 20, 16, 50, 6}, /* acid */ ! { 25, 20, 60, 3}, /* fire */ ! { 99, 0, 0, 0}, /* shock */ ! { 99, 0, 0, 0}, /* explosion 10 */ ! ! { 22, 19, 60, 6}, /* cloudkill */ ! { 27, 21, 65, 6}, /* frost ball */ ! { 30, 24, 70, 6}, /* acid ball */ ! { 34, 28, 80, 9}, /* fire ball */ ! { 35, 35, 70, 10}, /* ice storm 15 */ ! { 20, 15, 80, 10}, /* wonder */ ! { 36, 45, 80, 35}, /* meteor */ ! { 99, 0, 0, 0}, /* mana */ ! ! { 5, 3, 40, 1}, /* cure light */ ! { 5, 4, 45, 2}, /* traps 20 */ ! { 99, 0, 0, 0}, /* treasure */ ! { 99, 0, 0, 0}, /* objects */ ! { 23, 25, 90, 3}, /* identify */ ! { 25, 15, 50, 4}, /* invisible */ ! { 30, 15, 50, 6}, /* evil 25 */ ! { 9, 8, 45, 3}, /* trap destruct */ ! ! { 11, 9, 45, 3}, /* cure poison */ ! { 13, 10, 45, 3}, /* teleport */ ! { 25, 21, 65, 3}, /* slow mon */ ! { 31, 25, 70, 3}, /* tele other 30 */ ! { 33, 25, 75, 4}, /* haste */ ! { 34, 27, 60, 15}, /* tele level */ ! ! { 8, 17, 20, 25}, /* door create */ ! { 17, 17, 55, 3}, /* satisfy hunger */ ! { 13, 11, 55, 4}, /* spear light 35 */ ! { 15, 13, 50, 4}, /* stone/mud */ ! { 18, 22, 40, 21}, /* stairs */ ! { 29, 17, 90, 4}, /* recharge 1 */ ! { 35, 50, 95, 115}, /* recharge 3 */ ! { 31, 60, 95, 180}, /* elemental brand 40 */ ! ! { 7, 6, 40, 2}, /* confusion */ ! { 11, 8, 40, 3}, /* sleep 1 */ ! { 23, 20, 60, 4}, /* sleep 3 */ ! { 32, 30, 70, 12}, /* bedlam */ ! { 99, 0, 0, 0}, /* geno 45 */ ! { 99, 0, 0, 0}, /* mass geno */ ! { 99, 0, 0, 0}, /* rend soul */ ! ! { 8, 15, 50, 30}, /* RC */ ! { 8, 15, 50, 30}, /* RF */ ! { 18, 15, 50, 40}, /* heroism 50 */ ! { 23, 30, 80, 35}, /* berserk */ ! { 26, 25, 75, 50}, /* RP */ ! { 31, 40, 85, 70}, /* R */ ! { 15, 20, 75, 80}, /* shield */ ! { 99, 0, 0, 0}, /* was GoI 55 */ ! ! { 35, 20, 70, 10}, /* enchantment */ ! { 35, 35, 75, 16}, /* WoR */ ! { 21, 19, 60, 3}, /* poly */ ! { 30, 28, 60, 16}, /* quake */ ! { 37, 30, 95, 10}, /* destruct 60 */ ! { 99, 0, 0, 0}, /* rift */ ! { 99, 0, 0, 0}, /* chaos */ ! { 99, 0, 0, 0} /* (blank) */ } }, *************** *** 2093,2109 **** * Spells in each book (mage spells then priest spells) */ ! u32b spell_flags[2][9][2] = { { /*** Mage spell books ***/ ! { 0x000001ff, 0x00000000 }, ! { 0x0003fe00, 0x00000000 }, ! { 0x03fc0000, 0x00000000 }, ! { 0xfc000000, 0x00000001 }, ! { 0x00000000, 0x003e0000 }, ! { 0x00000000, 0x0000003e }, ! { 0x00000000, 0x0001f000 }, ! { 0x00000000, 0x07c00000 }, ! { 0x00000000, 0x00000fc0 } }, --- 2097,2116 ---- * Spells in each book (mage spells then priest spells) */ ! u32b spell_flags[2][12][2] = { { /*** Mage spell books ***/ ! { 0x0018000f, 0x00000000 }, ! { 0x03f00002, 0x01000000 }, ! { 0x000007f1, 0x00000000 }, ! { 0xf0000004, 0x02000001 }, ! { 0x08080000, 0x001c0004 }, ! { 0x04000008, 0x000001fa }, ! { 0x00000000, 0x0000fe00 }, ! { 0x0006f800, 0x00000000 }, ! { 0x00000000, 0x00730000 }, ! { 0x00010000, 0x7c000000 }, ! { 0x00000000, 0x00000000 }, ! { 0x00000000, 0x00000000 } }, *************** *** 2118,2122 **** { 0x00000000, 0x000001f0 }, { 0x00000000, 0x000fc000 }, ! { 0x00000000, 0x00003e00 } } }; --- 2125,2132 ---- { 0x00000000, 0x000001f0 }, { 0x00000000, 0x000fc000 }, ! { 0x00000000, 0x00003e00 }, ! { 0x00000000, 0x00000000 }, ! { 0x00000000, 0x00000000 }, ! { 0x00000000, 0x00000000 } } }; *************** *** 2131,2216 **** { ! /* Magic for Beginners (sval 0) */ "Magic Missile", "Detect Monsters", "Phase Door", "Light Area", ! "Treasure Detection", "Cure Light Wounds", ! "Object Detection", "Find Hidden Traps/Doors", ! "Stinking Cloud", ! /* Conjurings and Tricks (sval 1) */ ! "Confuse Monster", ! "Lightning Bolt", "Trap/Door Destruction", - "Sleep I", "Cure Poison", - "Teleport Self", - "Spear of Light", - "Frost Bolt", - "Turn Stone to Mud", ! /* Incantations and Illusions (sval 2) */ ! "Satisfy Hunger", ! "Recharge Item I", ! "Sleep II", ! "Polymorph Other", ! "Identify", ! "Sleep III", ! "Fire Bolt", "Slow Monster", - - /* Sorcery and Evocations (sval 3) */ - "Frost Ball", - "Recharge Item II", "Teleport Other", "Haste Self", ! "Fire Ball", ! "Word of Destruction", ! "Genocide", ! /* Mordenkainen's Escapes (sval 5) */ "Door Creation", "Stair Creation", ! "Teleport Level", ! "Earthquake", ! "Word of Recall", ! ! /* Raal's Tome of Destruction (sval 8) */ ! "Acid Bolt", ! "Cloud Kill", ! "Acid Ball", ! "Ice Storm", ! "Meteor Swarm", ! "Mana Storm", ! /* Kelek's Grimoire of Power (sval 6) */ ! "Detect Evil", ! "Detect Enchantment", ! "Recharge Item III", "Genocide", "Mass Genocide", ! /* Resistance of Scarabtarices (sval 4) */ ! "Resist Fire", "Resist Cold", ! "Resist Acid", "Resist Poison", "Resistance", - - /* Tenser's transformations... (sval 7) */ - "Heroism", "Shield", ! "Berserker", ! "Essence of Speed", ! "Globe of Invulnerability", ! "(blank)", ! "(blank)", ! "(blank)", ! "(blank)", ! "(blank)" }, --- 2141,2245 ---- { ! /* I apologize for the order of these spells. They were ! shuffled around more than once as I experimented with ! various combinations of books/levels/classes/etc. -GJW */ ! /* This first group is isolated so that the beginner's book is ! in the "right" order, or as close as it'll get. */ "Magic Missile", "Detect Monsters", "Phase Door", "Light Area", ! ! /* Evocations -- offensive spells (includes magic missile) ! "Kill, kill, hate, hate, ! Murder, murder, mutilate!" ! -- CWRU Marching Spartans, traditional cheer */ ! "Stinking Cloud", ! "Lightning Bolt", ! "Frost Bolt", ! "Acid Bolt", ! "Fire Bolt", ! "Shock Wave", ! "Explosion", ! ! /* Advanced Evocations -- some more of the offensive spells ! have been scattered.... (Wonder is actually in Chaos.) */ ! "Cloudkill", ! "Frost Ball", ! "Acid Ball", ! "Fire Ball", ! "Ice Storm", ! "Wonder", ! "Meteor Swarm", ! "Mana Storm", ! ! /* Here for obscure reasons.... */ "Cure Light Wounds", ! ! /* Divinations -- informative spells (includes detect monster ! and detect enchantment) */ "Find Hidden Traps/Doors", ! "Treasure Detection", ! "Object Detection", ! "Identify", ! "Detect Invisible", ! "Detect Evil", ! /* Here for obscure reasons.... */ "Trap/Door Destruction", "Cure Poison", ! /* Manipluations of Time and Space; we need more of these ! (Rift??). Includes phase door. */ ! "Teleport Self", "Slow Monster", "Teleport Other", "Haste Self", ! "Teleport Level", ! /* Spells of Creation and Alteration; sort of a "utility" book ! (incl. light area & stone to mud, but not satisfy hunger) */ "Door Creation", + "Satisfy Hunger", + "Spear of Light", + "Turn Stone to Mud", "Stair Creation", ! "Lesser Recharging", ! "Greater Recharging", ! "Elemental Brand", ! /* Black Magic (mua-ha-ha) */ ! "Confuse Monster", ! "Sleep Monster", ! "Mass Sleep", ! "Bedlam", "Genocide", "Mass Genocide", + "Rend Soul", ! /* Resistances and Defenses; "White Magic". Some work is ! needed here. */ "Resist Cold", ! "Resist Fire", ! "Heroism", ! "Berserker", "Resist Poison", "Resistance", "Shield", ! "(blank)", /* Globe of Invulnerability has been nuked */ ! ! /* Here for obscure reasons.... */ ! "Detect Enchantment", ! "Word of Recall", ! ! /* Chaos; Wild Magic; Assorted Mayhem and Destruction. More of ! these are needed. Includes Wonder. */ ! "Polymorph Other", ! "Earthquake", ! "Word of Destruction", ! "Rift", ! "Chaos Strike", ! "(blank)" /* reserved for future expansion */ }, diff -c2 -w -r angband-281/src/wizard1.c gw-angband-2.8.1/src/wizard1.c *** angband-281/src/wizard1.c Mon Mar 3 22:39:25 1997 --- gw-angband-2.8.1/src/wizard1.c Thu May 15 14:44:10 1997 *************** *** 488,491 **** --- 488,492 ---- { TR1_BRAND_FIRE, "Flame Tongue" }, { TR1_BRAND_COLD, "Frost Brand" }, + { TR1_BRAND_POIS, "Venom" }, { TR1_IMPACT, "Earthquake impact on hit" }, *************** *** 967,971 **** char buf[80]; ! sprintf(buf, "Artifact Spoilers for Angband Version %d.%d.%d", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); spoiler_underline(buf); --- 968,972 ---- char buf[80]; ! sprintf(buf, "Artifact Spoilers for GW-Angband Version %d.%d.%d", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); spoiler_underline(buf); *************** *** 1310,1314 **** /* Dump the header */ ! fprintf(fff, "Monster Spoilers for Angband Version %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); fprintf(fff, "------------------------------------------\n\n"); --- 1311,1315 ---- /* Dump the header */ ! fprintf(fff, "Monster Spoilers for GW-Angband Version %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); fprintf(fff, "------------------------------------------\n\n"); *************** *** 1527,1531 **** /* Dump the header */ ! sprintf(buf, "Monster Spoilers for Angband Version %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); spoil_out(buf); --- 1528,1532 ---- /* Dump the header */ ! sprintf(buf, "Monster Spoilers for GW-Angband Version %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); spoil_out(buf); diff -c2 -w -r angband-281/src/xtra1.c gw-angband-2.8.1/src/xtra1.c *** angband-281/src/xtra1.c Mon Mar 3 22:39:58 1997 --- gw-angband-2.8.1/src/xtra1.c Thu May 15 14:45:35 1997 *************** *** 737,740 **** --- 737,745 ---- { int pct, len; + /* Customized health bar: letters for fear/sleep status -GJW */ + const char hb_normal[] = "**********"; + const char hb_fearful[] = "FFFFFFFFFF"; + const char hb_sleeping[] = "SSSSSSSSSS"; + const char *hb_ptr = hb_normal; monster_type *m_ptr = &m_list[health_who]; *************** *** 759,766 **** /* Afraid */ ! if (m_ptr->monfear) attr = TERM_VIOLET; /* Asleep */ ! if (m_ptr->csleep) attr = TERM_BLUE; /* Convert percent into "health" */ --- 764,771 ---- /* Afraid */ ! if (m_ptr->monfear) { attr = TERM_VIOLET; hb_ptr = hb_fearful; } /* Asleep */ ! if (m_ptr->csleep) { attr = TERM_BLUE; hb_ptr = hb_sleeping; } /* Convert percent into "health" */ *************** *** 771,775 **** /* Dump the current "health" (use '*' symbols) */ ! Term_putstr(COL_INFO + 1, ROW_INFO, len, attr, "**********"); } --- 776,780 ---- /* Dump the current "health" (use '*' symbols) */ ! Term_putstr(COL_INFO + 1, ROW_INFO, len, attr, hb_ptr); } *************** *** 1900,1903 **** --- 1905,1910 ---- if (p_ptr->prace == RACE_HIGH_ELF) p_ptr->see_inv = TRUE; + /* Kobold */ + if (p_ptr->prace == RACE_KOBOLD) p_ptr->resist_pois = TRUE; /* Start with "normal" speed */ *************** *** 2335,2339 **** /* Hack -- Reward High Level Rangers using Bows */ ! if ((p_ptr->pclass == 4) && (p_ptr->tval_ammo == TV_ARROW)) { /* Extra shot at level 20 */ --- 2342,2346 ---- /* Hack -- Reward High Level Rangers using Bows */ ! if ((p_ptr->pclass == CLASS_RANGER) && (p_ptr->tval_ammo == TV_ARROW)) { /* Extra shot at level 20 */ *************** *** 2349,2352 **** --- 2356,2363 ---- /* Require at least one shot */ if (p_ptr->num_fire < 1) p_ptr->num_fire = 1; + + /* Hack -- give high-level warriors fear resistance -GJW */ + if ((p_ptr->pclass == CLASS_WARRIOR) && (p_ptr->lev >= 25)) + p_ptr->resist_fear = TRUE; } *************** *** 2386,2393 **** /* Mage */ ! case CLASS_MAGE: num = 4; wgt = 40; mul = 2; break; /* Priest */ ! case CLASS_PRIEST: num = 5; wgt = 35; mul = 3; break; /* Rogue */ --- 2397,2404 ---- /* Mage */ ! case CLASS_MAGE: num = 4; wgt = 35; mul = 3; div *= 2; break; /* Priest */ ! case CLASS_PRIEST: num = 5; wgt = 40; mul = 2; break; /* Rogue */ *************** *** 2398,2402 **** /* Paladin */ ! case CLASS_PALADIN: num = 5; wgt = 30; mul = 4; break; } --- 2409,2413 ---- /* Paladin */ ! case CLASS_PALADIN: num = 5; wgt = 35; mul = 4; break; } *************** *** 2437,2441 **** /* Priest weapon penalty for non-blessed edged weapons */ ! if ((p_ptr->pclass == 2) && (!p_ptr->bless_blade) && ((o_ptr->tval == TV_SWORD) || (o_ptr->tval == TV_POLEARM))) { --- 2448,2452 ---- /* Priest weapon penalty for non-blessed edged weapons */ ! if ((p_ptr->pclass == CLASS_PRIEST) && (!p_ptr->bless_blade) && ((o_ptr->tval == TV_SWORD) || (o_ptr->tval == TV_POLEARM))) { diff -c2 -w -r angband-281/src/xtra2.c gw-angband-2.8.1/src/xtra2.c *** angband-281/src/xtra2.c Mon Mar 3 22:40:22 1997 --- gw-angband-2.8.1/src/xtra2.c Thu May 15 13:52:50 1997 *************** *** 697,700 **** --- 697,701 ---- + #if 0 /* * Set "p_ptr->invuln", notice observable changes *************** *** 745,748 **** --- 746,750 ---- return (TRUE); } + #endif