From 47981fe34042ed691531658692e3aa4102bfbd0b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 10 Apr 2021 17:59:21 -0300 Subject: Use Moubootaur Legends logic on how script hooks are supposed to behave --- src/emap/skill.c | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/src/emap/skill.c b/src/emap/skill.c index 20e4a82..77cff19 100644 --- a/src/emap/skill.c +++ b/src/emap/skill.c @@ -47,25 +47,6 @@ int eskill_check_condition_castend_post(int retVal, uint16 skill_id, uint16 skill_lv) { - if (retVal && sd) - { - struct linkdb_node **label_linkdb = strdb_get(npc->ev_label_db, "OnSkillInvoke"); - if (label_linkdb == NULL) - return retVal; - - struct linkdb_node *node = *label_linkdb; - while (node) - { - struct event_data* ev = node->data; - if (ev) - { - pc->setreg(sd, script->add_variable("@skillId"), skill_id); - pc->setreg(sd, script->add_variable("@skillLv"), skill_lv); - script->run(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id); - } - node = node->next; - } - } return retVal; } @@ -86,6 +67,36 @@ bool eskill_castend_nodamage_id_unknown(struct block_list *src, clif->skill_nodamage(src, bl, *skill_id, *skill_lv, 1); break; } + + struct map_session_data *sd = NULL; + sd = BL_CAST(BL_PC, src); + + if (sd) + { + // Add skill info + pc->setreg(sd, script->add_variable("@skillId"), *skill_id); + pc->setreg(sd, script->add_variable("@skillLv"), *skill_lv); + pc->setreg(sd, script->add_variable("@skillTarget"), bl->id); + pc->setreg(sd, script->add_variable("@skillTargetX"), bl->x); + pc->setreg(sd, script->add_variable("@skillTargetY"), bl->y); + pc->setreg(sd, script->add_variable("@skillCaster"), src->id); + // Summon scripts + struct linkdb_node **label_linkdb = strdb_get(npc->ev_label_db, "OnSkillInvoke"); + if (label_linkdb == NULL) + return true; + + struct linkdb_node *node = *label_linkdb; + while (node) + { + struct event_data* ev = node->data; + if (ev) + { + script->run(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id); + } + node = node->next; + } + } + map->freeblock_unlock(); return true; } -- cgit v1.2.3-60-g2f50