summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-04-10 17:59:21 -0300
committerJesusaves <cpntb1@ymail.com>2021-04-10 17:59:21 -0300
commit47981fe34042ed691531658692e3aa4102bfbd0b (patch)
tree2033d3d62ad2499ffa531ffc229b46909120725d
parent64f5b4f481768e661b26002de4d763981de129dc (diff)
downloadevol-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.c49
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;
}