Bläddra i källkod

- 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 år sedan
förälder
incheckning
8cc2239aa1
5 ändrade filer med 50 tillägg och 30 borttagningar
  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.
 
 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]

+ 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#
 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#

+ 1 - 1
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

+ 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,
 			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<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;
 			}
 			default:

+ 1 - 1
src/map/skill.h

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