diff options
author | Inkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-05-19 09:13:23 +0000 |
---|---|---|
committer | Inkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-05-19 09:13:23 +0000 |
commit | 40a8bcc998538b3a09a50b76c59806a9962d9686 (patch) | |
tree | 0dd96ac00f769fe07a1a8afd1250b72be3491f2f /src | |
parent | 5eb1f6ded420742febf81603f4b23920121fdeb0 (diff) | |
download | hercules-40a8bcc998538b3a09a50b76c59806a9962d9686.tar.gz hercules-40a8bcc998538b3a09a50b76c59806a9962d9686.tar.bz2 hercules-40a8bcc998538b3a09a50b76c59806a9962d9686.tar.xz hercules-40a8bcc998538b3a09a50b76c59806a9962d9686.zip |
Fiberlock now can trap multiple enemies on the same cell and its triggering area was reduced to 1x1.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13792 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/skill.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index cb97bd0d0..8fd559cba 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7162,8 +7162,9 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns if (sg->interval == -1) { switch (sg->unit_id) { + case UNT_SPIDERWEB: // The 'interval' value was set to -1 so that the unit wouldn't trigger in the next interval, + break; // but FiberLock can trap multiple targets on the same cell. [Inkfish] case UNT_ANKLESNARE: //These happen when a trap is splash-triggered by multiple targets on the same cell. - case UNT_SPIDERWEB: case UNT_FIREPILLAR_ACTIVE: return 0; default: @@ -7337,18 +7338,22 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case UNT_SPIDERWEB: case UNT_ANKLESNARE: - if(sg->val2==0 && tsc){ + if( ( sg->val2 == 0 || sg->unit_id == UNT_SPIDERWEB ) && tsc ) + { int sec = skill_get_time2(sg->skill_id,sg->skill_lv); - if (status_change_start(bl,type,10000,sg->skill_lv,sg->group_id,0,0,sec, 8)) + if( status_change_start(bl,type,10000,sg->skill_lv,sg->group_id,0,0,sec, 8) ) { - const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL; - if (td) sec = DIFF_TICK(td->tick, tick); + const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL; + if( td ) + sec = DIFF_TICK(td->tick, tick); map_moveblock(bl, src->bl.x, src->bl.y, tick); clif_fixpos(bl); - sg->val2=bl->id; - } else + sg->val2 = bl->id; + } + else sec = 3000; //Couldn't trap it? - if( sg->unit_id == UNT_ANKLESNARE ) clif_01ac(&src->bl); // mysterious packet + if( sg->unit_id == UNT_ANKLESNARE ) + clif_01ac(&src->bl); // mysterious packet sg->limit = DIFF_TICK(tick,sg->tick)+sec; sg->interval = -1; src->range = 0; |