From 5b618acbca35621d699dc4ba3064f2a3228a5131 Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Mon, 20 Aug 2007 12:23:38 +0000 Subject: 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 --- crawl-ref/source/item_use.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'crawl-ref/source/item_use.cc') 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; -- cgit v1.2.3-54-g00ecf