Issue information

Issue ID
#2817
Status
Fixed
Severity
Medium
Started
Hercules Elf Bot
Mar 1, 2009 13:16
Last Post
Hercules Elf Bot
Apr 19, 2012 10:08
Confirmation
Yes (1)
No (0)

Hercules Elf Bot - Mar 1, 2009 13:16

Originally posted by [b]theultramage[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=2817

I recall Zephyrus trying to implement official trap behavior in some recent past. But testing of the changes was apparently skipped, and so the following defects were not pointed out...
  1. you can't do damage to traps with arrow shower
    because this code exits from status_damage() before applying the damage.
    CODE
        if (target->type == BL_SKILL)
            return skill_unit_ondamaged((struct skill_unit *)target, src, hp, gettick());
  2. can't directly attack traps, even my own
  3. only blast mine has knockback as a side-effect to getting hit. This code also affects claymore trap, which is wrong:
    CODE
        case UNT_BLASTMINE:
        case UNT_CLAYMORETRAP:
            skill_blown(bl, &src->bl, 2, -1, 0);
  4. dependency chain when using the above self-knockback code:
    First, the self-knockback code executes, always moving the trap 2 cells away from attacker.
    Then, arrow shower executes and moves trap away from target center. BUT, the trap was already moved and is now on the other side, so it will get blown even further away, or even in a completely unexpected direction!
    Officially, first the arrow shower effect is applied. Perhaps, it should not be an effect of damage, but the skill itself, working instantly instead of having attack delay?


This post has been edited by theultramage: Mar 1 2009, 05:20 AM

Hercules Elf Bot - Jan 4, 2012 3:47

Originally posted by [b]Ind[/b]
1. the skill_unit_ondamaged reduces src->val1 which is checked upon on every trap iteration (every 1s), and if lower than 0 it deletes itself.
2 and 3 fixed in [rev=15380]
4. was fixed in a previous eA revision