From 09f021160ac8fed2cfe50babe9db8f76bed32da2 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 12 Jul 2006 21:02:47 +0000 Subject: - Fixed NJ_TATAMIGAESHI to use ground-tiles rather than "for each in path" calls. The skill should be working correctly now, except for the fact that the correct "unit id" is missing (this is what would give the ground tile it's correct display). Temporarily it is using 0xba until the correct value is found. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7641 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 5 ++++ db/skill_db.txt | 2 +- db/skill_unit_db.txt | 2 +- src/map/skill.c | 69 ++++++++++++++++++++++++++++++++-------------------- src/map/skill.h | 2 +- 5 files changed, 50 insertions(+), 30 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 92f6629b6..3da653e26 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,11 @@ 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/12 + * Fixed NJ_TATAMIGAESHI to use ground-tiles rather than "for each in path" + calls. The skill should be working correctly now, except for the fact that + the correct "unit id" is missing (this is what would give the ground tile + it's correct display). Temporarily it is using 0xba until the correct value + is found. [Skotlex] * Added back the undead check to turn undead/resurrection to prevent damaging non-undead targets, removed it from the battle damage section. [Skotlex] diff --git a/db/skill_db.txt b/db/skill_db.txt index 715d11864..b79a9f4a2 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -548,7 +548,7 @@ 524,9,8,1,-1,0,0,5,3,no,0,0,0,weapon,0 //NJ_KUNAI#NJ_KUNAI# 525,9,8,1,-1,2,2,5,-1:-2:-3:-4:-5,no,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,1:2:2:3:3,6,4,3,0,0,5,1,no,0,0,0,weapon,3 //NJ_TATAMIGAESHI#NJ_TATAMIGAESHI# +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# 530,-1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //NJ_KIRIKAGE#NJ_KIRIKAGE# diff --git a/db/skill_unit_db.txt b/db/skill_unit_db.txt index 889ea0967..1df96b18f 100644 --- a/db/skill_unit_db.txt +++ b/db/skill_unit_db.txt @@ -87,7 +87,7 @@ 430,0x86, , 0, 1, 500,enemy, 0x000 //SG_STAR_WARM 484,0xb8, , 2, 0,1000,enemy, 0x808 //HW_GRAVITATION 488,0xb9, , 3, 0, -1,all, 0x200 //CG_HERMODE -527,0xbc, , -1, 1,2000,enemy, 0x000 //NJ_TATAMIGAESHI +527,0xba, , -1, 0,2000,enemy, 0x000 //NJ_TATAMIGAESHI 535,0xbd, , 2, 0,2000,enemy, 0x000 //NJ_KAENSIN 536,0x86, , 2, 0, 300,enemy, 0x000 //NJ_BAKUENRYU 541,0x86,,0,2:2:3:3:4,1000,enemy,0x000 //NJ_RAIGEKISAI diff --git a/src/map/skill.c b/src/map/skill.c index 34423071a..3de50dc0f 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3654,25 +3654,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_nodamage(src,bl,skillid,skilllv, sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); break; - case NJ_TATAMIGAESHI: - clif_skill_nodamage(src,bl,skillid,skilllv, - sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); - - i = skill_get_range(skillid, skilllv); //use i for range. - type = skill_get_splash(skillid, skilllv); //reuse type for splash - map_foreachinpath(skill_attack_area,src->m, - src->x,src->y,src->x-i,src->y,type,BL_CHAR, - BF_WEAPON,src,src,skillid,skilllv,tick,flag,BCT_ENEMY); - map_foreachinpath(skill_attack_area,src->m, - src->x,src->y,src->x+i,src->y,type,BL_CHAR, - BF_WEAPON,src,src,skillid,skilllv,tick,flag,BCT_ENEMY); - map_foreachinpath(skill_attack_area,src->m, - src->x,src->y,src->x,src->y-i,type,BL_CHAR, - BF_WEAPON,src,src,skillid,skilllv,tick,flag,BCT_ENEMY); - map_foreachinpath(skill_attack_area,src->m, - src->x,src->y,src->x,src->y+i,type,BL_CHAR, - BF_WEAPON,src,src,skillid,skilllv,tick,flag,BCT_ENEMY); - break; case CG_MOONLIT: /* 月明りの泉に落ちる花びら */ clif_skill_nodamage(src,bl,skillid,skilllv,1); @@ -6025,7 +6006,10 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s sc_start4(src,type,100,skilllv,0,(int)sg,BCT_SELF,skill_get_time(skillid,skilllv)); } break; - + case NJ_TATAMIGAESHI: + sc_start(src,type,100,skilllv,skill_get_time(skillid,skilllv)); + skill_unitsetting(src,skillid,skilllv,src->x,src->y,0); + break; default: ShowWarning("skill_castend_pos2: Unknown skill used:%d\n",skillid); return 1; @@ -6945,8 +6929,9 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns break; } + case UNT_TATAMIGAESHI: case UNT_DEMONSTRATION: - skill_attack(BF_WEAPON, ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0); + skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); break; case UNT_GOSPEL: @@ -7051,12 +7036,11 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns break; case UNT_KAENSIN: - { skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); src->val2--; if (--src->val2<=0) skill_delunit(src); - } + break; } if (sg->state.magic_power && sc && sc->data[SC_MAGICPOWER].timer == -1) @@ -10511,11 +10495,42 @@ void skill_init_unit_layout (void) } case NJ_TATAMIGAESHI: { - static const int dx[] = {-1, 0, 0, 1}; - static const int dy[] = { 0,-1, 1, 0}; + //Level 1 (count 4, cross of 3x3) + static const int dx1[] = {-1, 1, 0, 0}; + static const int dy1[] = { 0, 0,-1, 1}; + //Level 2-3 (count 8, cross of 5x5) + static const int dx2[] = {-2,-1, 1, 2, 0, 0, 0, 0}; + static const int dy2[] = { 0, 0, 0, 0,-2,-1, 1, 2}; + //Level 4-5 (count 12, cross of 7x7 + static const int dx3[] = {-3,-2,-1, 1, 2, 3, 0, 0, 0, 0, 0, 0}; + static const int dy3[] = { 0, 0, 0, 0, 0, 0,-3,-2,-1, 1, 2, 3}; + //lv1 + j = 0; skill_unit_layout[pos].count = 4; - memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx)); - memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy)); + memcpy(skill_unit_layout[pos].dx,dx1,sizeof(dx1)); + memcpy(skill_unit_layout[pos].dy,dy1,sizeof(dy1)); + skill_db[i].unit_layout_type[j] = pos; + //lv2/3 + j++; + pos++; + skill_unit_layout[pos].count = 8; + memcpy(skill_unit_layout[pos].dx,dx2,sizeof(dx2)); + memcpy(skill_unit_layout[pos].dy,dy2,sizeof(dy2)); + skill_db[i].unit_layout_type[j] = pos; + skill_db[i].unit_layout_type[++j] = pos; + //lv4/5 + j++; + pos++; + skill_unit_layout[pos].count = 12; + memcpy(skill_unit_layout[pos].dx,dx3,sizeof(dx3)); + memcpy(skill_unit_layout[pos].dy,dy3,sizeof(dy3)); + skill_db[i].unit_layout_type[j] = pos; + skill_db[i].unit_layout_type[++j] = pos; + //Fill in the rest using lv 5. + for (;j