summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r--crawl-ref/source/dungeon.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index d81c0c96a8..eb7c4639e2 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -4901,6 +4901,21 @@ void place_spec_shop( int level_number,
{
env.shop[i].greed = 15 + random2avg(19, 2) + random2(level_number);
}
+
+ // allow bargains in bazaars, prices randomly between 60% and 95%
+ if (you.level_type == LEVEL_PORTAL_VAULT && you.level_type_name == "bazaar")
+ {
+ // need to calculate with factor as greed (unsigned char) is capped at 255
+ int factor = random2(8)+12;
+#ifdef DEBUG_DIAGNOSTICS
+ mprf(MSGCH_DIAGNOSTICS, "shop type %d: original greed = %d, factor = %d",
+ env.shop[i].type, env.shop[i].greed, factor);
+ mprf(MSGCH_DIAGNOSTICS, "discount at shop %d is %d%%", i, (20-factor)*5);
+#endif
+ factor *= env.shop[i].greed;
+ factor /= 20;
+ env.shop[i].greed = factor;
+ }
int plojy = 5 + random2avg(12, 3);
if (representative)
@@ -4927,6 +4942,16 @@ void place_spec_shop( int level_number,
item_level = level_number + random2((level_number + 1) * 3);
}
+ // make bazaar items more valuable (up to double value)
+ if (you.level_type == LEVEL_PORTAL_VAULT && you.level_type_name == "bazaar")
+ {
+ int help = random2(item_level) + 1;
+ item_level += help;
+
+ if (item_level > level_number * 5)
+ item_level = level_number * 5;
+ }
+
// don't generate gold in shops! This used to be possible with
// General Stores (see item_in_shop() below) (GDL)
while (true)