Bladeren bron

- 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://svn.code.sf.net/p/rathena/svn/trunk@7641 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 jaren geleden
bovenliggende
commit
8cc2239aa1
5 gewijzigde bestanden met toevoegingen van 50 en 30 verwijderingen
  1. 5 0
      Changelog-Trunk.txt
  2. 1 1
      db/skill_db.txt
  3. 1 1
      db/skill_unit_db.txt
  4. 42 27
      src/map/skill.c
  5. 1 1
      src/map/skill.h

+ 5 - 0
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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
 2006/07/12
 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
 	* Added back the undead check to turn undead/resurrection to prevent
 	  damaging non-undead targets, removed it from the battle damage section.
 	  damaging non-undead targets, removed it from the battle damage section.
 	  [Skotlex]
 	  [Skotlex]

+ 1 - 1
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#
 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#
 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#
 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#
 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#
 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#
 530,-1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0	//NJ_KIRIKAGE#NJ_KIRIKAGE#

+ 1 - 1
db/skill_unit_db.txt

@@ -87,7 +87,7 @@
 430,0x86,    ,  0, 1, 500,enemy, 0x000	//SG_STAR_WARM
 430,0x86,    ,  0, 1, 500,enemy, 0x000	//SG_STAR_WARM
 484,0xb8,    ,  2, 0,1000,enemy, 0x808	//HW_GRAVITATION
 484,0xb8,    ,  2, 0,1000,enemy, 0x808	//HW_GRAVITATION
 488,0xb9,    ,  3, 0,  -1,all,   0x200	//CG_HERMODE
 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
 535,0xbd,    ,  2, 0,2000,enemy, 0x000	//NJ_KAENSIN
 536,0x86,    ,  2, 0, 300,enemy, 0x000	//NJ_BAKUENRYU
 536,0x86,    ,  2, 0, 300,enemy, 0x000	//NJ_BAKUENRYU
 541,0x86,,0,2:2:3:3:4,1000,enemy,0x000 //NJ_RAIGEKISAI
 541,0x86,,0,2:2:3:3:4,1000,enemy,0x000 //NJ_RAIGEKISAI

+ 42 - 27
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,
 		clif_skill_nodamage(src,bl,skillid,skilllv,
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
 		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:		/* 月明りの泉に落ちる花びら */
 	case CG_MOONLIT:		/* 月明りの泉に落ちる花びら */
 		clif_skill_nodamage(src,bl,skillid,skilllv,1);
 		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));
 			sc_start4(src,type,100,skilllv,0,(int)sg,BCT_SELF,skill_get_time(skillid,skilllv));
 		}
 		}
 		break;
 		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:
 	default:
 		ShowWarning("skill_castend_pos2: Unknown skill used:%d\n",skillid);
 		ShowWarning("skill_castend_pos2: Unknown skill used:%d\n",skillid);
 		return 1;
 		return 1;
@@ -6945,8 +6929,9 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 			break;	
 			break;	
 		}
 		}
 
 
+		case UNT_TATAMIGAESHI:
 		case UNT_DEMONSTRATION:
 		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;
 			break;
 
 
 		case UNT_GOSPEL:
 		case UNT_GOSPEL:
@@ -7051,12 +7036,11 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 			break;
 			break;
 
 
 		case UNT_KAENSIN:
 		case UNT_KAENSIN:
-		{
 			skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
 			skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
 			src->val2--;
 			src->val2--;
 			if (--src->val2<=0)
 			if (--src->val2<=0)
 			skill_delunit(src);
 			skill_delunit(src);
-		}
+			break;
 	}
 	}
 
 
 	if (sg->state.magic_power && sc && sc->data[SC_MAGICPOWER].timer == -1)
 	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:
 			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;
 				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<MAX_SKILL_LEVEL;j++)
+					skill_db[i].unit_layout_type[j] = pos;
+				//Skip, this way the check below will fail and continue to the next skill.
+				pos++;
 				break;
 				break;
 			}
 			}
 			default:
 			default:

+ 1 - 1
src/map/skill.h

@@ -935,7 +935,7 @@ enum {
 	UNT_SPIDERWEB,
 	UNT_SPIDERWEB,
 	UNT_GRAVITATION,
 	UNT_GRAVITATION,
 	UNT_HERMODE,
 	UNT_HERMODE,
-	//0xba
+	UNT_TATAMIGAESHI, //0xba //Temporary setting until correct value is found.
 	UNT_SUITON = 0xbb,
 	UNT_SUITON = 0xbb,
 	UNT_DESPERADO, //NJ_TATAMIGAESHI is 0xbc as well?
 	UNT_DESPERADO, //NJ_TATAMIGAESHI is 0xbc as well?
 	UNT_KAENSIN,
 	UNT_KAENSIN,