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/beam.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'crawl-ref/source/beam.cc') diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index df3c1dd027..6cc016e777 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2389,6 +2389,13 @@ void beam_drop_object( bolt &beam, item_def *item, int x, int y ) return; } + // doesn't get destroyed by throwing + if (item->sub_type == MI_THROWING_NET) + { + copy_item_to_grid( *item, x, y, 1 ); + return; + } + if (YOU_KILL(beam.thrower)) // you threw it { int chance; @@ -3342,6 +3349,9 @@ static int affect_player( bolt &beam ) poison_player( 1 + random2(3) ); } } + + if (beam.name.find("throwing net") != std::string::npos) + player_caught_in_net(); if (beam.name.find("curare") != std::string::npos) { @@ -3695,6 +3705,9 @@ static int affect_monster(bolt &beam, monsters *mon) mprf(MSGCH_SOUND, "The %s hits something.", beam.name.c_str()); } + if (beam.name.find("throwing net") != std::string::npos) + monster_caught_in_net(mon); + // note that hurt_final was calculated above, so we don't need it again. // just need to apply flavoured specials (since we called with // doFlavouredEffects = false above) -- cgit v1.2.3-54-g00ecf