summaryrefslogtreecommitdiff
path: root/src/map/unit.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-08 16:17:30 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-08 16:17:30 +0000
commit7c8e1245438b395d5742b936372fb55e3150b53c (patch)
treef7bb1598c829f199fba3240632c88af2aacc4ff5 /src/map/unit.c
parentab522d194a3ee70758bab2113d2b34f34706f24f (diff)
downloadhercules-7c8e1245438b395d5742b936372fb55e3150b53c.tar.gz
hercules-7c8e1245438b395d5742b936372fb55e3150b53c.tar.bz2
hercules-7c8e1245438b395d5742b936372fb55e3150b53c.tar.xz
hercules-7c8e1245438b395d5742b936372fb55e3150b53c.zip
- Moved the duel functions to pc.c since they are so totally out of place in atcommand.c
- Fixed Spider Web not ending when hit by a fireelemental attack. - Cast-time reductions from status changes will not be executed until right before casting, to prevent status changes from ending when attempting to cast and the attempt fails (invalid cells, not enough sp, wrong target, etc, etc) - Added check to prevent Wand of Hermod from seeking for a partner to encore, since the partner is supposed to be the warp. - Moved the duel auto-reject on logout from map_quit to unit_free - Corrected the mob spawn reading code so that the event-name can be up to 50 characters long (which is the actual event length) and so that it can read spaces within them, it will also strip the leading/trailing quotes if you use them so that the event is actually found on mob-death (so you can do stuff like "My NPC::OnDead" as a valid event). - Moved the homunc inherit speed from the master from status_calc_pc to LoadEndAck, since the hom's speed matches that of the master each time the master changes maps. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9173 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/unit.c')
-rw-r--r--src/map/unit.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/map/unit.c b/src/map/unit.c
index c8e4fb341..2f46a0d9c 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -930,6 +930,9 @@ int unit_skilluse_id2(struct block_list *src, int target_id, int skill_num, int
casttime = casttime * ((distance_bl(src,target)-1)/3+1);
break;
}
+
+ if (!(skill_get_castnodex(skill_num, skill_lv)&2))
+ casttime = skill_castfix_sc(src, casttime);
if( casttime>0 || temp){
@@ -1047,12 +1050,14 @@ int unit_skilluse_pos2( struct block_list *src, int skill_x, int skill_y, int sk
unit_stop_attack(src);
ud->state.skillcastcancel = castcancel;
+
+ if (!(skill_get_castnodex(skill_num, skill_lv)&2))
+ casttime = skill_castfix_sc(src, casttime);
+
if( casttime>0 ) {
unit_stop_walking( src, 1);
clif_skillcasting(src, src->id, 0, skill_x,skill_y, skill_num,casttime);
- }
-
- if( casttime<=0 )
+ } else
ud->state.skillcastcancel=0;
ud->canact_tick = tick + casttime + 100;
@@ -1727,7 +1732,14 @@ int unit_free(struct block_list *bl, int clrtype) {
}
if (sd->followtimer != -1)
pc_stop_following(sd);
-
+ // Force exiting from duel and rejecting
+ // all duel invitations when player quit [LuzZza]
+ if(sd->duel_group > 0)
+ duel_leave(sd->duel_group, sd);
+
+ if(sd->duel_invite > 0)
+ duel_reject(sd->duel_invite, sd);
+
// Notify friends that this char logged out. [Skotlex]
clif_foreachclient(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0);
party_send_logout(sd);