diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-02-24 14:09:53 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-02-24 14:09:53 +0300 |
commit | bb1a3ca33a9e72c6a4cf2c97abf5a721a6ed87a9 (patch) | |
tree | 797e74838daa1d4d268f28b9c37f533b9be8595a /src/map/skill.c | |
parent | ca0677235f97d64bf6acc20d40e942c5add21698 (diff) | |
download | evol-hercules-bb1a3ca33a9e72c6a4cf2c97abf5a721a6ed87a9.tar.gz evol-hercules-bb1a3ca33a9e72c6a4cf2c97abf5a721a6ed87a9.tar.bz2 evol-hercules-bb1a3ca33a9e72c6a4cf2c97abf5a721a6ed87a9.tar.xz evol-hercules-bb1a3ca33a9e72c6a4cf2c97abf5a721a6ed87a9.zip |
On each success skill invoke call event OnSkillInvoke.
Alos set variables @skillId and @skillLv to skill id and skill level.
Diffstat (limited to 'src/map/skill.c')
-rw-r--r-- | src/map/skill.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/map/skill.c b/src/map/skill.c new file mode 100644 index 0000000..67dd563 --- /dev/null +++ b/src/map/skill.c @@ -0,0 +1,44 @@ +// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// Copyright (c) 2014 Evol developers + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../../../common/db.h" +#include "../../../common/HPMi.h" +#include "../../../common/malloc.h" +#include "../../../common/mmo.h" +#include "../../../common/socket.h" +#include "../../../common/strlib.h" +#include "../../../common/timer.h" +#include "../../../map/pc.h" +#include "../../../map/npc.h" +#include "../../../map/script.h" + +int eskill_check_condition_castend_post(int retVal, + struct map_session_data* sd, + 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_str("@skillId"), *skill_id); + pc->setreg(sd, script->add_str("@skillLv"), *skill_lv); + script->run(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id); + } + node = node->next; + } + } + return retVal; +} |