summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/edit/ow_info.txt140
-rw-r--r--lib/mods/theme/edit/ow_info.txt424
-rw-r--r--src/defines.h1
-rw-r--r--src/externs.h1
-rw-r--r--src/init1.c11
-rw-r--r--src/loadsave.c4
-rw-r--r--src/store.c932
-rw-r--r--src/tables.c3
-rw-r--r--src/types.h16
-rw-r--r--src/variable.c2
10 files changed, 381 insertions, 1153 deletions
diff --git a/lib/edit/ow_info.txt b/lib/edit/ow_info.txt
index a1e3d0a3..4bd7c41a 100644
--- a/lib/edit/ow_info.txt
+++ b/lib/edit/ow_info.txt
@@ -18,430 +18,430 @@
V:2.0.0
N:0:Bilbo the Friendly(Hobbit)
-I:20000:170:108:5:15
+I:20000:120
C:120:100:80
L:Elf | Half-Elf | High-Elf | Dunadan | Hobbit | Dwarf | RohanKnight
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold
N:1:Uldrik(Human)
-I:20000:170:108:1:1
+I:20000:120
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:2:Otick(Human)
-I:100:170:108:4:10
+I:100:120
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:3:Merana(Human)
-I:0:170:108:1:1
+I:0:120
C:200:100:95
L:Human
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:4:Mirimbar(High-Elf)
-I:0:170:108:1:1
+I:0:120
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:5:Raistlin the Chicken(Human)
-I:20000:175:108:4:12
+I:20000:130
C:120:100:80
L:Human
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:6:Sultan the Midget(Gnome)
-I:30000:170:107:5:15
+I:30000:120
C:120:100:80
L:Gnome | Dwarf | Petty-Dwarf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:7:Lyar-el the Comely(Elf)
-I:30000:165:107:6:18
+I:30000:120
C:120:100:80
L:Elf | Half-Elf | Dark-Elf | High-Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:8:Kon-Dar the Ugly(Half-Orc)
-I:5000:210:115:5:7
+I:5000:140
C:120:100:80
L:Orc | Troll | Half-Ogre | Beorning | Kobold
H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
N:9:Darg-Low the Grim(Human)
-I:10000:190:111:4:9
+I:10000:130
C:120:100:80
L:Human
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:10:Decado the Handsome(Dunadan)
-I:25000:200:112:4:10
+I:25000:140
C:120:100:80
L:Human | Dunadan | RohanKnight
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:11:Wieland the Smith(Dwarf)
-I:30000:200:112:4:5
+I:30000:140
C:120:100:80
L:Gnome | Dwarf | Petty-Dwarf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:12:Arnold the Beastly(Barbarian)
-I:5000:210:115:6:6
+I:5000:140
C:120:100:80
N:13:Arndal Beast-Slayer(Half-Elf)
-I:10000:185:110:5:9
+I:10000:130
C:120:100:80
L:Elf | Half-Elf | Dark-Elf | High-Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:14:Eddie Beast-Master(Half-Orc)
-I:25000:190:115:5:7
+I:25000:140
C:120:100:80
L:Orc | Troll | Half-Ogre | Beorning | Kobold
H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
N:15:Oglign Dragon-Slayer(Dwarf)
-I:30000:195:112:4:8
+I:30000:130
C:120:100:80
L:Gnome | Dwarf | Petty-Dwarf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:16:Aragorn(Dunadan)
-I:20000:200:112:4:10
+I:20000:140
C:120:100:80
L:Human | Dunadan | RohanKnight
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:17:Sondar(Human)
-I:0:200:112:4:10
+I:0:140
C:120:100:80
N:18:Celebor(Half-Elf)
-I:100:170:108:4:10
+I:100:120
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:19:Sharra(Human)
-I:25000:200:112:4:10
+I:25000:140
C:120:100:80
L:Human | Dunadan | RohanKnight
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:20:Hjolgar(Barbarian)
-I:5000:210:115:6:6
+I:5000:140
C:120:100:80
#L:Warrior |
N:21:Tanistil(Elf)
-I:5000:210:115:6:6
+I:5000:140
C:120:100:80
#L:Mage | Sorceror | Thaumaturgist
#H:Warrior |
N:22:Eldore(Human)
-I:5000:210:115:6:6
+I:5000:140
C:120:100:80
#L:Priest
#H:Necromancer
N:23:Vilios(Human)
-I:5000:210:115:6:6
+I:5000:140
C:120:100:80
#L:Paladin
#H:Necromancer
N:24:Angros(Elf)
-I:5000:210:115:6:6
+I:5000:140
C:120:100:80
#L:Ranger
N:25:Palano(Thunderlord)
-I:0:210:115:6:6
+I:0:140
C:120:100:80
L:Thunderlord
N:26:Ludwig the Humble(Dwarf)
-I:5000:175:109:6:15
+I:5000:130
C:120:100:80
L:Gnome | Dwarf | Petty-Dwarf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:27:Gunnar the Paladin(Half-Troll)
-I:10000:185:110:5:23
+I:10000:130
C:120:100:80
L:Orc | Troll | Half-Ogre | Beorning | Kobold
H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
N:28:Torin the Chosen(High-Elf)
-I:25000:180:107:6:20
+I:25000:130
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:29:Sarastro the Wise(Human)
-I:30000:185:109:5:15
+I:30000:130
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:30:Mauser the Chemist(Half-Elf)
-I:10000:190:111:5:8
+I:10000:130
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:31:Wizzle the Chaotic(Hobbit)
-I:10000:190:110:6:8
+I:10000:130
C:120:100:80
L:Elf | Half-Elf | High-Elf | Dunadan | Hobbit | Dwarf | RohanKnight
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:32:Midas the Greedy(Gnome)
-I:15000:200:116:6:9
+I:15000:140
C:120:100:80
L:Gnome | Dwarf | Petty-Dwarf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:33:Ja-Far the Alchemist(Elf)
-I:15000:220:111:4:9
+I:15000:140
C:120:100:80
L:Elf | Half-Elf | Dark-Elf | High-Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:34:Ariel the Sorceress(Half-Elf)
-I:20000:200:110:7:8
+I:20000:140
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:35:Buggerby the Great(Gnome)
-I:20000:215:113:6:10
+I:20000:140
C:120:100:80
L:Gnome | Dwarf | Petty-Dwarf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:36:Inglorian the Mage(Human)
-I:30000:200:110:7:10
+I:30000:140
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:37:Luthien Starshine(High-Elf)
-I:30000:175:110:5:11
+I:30000:130
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:38:Gary Gygaz(Half-Troll)
-I:20000:250:150:10:5
+I:20000:180
C:120:100:80
#L:Rogue
H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
N:39:Histor the Goblin(Half-Orc)
-I:20000:250:150:10:5
+I:20000:180
C:120:100:80
#L:Rogue
H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
N:40:Zorak the Smart(Dwarf)
-I:30000:250:150:10:5
+I:30000:180
C:120:100:80
#L:Rogue
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:41:Tipo the Fair(Human)
-I:30000:250:150:10:5
+I:30000:180
C:120:100:80
#L:Rogue
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:42:Dolaf the Greedy(Human)
-I:10000:175:108:4:12
+I:10000:130
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
N:43:Odnar the Sage(High-Elf)
-I:15000:120:105:6:16
+I:15000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:44:Gandar the Neutral(Dark-Elf)
-I:25000:120:110:7:19
+I:25000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold
N:45:Ro-sha the Patient(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
L:Elf | Half-Elf | Dark-Elf | High-Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:46:N'rak the Summoner(Human)
-I:10000:175:108:4:12
+I:10000:130
C:120:100:80
L:Human | Dunadan | RohanKnight
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:47:Esperion the Beastlover(High-Elf)
-I:15000:120:105:6:16
+I:15000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:48:Flarim the Shopkeeper(Dunadan)
-I:25000:120:110:7:19
+I:25000:110
C:120:100:80
L:Human | Dunadan | RohanKnight
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:49:Tril-akheb the Supreme(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
L:Elf | Half-Elf | Dark-Elf | High-Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:50:Dorchel(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
L:Elf | Half-Elf | Dark-Elf | High-Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:51:Galadriel(High-Elf)
-I:15000:120:105:6:16
+I:15000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:52:Celeborn(High-Elf)
-I:15000:120:105:6:16
+I:15000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:53:Aulendil(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Warrior |
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:54:Valceronwe(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Mage | Thaumaturgist | Sorceror
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:55:Voronwe(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Priest | Paladin
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:56:Celegail(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Ranger
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:57:Turgon(High-Elf)
-I:30000:120:105:6:16
+I:30000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:58:Pengolodh(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:59:Aerandir(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:60:Celebrimbor(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
#L:Warrior |
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:61:Lomelosse(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf |
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:62:Arlindel(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
#L:Harper | Ranger
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:63:Sulraen(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
#L:Mage | Sorceror
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:64:Firiel(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf |
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:65:Earendur(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:66:Glorfindel(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf
#L:Ranger
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:67:Ecthelion(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf
#L:Paladin
H:Orc | Troll | Half-Ogre | Beorning | Kobold |
N:68:Kanris(Human)
-I:5000:210:115:6:6
+I:5000:140
C:120:100:80
#L:Merchant
#H:Rogue
N:69:Barliman Butterbur(Human)
-I:100:170:108:4:10
+I:100:120
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
diff --git a/lib/mods/theme/edit/ow_info.txt b/lib/mods/theme/edit/ow_info.txt
index bf1283fb..92f0076a 100644
--- a/lib/mods/theme/edit/ow_info.txt
+++ b/lib/mods/theme/edit/ow_info.txt
@@ -19,7 +19,7 @@ V:2.0.0
# The zero index owner. If she owns a shop, there is a problem. :P
N:0:Bell Goodchild(Hobbit)
-I:20000:170:108:5:15
+I:20000:120
C:120:100:80
L:Elf | Half-Elf | High-Elf | Dunadan | Hobbit | Dwarf | RohanKnight
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Druadan | Dark-Elf
@@ -27,25 +27,25 @@ H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Druadan | Dark-Elf
### The General Store - 1 ###
N:1:Balin(Dwarf)
-I:25000:180:108:2:2
+I:25000:130
C:150:100:50
L:Dwarf | Petty-Dwarf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Troll
N:2:Berylla Boffin(Hobbit)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | Hobbit
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
N:3:Adrahil(Half-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:Half-Elf | High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll
N:4:Aegnor(Wood-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll | Easterling
@@ -53,25 +53,25 @@ H:Dragon | Demon | Orc | Half-Ogre | Troll | Easterling
### The Armoury - 2 ###
N:5:Bifur(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Hobbit | Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:6:Lalia Clayhanger(Hobbit)
-I:25000:180:108:2:2
+I:25000:130
C:125:100:50
L:Human | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:7:Alcarin(Human)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | Half-Elf | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Petty-Dwarf | Troll | Easterling
N:8:Alatariel(High-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll | Easterling
@@ -79,25 +79,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll | Easterling
### The Weaponsmith - 3 ###
N:9:Bofur(Dwarf)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:70
L:Human | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:10:Daisy Gamgee(Hobbit)
-I:20000:190:109:3:4
+I:20000:130
C:110:100:80
L:Human | Hobbit
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:11:Beregond(Dunadan)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
N:12:Amarie(Dark-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:125:100:50
L:Dark-Elf | Elf
H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Dwarf | Troll | Easterling
@@ -105,25 +105,25 @@ H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Dwarf | Troll | Easterling
### The Temple - 4 ###
N:13:Bombur(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Half-Elf | Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:14:Dora Baggins(Hobbit)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:Human | High-Elf | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:15:Bergil(Half-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:125:100:50
L:Human | Half-Elf | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Troll | Easterling
N:16:Amdir(Wood-Elf)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:High-Elf | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll | Easterling
@@ -131,25 +131,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll | Easterling
### The Alchemist - 5 ###
N:17:Borin(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:110:100:80
L:Petty-Dwarf | Dwarf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Elf | Troll
N:18:Elfstan Fairbairn(Hobbit)
-I:10000:200:110:4:8
+I:10000:140
C:125:100:50
L:Human | Half-Elf | High-Elf | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll
N:19:Cemendur(Human)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | Half-Elf | RohanKnight | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Troll | Easterling
N:20:Annael(High-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:70
L:Human | Half-Elf | High-Elf | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll
@@ -157,25 +157,25 @@ H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll
### The Magic Shop - 6 ###
N:21:Dis(Dwarf)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:50
L:Petty-Dwarf | Dwarf | Half-Elf | Dunadan
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Human | Troll | Eagle
N:22:Folco Boffin(Hobbit)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Hobbit
H:Dragon | Demon | Orc | Troll
N:23:Ciryon(Dunadan)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | Half-Elf | High-Elf | RohanKnight | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
N:24:Arminas(Dark-Elf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | Dark-Elf | Elf
H:Dragon | Demon | Beorning | Orc | High-Elf | Half-Ogre | Petty-Dwarf | Troll | Easterling
@@ -183,25 +183,25 @@ H:Dragon | Demon | Beorning | Orc | High-Elf | Half-Ogre | Petty-Dwarf | Troll |
### The Black Market - 7 ###
N:25:Dori(Dwarf)
-I:30000:210:120:8:8
+I:30000:150
C:110:100:90
L:Dwarf | Easterling
H:Dragon | Demon | Orc
N:26:Halfred Greenhand(Hobbit)
-I:30000:210:120:8:8
+I:30000:150
C:110:100:90
L:Hobbit
H:Dragon | Demon | Troll
N:27:Deorwine(Half-Elf)
-I:30000:210:120:8:8
+I:30000:150
C:110:100:90
L:Half-Elf | Easterling
H:Dragon | Demon | Dark-Elf
N:28:Artanis(Wood-Elf)
-I:30000:210:120:8:8
+I:30000:150
C:110:100:90
L:High-Elf | Elf | Easterling
H:Dragon | Demon | Orc | Troll
@@ -209,25 +209,25 @@ H:Dragon | Demon | Orc | Troll
### The Bookstore - 9 ###
N:29:Dwalin(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | Petty-Dwarf | Dwarf
H:Dragon | Demon | Orc | Elf | Half-Ogre | Troll
N:30:Tanta Hornblower(Hobbit)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Troll
N:31:Dorlas(Human)
-I:30000:170:107:1:1
+I:30000:120
C:150:100:50
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
N:32:Caranthir(High-Elf)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Half-Elf | High-Elf | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll | Easterling
@@ -235,25 +235,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll | Ea
### The Pet Shop - 0 ###
N:33:Fili(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:RohanKnight | Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:34:Lalia Clayhanger(Hobbit)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Troll
N:35:Elfwine(Dunadan)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | Half-Elf | High-Elf | RohanKnight | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll
N:36:Edrahil(Dark-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:150:100:50
L:Dark-Elf | Elf | Easterling
H:Dragon | Demon | Orc | High-Elf | Half-Ogre | Dwarf | Troll
@@ -262,98 +262,98 @@ H:Dragon | Demon | Orc | High-Elf | Half-Ogre | Dwarf | Troll
#Bree
N:37:Uldrik(Human)
-I:0:0:0:0:0
+I:0:0
C:0:0:0
L:Human | RohanKnight | Dunadan | Hobbit |
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Minas Anor
N:38:Aragorn (Dunadan)
-I:0:0:0:0:0
+I:0:0
C:0:0:0
L:Human | High-Elf | RohanKnight | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Troll
#Khazad-Dum
N:39:Gimli(Dwarf)
-I:0:0:0:0:0
+I:0:0
C:0:0:0
L:RohanKnight | Dunadan | Hobbit | Elf | Dwarf
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Beorn's Halls
N:40:Deor(Beorning)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Beorning | Dwarf | Maia | Hobbit | Ent
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Dale
N:41:Bard the Grim(Human)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human | Hobbit | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
#Henneth Annun
N:42:Halbarad(Dunadan)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human | High-Elf | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Imladris
N:43:Elrond Half-Elven
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human | Half-Elf | High-Elf | RohanKnight | Dunadan | Hobbit | Elf | Dwarf | Ent
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Helm's Deep
N:44:Erkenbrand(RohanKnight)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human | Maia | RohanKnight | Dunadan | Hobbit | Elf | Dwarf | Ent
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll
#Thranduil's Halls
N:45:Legolas Greenleaf(Wood-Elf)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:High-Elf | Dunadan | Ent | Elf
H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Troll
#Edoras
N:46:Theoden(RohanKnight)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human | RohanKnight | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Esgaroth
N:47:The Master(Human)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Troll
#Hobbiton
N:48:Samwise Gamgee(Hobbit)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Hobbit | Elf | High-Elf | Dark-Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Osgiliath
N:49:Eldacar(Human)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human | Half-Elf | High-Elf | RohanKnight | Dunadan | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll
#Pelargir
N:50:Earnil(Dunadan)
-I:100:100:100:0:0
+I:100:100
C:110:100:90
L:Human | Half-Elf | High-Elf | RohanKnight | Dunadan | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll
@@ -361,37 +361,37 @@ H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf |
### Caras Galadhon owners ###
N:51:Galadriel(High-Elf)
-I:15000:120:105:6:16
+I:15000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
N:52:Celeborn(High-Elf)
-I:15000:120:105:6:16
+I:15000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
N:53:Aulendil(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Warrior |
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
N:54:Valceronwe(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Mage | Thaumaturgist | Sorceror
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
N:55:Voronwe(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Priest | Paladin
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
N:56:Celegail(Elf)
-I:30000:140:105:6:12
+I:30000:110
C:120:100:80
#L:Ranger
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
@@ -399,71 +399,71 @@ H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
### Gondolin owners ###
N:57:Turgon(High-Elf)
-I:30000:120:105:6:16
+I:30000:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:58:Pengolodh(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:59:Aerandir(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:60:Celebrimbor(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
#L:Warrior |
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:61:Lomelosse(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf |
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:62:Arlindel(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
#L:Harper | Ranger
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:63:Sulraen(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
#L:Mage | Sorceror
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:64:Firiel(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf |
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:65:Earendur(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf | Elf
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:66:Glorfindel(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf
#L:Ranger
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
N:67:Ecthelion(High-Elf)
-I:0:120:105:6:16
+I:0:110
C:120:100:80
L:High-Elf | Half-Elf
#L:Paladin
@@ -473,70 +473,70 @@ H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
#Bree
N:68:Barliman Butterbur(Human)
-I:100:170:108:4:10
+I:100:120
C:120:100:80
L:Dunadan | Hobbit | Human |
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning | Easterling
#Pelargir
N:69:Ciryatur(Dunadan)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Dunadan | Human | RohanKnight
H:Dragon | Demon | Orc | Troll | Half-Ogre | Beorning
#Caras Galadhon
N:70:Celebor(Elf)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:High-Elf | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
#Minas Anor
N:71:Bregolas(Human)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
#Khazad-Dum
N:72:Thror(Dwarf)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | High-Elf | Troll
#Dale
N:73:Troin(Dwarf)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Human | Dwarf
H:Dragon | Demon | Orc | Half-Ogre | Troll
#Edoras
N:74:Theodwyn(Shieldmaiden)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
#Esgaroth
N:75:Garm(Human)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Human | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Petty-Dwarf | Troll
#Hobbiton
N:76:Rose Cotton(Hobbit)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Human | High-Elf | Hobbit
H:Dragon | Demon | Orc | Half-Ogre | Troll | Easterling
#Osgiliath
N:77:Palantir(Human)
-I:100:170:108:4:10
+I:100:120
C:110:100:80
L:Human | High-Elf | RohanKnight | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
@@ -544,25 +544,25 @@ H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
### The Soothsayers ###
N:78:Ori(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Hobbit | Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:79:Tolman Gardner(Hobbit)
-I:25000:180:108:2:2
+I:25000:130
C:150:100:50
L:Human | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:80:Inziladun(Human)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | Half-Elf | RohanKnight | Dunadan | Easterling
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Petty-Dwarf | Troll
N:81:Gelmir(High-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll
@@ -570,25 +570,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll
### The Eagles ###
N:82:Palano(Eagle)
-I:30000:170:110:1:1
+I:30000:130
C:125:100:50
L:Eagle
H:Dragon | Demon | RohanKnight
N:83:Eglad(Eagle)
-I:30000:170:110:1:1
+I:30000:130
C:125:100:50
L:Eagle
H:Dragon | Demon | Hobbit
N:84:Hiron(Eagle)
-I:30000:170:110:1:1
+I:30000:130
C:125:100:50
L:Eagle
H:Dragon | Demon | Dunadan
N:85:Grada(Eagle)
-I:30000:170:110:1:1
+I:30000:130
C:125:100:50
L:Eagle
H:Dragon | Demon | High-Elf
@@ -596,25 +596,25 @@ H:Dragon | Demon | High-Elf
### The Librarians ###
N:86:Frerin(Dwarf)
-I:25000:180:108:2:2
+I:25000:130
C:150:100:50
L:Dwarf | Petty-Dwarf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Troll
N:87:Malva Headstrong(Hobbit)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | Hobbit
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:88:Erendis(Half-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:Half-Elf | High-Elf | Dunadan | Elf | Easterling
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll
N:89:Elemmakil(Wood-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
@@ -622,25 +622,25 @@ H:Dragon | Demon | Orc | Half-Ogre | Troll
### The Casino Owners ###
N:90:Fror(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Hobbit | Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:91:Marmadas Brandybuck(Hobbit)
-I:25000:180:108:2:2
+I:25000:130
C:150:100:50
L:Human | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:92:Fastred(Human)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | Half-Elf | RohanKnight | Dunadan | Easterling
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Petty-Dwarf | Troll
N:93:Elured(High-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll
@@ -648,25 +648,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Troll
### The Beastmasters ###
N:94:Gloin(Dwarf)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:70
L:Human | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:95:Milo Burrows(Hobbit)
-I:20000:190:109:3:4
+I:20000:130
C:110:100:80
L:Human | Hobbit
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:96:Findegil(Dunadan)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
N:97:Elurin(Dark-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:150:100:50
L:Dark-Elf | Elf | Easterling
H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Dwarf | Troll
@@ -676,25 +676,25 @@ H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Dwarf | Troll
#Fighters Hall
N:98:Tarcil(Human)
-I:30000:170:107:1:1
+I:30000:120
C:150:100:50
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Orc | Half-Ogre | Troll | Easterling
N:99:Ulbar(Easterling)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | RohanKnight | Dunadan
L:Half-Elf | High-Elf | Elf | Easterling
N:100:Brego(RohanKnight)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Dark-Elf | Petty-Dwarf | Troll | Easterling
N:101:Ostoher(Dunadan)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll | Easterling
@@ -702,25 +702,25 @@ H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll | Easterling
#Tower of Magery
N:102:Arveleg(Human)
-I:25000:180:108:2:2
+I:25000:130
C:125:100:70
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Orc | Half-Ogre | Troll | Easterling
N:103:Uldar(Easterling)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:Human | RohanKnight | Dunadan | Easterling
L:Half-Elf | High-Elf | Elf
N:104:Aldor(RohanKnight)
-I:20000:190:109:3:4
+I:20000:130
C:150:100:50
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Dark-Elf | Petty-Dwarf | Troll | Easterling
N:105:Tarannon(Dunadan)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll | Easterling
@@ -728,25 +728,25 @@ H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll | Easterling
#Inner Temple
N:106:Eradan(Human)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:70
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Orc | Half-Ogre | Troll
N:107:Ulwise(Easterling)
-I:25000:180:108:2:2
+I:25000:130
C:150:100:50
L:Human | RohanKnight | Dunadan | Easterling
L:Half-Elf | High-Elf | Elf
N:108:Gram(RohanKnight)
-I:20000:190:109:3:4
+I:20000:130
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Dark-Elf | Petty-Dwarf | Troll | Easterling
N:109:Minalcar(Dunadan)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll
@@ -754,25 +754,25 @@ H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll
#Paladins Guild
N:110:Herion(Human)
-I:30000:170:107:1:1
+I:30000:120
C:150:100:50
L:Human | RohanKnight | Dunadan | Easterling
H:Dragon | Demon | Orc | Half-Ogre | Troll
N:111:Ulgug(Easterling)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | RohanKnight | Dunadan | Easterling
L:Half-Elf | High-Elf | Elf
N:112:Walda(RohanKnight)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Dark-Elf | Petty-Dwarf | Troll | Easterling
N:113:Calimehtar(Dunadan)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll | Easterling
@@ -780,25 +780,25 @@ H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll | Easterling
#Rangers Guild
N:114:Egalmoth(Human)
-I:25000:180:108:2:2
+I:25000:130
C:125:100:70
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Orc | Half-Ogre | Troll | Easterling
N:115:Ulaf(Easterling)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:Human | RohanKnight | Dunadan | Easterling
L:Half-Elf | High-Elf | Elf
N:116:Fengel(RohanKnight)
-I:20000:190:109:3:4
+I:20000:130
C:150:100:50
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Dark-Elf | Petty-Dwarf | Troll | Easterling
N:117:Telemnar(Dunadan)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll
@@ -808,25 +808,25 @@ H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll
### The Axesmiths ###
N:118:Ris(Dwarf)
-I:30000:200:130:1:1
+I:30000:150
C:150:100:50
L:Dwarf
H:Dragon | Demon | Orc
N:119:Malach Aradan(Human)
-I:25000:300:150:2:2
+I:25000:200
C:125:100:60
L:Human | Easterling
H:Dragon | Demon | Troll
N:120:Indis(Half-Elf)
-I:20000:250:140:3:4
+I:20000:170
C:115:100:70
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:121:Rogdug(Half-Orc)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:80
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -834,25 +834,25 @@ H:Dragon | Demon | Elf
### The Haftedsmiths ###
N:122:Sogur(Dwarf)
-I:20000:250:140:3:4
+I:20000:170
C:125:100:80
L:Dwarf
H:Dragon | Demon | Orc
N:123:Manwendil(Human)
-I:25000:300:150:2:2
+I:25000:200
C:115:100:70
L:Human | Easterling
H:Dragon | Demon | Troll
N:124:Lenwe(Half-Elf)
-I:10000:150:120:4:8
+I:10000:130
C:150:100:50
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:125:Ghaz(Half-Orc)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -860,25 +860,25 @@ H:Dragon | Demon | Elf
### The Polearmsmiths ###
N:126:Tolin(Dwarf)
-I:10000:150:120:4:8
+I:10000:130
C:115:100:70
L:Dwarf
H:Dragon | Demon | Orc
N:127:Narmacil(Human)
-I:25000:300:150:2:2
+I:25000:200
C:125:100:80
L:Human | Easterling
H:Dragon | Demon | Troll
N:128:Lindir(Half-Elf)
-I:20000:250:140:3:4
+I:20000:170
C:150:100:50
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:129:Stogash(Half-Orc)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -886,25 +886,25 @@ H:Dragon | Demon | Elf
### The Swordsmiths ###
N:130:Tis(Dwarf)
-I:20000:250:140:3:4
+I:20000:170
C:125:100:80
L:Dwarf
H:Dragon | Demon | Orc
N:131:Nuneth(Human)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:60
L:Human | Easterling
H:Dragon | Demon | Troll
N:132:Mahtan(Half-Elf)
-I:30000:200:130:1:1
+I:30000:150
C:115:100:70
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:133:Rudak(Half-Orc)
-I:25000:300:150:2:2
+I:25000:200
C:150:100:50
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -912,25 +912,25 @@ H:Dragon | Demon | Elf
### The Rare Jewellers ###
N:134:Uin(Dwarf)
-I:25000:300:150:2:2
+I:25000:200
C:115:100:70
L:Dwarf
H:Dragon | Demon | Orc
N:135:Ornendil(Human)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:60
L:Human | Easterling
H:Dragon | Demon | Troll
N:136:Malgalad(Half-Elf)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:80
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:137:Ghashuf(Half-Orc)
-I:20000:250:140:3:4
+I:20000:170
C:150:100:50
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -938,25 +938,25 @@ H:Dragon | Demon | Elf
### The Jewellers ###
N:138:Vali(Dwarf)
-I:25000:300:150:2:2
+I:25000:200
C:150:100:50
L:Dwarf
H:Dragon | Demon | Orc
N:139:Orodreth(Human)
-I:30000:200:130:1:1
+I:30000:150
C:115:100:70
L:Human | Easterling
H:Dragon | Demon | Troll
N:140:Theodred(Half-Elf)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:80
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:141:Rangush(Half-Orc)
-I:20000:250:140:3:4
+I:20000:170
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -964,25 +964,25 @@ H:Dragon | Demon | Elf
### The Footwear Shop owners ###
N:142:Nellas(Human)
-I:10000:150:120:4:8
+I:10000:130
C:115:100:70
L:Human | Easterling
H:Dragon | Demon | Troll
N:143:Tindomiel(Half-Elf)
-I:25000:300:150:2:2
+I:25000:200
C:125:100:80
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:144:Ragnor(Half-Elf)
-I:20000:250:140:3:4
+I:20000:170
C:150:100:50
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:145:Idrish(Half-Orc)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -990,25 +990,25 @@ H:Dragon | Demon | Elf
### The Rare Footwear Shop owners ###
N:146:Nerwen(Human)
-I:20000:250:140:3:4
+I:20000:170
C:125:100:80
L:Human | Easterling
H:Dragon | Demon | Troll
N:147:Ulbar (Half-Elf)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:60
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:148:Pelendur(Half-Elf)
-I:30000:200:130:1:1
+I:30000:150
C:115:100:70
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:149:Budgar(Half-Orc)
-I:25000:300:150:2:2
+I:25000:200
C:150:100:50
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -1016,25 +1016,25 @@ H:Dragon | Demon | Elf
### The Dungeon Librarians ###
N:150:Nom(Human)
-I:25000:300:150:2:2
+I:25000:200
C:115:100:70
L:Human | Easterling
H:Dragon | Demon | Troll
N:151:Urwen (Half-Elf)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:60
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:152:Rian(Half-Elf)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:80
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:153:Mosrog(Half-Orc)
-I:20000:250:140:3:4
+I:20000:170
C:150:100:50
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -1042,25 +1042,25 @@ H:Dragon | Demon | Elf
### The Expensive Black Marketeers ###
N:154:Olwe(Human)
-I:30000:300:150:8:8
+I:30000:200
C:125:100:90
L:Human | Easterling
H:Dragon | Demon | Troll
N:155:Valacar(Half-Elf)
-I:30000:300:150:8:8
+I:30000:200
C:125:100:90
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:156:Silmarien(Half-Elf)
-I:30000:300:150:8:8
+I:30000:200
C:125:100:90
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:157:Ghaz(Half-Orc)
-I:30000:300:150:8:8
+I:30000:200
C:125:100:90
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -1068,25 +1068,25 @@ H:Dragon | Demon | Elf
### The Common Shop Owners ###
N:158:Ioreth(Human)
-I:25000:300:150:2:2
+I:25000:200
C:150:100:50
L:Human | Easterling
H:Dragon | Demon | Troll
N:159:Vidugavia(Half-Elf)
-I:30000:200:130:1:1
+I:30000:150
C:115:100:70
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:160:Soronto(Half-Elf)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:80
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:161:Nazg(Half-Orc)
-I:20000:250:140:3:4
+I:20000:170
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -1094,25 +1094,25 @@ H:Dragon | Demon | Elf
### The Dragon Hunters ###
N:162:Oropher(Human)
-I:10000:150:120:4:8
+I:10000:130
C:115:100:70
L:Human | Easterling
H:Dragon | Demon | Troll
N:163:Walda(Half-Elf)
-I:25000:300:150:2:2
+I:25000:200
C:125:100:80
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:164:Mithrellas(Half-Elf)
-I:20000:250:140:3:4
+I:20000:170
C:150:100:50
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:165:Urbag(Half-Orc)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -1120,25 +1120,25 @@ H:Dragon | Demon | Elf
### The Speed Ring Market Owners ###
N:166:Orophin(Human)
-I:20000:250:140:3:4
+I:20000:170
C:125:100:80
L:Human | Easterling
H:Dragon | Demon | Troll
N:167:Wulf(Half-Orc)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
N:168:Baguk(Half-Troll)
-I:30000:200:130:1:1
+I:30000:150
C:115:100:70
L:Troll | Easterling
H:Dragon | Demon | Human
N:169:Zikram(Half-Orc)
-I:25000:300:150:2:2
+I:25000:200
C:150:100:50
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -1146,25 +1146,25 @@ H:Dragon | Demon | Elf
### The Scribes ###
N:170:Rumil(Human)
-I:25000:300:150:2:2
+I:25000:200
C:115:100:70
L:Human | Easterling
H:Dragon | Demon | Troll
N:171:Saeros(Half-Elf)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:60
L:Half-Elf | Easterling
H:Dragon | Demon | Half-Ogre
N:172:Zartosh(Half-Orc)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:80
L:Orc | Easterling
H:Dragon | Demon | Elf
N:173:Shog(Half-Troll)
-I:20000:250:140:3:4
+I:20000:170
C:150:100:50
L:Troll | Easterling
H:Dragon | Demon | Human
@@ -1172,25 +1172,25 @@ H:Dragon | Demon | Human
### The Potion Peddlers ###
N:174:Zamin(Human)
-I:25000:300:150:2:2
+I:25000:200
C:150:100:50
L:Human | Easterling
H:Dragon | Demon | Troll
N:175:Algosh(Half-Orc)
-I:30000:200:130:1:1
+I:30000:150
C:115:100:70
L:Orc | Easterling
H:Dragon | Demon | Elf
N:176:Seghash(Half-Troll)
-I:10000:150:120:4:8
+I:10000:130
C:125:100:80
L:Troll | Easterling
H:Dragon | Demon | Human
N:177:Kabbug(Half-Orc)
-I:20000:250:140:3:4
+I:20000:170
C:125:100:60
L:Orc | Easterling
H:Dragon | Demon | Elf
@@ -1198,25 +1198,25 @@ H:Dragon | Demon | Elf
### The Master Archers ###
N:178:Palin(Dwarf)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:70
L:Human | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
N:179:Wilcome Cotton(Hobbit)
-I:20000:190:109:3:4
+I:20000:130
C:110:100:80
L:Human | Hobbit
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
N:180:Inzilbeth(Dunadan)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | High-Elf | Dunadan | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll
N:181:Gildor Inglorion(Dark-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:150:100:50
L:Dark-Elf | Elf | Easterling
H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Dwarf | Troll
@@ -1226,25 +1226,25 @@ H:Dragon | Demon | Orc | Half-Ogre | Petty-Dwarf | Dwarf | Troll
### The Miners / Builders ###
N:182:Gror(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Half-Elf | Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:183:Saradoc Oldbuck(Hobbit)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:Human | High-Elf | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:184:Gloredhel(Half-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:150:100:50
L:Human | Half-Elf | Dunadan | Elf | Easterling
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Troll
N:185:Erellont(Wood-Elf)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:High-Elf | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll | Easterling
@@ -1252,25 +1252,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll | Easterling
### The Hunters ###
N:186:Kili(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:110:100:80
L:Petty-Dwarf | Dwarf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Elf | Troll
N:187:Ruby Bolger(Hobbit)
-I:10000:200:110:4:8
+I:10000:140
C:150:100:50
L:Human | Half-Elf | High-Elf | Hobbit | Elf | Easterling
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll
N:188:Goldwine(Human)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | Half-Elf | RohanKnight | Dunadan | Elf | Easterling
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Troll
N:189:Erestor(High-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:70
L:Human | Half-Elf | High-Elf | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll | Easterling
@@ -1278,25 +1278,25 @@ H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll | East
### The Runecrafters ###
N:190:Nori(Dwarf)
-I:30000:170:107:1:1
+I:30000:120
C:150:100:50
L:Petty-Dwarf | Dwarf | Half-Elf | Dunadan
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Human | Troll | Eagle
N:191:Camellia Sackville(Hobbit)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Hobbit | Easterling
H:Dragon | Demon | Orc | Troll
N:192:Hador Lorindol(Dunadan)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | Half-Elf | High-Elf | RohanKnight | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Half-Ogre | Troll | Easterling
N:193:Galathil(Dark-Elf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | Dark-Elf | Elf
H:Dragon | Demon | Beorning | Orc | High-Elf | Half-Ogre | Petty-Dwarf | Troll
@@ -1304,25 +1304,25 @@ H:Dragon | Demon | Beorning | Orc | High-Elf | Half-Ogre | Petty-Dwarf | Troll
### The Musicians ###
N:194:Oin(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Human | Petty-Dwarf | Dwarf
H:Dragon | Demon | Orc | Elf | Half-Ogre | Troll | Easterling
N:195:Robin Smallburrow(Hobbit)
-I:10000:200:110:4:8
+I:10000:140
C:110:100:80
L:Human | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Troll | Easterling
N:196:Hareth(Half-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:150:100:50
L:Human | RohanKnight | Dunadan
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
N:197:Galdor(Wood-Elf)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Half-Elf | High-Elf | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll | Easterling
@@ -1330,25 +1330,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Petty-Dwarf | Dwarf | Troll | E
### The Precious Metalsmiths ###
N:198:Gabil(Dwarf)
-I:10000:150:120:4:8
+I:10000:130
C:115:100:70
L:Dwarf
H:Dragon | Demon | Orc
N:199:Isil(Human)
-I:25000:300:150:2:2
+I:25000:200
C:125:100:80
L:Human | Easterling
H:Dragon | Demon | Troll
N:200:Grima(Half-Orc)
-I:20000:250:140:3:4
+I:20000:170
C:150:100:50
L:Orc | Easterling
H:Dragon | Demon | Elf
N:201:Kosh(Half-Troll)
-I:30000:200:130:1:1
+I:30000:150
C:125:100:60
L:Troll | Easterling
H:Dragon | Demon | Human
@@ -1356,25 +1356,25 @@ H:Dragon | Demon | Human
### The Mapmakers ###
N:202:Pas(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:125:100:70
L:Half-Elf | Petty-Dwarf | Dwarf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll
N:203:Isumbras Took(Hobbit)
-I:30000:170:107:1:1
+I:30000:120
C:110:100:80
L:Human | High-Elf | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
N:204:Labadal(Half-Elf)
-I:10000:200:110:4:8
+I:10000:140
C:150:100:50
L:Human | Half-Elf | Dunadan | Elf | Easterling
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Troll
N:205:Guilin(Wood-Elf)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:High-Elf | Dunadan | Hobbit | Elf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll
@@ -1382,25 +1382,25 @@ H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll
### The Farmers ###
N:206:Rili(Dwarf)
-I:20000:190:109:3:4
+I:20000:130
C:110:100:80
L:Petty-Dwarf | Dwarf
H:Dragon | Demon | Orc | Dark-Elf | Half-Ogre | Elf | Troll
N:207:Wiseman Gamwich(Hobbit)
-I:10000:200:110:4:8
+I:10000:140
C:150:100:50
L:Human | Half-Elf | High-Elf | Hobbit | Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Dwarf | Troll
N:208:Lalaith(Human)
-I:25000:180:108:2:2
+I:25000:130
C:110:100:80
L:Human | Half-Elf | RohanKnight | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Troll | Easterling
N:209:Gwindor(High-Elf)
-I:30000:170:107:1:1
+I:30000:120
C:125:100:70
L:Human | Half-Elf | High-Elf | Dunadan | Elf
H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll
@@ -1408,12 +1408,12 @@ H:Dragon | Demon | Beorning | Orc | Dark-Elf | Half-Ogre | Dwarf | Troll
### The Old Mage in Minas Anor ###
N:210:Malbeth the Seer
-I:20000:170:110:4:4
+I:20000:130
C:110:100:80
L:Human | RohanKnight | Dunadan | High-Elf
H:Dragon | Demon | Beorning | Orc | Half-Ogre | Troll | Easterling
### For the Merchants' Guild ###
N:211:Worm(Human)
-I:30000:180:110:0:0
+I:30000:130
C:110:100:90 \ No newline at end of file
diff --git a/src/defines.h b/src/defines.h
index 37f0a8e9..d8a5d4f2 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -2679,7 +2679,6 @@
* Special Object Flags
*/
#define IDENT_SENSE 0x01 /* Item has been "sensed" */
-#define IDENT_FIXED 0x02 /* Item has been "haggled" */
#define IDENT_EMPTY 0x04 /* Item charges are known */
#define IDENT_KNOWN 0x08 /* Item abilities are known */
#define IDENT_STOREB 0x10 /* Item is storebought !!!! */
diff --git a/src/externs.h b/src/externs.h
index 46675de7..655da661 100644
--- a/src/externs.h
+++ b/src/externs.h
@@ -239,7 +239,6 @@ extern bool_ stack_force_notes;
extern bool_ stack_force_costs;
extern bool_ view_reduce_lite;
extern bool_ view_reduce_view;
-extern bool_ auto_haggle;
extern bool_ auto_scum;
extern bool_ expand_look;
extern bool_ expand_list;
diff --git a/src/init1.c b/src/init1.c
index 43d9690f..cc589bde 100644
--- a/src/init1.c
+++ b/src/init1.c
@@ -10250,18 +10250,15 @@ errr init_ow_info_txt(FILE *fp, char *buf)
/* Process 'I' for "Info" (multiple lines line only) */
if (buf[0] == 'I')
{
- int cost, max_inf, min_inf, haggle, insult;
+ int cost, inf;
/* Scan for the values */
- if (5 != sscanf(buf + 2, "%d:%d:%d:%d:%d",
- &cost, &max_inf, &min_inf, &haggle, &insult)) return (1);
+ if (2 != sscanf(buf + 2, "%d:%d",
+ &cost, &inf)) return (1);
/* Save the values */
ow_ptr->max_cost = cost;
- ow_ptr->max_inflate = max_inf;
- ow_ptr->min_inflate = min_inf;
- ow_ptr->haggle_per = haggle;
- ow_ptr->insult_max = insult;
+ ow_ptr->inflation = inf;
/* Next... */
continue;
diff --git a/src/loadsave.c b/src/loadsave.c
index 48a982c6..1b142e59 100644
--- a/src/loadsave.c
+++ b/src/loadsave.c
@@ -1713,16 +1713,12 @@ static bool_ do_store(store_type *str, int flag)
/* Some basic info */
do_s32b(&str->store_open, flag);
- do_s16b(&str->insult_cur, flag);
do_u16b(&str->owner, flag);
if (flag == LS_SAVE) num = str->stock_num;
/* Could be cleaner, done this way for benefit of the for loop later on */
do_byte(&num, flag);
- do_s16b(&str->good_buy, flag);
- do_s16b(&str->bad_buy, flag);
-
/* Last visit */
do_s32b(&str->last_visit, flag);
diff --git a/src/store.c b/src/store.c
index e1977920..ff5e89dc 100644
--- a/src/store.c
+++ b/src/store.c
@@ -43,59 +43,6 @@ static cptr comment_1[MAX_COMMENT_1] =
"Taken!"
};
-#define MAX_COMMENT_2A 2
-
-static cptr comment_2a[MAX_COMMENT_2A] =
-{
- "You try my patience. %s is final.",
- "My patience grows thin. %s is final."
-};
-
-#define MAX_COMMENT_2B 12
-
-static cptr comment_2b[MAX_COMMENT_2B] =
-{
- "I can take no less than %s gold pieces.",
- "I will accept no less than %s gold pieces.",
- "Ha! No less than %s gold pieces.",
- "You knave! No less than %s gold pieces.",
- "That's a pittance! I want %s gold pieces.",
- "That's an insult! I want %s gold pieces.",
- "As if! How about %s gold pieces?",
- "My gosh! How about %s gold pieces?",
- "May the fleas of 1000 orcs molest you! Try %s gold pieces.",
- "May your most favourite weapons rust! Try %s gold pieces.",
- "May Morgoth find you tasty! Perhaps %s gold pieces?",
- "Your mother was an Ogre! Perhaps %s gold pieces?"
-};
-
-#define MAX_COMMENT_3A 2
-
-static cptr comment_3a[MAX_COMMENT_3A] =
-{
- "You try my patience. %s is final.",
- "My patience grows thin. %s is final."
-};
-
-
-#define MAX_COMMENT_3B 12
-
-static cptr comment_3b[MAX_COMMENT_3B] =
-{
- "Perhaps %s gold pieces?",
- "How about %s gold pieces?",
- "I will pay no more than %s gold pieces.",
- "I can afford no more than %s gold pieces.",
- "Be reasonable. How about %s gold pieces?",
- "I'll buy it as scrap for %s gold pieces.",
- "That is too much! How about %s gold pieces?",
- "That looks war surplus! Say %s gold pieces?",
- "Never! %s is more like it.",
- "That's an insult! %s is more like it.",
- "%s gold pieces and be thankful for it!",
- "%s gold pieces and not a copper more!"
-};
-
#define MAX_COMMENT_4A 4
static cptr comment_4a[MAX_COMMENT_4A] =
@@ -116,31 +63,6 @@ static cptr comment_4b[MAX_COMMENT_4B] =
"Out, out, out!"
};
-#define MAX_COMMENT_5 8
-
-static cptr comment_5[MAX_COMMENT_5] =
-{
- "Try again.",
- "Ridiculous!",
- "You will have to do better than that!",
- "Do you wish to do business or not?",
- "You've got to be kidding!",
- "You'd better be kidding!",
- "You try my patience.",
- "Hmmm, nice weather we're having."
-};
-
-#define MAX_COMMENT_6 4
-
-static cptr comment_6[MAX_COMMENT_6] =
-{
- "I must have heard you wrong.",
- "I'm sorry, I missed that.",
- "I'm sorry, what was that?",
- "Sorry, what was that again?"
-};
-
-
/*
* Successful haggle.
@@ -161,58 +83,6 @@ static void say_comment_1(void)
/*
- * Continue haggling (player is buying)
- */
-static void say_comment_2(s32b value, int annoyed)
-{
- char tmp_val[80];
-
- /* Prepare a string to insert */
- strnfmt(tmp_val, 80, "%ld", (long)value);
-
- /* Final offer */
- if (annoyed > 0)
- {
- /* Formatted message */
- msg_format(comment_2a[rand_int(MAX_COMMENT_2A)], tmp_val);
- }
-
- /* Normal offer */
- else
- {
- /* Formatted message */
- msg_format(comment_2b[rand_int(MAX_COMMENT_2B)], tmp_val);
- }
-}
-
-
-/*
- * Continue haggling (player is selling)
- */
-static void say_comment_3(s32b value, int annoyed)
-{
- char tmp_val[80];
-
- /* Prepare a string to insert */
- strnfmt(tmp_val, 80, "%ld", (long)value);
-
- /* Final offer */
- if (annoyed > 0)
- {
- /* Formatted message */
- msg_format(comment_3a[rand_int(MAX_COMMENT_3A)], tmp_val);
- }
-
- /* Normal offer */
- else
- {
- /* Formatted message */
- msg_format(comment_3b[rand_int(MAX_COMMENT_3B)], tmp_val);
- }
-}
-
-
-/*
* Kick 'da bum out. -RAK-
*/
static void say_comment_4(void)
@@ -222,24 +92,6 @@ static void say_comment_4(void)
}
-/*
- * You are insulting me
- */
-static void say_comment_5(void)
-{
- msg_print(comment_5[rand_int(MAX_COMMENT_5)]);
-}
-
-
-/*
- * That makes no sense.
- */
-static void say_comment_6(void)
-{
- msg_print(comment_6[rand_int(5)]);
-}
-
-
/*
* Messages for reacting to purchase prices.
@@ -1565,62 +1417,6 @@ static void store_create(void)
/*
- * Eliminate need to bargain if player has haggled well in the past
- */
-static bool_ noneedtobargain(s32b minprice)
-{
- s32b good = st_ptr->good_buy;
- s32b bad = st_ptr->bad_buy;
-
- /* Cheap items are "boring" */
- if (minprice < 10L) return (TRUE);
-
- /* Perfect haggling */
- if (good == MAX_SHORT) return (TRUE);
-
- /* Reward good haggles, punish bad haggles, notice price */
- if (good > ((3 * bad) + (5 + (minprice / 50)))) return (TRUE);
-
- /* Return the flag */
- return (FALSE);
-}
-
-
-/*
- * Update the bargain info
- */
-static void updatebargain(s32b price, s32b minprice)
-{
- /* Hack -- auto-haggle */
- if (auto_haggle) return;
-
- /* Cheap items are "boring" */
- if (minprice < 10L) return;
-
- /* Count the successful haggles */
- if (price == minprice)
- {
- /* Just count the good haggles */
- if (st_ptr->good_buy < MAX_SHORT)
- {
- st_ptr->good_buy++;
- }
- }
-
- /* Count the failed haggles */
- else
- {
- /* Just count the bad haggles */
- if (st_ptr->bad_buy < MAX_SHORT)
- {
- st_ptr->bad_buy++;
- }
- }
-}
-
-
-
-/*
* Re-displays a single store entry
*/
static void display_entry(int pos)
@@ -1710,50 +1506,15 @@ static void display_entry(int pos)
put_str(out_val, i + 6, 61);
}
- /* Display a "fixed" cost */
- if (o_ptr->ident & (IDENT_FIXED))
- {
- /* Extract the "minimum" price */
- x = price_item(o_ptr, ot_ptr->min_inflate, FALSE);
-
- /* Can we buy one ? */
- if (x > p_ptr->au) color = TERM_L_DARK;
-
- /* Actually draw the price (not fixed) */
- strnfmt(out_val, 160, "%9ld F", (long)x);
- c_put_str(color, out_val, i + 6, 68);
- }
-
- /* Display a "taxed" cost */
- else if (auto_haggle)
- {
- /* Extract the "minimum" price */
- x = price_item(o_ptr, ot_ptr->min_inflate, FALSE);
-
- /* Hack -- Apply Sales Tax if needed */
- if (!noneedtobargain(x)) x += x / 10;
-
- /* Can we buy one ? */
- if (x > p_ptr->au) color = TERM_L_DARK;
+ /* Extract the "minimum" price */
+ x = price_item(o_ptr, ot_ptr->inflation, FALSE);
- /* Actually draw the price (with tax) */
- strnfmt(out_val, 160, "%9ld ", (long)x);
- c_put_str(color, out_val, i + 6, 68);
- }
+ /* Can we buy one ? */
+ if (x > p_ptr->au) color = TERM_L_DARK;
- /* Display a "haggle" cost */
- else
- {
- /* Extrect the "maximum" price */
- x = price_item(o_ptr, ot_ptr->max_inflate, FALSE);
-
- /* Can we buy one ? */
- if (x > p_ptr->au) color = TERM_L_DARK;
-
- /* Actually draw the price (not fixed) */
- strnfmt(out_val, 160, "%9ld ", (long)x);
- c_put_str(color, out_val, i + 6, 68);
- }
+ /* Actually draw the price */
+ strnfmt(out_val, 160, "%9ld ", (long)x);
+ c_put_str(color, out_val, i + 6, 68);
}
}
@@ -1946,220 +1707,57 @@ static int get_stock(int *com_val, cptr pmt, int i, int j)
}
-/*
- * Increase the insult counter and get angry if too many -RAK-
- */
-static int increase_insults(void)
-{
- /* Increase insults */
- st_ptr->insult_cur++;
-
- /* Become insulted */
- if (st_ptr->insult_cur > ot_ptr->insult_max)
- {
- /* Complain */
- say_comment_4();
-
- /* Reset insults */
- st_ptr->insult_cur = 0;
- st_ptr->good_buy = 0;
- st_ptr->bad_buy = 0;
-
- /* Open tomorrow */
- st_ptr->store_open = turn + 25000 + randint(25000);
-
- /* Closed */
- return (TRUE);
- }
-
- /* Not closed */
- return (FALSE);
-}
-
-
-/*
- * Decrease insults -RAK-
- */
-static void decrease_insults(void)
-{
- /* Decrease insults */
- if (st_ptr->insult_cur) st_ptr->insult_cur--;
-}
-
-
-/*
- * Have insulted while haggling -RAK-
- */
-static int haggle_insults(void)
-{
- /* Increase insults */
- if (increase_insults()) return (TRUE);
-
- /* Display and flush insult */
- say_comment_5();
-
- /* Still okay */
- return (FALSE);
-}
-
-
-/*
- * Mega-Hack -- Enable "increments"
- */
-static bool_ allow_inc = FALSE;
-
-/*
- * Mega-Hack -- Last "increment" during haggling
- */
-static s32b last_inc = 0L;
-
-/*
- * Get a haggle
+/**
+ * Prompt for a yes/no during selling/buying
+ *
+ * @return TRUE if 'yes' was selected, otherwise returns FALSE.
*/
-static int get_haggle(cptr pmt, s32b *poffer, s32b price, int final)
+static bool_ prompt_yesno(cptr prompt)
{
- s32b i;
-
- cptr p;
-
- char buf[128];
- char out_val[160];
-
-
- /* Clear old increment if necessary */
- if (!allow_inc) last_inc = 0L;
-
-
- /* Final offer */
- if (final)
- {
- strnfmt(buf, 128, "%s [accept] ", pmt);
- }
-
- /* Old (negative) increment, and not final */
- else if (last_inc < 0)
- {
- strnfmt(buf, 128, "%s [-%ld] ", pmt, (long)(ABS(last_inc)));
- }
+ cptr allowed = "yn\r\n";
+ cptr yes = "y\r\n";
+ char buf[128];
+ bool_ ret;
- /* Old (positive) increment, and not final */
- else if (last_inc > 0)
- {
- strnfmt(buf, 128, "%s [+%ld] ", pmt, (long)(ABS(last_inc)));
- }
-
- /* Normal haggle */
- else
- {
- strnfmt(buf, 128, "%s ", pmt);
- }
+ /* Build prompt */
+ snprintf(buf, sizeof(buf), "%s [y/n/RET/ESC] ", prompt);
-
- /* Paranoia XXX XXX XXX */
+ /* Prompt for it */
msg_print(NULL);
+ prt(buf, 0, 0);
-
- /* Ask until done */
+ /* Get answer */
while (TRUE)
{
- /* Default */
- strcpy(out_val, "");
-
- /* Ask the user for a response */
- if (!get_string(buf, out_val, 32)) return (FALSE);
-
- /* Skip leading spaces */
- for (p = out_val; *p == ' '; p++) /* loop */;
+ int key = inkey();
- /* Empty response */
- if (*p == '\0')
- {
- /* Accept current price */
- if (final)
- {
- *poffer = price;
- last_inc = 0L;
- break;
- }
-
- /* Use previous increment */
- if (allow_inc && last_inc)
- {
- *poffer += last_inc;
- break;
- }
+ /* ESC means no. */
+ if (key == ESCAPE) {
+ ret = FALSE;
+ break;
}
- /* Normal response */
- else
- {
- /* Extract a number */
- i = atol(p);
-
- /* Handle "incremental" number */
- if ((*p == '+' || *p == '-'))
- {
- /* Allow increments */
- if (allow_inc)
- {
- /* Use the given "increment" */
- *poffer += i;
- last_inc = i;
- break;
- }
- }
-
- /* Handle normal number */
- else
- {
- /* Use the given "number" */
- *poffer = i;
- last_inc = 0L;
- break;
- }
+ /* Any other key must be in the allowed set to break the loop. */
+ if ((strchr(allowed, key) != NULL) || quick_messages) {
+ /* Check for presence in the 'yes' set */
+ ret = (strchr(yes, key) != NULL);
+ break;
}
- /* Warning */
- msg_print("Invalid response.");
- msg_print(NULL);
+ /* Retry */
+ bell();
}
- /* Success */
- return (TRUE);
-}
-
-
-/*
- * Receive an offer (from the player)
- *
- * Return TRUE if offer is NOT okay
- */
-static bool_ receive_offer(cptr pmt, s32b *poffer,
- s32b last_offer, int factor,
- s32b price, int final)
-{
- /* Haggle till done */
- while (TRUE)
- {
- /* Get a haggle (or cancel) */
- if (!get_haggle(pmt, poffer, price, final)) return (TRUE);
-
- /* Acceptable offer */
- if (((*poffer) * factor) >= (last_offer * factor)) break;
-
- /* Insult, and check for kicked out */
- if (haggle_insults()) return (TRUE);
-
- /* Reject offer (correctly) */
- (*poffer) = last_offer;
- }
+ /* Erase the prompt */
+ prt("", 0, 0);
/* Success */
- return (FALSE);
+ return ret;
}
+
/*
* Haggling routine -RAK-
*
@@ -2167,176 +1765,42 @@ static bool_ receive_offer(cptr pmt, s32b *poffer,
*/
static bool_ purchase_haggle(object_type *o_ptr, s32b *price)
{
- s32b cur_ask, final_ask;
- s32b last_offer, offer;
- s32b x1, x2, x3;
- s32b min_per, max_per;
- int flag, loop_flag, noneed;
- int annoyed = 0, final = FALSE;
-
+ s32b cur_ask;
bool_ cancel = FALSE;
-
- cptr pmt = "Asking";
-
char out_val[160];
+ char prompt[128];
+ char o_name[80];
*price = 0;
+ /* Extract the price */
+ cur_ask = price_item(o_ptr, ot_ptr->inflation, FALSE);
- /* Extract the starting offer and the final offer */
- cur_ask = price_item(o_ptr, ot_ptr->max_inflate, FALSE);
- final_ask = price_item(o_ptr, ot_ptr->min_inflate, FALSE);
-
- /* Determine if haggling is necessary */
- noneed = noneedtobargain(final_ask);
-
- /* No need to haggle */
- if (noneed || auto_haggle)
- {
- /* No need to haggle */
- if (noneed)
- {
- /* Message summary */
- msg_print("You eventually agree upon the price.");
- msg_print(NULL);
- }
-
- /* No haggle option */
- else
- {
- /* Message summary */
- msg_print("You quickly agree upon the price.");
- msg_print(NULL);
-
- /* Apply Sales Tax */
- final_ask += final_ask / 10;
- }
-
- /* Final price */
- cur_ask = final_ask;
-
- /* Go to final offer */
- pmt = "Final Offer";
- final = TRUE;
- }
-
-
- /* Haggle for the whole pile */
+ /* Buy for the whole pile */
cur_ask *= o_ptr->number;
- final_ask *= o_ptr->number;
-
-
- /* Haggle parameters */
- min_per = ot_ptr->haggle_per;
- max_per = min_per * 3;
- /* Mega-Hack -- artificial "last offer" value */
- last_offer = object_value(o_ptr) * o_ptr->number;
- last_offer = last_offer * (200 - (int)(ot_ptr->max_inflate)) / 100L;
- if (last_offer <= 0) last_offer = 1;
+ /* Describe the object (fully) */
+ object_desc_store(o_name, o_ptr, TRUE, 3);
- /* No offer yet */
- offer = 0;
-
- /* No incremental haggling yet */
- allow_inc = FALSE;
+ /* Prompt */
+ strnfmt(out_val, sizeof(out_val), "%s: " FMTs32b, "Price", cur_ask);
+ put_str(out_val, 1, 0);
+ strnfmt(prompt, sizeof(prompt), "Buy %s?", o_name);
+ cancel = !prompt_yesno(prompt);
- /* Haggle until done */
- for (flag = FALSE; !flag; )
+ /* Handle result */
+ if (cancel)
{
- loop_flag = TRUE;
-
- while (!flag && loop_flag)
- {
- strnfmt(out_val, 160, "%s : %ld", pmt, (long)cur_ask);
- put_str(out_val, 1, 0);
- cancel = receive_offer("What do you offer? ",
- &offer, last_offer, 1, cur_ask, final);
-
- if (cancel)
- {
- flag = TRUE;
- }
- else if (offer > cur_ask)
- {
- say_comment_6();
- offer = last_offer;
- }
- else if (offer == cur_ask)
- {
- flag = TRUE;
- *price = offer;
- }
- else
- {
- loop_flag = FALSE;
- }
- }
-
- if (!flag)
- {
- x1 = 100 * (offer - last_offer) / (cur_ask - last_offer);
- if (x1 < min_per)
- {
- if (haggle_insults())
- {
- flag = TRUE;
- cancel = TRUE;
- }
- }
- else if (x1 > max_per)
- {
- x1 = x1 * 3 / 4;
- if (x1 < max_per) x1 = max_per;
- }
- x2 = rand_range(x1 - 2, x1 + 2);
- x3 = ((cur_ask - offer) * x2 / 100L) + 1;
- /* don't let the price go up */
- if (x3 < 0) x3 = 0;
- cur_ask -= x3;
-
- /* Too little */
- if (cur_ask < final_ask)
- {
- final = TRUE;
- cur_ask = final_ask;
- pmt = "Final Offer";
- annoyed++;
- if (annoyed > 3)
- {
- (void)(increase_insults());
- cancel = TRUE;
- flag = TRUE;
- }
- }
- else if (offer >= cur_ask)
- {
- flag = TRUE;
- *price = offer;
- }
-
- if (!flag)
- {
- last_offer = offer;
- allow_inc = TRUE;
- prt("", 1, 0);
- strnfmt(out_val, 160, "Your last offer: %ld",
- (long)last_offer);
- put_str(out_val, 1, 39);
- say_comment_2(cur_ask, annoyed);
- }
- }
+ /* Cancel */
+ return (TRUE);
+ }
+ else
+ {
+ *price = cur_ask;
+ /* Do not cancel */
+ return (FALSE);
}
-
- /* Cancel */
- if (cancel) return (TRUE);
-
- /* Update bargaining info */
- updatebargain(*price, final_ask);
-
- /* Do not cancel */
- return (FALSE);
}
@@ -2347,193 +1811,47 @@ static bool_ purchase_haggle(object_type *o_ptr, s32b *price)
*/
static bool_ sell_haggle(object_type *o_ptr, s32b *price)
{
- s32b purse, cur_ask, final_ask;
- s32b last_offer = 0, offer = 0;
- s32b x1, x2, x3;
- s32b min_per, max_per;
-
- int flag, loop_flag, noneed;
- int annoyed = 0, final = FALSE;
-
+ s32b cur_ask;
bool_ cancel = FALSE;
-
- cptr pmt = "Offer";
-
char out_val[160];
+ char prompt[128];
+ char o_name[80];
*price = 0;
+ /* Extract price */
+ cur_ask = price_item(o_ptr, ot_ptr->inflation, TRUE);
- /* Obtain the starting offer and the final offer */
- cur_ask = price_item(o_ptr, ot_ptr->max_inflate, TRUE);
- final_ask = price_item(o_ptr, ot_ptr->min_inflate, TRUE);
-
- /* Determine if haggling is necessary */
- noneed = noneedtobargain(final_ask);
-
- /* Get the owner's payout limit */
- purse = (s32b)(ot_ptr->max_cost);
-
- /* No need to haggle */
- if (noneed || auto_haggle || (final_ask >= purse))
- {
- /* No reason to haggle */
- if (final_ask >= purse)
- {
- /* Message */
- msg_print("You instantly agree upon the price.");
- msg_print(NULL);
-
- /* Offer full purse */
- final_ask = purse;
- }
-
- /* No need to haggle */
- else if (noneed)
- {
- /* Message */
- msg_print("You eventually agree upon the price.");
- msg_print(NULL);
- }
-
- /* No haggle option */
- else
- {
- /* Message summary */
- msg_print("You quickly agree upon the price.");
- msg_print(NULL);
-
- /* Apply Sales Tax */
- final_ask -= final_ask / 10;
- }
-
- /* Final price */
- cur_ask = final_ask;
-
- /* Final offer */
- final = TRUE;
- pmt = "Final Offer";
+ /* Limit to shopkeeper's purse */
+ if (cur_ask > ot_ptr->max_cost) {
+ cur_ask = ot_ptr->max_cost;
}
- /* Haggle for the whole pile */
+ /* Sell the whole pile */
cur_ask *= o_ptr->number;
- final_ask *= o_ptr->number;
-
-
- /* XXX XXX XXX Display commands */
-
- /* Haggling parameters */
- min_per = ot_ptr->haggle_per;
- max_per = min_per * 3;
- /* Mega-Hack -- artificial "last offer" value */
- last_offer = object_value(o_ptr) * o_ptr->number;
- last_offer = last_offer * ot_ptr->max_inflate / 100L;
+ /* Describe the object (fully) */
+ object_desc_store(o_name, o_ptr, TRUE, 3);
- /* No offer yet */
- offer = 0;
-
- /* No incremental haggling yet */
- allow_inc = FALSE;
+ /* Prompt */
+ strnfmt(out_val, sizeof(out_val), "%s: " FMTs32b, "Price", cur_ask);
+ put_str(out_val, 1, 0);
+ strnfmt(prompt, sizeof(prompt), "Sell %s?", o_name);
+ cancel = !prompt_yesno(prompt);
- /* Haggle */
- for (flag = FALSE; !flag; )
+ /* Handle result */
+ if (cancel)
{
- while (1)
- {
- loop_flag = TRUE;
-
- strnfmt(out_val, 160, "%s : %ld", pmt, (long)cur_ask);
- put_str(out_val, 1, 0);
- cancel = receive_offer("What price do you ask? ",
- &offer, last_offer, -1, cur_ask, final);
-
- if (cancel)
- {
- flag = TRUE;
- }
- else if (offer < cur_ask)
- {
- say_comment_6();
- /* rejected, reset offer for incremental haggling */
- offer = last_offer;
- }
- else if (offer == cur_ask)
- {
- flag = TRUE;
- *price = offer;
- }
- else
- {
- loop_flag = FALSE;
- }
-
- /* Stop */
- if (flag || !loop_flag) break;
- }
-
- if (!flag)
- {
- x1 = 100 * (last_offer - offer) / (last_offer - cur_ask);
- if (x1 < min_per)
- {
- if (haggle_insults())
- {
- flag = TRUE;
- cancel = TRUE;
- }
- }
- else if (x1 > max_per)
- {
- x1 = x1 * 3 / 4;
- if (x1 < max_per) x1 = max_per;
- }
- x2 = rand_range(x1 - 2, x1 + 2);
- x3 = ((offer - cur_ask) * x2 / 100L) + 1;
- /* don't let the price go down */
- if (x3 < 0) x3 = 0;
- cur_ask += x3;
-
- if (cur_ask > final_ask)
- {
- cur_ask = final_ask;
- final = TRUE;
- pmt = "Final Offer";
- annoyed++;
- if (annoyed > 3)
- {
- flag = TRUE;
- (void)(increase_insults());
- }
- }
- else if (offer <= cur_ask)
- {
- flag = TRUE;
- *price = offer;
- }
-
- if (!flag)
- {
- last_offer = offer;
- allow_inc = TRUE;
- prt("", 1, 0);
- strnfmt(out_val, 160,
- "Your last bid %ld", (long)last_offer);
- put_str(out_val, 1, 39);
- say_comment_3(cur_ask, annoyed);
- }
- }
+ /* Cancel */
+ return (TRUE);
+ }
+ else
+ {
+ *price = cur_ask;
+ /* Do not cancel */
+ return (FALSE);
}
-
- /* Cancel */
- if (cancel) return (TRUE);
-
- /* Update bargaining info */
- updatebargain(*price, final_ask);
-
- /* Do not cancel */
- return (FALSE);
}
/*
@@ -2665,9 +1983,6 @@ void store_stole(void)
j_ptr->found = OBJ_FOUND_STOLEN;
j_ptr->found_aux1 = st_ptr->st_idx;
- /* Hack -- clear the "fixed" flag from the item */
- j_ptr->ident &= ~(IDENT_FIXED);
-
/* "Hot" merchandise can't be sold back. It doesn't make sense
to be able to sell back to a guy what you just stole from him.
Also, without the discount one could fairly easily macro himself
@@ -2765,11 +2080,6 @@ void store_stole(void)
/* Complain */
say_comment_4();
- /* Reset insults */
- st_ptr->insult_cur = 0;
- st_ptr->good_buy = 0;
- st_ptr->bad_buy = 0;
-
/* Kicked out for a LONG time */
st_ptr->store_open = turn + 500000 + randint(500000);
}
@@ -2861,7 +2171,7 @@ void store_purchase(void)
}
/* Determine the "best" price (per item) */
- best = price_item(j_ptr, ot_ptr->min_inflate, FALSE);
+ best = price_item(j_ptr, ot_ptr->inflation, FALSE);
/* Find out how many the player wants */
if (o_ptr->number > 1)
@@ -2869,12 +2179,6 @@ void store_purchase(void)
s32b q;
- /* Hack -- note cost of "fixed" items */
- if ((cur_store_num != 7) && (o_ptr->ident & (IDENT_FIXED)))
- {
- msg_format("That costs %ld gold per item.", (long)(best));
- }
-
/* How many can we buy ? 99 if price is 0*/
if (cur_store_num == STORE_HOME)
{
@@ -2886,10 +2190,7 @@ void store_purchase(void)
}
else
{
- if (auto_haggle)
- q = p_ptr->au / (best + (best / 10));
- else
- q = p_ptr->au / best;
+ q = p_ptr->au / (best + (best / 10));
}
if (o_ptr->number < q)
q = o_ptr->number;
@@ -2935,40 +2236,16 @@ void store_purchase(void)
/* Attempt to buy it */
if (cur_store_num != 7)
{
- /* Fixed price, quick buy */
- if (o_ptr->ident & (IDENT_FIXED))
- {
- /* Assume accept */
- choice = 0;
-
- /* Go directly to the "best" deal */
- price = (best * j_ptr->number);
- }
-
- /* Haggle for it */
- else
- {
- /* Describe the object (fully) */
- object_desc_store(o_name, j_ptr, TRUE, 3);
-
- /* Message */
- msg_format("Buying %s (%c).", o_name, I2A(item));
- msg_print(NULL);
+ /* Haggle for a final price */
+ choice = purchase_haggle(j_ptr, &price);
- /* Haggle for a final price */
- choice = purchase_haggle(j_ptr, &price);
-
- /* Hack -- Got kicked out */
- if (st_ptr->store_open >= turn) return;
- }
+ /* Hack -- Got kicked out */
+ if (st_ptr->store_open >= turn) return;
/* Player wants it */
if (choice == 0)
{
- /* Fix the item price (if "correctly" haggled) */
- if (price == (best * j_ptr->number)) o_ptr->ident |= (IDENT_FIXED);
-
/* Player can afford it */
if (p_ptr->au >= price)
{
@@ -2978,9 +2255,6 @@ void store_purchase(void)
/* Make a sound */
sound(SOUND_BUY);
- /* Be happy */
- decrease_insults();
-
/* Spend the money */
p_ptr->au -= price;
@@ -2994,9 +2268,6 @@ void store_purchase(void)
j_ptr->found = OBJ_FOUND_STORE;
j_ptr->found_aux1 = st_ptr->st_idx;
- /* Hack -- clear the "fixed" flag from the item */
- j_ptr->ident &= ~(IDENT_FIXED);
-
/* Describe the transaction */
object_desc(o_name, j_ptr, TRUE, 3);
@@ -3274,10 +2545,6 @@ void store_sell(void)
/* Real store */
if ((cur_store_num != 7) && !museum)
{
- /* Describe the transaction */
- msg_format("Selling %s (%c).", o_name, index_to_label(item));
- msg_print(NULL);
-
/* Haggle for it */
choice = sell_haggle(q_ptr, &price);
@@ -3293,9 +2560,6 @@ void store_sell(void)
/* Make a sound */
sound(SOUND_SELL);
- /* Be happy */
- decrease_insults();
-
/* Get some money */
p_ptr->au += price;
@@ -4188,10 +3452,7 @@ void store_shuffle(int which)
/* Reset the owner data */
- st_ptr->insult_cur = 0;
st_ptr->store_open = 0;
- st_ptr->good_buy = 0;
- st_ptr->bad_buy = 0;
/* Hack -- discount all the items */
@@ -4206,9 +3467,6 @@ void store_shuffle(int which)
if (!(o_ptr->art_name))
o_ptr->discount = 50;
- /* Hack -- Items are no longer "fixed price" */
- o_ptr->ident &= ~(IDENT_FIXED);
-
/* Mega-Hack -- Note that the item is "on sale" */
o_ptr->note = quark_add("on sale");
}
@@ -4238,9 +3496,6 @@ void store_maint(int town_num, int store_num)
/* Activate the owner */
ot_ptr = &ow_info[st_ptr->owner];
- /* Store keeper forgives the player */
- st_ptr->insult_cur = 0;
-
/* Mega-Hack -- prune the black market */
if (st_info[st_ptr->st_idx].flags1 & SF1_ALL_ITEM)
{
@@ -4328,9 +3583,6 @@ void store_init(int town_num, int store_num)
/* Initialize the store */
st_ptr->store_open = 0;
- st_ptr->insult_cur = 0;
- st_ptr->good_buy = 0;
- st_ptr->bad_buy = 0;
/* Nothing in stock */
st_ptr->stock_num = 0;
diff --git a/src/tables.c b/src/tables.c
index 1ebc52fd..2e01284a 100644
--- a/src/tables.c
+++ b/src/tables.c
@@ -1453,9 +1453,6 @@ option_type option_info[] =
/*** Game-Play ***/
- { &auto_haggle, TRUE, 3, 0,
- "auto_haggle", "Auto-haggle in stores" },
-
{ &auto_scum, TRUE, 3, 1,
"auto_scum", "Auto-scum for good levels" },
diff --git a/src/types.h b/src/types.h
index 538df721..bddb304b 100644
--- a/src/types.h
+++ b/src/types.h
@@ -1001,15 +1001,10 @@ struct owner_type
s16b max_cost; /* Purse limit */
- byte max_inflate; /* Inflation (max) */
- byte min_inflate; /* Inflation (min) */
+ s16b inflation; /* Inflation */
- byte haggle_per; /* Haggle unit */
-
- byte insult_max; /* Insult limit */
-
- u32b races[2][2]; /* Liked/hated races */
- u32b classes[2][2]; /* Liked/hated classes */
+ u32b races[2][2]; /* Liked/hated races */
+ u32b classes[2][2]; /* Liked/hated classes */
s16b costs[3]; /* Costs for liked people */
};
@@ -1029,11 +1024,6 @@ struct store_type
u16b owner; /* Owner index */
- s16b insult_cur; /* Insult counter */
-
- s16b good_buy; /* Number of "good" buys */
- s16b bad_buy; /* Number of "bad" buys */
-
s32b store_open; /* Closed until this turn */
s32b last_visit; /* Last visited on this turn */
diff --git a/src/variable.c b/src/variable.c
index 0cea5814..c77c3c7a 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -232,8 +232,6 @@ bool_ disturb_pets; /* Pets moving nearby disturb us */
/* Option Set 3 -- Game-Play */
-bool_ auto_haggle; /* Auto-haggle in stores */
-
bool_ auto_scum; /* Auto-scum for good levels */
bool_ stack_allow_items; /* Allow weapons and armor to stack */