summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/item_use.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2007-08-20 12:23:38 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2007-08-20 12:23:38 +0000
commit5b618acbca35621d699dc4ba3064f2a3228a5131 (patch)
treed5a68990291723d0252b29dd9193bce34929f50b /crawl-ref/source/item_use.cc
parent7ca7077ed3e60d71c79c22e07fd0d2491b861ca3 (diff)
downloadcrawl-ref-5b618acbca35621d699dc4ba3064f2a3228a5131.tar.gz
crawl-ref-5b618acbca35621d699dc4ba3064f2a3228a5131.zip
Added throwing nets. These still need work, and thus
are not for 0.3. Obviously. Summary: New item type MI_THROWING_NET. The enchantment of a net describes its state, i.e. whether it's brand-new or almost falling apart (happens at -8). New attribute ATTR_CAUGHT (for monsters ENCH_CAUGHT) that means the victim cannot move and instead struggles against the net until it manages to wriggle out of it (takes a while depending on size) or it is destroyed. Monsters can still use items and spells when trapped. New trap type TRAP_NET that currently is the only source of throwing nets, though Gladiators (and some types of hunters maybe?) should start with a few, and David suggested also allowing the creation of nets for shops. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2020 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/item_use.cc')
-rw-r--r--crawl-ref/source/item_use.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc
index 9b3515fa0f..e306963512 100644
--- a/crawl-ref/source/item_use.cc
+++ b/crawl-ref/source/item_use.cc
@@ -2046,6 +2046,21 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus,
// Javelins train throwing quickly.
exercise(SK_RANGED_COMBAT, 1 + coinflip());
break;
+ case MI_THROWING_NET:
+ // Nets use throwing and T&D skills
+ // They don't do any damage!
+ baseDam = 0;
+ exDamBonus = 0;
+
+ // but accuracy is important for this one
+ baseHit = 1;
+ exHitBonus += (skill_bump(SK_RANGED_COMBAT) * 7 / 2);
+ // Adjust for strength and dex.
+ exHitBonus = dex_adjust_thrown_tohit(exHitBonus);
+
+ // Nets train throwing
+ exercise(SK_RANGED_COMBAT, 1);
+ break;
}
}
@@ -2083,6 +2098,10 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus,
pbolt.rangeMax = pbolt.range;
}
+ else if (wepType == MI_THROWING_NET)
+ {
+ pbolt.rangeMax = pbolt.range = 2 + player_size(PSIZE_BODY);
+ }
else
{
pbolt.range = 12;