diff options
author | Nicholas Feinberg <pleasingfung@gmail.com> | 2014-07-13 00:10:30 -0700 |
---|---|---|
committer | Nicholas Feinberg <pleasingfung@gmail.com> | 2014-07-13 00:33:57 -0700 |
commit | cfb61905c56eeeb599c04d43f7be9efdaad15e89 (patch) | |
tree | 92033bdb46857585911d6f80228a3583455baaba /crawl-ref/source/mon-gear.cc | |
parent | 9b6b733bccd0de2af35eb6c28e94e4708a92004d (diff) | |
download | crawl-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.cc | 21 |
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, |