summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-gear.cc
diff options
context:
space:
mode:
authorNicholas Feinberg <pleasingfung@gmail.com>2014-07-13 00:10:30 -0700
committerNicholas Feinberg <pleasingfung@gmail.com>2014-07-13 00:33:57 -0700
commitcfb61905c56eeeb599c04d43f7be9efdaad15e89 (patch)
tree92033bdb46857585911d6f80228a3583455baaba /crawl-ref/source/mon-gear.cc
parent9b6b733bccd0de2af35eb6c28e94e4708a92004d (diff)
downloadcrawl-ref-cfb61905c56eeeb599c04d43f7be9efdaad15e89.tar.gz
crawl-ref-cfb61905c56eeeb599c04d43f7be9efdaad15e89.zip
Rebalance crossbows
Again as a result of the ranged weapons rebalance, crossbows needed to change. The analogy here is long blades' to bows' m&f; better return on skill investment & a higher power cap, but rarer. Hand crossbows are added as a starting type, "something like an armour-piercing dagger"; crossbows are upgraded to arbalests (a little worse than a glaive), and a new rare triple crossbow type is added on the top end (a little worse than a bardiche, though with a lower skill cost.) Please note that the triple crossbow historically existed & is extremely verisimilitudinous. Hellfire is now an arbalest, and Sniper is now a triple crossbow (well, a "heavy crossbow", since it has mindelay of 27 instead of 22, and since I didn't want to have to change the sprite). All crossbows have a mindelay of at least 1.0; this is an attempt to differentiate them. Possibly something more ambitious will be attempted in 1.6, but this is a first step.
Diffstat (limited to 'crawl-ref/source/mon-gear.cc')
-rw-r--r--crawl-ref/source/mon-gear.cc21
1 files changed, 13 insertions, 8 deletions
diff --git a/crawl-ref/source/mon-gear.cc b/crawl-ref/source/mon-gear.cc
index c7284b562c..2d0ad745e6 100644
--- a/crawl-ref/source/mon-gear.cc
+++ b/crawl-ref/source/mon-gear.cc
@@ -268,7 +268,7 @@ static void _give_weapon(monster* mon, int level, bool melee_only = false,
else if (one_chance_in(30) && level > 2)
{
item.base_type = OBJ_WEAPONS;
- item.sub_type = WPN_CROSSBOW;
+ item.sub_type = WPN_HAND_CROSSBOW;
break;
}
break;
@@ -357,7 +357,7 @@ static void _give_weapon(monster* mon, int level, bool melee_only = false,
if (one_chance_in(9))
{
item.base_type = OBJ_WEAPONS;
- item.sub_type = WPN_CROSSBOW;
+ item.sub_type = WPN_ARBALEST;
break;
}
@@ -573,10 +573,10 @@ static void _give_weapon(monster* mon, int level, bool melee_only = false,
{
item.base_type = OBJ_WEAPONS;
if (type == MONS_VASHNIA)
- item.sub_type = coinflip() ? WPN_LONGBOW : WPN_CROSSBOW;
+ item.sub_type = coinflip() ? WPN_LONGBOW : WPN_ARBALEST;
else
{
- item.sub_type = random_choose_weighted(3, WPN_CROSSBOW,
+ item.sub_type = random_choose_weighted(3, WPN_ARBALEST,
2, WPN_SHORTBOW,
1, WPN_LONGBOW,
0);
@@ -711,7 +711,7 @@ static void _give_weapon(monster* mon, int level, bool melee_only = false,
|| mon->type == MONS_MINOTAUR)
&& coinflip())
? WPN_LONGBOW
- : WPN_CROSSBOW;
+ : WPN_ARBALEST;
break;
}
// deliberate fall-through
@@ -741,7 +741,7 @@ static void _give_weapon(monster* mon, int level, bool melee_only = false,
if (!melee_only && one_chance_in(3))
{
item.base_type = OBJ_WEAPONS;
- item.sub_type = WPN_CROSSBOW;
+ item.sub_type = WPN_ARBALEST;
break;
}
@@ -911,7 +911,7 @@ static void _give_weapon(monster* mon, int level, bool melee_only = false,
case MONS_YAKTAUR:
case MONS_YAKTAUR_CAPTAIN:
item.base_type = OBJ_WEAPONS;
- item.sub_type = WPN_CROSSBOW;
+ item.sub_type = WPN_ARBALEST;
break;
case MONS_EFREET:
@@ -1445,7 +1445,12 @@ static void _give_weapon(monster* mon, int level, bool melee_only = false,
level = MAKE_GOOD_ITEM;
item.base_type = OBJ_WEAPONS;
if (!melee_only)
- item.sub_type = coinflip() ? WPN_CROSSBOW : WPN_LONGBOW;
+ {
+ item.sub_type = random_choose_weighted(10, WPN_LONGBOW,
+ 9, WPN_ARBALEST,
+ 1, WPN_TRIPLE_CROSSBOW,
+ 0);
+ }
else
{
item.sub_type = random_choose_weighted(10, WPN_DEMON_BLADE,