Skip to content

Commit

Permalink
Rebalance crossbows
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
PleasingFungus committed Jul 13, 2014
1 parent 9b6b733 commit cfb6190
Show file tree
Hide file tree
Showing 47 changed files with 178 additions and 105 deletions.
10 changes: 5 additions & 5 deletions crawl-ref/source/art-data.txt
Original file line number Diff line number Diff line change
Expand Up @@ -444,9 +444,9 @@ ANGRY: 3
STEALTH: -1
BOOL: life

NAME: crossbow "Hellfire"
NAME: arbalest "Hellfire"
INSCRIP: hellfire,
OBJ: OBJ_WEAPONS/WPN_CROSSBOW
OBJ: OBJ_WEAPONS/WPN_ARBALEST
PLUS: +6
COLOUR: ETC_FIRE
TILE: urand_hellfire
Expand Down Expand Up @@ -521,9 +521,9 @@ MAGIC: 2
AC: 5
BOOL: elec

NAME: crossbow "Sniper"
OBJ: OBJ_WEAPONS/WPN_CROSSBOW
PLUS: +15
NAME: heavy crossbow "Sniper"
OBJ: OBJ_WEAPONS/WPN_TRIPLE_CROSSBOW
PLUS: +10
COLOUR: ETC_DARK
TILE: urand_sniper
TILE_EQ: sniper
Expand Down
2 changes: 1 addition & 1 deletion crawl-ref/source/artefact.cc
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ static void _get_randart_properties(const item_def &item,

if (atype == WPN_BLOWGUN)
proprt[ARTP_BRAND] = coinflip() ? SPWPN_SPEED : SPWPN_EVASION;
else if (atype == WPN_CROSSBOW)
else if (range_skill(item) == SK_CROSSBOWS)
{
// Penetration and electrocution are only allowed on
// crossbows. This may change in future.
Expand Down
2 changes: 1 addition & 1 deletion crawl-ref/source/dat/des/branches/depths_encompass.des
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,7 @@ MONS: very ugly thing w:15 / shapeshifter / unseen horror w:15 / \
dire flail w:5 ego:flaming | dire flail w:5 ego:freezing
MONS: frost giant w:5 / fire giant w:5 / naga mage w:15 / hell knight w:5 / \
salamander mystic w:5 / spriggan air mage / deep troll earth mage / \
yaktaur captain ; crossbow ego:flaming | crossbow ego:freezing . bolt / \
yaktaur captain ; arbalest ego:flaming | arbalest ego:freezing . bolt / \
rakshasa w:5 ; robe . wand of fire | wand of cold . \
glaive w:2 ego:flaming | glaive w:2 ego:freezing
MONS: lorocyproca w:5 / fire dragon perm_ench:shapeshifter w:12 / fire dragon w:3 / \
Expand Down
10 changes: 5 additions & 5 deletions crawl-ref/source/dat/des/branches/orc.des
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,7 @@ TAGS: no_item_gen no_monster_gen
DEPTH: Orc:3-
KMONS: 1 = orc high priest / orc sorcerer
KMONS: 2 = orc knight
KMONS: 3 = orc warrior / orc ; crossbow . bolt . spear | hand axe | mace
KMONS: 3 = orc warrior / orc ; arbalest . bolt . spear | hand axe | mace
KMONS: 4 = orc priest / orc / nothing
KMONS: 5 = orc wizard / nothing
KMONS: 6 = ogre / two-headed ogre / troll / deep troll / ogre mage / nothing
Expand Down Expand Up @@ -1401,10 +1401,10 @@ ENDMAP
NAME: st_orc_rangers
TAGS: no_rotate no_item_gen no_monster_gen no_pool_fixup
PLACE: Orc:$
MONS: orc warrior w:1 ; crossbow . bolt . halberd | war axe | morningstar /\
orc w:10 ; crossbow . bolt . trident | hand axe | mace
MONS: orc warrior ; crossbow . bolt . glaive | broad axe | battleaxe | great mace
MONS: orc knight ; crossbow . bolt . glaive | broad axe | great mace
MONS: orc warrior w:1 ; arbalest . bolt . halberd | war axe | morningstar /\
orc w:10 ; arbalest . bolt . trident | hand axe | mace
MONS: orc warrior ; arbalest . bolt . glaive | broad axe | battleaxe | great mace
MONS: orc knight ; arbalest . bolt . glaive | broad axe | great mace
MONS: orc warrior
MONS: centaur w:20 / centaur warrior w:1 / nothing w:21
SUBST: 3 = 23
Expand Down
4 changes: 2 additions & 2 deletions crawl-ref/source/dat/des/branches/vaults.des
Original file line number Diff line number Diff line change
Expand Up @@ -282,9 +282,9 @@ ENDMAP
NAME: grunt_vaults_entry_fortified
TAGS: vaults_entry no_pool_fixup no_monster_gen patrolling
ORIENT: north
MONS: human ; crossbow . bolt q:10 . short sword | dagger . \
MONS: human ; arbalest . bolt q:10 . short sword | dagger . \
leather armour w:5 | ring mail | scale mail / \
orc warrior ; crossbow . bolt q:10 . short sword | dagger . \
orc warrior ; arbalest . bolt q:10 . short sword | dagger . \
leather armour w:5 | ring mail | scale mail / \
deep elf fighter / gargoyle / yaktaur
MONS: vault guard / orc knight w:2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1694,7 +1694,7 @@ NAME: nicolae_vaults_yaktaur_gun_rack
TAGS: vaults_room no_monster_gen no_item_gen
MONS: yaktaur w:8 / yaktaur band w:4 / yaktaur captain w:2 / yaktaur captain band w:1
KITEM: b = bolt w:3 / bolt good_item w:2
KITEM: c = crossbow w:4 / crossbow good_item w:1
KITEM: c = arbalest w:8 / arbalest good_item w:1 / triple crossbow w:1
MAP
xxxxxxx
xcccccx
Expand Down
2 changes: 1 addition & 1 deletion crawl-ref/source/dat/des/branches/zot.des
Original file line number Diff line number Diff line change
Expand Up @@ -1083,7 +1083,7 @@ KMONS: 1357 = guardian mummy ; randart dire flail ego:chaos | \
great mace w:30 | battleaxe w:30 | great sword w:30 | \
scythe w:30 | glaive w:30 | any weapon w:12 . \
randart hunting sling ego:chaos | randart shortbow ego:chaos | \
randart crossbow ego:chaos | hunting sling | shortbow | crossbow | \
randart arbalest ego:chaos | hunting sling | shortbow | arbalest | \
nothing w:15 . sling bullet | arrow | bolt . \
lightning rod w:6 | rod of shadows w:4 | rod of the swarm w:4 | \
rod of destruction w:2 | rod of striking w:6 | wand of hasting w:16 | \
Expand Down
6 changes: 3 additions & 3 deletions crawl-ref/source/dat/des/portals/bailey.des
Original file line number Diff line number Diff line change
Expand Up @@ -759,8 +759,8 @@ ENDMAP
NAME: bailey_polearm_2
ORIENT: encompass
TAGS: bailey_polearm no_rotate no_pool_fixup no_monster_gen
MONS: orc warrior w:5 ; crossbow . bolt . ring mail | scale mail / \
orc ; crossbow . bolt . ring mail | scale mail
MONS: orc warrior w:5 ; arbalest . bolt . ring mail | scale mail / \
orc ; arbalest . bolt . ring mail | scale mail
: orc_with_polearm(_G)
: orc_warrior_with_polearm(_G)
: orc_knight_with_polearm(_G)
Expand Down Expand Up @@ -877,7 +877,7 @@ NAME: bailey_polearm_4
ORIENT: encompass
TAGS: bailey_polearm no_rotate no_item_gen no_monster_gen no_pool_fixup
ITEM: any good_item
MONS: orc warrior ; crossbow . bolt . ring mail | scale mail | chain mail / \
MONS: orc warrior ; arbalest . bolt . ring mail | scale mail | chain mail / \
orc warrior ; halberd . ring mail | scale mail | chain mail
: orc_with_polearm(_G)
: orc_warrior_with_polearm(_G)
Expand Down
2 changes: 1 addition & 1 deletion crawl-ref/source/dat/des/portals/icecave.des
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ function ice_cave_caverns_natural_giant_loot(e)
glaive " .. goodfreezeweap .. " w:4 / \
great sword " .. goodfreezeweap .. " w:2 / nothing")
e.item("book of ice / randbook disc:ice numspells:6 w:2 / \
crossbow ego:freezing good_item no_uniq ident:type / \
arbalest ego:freezing good_item no_uniq ident:type / \
longbow ego:freezing good_item no_uniq ident:type / nothing w:20")
e.item("ring of ice / ring of protection from cold / wand of cold / \
arrow ego:frost q:25 / bolt ego:frost q:20 / nothing")
Expand Down
2 changes: 1 addition & 1 deletion crawl-ref/source/dat/des/portals/trove.des
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,7 @@ MONS: fire dragon skeleton
ITEM: animal skin good_item / any armour good_item
ITEM: gold dragon hide / storm dragon hide / fire dragon hide / troll hide / any useful armour good_item
ITEM: arrow good_item / bolt good_item
ITEM: longbow good_item / crossbow good_item / any useful weapon good_item
ITEM: longbow good_item / arbalest good_item / any useful weapon good_item
SHUFFLE: 123
SHUFFLE: defg
: trove.setup_features(_G)
Expand Down
4 changes: 2 additions & 2 deletions crawl-ref/source/dat/des/portals/volcano.des
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ function setup_loot (e)
"broad axe w:20", "battleaxe", "executioner's axe w:1",
"spear w:20", "trident w:20", "demon trident w:1",
"glaive w:1", "halberd", "lajatang",
"longbow w:5", "crossbow w:5"}))
"longbow w:5", "arbalest w:5"}))
e.item("any")
end

Expand Down Expand Up @@ -280,7 +280,7 @@ function fiery_guardians (e, intelligent, village)
.. ", ogre mage ; " .. magestuff)
elseif set_weight < 9 then
e.mons(centaur
.. " / yaktaur w:5 ; crossbow . bolt ego:flame ident:type")
.. " / yaktaur w:5 ; arbalest . bolt ego:flame ident:type")
e.kmons("2 = Nessos / centaur warrior w:40 ; " .. centaurstuff
.. ", centaur warrior ; " .. centaurstuff)
elseif set_weight < 10 then
Expand Down
3 changes: 2 additions & 1 deletion crawl-ref/source/dat/des/sprint/arena_sprint.des
Original file line number Diff line number Diff line change
Expand Up @@ -1083,7 +1083,8 @@ KFEAT: Q = weapon shop type:Weapon suffix:Rack count:17 use_all greed:30 ; \
mundane not_cursed great mace | mundane not_cursed giant spiked club |\
mundane not_cursed demon trident | mundane not_cursed bardiche |\
mundane not_cursed lajatang | mundane not_cursed longbow |\
mundane not_cursed greatsling | mundane not_cursed crossbow |\
mundane not_cursed greatsling | mundane not_cursed triple crossbow \
|\
mundane bolt q:50 | mundane sling bullet q:50 |\
mundane arrow q:50
KFEAT: H = distillery shop type:Bottled suffix:Wisdom count:5 use_all greed:6 ; \
Expand Down
6 changes: 3 additions & 3 deletions crawl-ref/source/dat/des/sprint/linesprint.des
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ KITEM: b = any weapon level:27 ident:all /\
claymore plus:0 not_cursed ident:all w:3 /\
lajatang plus:1 not_cursed ident:all /\
longbow plus:1 not_cursed ident:all /\
crossbow plus:1 not_cursed ident:all /\
triple crossbow plus:0 not_cursed ident:all /\
any weapon good_item ident:all w:30
KITEM: d = any armour level:27 ident:all /\
pair of gloves plus:1 ident:all not_cursed /\
Expand Down Expand Up @@ -617,7 +617,7 @@ KITEM: b = battleaxe plus:4 ego:none not_cursed ident:all /\
lajatang plus:4 ego:none not_cursed ident:all /\
lajatang plus:1 good_item not_cursed ident:all /\
longbow plus:3 good_item not_cursed ident:all w:15 /\
crossbow plus:3 good_item not_cursed ident:all w:15
triple crossbow plus:0 good_item not_cursed ident:all w:15
KITEM: d = plate armour plus:5 not_cursed ident:all /\
plate armour plus:3 good_item not_cursed ident:all /\
chain mail plus:5 not_cursed ident:all w:20 /\
Expand Down Expand Up @@ -835,7 +835,7 @@ KITEM: b = battleaxe plus:5 good_item not_cursed ident:all /\
lajatang plus:5 good_item not_cursed ident:all /\
lajatang plus:5 randart not_cursed ident:all w:5 /\
longbow plus:5 ego:vorpal not_cursed ident:all w:15 /\
crossbow plus:5 ego:vorpal not_cursed ident:all w:15
triple crossbow plus:5 good_item not_cursed ident:all w:15
KITEM: d = plate armour plus:6 not_cursed ident:all /\
plate armour plus:4 good_item not_cursed ident:all /\
chain mail plus:6 not_cursed ident:all /\
Expand Down
6 changes: 3 additions & 3 deletions crawl-ref/source/dat/des/sprint/pitsprint.des
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ function general_item_setup(e)
lajatang plus:9 good_item not_cursed ident:all /\
lajatang plus:7 randart not_cursed ident:all /\
longbow plus:7 ego:vorpal not_cursed ident:all w:15 /\
crossbow plus:7 ego:vorpal not_cursed ident:all w:15")
triple crossbow plus:7 good_item not_cursed ident:all w:15")
e.kitem("] = plate armour plus:12 not_cursed ident:all /\
plate armour plus:8 good_item not_cursed ident:all /\
chain mail plus:8 not_cursed ident:all /\
Expand Down Expand Up @@ -286,7 +286,7 @@ function general_item_setup(e)
lajatang plus:6 ego:none not_cursed ident:all /\
lajatang plus:3 good_item not_cursed ident:all /\
longbow plus:5 good_item not_cursed ident:all w:15 /\
crossbow plus:5 good_item not_cursed ident:all w:15")
triple crossbow plus:0 good_item not_cursed ident:all w:15")
e.kitem("[ = plate armour plus:7 not_cursed ident:all /\
plate armour plus:4 good_item not_cursed ident:all /\
chain mail plus:7 not_cursed ident:all w:20 /\
Expand Down Expand Up @@ -431,7 +431,7 @@ function armoury_setup(e)
claymore plus:1 not_cursed ident:all w:3 /\
lajatang plus:3 not_cursed ident:all /\
longbow plus:3 not_cursed ident:all /\
crossbow plus:3 not_cursed ident:all /\
arbalest plus:3 not_cursed ident:all /\
any weapon good_item ident:all w:30")
e.kitem("b = any armour level:27 ident:all /\
pair of gloves plus:1 ident:all not_cursed /\
Expand Down
4 changes: 2 additions & 2 deletions crawl-ref/source/dat/des/sprint/sprint_mu.des
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,7 @@ KMONS: f = butterfly
KMONS: U = Norris ; morningstar ego:vorpal . large shield ego:reflection / \
Frederick ; trident ego:freezing . large shield ego:reflection
KMONS: C = generate_awake Chuck
KMONS: k = yaktaur captain ; crossbow ego:chaos . bolt
KMONS: k = yaktaur captain ; arbalest ego:chaos . bolt
KMONS: b = bush
KMONS: D = fire dragon
NSUBST: $ = 1:1 / *:|
Expand Down Expand Up @@ -1176,7 +1176,7 @@ KMONS: r = hydra simulacrum / golden dragon zombie / spectral iron dragon / \
titan zombie
KMONS: s = boris
KMONS: t = col:white generate_awake statue name:pristine name_adjective \
hp:100 tile:mons_statue_crossbow ; crossbow . bolt q:50 ego:silver
hp:100 tile:mons_statue_crossbow ; arbalest . bolt q:50 ego:silver
KMONS: u = Mennas
KMONS: y = generate_awake roxanne
KMONS: z = oklob plant
Expand Down
4 changes: 3 additions & 1 deletion crawl-ref/source/dat/des/sprint/zigsprint.des
Original file line number Diff line number Diff line change
Expand Up @@ -739,8 +739,10 @@ KITEM: H = demon blade mundane not_cursed ident:all plus:5, \
great sword mundane not_cursed ident:all plus:5, \
claymore mundane not_cursed ident:all plus:5
KITEM: I = lajatang mundane not_cursed ident:all plus:5
KITEM: J = crossbow mundane not_cursed ident:all plus:5, \
KITEM: J = hand crossbow mundane not_cursed ident:all plus:5, \
bolt q:1000 mundane ident:all, \
arbalest mundane not_cursed ident:all plus:5, \
triple crossbow mundane not_cursed ident:all plus:5, \
shortbow mundane not_cursed ident:all plus:5, \
arrow q:1000 mundane ident:all, \
longbow mundane not_cursed ident:all plus:5, \
Expand Down
2 changes: 1 addition & 1 deletion crawl-ref/source/dat/des/variable/arcadia.des
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ MONS: the Enchantress patrolling, thorn hunter / spriggan defender
MONS: tengu reaver / glowing shapeshifter hd:13
MONS: satyr w:15 / spriggan berserker w:15 / spriggan air mage, faun
MONS: tengu conjurer ; quarterstaff . robe . longbow . arrow / \
tengu conjurer ; quarterstaff . robe . crossbow . bolt / \
tengu conjurer ; quarterstaff . robe . arbalest . bolt / \
centaur warrior / rakshasa / ogre mage ; giant club . \
robe . potion of berserk rage q:1 ident:type
KMONS: L = water nymph
Expand Down
8 changes: 4 additions & 4 deletions crawl-ref/source/dat/des/variable/float.des
Original file line number Diff line number Diff line change
Expand Up @@ -2279,8 +2279,8 @@ NAME: hangedman_opposites_gauntlet
TAGS: no_monster_gen patrolling
ORIENT: float
DEPTH: D:14-15, Depths, !Depths:$
MONS: orc knight ; wand of frost . crossbow ego:flaming . bolt ego:none . chain mail / \
orc knight ; wand of flame . crossbow ego:freezing . bolt ego:none . chain mail
MONS: orc knight ; wand of frost . arbalest ego:flaming . bolt ego:none . chain mail / \
orc knight ; wand of flame . arbalest ego:freezing . bolt ego:none . chain mail
MONS: ettin ; giant club ego:holy_wrath ident:type . great mace ego:draining ident:type
MONS: rakshasa ; scythe ego:antimagic | trident ego:antimagic / \
mermaid ; chain mail . javelin ego:poisoned
Expand Down Expand Up @@ -2741,7 +2741,7 @@ MONS: flying skull
ITEM: bolt ego:exploding q:5
ITEM: potion of heal wounds
ITEM: plate armour good_item
ITEM: crossbow ego:flaming w:9 ident:type / crossbow unrand:hellfire w:1
ITEM: arbalest ego:flaming w:9 ident:type / arbalest unrand:hellfire w:1
SUBST: ( = ()
TILE: c = wall_marble
MAP
Expand Down Expand Up @@ -2790,7 +2790,7 @@ MONS: deep troll
# Fortunately, we have a permanently invisible 2 already.
MONS: lorocyproca
: end
ITEM: crossbow, bolt, potion of curing, potion of heal wounds
ITEM: arbalest, bolt, potion of curing, potion of heal wounds
ITEM: potion of invisibility
KFEAT: - = open_door
SHUFFLE: })]>
Expand Down
21 changes: 16 additions & 5 deletions crawl-ref/source/dat/descript/items.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ A large piece of thick skin covered in fur, cut from the corpse of an animal
and worn as a primitive garment. It offers rudimentary protection against harm,
but, having never been tanned, it carries a light stench of rotting flesh.
%%%%
arbalest

A large piece of machinery used for firing bolts, braced with steel and cranked
with a windlass. It takes some time to load and fire.
%%%%
arrow

A long shafted projectile intended to be shot with a short- or longbow, fletched
Expand Down Expand Up @@ -404,11 +409,6 @@ corpse

A corpse. You can butcher it to produce edible meat chunks.
%%%%
crossbow

A piece of machinery used for firing bolts, which takes some time to load and
fire. It does very good damage in combat.
%%%%
crystal ball of energy

A magical device which can be used to restore one's reserves of magical energy,
Expand Down Expand Up @@ -601,6 +601,11 @@ hand axe

A small axe.
%%%%
hand crossbow

A compact piece of machinery, used for firing bolts. It takes some time to load
and fire.
%%%%
hat

A cloth or leather hat.
Expand Down Expand Up @@ -1427,6 +1432,12 @@ trident

A fishing spear improved with a longer shaft and a three-pronged metal head.
%%%%
triple crossbow

Initially designed as a siege weapon and then scaled down, this crossbow uses
three strings arranged in series to provide exceptional power. It takes a
considerable amount of time to load and fire.
%%%%
trishula

A blessed trident moulded by cleansing flame, with three points symbolising the
Expand Down
Loading

0 comments on commit cfb6190

Please sign in to comment.