From 250a8f539f87eb04e2321b6a0a6cd5850f38ac65 Mon Sep 17 00:00:00 2001 From: toms Date: Mon, 31 Jul 2006 20:19:56 +0000 Subject: Merged mpeg's fix on ninja skills git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8012 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 1 + db/skill_cast_db.txt | 16 ++++++++-------- db/skill_db.txt | 6 +++--- db/skill_require_db.txt | 4 ++-- src/map/battle.c | 5 ++++- src/map/clif.c | 6 +++--- src/map/clif.h | 2 +- src/map/skill.c | 13 +++++++++++-- src/map/unit.c | 4 ++-- 9 files changed, 35 insertions(+), 22 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 11bcd27aa..790cfda44 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,7 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/07/31 + * Merged mpeg's fix on ninja skills [Toms] * Corrected a status_get_race call which should be status_get_race2 in misc attacks. [Skotlex] * Moved the Devotion code to the top of the SC list in status_damage, diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index 10975c260..477244469 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -887,21 +887,21 @@ 526,0,5000,0,0,0 //-- NJ_TATAMIGAESHI 527,0,0,0,3000,3000 -//-- NJ_KASUMIKIRI +//-- NJ_KASUMIKIRI // Delay unknown (if there is one) 528,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0 -//-- NJ_SHADOWJUMP +//-- NJ_SHADOWJUMP // Delay unknown (if there is one) 529,0,0,0,0,0 -//-- NJ_KIRIKAGE +//-- NJ_KIRIKAGE // Seems to have no delay (English Translation Project) 530,0,0,0,0,0 -//-- NJ_UTSUSEMI +//-- NJ_UTSUSEMI // Cast and Delay unknown 531,0,0,0,20000:30000:40000:50000:60000,0 -//-- NJ_BUNSINJYUTSU +//-- NJ_BUNSINJYUTSU // Cast and Delay unknown 532,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 //-- NJ_KOUENKA 534,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0 //-- NJ_KAENSIN -535,6000:5500:5000:4500:4000:3500:3000:2500:2000:1500,0,0,20000,0, +535,6000:5500:5000:4500:4000:3500:3000:2500:2000:1500,1000,0,20000,0, //-- NJ_BAKUENRYU 536,3000,2000,0,0,0 //-- NJ_HYOUSENSOU @@ -909,7 +909,7 @@ //-- NJ_SUITON 538,3300:3200:3100:3000:2900:2800:2700:2600:2500:2400,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000 //-- NJ_HYOUSYOURAKU -539,3700:3400:3100:2800:2500,0,0,0,0 // cast and delay unknown, I put the same as Raigekisai (same type of attack) +539,3700:3400:3100:2800:2500,0,0,0,0 // cast and delay unknown, I put the same as Raigekisai as temp value (same type of attack) //-- NJ_HUUJIN 540,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0 //-- NJ_RAIGEKISAI @@ -918,7 +918,7 @@ 542,3000,2000,0,0,0 // cast and delay unknown. temp values (I put the same as bakuenryu) //-- NJ_NEN 543,5000:4000:3000:2000:1000,0,0,30000:45000:60000:75000:90000,30000:45000:60000:75000:90000 -//-- NJ_ISSEN // cast and delay unknown. temp values (same as Extremity Fist) +//-- NJ_ISSEN // cast and delay unknown. temp values (same as MO_EXTREMITYFIST) 544,4000:3500:3000:2500:2000:3000:2500:2000:1500:1000,0,0,0,0 //========================================== diff --git a/db/skill_db.txt b/db/skill_db.txt index 6be9519dd..f2942ce3d 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -549,8 +549,8 @@ 525,9,8,1,-1,0,1,5,-1:-2:-3:-4:-5,yes,0,0,0,weapon,0 //NJ_HUUMA#NJ_HUUMA# 526,9,6,1,0,0,0,10,1,no,0,0,0,misc,0 //NJ_ZENYNAGE#NJ_ZENYNAGE# 527,0,6,4,3,0,0,5,1,no,0,0,0,weapon,3 //NJ_TATAMIGAESHI#NJ_TATAMIGAESHI# -528,1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //NJ_KASUMIKIRI#NJ_KASUMIKIRI# -529,5:6:7:8:9,6,2,0,1,0,5,1,no,0,0,0,none,0 //NJ_SHADOWJUMP#NJ_SHADOWJUMP# +528,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //NJ_KASUMIKIRI#NJ_KASUMIKIRI# +529,7:9:11:13:15,6,2,0,1,0,5,1,no,0,0,0,none,0 //NJ_SHADOWJUMP#NJ_SHADOWJUMP# 530,-1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //NJ_KIRIKAGE#NJ_KIRIKAGE# 531,0,6,4,0,1,0,5,1,no,0,0,0,none,0 //NJ_UTSUSEMI#NJ_UTSUSEMI# 532,0,6,4,0,1,0,10,1,no,0,0,0,none,0 //NJ_BUNSINJYUTSU#NJ_BUNSINJYUTSU# @@ -561,7 +561,7 @@ 537,9,8,1,1,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,0 //NJ_HYOUSENSOU#NJ_HYOUSENSOU# 538,9,6,2,0,1,0,10,1,yes,0,0,0,magic,0 //NJ_SUITON#NJ_SUITON# 539,0,6,4,1,1,0,5,1,yes,0,0,0,magic,0 //NJ_HYOUSYOURAKU#NJ_HYOUSYOURAKU# -540,9,8,1,4,0,0,10,1:2:2:3:3:4:4:5:5:6,yes,0,0,0,magic,0 //NJ_HUUJIN#NJ_HUUJIN# +540,9,8,1,4,0,0,10,-1:-2:-2:-3:-3:-4:-4:-5:-5:-6,yes,0,0,0,magic,0 //NJ_HUUJIN#NJ_HUUJIN# 541,9,6,4,4,1,0,5,1,yes,0,0,0,magic,0 //NJ_RAIGEKISAI#NJ_RAIGEKISAI# 542,5:6:7:8:9,8,1,4,0,2,5,1,yes,0,0,0,magic,0 //NJ_KAMAITACHI#NJ_KAMAITACHI# 543,0,6,4,0,1,0,5,1,no,0,0,0,none,0 //NJ_NEN#NJ_NEN# diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index d3886244e..3bb7e68d7 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -417,9 +417,9 @@ 524,0,0,30:25:20:15:10,0,0,0,99,7,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_KUNAI 525,0,0,20:25:30:35:40,0,0,0,22,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_HUUMA 526,0,0,50,0,0,500:1000:1500:2000:2500:3000:3500:4000:4500:5000,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_ZENYNAGE -527,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_TATAMIGAESHI +527,0,0,15,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_TATAMIGAESHI 528,0,0,10:12:14:16:18:20:22:24:26:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_KASUMIKIRI -529,0,0,40,0,0,0,99,0,0,hiding,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_SHADOWJUMP +529,0,0,10,0,0,0,99,0,0,hiding,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_SHADOWJUMP 530,0,0,14:16:18:20:22,0,0,0,99,0,0,hiding,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_KIRIKAGE 531,0,0,12:15:18:21:24,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_UTSUSEMI 532,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_BUNSINJYUTSU 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; -- cgit v1.2.3-70-g09d2