summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortoms <toms@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-07-31 20:19:56 +0000
committertoms <toms@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-07-31 20:19:56 +0000
commit250a8f539f87eb04e2321b6a0a6cd5850f38ac65 (patch)
treec8daac1a7392ce7a41dbb3e196c69b6ff38081d9 /src
parent5af84391c50d5625c870d567e298b0628ba2a4ef (diff)
downloadhercules-250a8f539f87eb04e2321b6a0a6cd5850f38ac65.tar.gz
hercules-250a8f539f87eb04e2321b6a0a6cd5850f38ac65.tar.bz2
hercules-250a8f539f87eb04e2321b6a0a6cd5850f38ac65.tar.xz
hercules-250a8f539f87eb04e2321b6a0a6cd5850f38ac65.zip
Merged mpeg's fix on ninja skills
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8012 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/battle.c5
-rw-r--r--src/map/clif.c6
-rw-r--r--src/map/clif.h2
-rw-r--r--src/map/skill.c13
-rw-r--r--src/map/unit.c4
5 files changed, 21 insertions, 9 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 9a2374882..50c35867a 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -2206,7 +2206,7 @@ struct Damage battle_calc_magic_attack(
//Adds an absolute value to damage. 100 = +100 damage
#define MATK_ADD( a ) { ad.damage+= a; }
- sc= status_get_sc(src);
+ sc= status_get_sc(target); // used for NJ_SUITON increasing NJ_HYOUSENSOU damages
switch (skill_num)
{ //Calc base damage according to skill
@@ -2322,6 +2322,9 @@ struct Damage battle_calc_magic_attack(
case NJ_KOUENKA:
skillratio -= 10;
break;
+ case NJ_HUUJIN:
+ skillratio += 50 + 50*skill_lv; // extrapolation from a vid (unsure)
+ break;
case NJ_BAKUENRYU:
skillratio += 150 + 150*skill_lv; // It has to be MATK +(150+150*SkillLV)% so 1000% at lvl 5, not 900%. Damage is not increased by hits.
break;
diff --git a/src/map/clif.c b/src/map/clif.c
index 7d6e9b1fe..982d60da7 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -8753,7 +8753,7 @@ void clif_parse_MapMove(int fd, struct map_session_data *sd) {
*
*------------------------------------------
*/
-void clif_changed_dir(struct block_list *bl) {
+void clif_changed_dir(struct block_list *bl, int type) {
unsigned char buf[64];
WBUFW(buf,0) = 0x9c;
@@ -8761,7 +8761,7 @@ void clif_changed_dir(struct block_list *bl) {
WBUFW(buf,6) = bl->type==BL_PC?((TBL_PC*)bl)->head_dir:0;
WBUFB(buf,8) = unit_getdir(bl);
- clif_send(buf, packet_len_table[0x9c], bl, AREA_WOS);
+ clif_send(buf, packet_len_table[0x9c], bl, type);
if (disguised(bl)) {
WBUFL(buf,2) = -bl->id;
WBUFW(buf,6) = 0;
@@ -8783,7 +8783,7 @@ void clif_parse_ChangeDir(int fd, struct map_session_data *sd) {
dir = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]);
pc_setdir(sd, dir, headdir);
- clif_changed_dir(&sd->bl);
+ clif_changed_dir(&sd->bl, AREA_WOS);
return;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index b89471985..4e80e13b1 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -237,7 +237,7 @@ int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv,const ch
int clif_mvp_effect(struct map_session_data *sd);
int clif_mvp_item(struct map_session_data *sd,int nameid);
int clif_mvp_exp(struct map_session_data *sd,unsigned long exp);
-void clif_changed_dir(struct block_list *bl);
+void clif_changed_dir(struct block_list *bl, int area);
// vending
int clif_openvendingreq(struct map_session_data *sd,int num);
diff --git a/src/map/skill.c b/src/map/skill.c
index f8d880556..d64997c71 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2734,7 +2734,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
BF_WEAPON, src, src, skillid, skilllv, tick, flag, BCT_ENEMY);
break;
- case NJ_SHADOWJUMP: //[blackhole89]
case TK_JUMPKICK:
if (skillid == TK_JUMPKICK)
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
@@ -2766,7 +2765,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, tick, flag);
dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest]
unit_setdir(bl,dir);
- clif_changed_dir(bl);
+ //clif_changed_dir(bl); Already done by unit_setdir
}
else if (sd)
clif_skill_fail(sd,skillid,0,0);
@@ -6143,6 +6142,16 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s
if (sd) skill_blockpc_start (sd, MO_EXTREMITYFIST, 2000);
}
break;
+ case NJ_SHADOWJUMP:
+ {
+ unit_movepos(src, x, y, 1, 0);
+ unit_setdir(src, (unit_getdir(src) + 4)%8);
+ clif_slide(src,x,y);
+
+ if (sc && sc->data[SC_HIDING].timer != -1)
+ status_change_end(src, SC_HIDING, -1);
+ }
+ break;
case AM_SPHEREMINE:
case AM_CANNIBALIZE:
if(sd) {
diff --git a/src/map/unit.c b/src/map/unit.c
index 2edc69e47..5cfd25093 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -466,7 +466,7 @@ int unit_setdir(struct block_list *bl,unsigned char dir)
ud->dir = dir;
if (bl->type == BL_PC)
((TBL_PC *)bl)->head_dir = dir;
- clif_changed_dir(bl);
+ clif_changed_dir(bl, AREA);
return 0;
}
@@ -1006,7 +1006,7 @@ int unit_skilluse_pos2( struct block_list *src, int skill_x, int skill_y, int sk
bl.m = src->m;
bl.x = skill_x;
bl.y = skill_y;
- if(skill_num != TK_HIGHJUMP &&
+ if(skill_num != TK_HIGHJUMP && skill_num != NJ_SHADOWJUMP &&
!battle_check_range(src,&bl,skill_get_range2(src, skill_num,skill_lv)+1))
return 0;