summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-31 02:31:08 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-31 02:31:08 +0000
commit59208abde035ebeea609b043055614616afb72f1 (patch)
tree1f55277a529095e4480547af91528284e7e53635 /src/map
parentf27a5dd6038f94d5f8ef015c700b4c6bc7fc1cc1 (diff)
downloadhercules-59208abde035ebeea609b043055614616afb72f1.tar.gz
hercules-59208abde035ebeea609b043055614616afb72f1.tar.bz2
hercules-59208abde035ebeea609b043055614616afb72f1.tar.xz
hercules-59208abde035ebeea609b043055614616afb72f1.zip
- Fixed pets ignoring can-act delays for skill usage.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6870 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/pet.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/map/pet.c b/src/map/pet.c
index 2b349daff..8fe9c9c72 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -130,12 +130,16 @@ int pet_attackskill(struct pet_data *pd, int target_id)
(battle_config.pet_equip_required && !pd->equip))
return 0;
+ if (DIFF_TICK(pd->ud.canact_tick, gettick()) > 0)
+ return 0;
+
if (rand()%100 < (pd->a_skill->rate +pd->msd->pet.intimate*pd->a_skill->bonusrate/1000))
{ //Skotlex: Use pet's skill
bl=map_id2bl(target_id);
if(bl == NULL || pd->bl.m != bl->m || bl->prev == NULL || status_isdead(bl) ||
!check_distance_bl(&pd->bl, bl, pd->db->range3))
return 0;
+
if (skill_get_inf(pd->a_skill->id) & INF_GROUND_SKILL)
unit_skilluse_pos(&pd->bl, bl->x, bl->y, pd->a_skill->id, pd->a_skill->lv);
else
@@ -1217,13 +1221,19 @@ int pet_skill_support_timer(int tid,unsigned int tick,int id,int data)
}
status = status_get_status_data(&sd->bl);
+
+ if (DIFF_TICK(pd->ud.canact_tick, tick) > 0)
+ { //Wait until the pet can act again.
+ pd->s_skill->timer=add_timer(pd->ud.canact_tick,pet_skill_support_timer,sd->bl.id,0);
+ return 0;
+ }
if(pc_isdead(sd) ||
(rate = status->sp*100/status->max_sp) > pd->s_skill->sp ||
(rate = status->hp*100/status->max_hp) > pd->s_skill->hp ||
(rate = (pd->ud.skilltimer != -1)) //Another skill is in effect
) { //Wait (how long? 1 sec for every 10% of remaining)
- pd->s_skill->timer=add_timer(gettick()+(rate>10?rate:10)*100,pet_skill_support_timer,sd->bl.id,0);
+ pd->s_skill->timer=add_timer(tick+(rate>10?rate:10)*100,pet_skill_support_timer,sd->bl.id,0);
return 0;
}