summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKevin <Kevin@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-04-05 21:51:00 +0000
committerKevin <Kevin@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-04-05 21:51:00 +0000
commit7a6cfa37c932a2d5893d57343dda44a5c16ad45b (patch)
tree08eb5107fb7b5e85408c28b6bbb8d5b0b394bab3 /src
parent3632377af3098a12fa80819ab74b24bde6c4f666 (diff)
downloadhercules-7a6cfa37c932a2d5893d57343dda44a5c16ad45b.tar.gz
hercules-7a6cfa37c932a2d5893d57343dda44a5c16ad45b.tar.bz2
hercules-7a6cfa37c932a2d5893d57343dda44a5c16ad45b.tar.xz
hercules-7a6cfa37c932a2d5893d57343dda44a5c16ad45b.zip
Running into a wall/npc/pc/mob no longer enables spurt. (bugreport:1155)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12498 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/status.c5
-rw-r--r--src/map/unit.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 47d2617b6..4db508cb2 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -6305,12 +6305,15 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
case SC_RUN:
{
struct unit_data *ud = unit_bl2ud(bl);
+ bool begin_spurt = true;
if (ud) {
+ if(!ud->state.running)
+ begin_spurt = false;
ud->state.running = 0;
if (ud->walktimer != -1)
unit_stop_walking(bl,1);
}
- if (sce->val1 >= 7 &&
+ if (begin_spurt && sce->val1 >= 7 &&
DIFF_TICK(gettick(), sce->val4) <= 1000 &&
(!sd || (sd->weapontype1 == 0 && sd->weapontype2 == 0))
)
diff --git a/src/map/unit.c b/src/map/unit.c
index 575e95c1e..b8a5d327a 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -432,7 +432,11 @@ int unit_run(struct block_list *bl)
if(to_x == bl->x && to_y == bl->y) {
//If you can't run forward, you must be next to a wall, so bounce back. [Skotlex]
clif_status_change(bl, SI_BUMP, 1);
+
+ //Set running to 0 beforehand so status_change_end knows not to enable spurt [Kevin]
+ unit_bl2ud(bl)->state.running = 0;
status_change_end(bl,SC_RUN,-1);
+
skill_blown(bl,bl,skill_get_blewcount(TK_RUN,lv),unit_getdir(bl),0);
clif_fixpos(bl); //Why is a clif_slide (skill_blown) AND a fixpos needed? Ask Aegis.
clif_status_change(bl, SI_BUMP, 0);
@@ -448,7 +452,11 @@ int unit_run(struct block_list *bl)
if (i==0) {
// copy-paste from above
clif_status_change(bl, SI_BUMP, 1);
+
+ //Set running to 0 beforehand so status_change_end knows not to enable spurt [Kevin]
+ unit_bl2ud(bl)->state.running = 0;
status_change_end(bl,SC_RUN,-1);
+
skill_blown(bl,bl,skill_get_blewcount(TK_RUN,lv),unit_getdir(bl),0);
clif_fixpos(bl);
clif_status_change(bl, SI_BUMP, 0);