diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-04-10 17:59:21 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-04-10 17:59:21 -0300 |
commit | 47981fe34042ed691531658692e3aa4102bfbd0b (patch) | |
tree | 2033d3d62ad2499ffa531ffc229b46909120725d | |
parent | 64f5b4f481768e661b26002de4d763981de129dc (diff) | |
download | evol-hercules-47981fe34042ed691531658692e3aa4102bfbd0b.tar.gz evol-hercules-47981fe34042ed691531658692e3aa4102bfbd0b.tar.bz2 evol-hercules-47981fe34042ed691531658692e3aa4102bfbd0b.tar.xz evol-hercules-47981fe34042ed691531658692e3aa4102bfbd0b.zip |
Use Moubootaur Legends logic on how script hooks are supposed to behave
-rw-r--r-- | src/emap/skill.c | 49 |
1 files 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; } |