Naruto
New member
- Messages
- 174
- Points
- 0
So i had to go over my brandish spear again but figured out most of it
Can be used a few different ways..... splash on a grid with movement is really smooth with it
The results of this modification is my magicalbullet and desperado is a UNT skill
No idea how to explain it other then for you to try it yourself :
struct square {
int val1[19];
int val2[19];
};
This number for square should be increased as high as you can if you wanna keep using this square grid... Ill have to verify this later because re declaring it causes issues but its relative to the amount of cells were hitting
static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y)
{
nullpo_retv(tc);
if(dir == 0){
tc->val1[0]=x;
tc->val1[1]=x+1;
tc->val1[2]=x-1;
tc->val1[3]=x;
tc->val1[4]=x+1;
tc->val1[5]=x+1;
tc->val1[6]=x;
tc->val1[7]=x+1;
tc->val1[8]=x-1;
tc->val1[9]=x;
tc->val1[10]=x+1;
tc->val1[11]=x-1;
tc->val1[12]=x;
tc->val1[13]=x+1;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x+1;
tc->val1[17]=x-1;
tc->val2[0]=y;
tc->val2[1]=y;
tc->val2[2]=y;
tc->val2[3]=y-1;
tc->val2[4]=y-1;
tc->val2[5]=y-1;
tc->val2[6]=y-2;
tc->val2[7]=y-2;
tc->val2[8]=y-2;
tc->val2[9]=y-3;
tc->val2[10]=y-3;
tc->val2[11]=y-3;
tc->val2[12]=y-4;
tc->val2[13]=y-4;
tc->val2[14]=y-4;
tc->val2[15]=y+1;
tc->val2[16]=y+1;
tc->val2[17]=y+1;
} else if(dir==2){
tc->val1[0]=x+3;
tc->val1[1]=x+3;
tc->val1[2]=x+3;
tc->val1[3]=x+4;
tc->val1[4]=x+4;
tc->val1[5]=x+4;
tc->val1[6]=x+2;
tc->val1[7]=x+2;
tc->val1[8]=x+2;
tc->val1[9]=x+1;
tc->val1[10]=x+1;
tc->val1[11]=x+1;
tc->val1[12]=x-1;
tc->val1[13]=x-1;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x;
tc->val1[17]=x;
tc->val2[0]=y;
tc->val2[1]=y+1;
tc->val2[2]=y-1;
tc->val2[3]=y;
tc->val2[4]=y+1;
tc->val2[5]=y+1;
tc->val2[6]=y;
tc->val2[7]=y+1;
tc->val2[8]=y-1;
tc->val2[9]=y;
tc->val2[10]=y+1;
tc->val2[11]=y-1;
tc->val2[12]=y;
tc->val2[13]=y+1;
tc->val2[14]=y-1;
tc->val2[15]=y;
tc->val2[16]=y+1;
tc->val2[17]=y-1;
} else if(dir==4){
tc->val1[0]=x;
tc->val1[1]=x+1;
tc->val1[2]=x-1;
tc->val1[3]=x;
tc->val1[4]=x+1;
tc->val1[5]=x+1;
tc->val1[6]=x;
tc->val1[7]=x+1;
tc->val1[8]=x-1;
tc->val1[9]=x;
tc->val1[10]=x+1;
tc->val1[11]=x-1;
tc->val1[12]=x;
tc->val1[13]=x+1;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x+1;
tc->val1[17]=x-1;
tc->val2[0]=y;
tc->val2[1]=y;
tc->val2[2]=y;
tc->val2[3]=y+1;
tc->val2[4]=y+1;
tc->val2[5]=y+1;
tc->val2[6]=y+2;
tc->val2[7]=y+2;
tc->val2[8]=y+2;
tc->val2[9]=y+3;
tc->val2[10]=y+3;
tc->val2[11]=y+3;
tc->val2[12]=y+4;
tc->val2[13]=y+4;
tc->val2[14]=y+4;
tc->val2[15]=y-1;
tc->val2[16]=y-1;
tc->val2[17]=y-1;
} else if(dir==6){
tc->val1[0]=x-3;
tc->val1[1]=x-3;
tc->val1[2]=x-3;
tc->val1[3]=x-4;
tc->val1[4]=x-4;
tc->val1[5]=x-4;
tc->val1[6]=x-2;
tc->val1[7]=x-2;
tc->val1[8]=x-2;
tc->val1[9]=x-1;
tc->val1[10]=x-1;
tc->val1[11]=x-1;
tc->val1[12]=x+1;
tc->val1[13]=x+1;
tc->val1[14]=x+1;
tc->val1[15]=x;
tc->val1[16]=x;
tc->val1[17]=x;
tc->val2[0]=y;
tc->val2[1]=y+1;
tc->val2[2]=y-1;
tc->val2[3]=y;
tc->val2[4]=y+1;
tc->val2[5]=y+1;
tc->val2[6]=y;
tc->val2[7]=y+1;
tc->val2[8]=y-1;
tc->val2[9]=y;
tc->val2[10]=y+1;
tc->val2[11]=y-1;
tc->val2[12]=y;
tc->val2[13]=y+1;
tc->val2[14]=y-1;
tc->val2[15]=y;
tc->val2[16]=y+1;
tc->val2[17]=y-1;
} else if(dir==1){
tc->val1[0]=x;
tc->val1[1]=x+1;
tc->val1[2]=x+2;
tc->val1[3]=x;
tc->val1[4]=x;
tc->val1[5]=x+1;
tc->val1[6]=x+2;
tc->val1[7]=x+2;
tc->val1[8]=x+1;
tc->val1[9]=x+1;
tc->val1[10]=x+2;
tc->val1[11]=x+2;
tc->val1[12]=x+3;
tc->val1[13]=x+3;
tc->val1[14]=x+3;
tc->val1[15]=x+4;
tc->val1[16]=x+3;
tc->val1[17]=x+4;
tc->val1[18]=x+4;
tc->val2[0]=y;
tc->val2[1]=y;
tc->val2[2]=y;
tc->val2[3]=y-1;
tc->val2[4]=y-2;
tc->val2[5]=y-1;
tc->val2[6]=y-1;
tc->val2[7]=y-2;
tc->val2[8]=y-2;
tc->val2[9]=y-3;
tc->val2[10]=y-3;
tc->val2[11]=y-4;
tc->val2[12]=y-4;
tc->val2[13]=y-1;
tc->val2[14]=y-2;
tc->val2[15]=y-2;
tc->val2[16]=y-3;
tc->val2[17]=y-3;
tc->val2[18]=y-4;
} else if(dir==3){
tc->val1[0]=x+4;
tc->val1[1]=x+4;
tc->val1[2]=x+4;
tc->val1[3]=x+3;
tc->val1[4]=x+3;
tc->val1[5]=x+3;
tc->val1[6]=x+3;
tc->val1[7]=x+2;
tc->val1[8]=x+2;
tc->val1[9]=x+2;
tc->val1[10]=x+2;
tc->val1[11]=x+2;
tc->val1[12]=x+1;
tc->val1[13]=x+1;
tc->val1[14]=x+1;
tc->val1[15]=x+1;
tc->val1[16]=x;
tc->val1[17]=x;
tc->val1[18]=x;
tc->val2[0]=y+4;
tc->val2[1]=y+3;
tc->val2[2]=y+2;
tc->val2[3]=y+4;
tc->val2[4]=y+3;
tc->val2[5]=y+2;
tc->val2[6]=y+1;
tc->val2[7]=y+4;
tc->val2[8]=y+3;
tc->val2[9]=y+2;
tc->val2[10]=y+1;
tc->val2[11]=y;
tc->val2[12]=y+3;
tc->val2[13]=y+2;
tc->val2[14]=y+1;
tc->val2[15]=y;
tc->val2[16]=y+2;
tc->val2[17]=y+1;
tc->val2[18]=y;
} else if(dir==5){
tc->val1[0]=x-4;
tc->val1[1]=x-3;
tc->val1[2]=x-2;
tc->val1[3]=x-4;
tc->val1[4]=x-3;
tc->val1[5]=x-2;
tc->val1[6]=x-1;
tc->val1[7]=x-4;
tc->val1[8]=x-3;
tc->val1[9]=x-2;
tc->val1[10]=x-1;
tc->val1[11]=x;
tc->val1[12]=x-3;
tc->val1[13]=x-2;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x-2;
tc->val1[17]=x-1;
tc->val1[18]=x;
tc->val2[0]=y+4;
tc->val2[1]=y+4;
tc->val2[2]=y+4;
tc->val2[3]=y+3;
tc->val2[4]=y+3;
tc->val2[5]=y+3;
tc->val2[6]=y+3;
tc->val2[7]=y+2;
tc->val2[8]=y+2;
tc->val2[9]=y+2;
tc->val2[10]=y+2;
tc->val2[11]=y+2;
tc->val2[12]=y+1;
tc->val2[13]=y+1;
tc->val2[14]=y+1;
tc->val2[15]=y+1;
tc->val2[16]=y;
tc->val2[17]=y;
tc->val2[18]=y;
} else if(dir==7){
tc->val1[0]=x-4;
tc->val1[1]=x-3;
tc->val1[2]=x-2;
tc->val1[3]=x-4;
tc->val1[4]=x-3;
tc->val1[5]=x-2;
tc->val1[6]=x-1;
tc->val1[7]=x-4;
tc->val1[8]=x-3;
tc->val1[9]=x-2;
tc->val1[10]=x-1;
tc->val1[11]=x;
tc->val1[12]=x-3;
tc->val1[13]=x-2;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x-2;
tc->val1[17]=x-1;
tc->val1[18]=x;
tc->val2[0]=y-4;
tc->val2[1]=y-4;
tc->val2[2]=y-4;
tc->val2[3]=y-3;
tc->val2[4]=y-3;
tc->val2[5]=y-3;
tc->val2[6]=y-3;
tc->val2[7]=y-2;
tc->val2[8]=y-2;
tc->val2[9]=y-2;
tc->val2[10]=y-2;
tc->val2[11]=y-2;
tc->val2[12]=y-1;
tc->val2[13]=y-1;
tc->val2[14]=y-1;
tc->val2[15]=y-1;
tc->val2[16]=y;
tc->val2[17]=y;
tc->val2[18]=y;
}
}
this is my grid
need to make sure you mark the cell YOU ARE STANDING ON if you wanna use it with RANGED
I cant explain the grid but hold on maybe i can draw it
basically you have a slot for x and y as you look at this
tc->val1[17]=x;
tc->val1[18]=x;
tc->val2[0]=y+4;
tc->val2[1]=y+3;
tc->val2[2]=y+2;
you see how Y starts after 18 Xs for this direction ?
so these two would be a pair
tc->val1[0]=x-4;
Im looking at direction 7 which is...facing the top right from center
That would be the out most cells
static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are)
{
int c;
nullpo_retv(tc);
for( c = 0; c < 19; c++ ) {
switch( dir ) {
case 0: tc->val2[c]+=are; break;
case 1: tc->val1[c]-=are; tc->val2[c]+=are; break;
case 2: tc->val1[c]-=are; break;
case 3: tc->val1[c]-=are; tc->val2[c]-=are; break;
case 4: tc->val2[c]-=are; break;
case 5: tc->val1[c]+=are; tc->val2[c]-=are; break;
case 6: tc->val1[c]+=are; break;
case 7: tc->val1[c]+=are; tc->val2[c]+=are; break;
}
}
}
I changed this to increase the max of growth function
for( c = 0; c < 19; c++ ) {
so now we wont get stack errors
and finally
static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
int c,n=0;
uint8 dir;
struct square tc;
int x, y;
nullpo_retv(bl);
x = bl->x;
y = bl->y;
dir = map->calc_dir(src, x, y);
skill->brandishspear_first(&tc,dir,x,y);
skill->brandishspear_dir(&tc,dir,4);
skill->area_temp[1] = bl->id;
for(c=0;c<19;c++){
if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1);
map->foreachincell(skill->area_sub,
bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR,
src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1,
skill->castend_damage_id);
}
}
first line
int c,n=0;
No idea what N does but to me it is useless, im pretty sure N is the amount of tiers in brandish spear.. lvl 1 3 7 and 9
skill->brandishspear_dir(&tc,dir,4);
So this is why its flipped, the final number is the placement , so if you set it to 0, it would be closer to you... its weird but id leave it -4 for the same results that i get
for(c=0;c<19;c++){
if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1);
map->foreachincell(skill->area_sub,
bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR,
src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1,
skill->castend_damage_id);
}
finally set all these otherwise just get stack errors
so if you wanna re use it which ill verify, you just need to set a large struct sqaure and youll be all good
Can be used a few different ways..... splash on a grid with movement is really smooth with it
The results of this modification is my magicalbullet and desperado is a UNT skill
No idea how to explain it other then for you to try it yourself :
struct square {
int val1[19];
int val2[19];
};
This number for square should be increased as high as you can if you wanna keep using this square grid... Ill have to verify this later because re declaring it causes issues but its relative to the amount of cells were hitting
static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y)
{
nullpo_retv(tc);
if(dir == 0){
tc->val1[0]=x;
tc->val1[1]=x+1;
tc->val1[2]=x-1;
tc->val1[3]=x;
tc->val1[4]=x+1;
tc->val1[5]=x+1;
tc->val1[6]=x;
tc->val1[7]=x+1;
tc->val1[8]=x-1;
tc->val1[9]=x;
tc->val1[10]=x+1;
tc->val1[11]=x-1;
tc->val1[12]=x;
tc->val1[13]=x+1;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x+1;
tc->val1[17]=x-1;
tc->val2[0]=y;
tc->val2[1]=y;
tc->val2[2]=y;
tc->val2[3]=y-1;
tc->val2[4]=y-1;
tc->val2[5]=y-1;
tc->val2[6]=y-2;
tc->val2[7]=y-2;
tc->val2[8]=y-2;
tc->val2[9]=y-3;
tc->val2[10]=y-3;
tc->val2[11]=y-3;
tc->val2[12]=y-4;
tc->val2[13]=y-4;
tc->val2[14]=y-4;
tc->val2[15]=y+1;
tc->val2[16]=y+1;
tc->val2[17]=y+1;
} else if(dir==2){
tc->val1[0]=x+3;
tc->val1[1]=x+3;
tc->val1[2]=x+3;
tc->val1[3]=x+4;
tc->val1[4]=x+4;
tc->val1[5]=x+4;
tc->val1[6]=x+2;
tc->val1[7]=x+2;
tc->val1[8]=x+2;
tc->val1[9]=x+1;
tc->val1[10]=x+1;
tc->val1[11]=x+1;
tc->val1[12]=x-1;
tc->val1[13]=x-1;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x;
tc->val1[17]=x;
tc->val2[0]=y;
tc->val2[1]=y+1;
tc->val2[2]=y-1;
tc->val2[3]=y;
tc->val2[4]=y+1;
tc->val2[5]=y+1;
tc->val2[6]=y;
tc->val2[7]=y+1;
tc->val2[8]=y-1;
tc->val2[9]=y;
tc->val2[10]=y+1;
tc->val2[11]=y-1;
tc->val2[12]=y;
tc->val2[13]=y+1;
tc->val2[14]=y-1;
tc->val2[15]=y;
tc->val2[16]=y+1;
tc->val2[17]=y-1;
} else if(dir==4){
tc->val1[0]=x;
tc->val1[1]=x+1;
tc->val1[2]=x-1;
tc->val1[3]=x;
tc->val1[4]=x+1;
tc->val1[5]=x+1;
tc->val1[6]=x;
tc->val1[7]=x+1;
tc->val1[8]=x-1;
tc->val1[9]=x;
tc->val1[10]=x+1;
tc->val1[11]=x-1;
tc->val1[12]=x;
tc->val1[13]=x+1;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x+1;
tc->val1[17]=x-1;
tc->val2[0]=y;
tc->val2[1]=y;
tc->val2[2]=y;
tc->val2[3]=y+1;
tc->val2[4]=y+1;
tc->val2[5]=y+1;
tc->val2[6]=y+2;
tc->val2[7]=y+2;
tc->val2[8]=y+2;
tc->val2[9]=y+3;
tc->val2[10]=y+3;
tc->val2[11]=y+3;
tc->val2[12]=y+4;
tc->val2[13]=y+4;
tc->val2[14]=y+4;
tc->val2[15]=y-1;
tc->val2[16]=y-1;
tc->val2[17]=y-1;
} else if(dir==6){
tc->val1[0]=x-3;
tc->val1[1]=x-3;
tc->val1[2]=x-3;
tc->val1[3]=x-4;
tc->val1[4]=x-4;
tc->val1[5]=x-4;
tc->val1[6]=x-2;
tc->val1[7]=x-2;
tc->val1[8]=x-2;
tc->val1[9]=x-1;
tc->val1[10]=x-1;
tc->val1[11]=x-1;
tc->val1[12]=x+1;
tc->val1[13]=x+1;
tc->val1[14]=x+1;
tc->val1[15]=x;
tc->val1[16]=x;
tc->val1[17]=x;
tc->val2[0]=y;
tc->val2[1]=y+1;
tc->val2[2]=y-1;
tc->val2[3]=y;
tc->val2[4]=y+1;
tc->val2[5]=y+1;
tc->val2[6]=y;
tc->val2[7]=y+1;
tc->val2[8]=y-1;
tc->val2[9]=y;
tc->val2[10]=y+1;
tc->val2[11]=y-1;
tc->val2[12]=y;
tc->val2[13]=y+1;
tc->val2[14]=y-1;
tc->val2[15]=y;
tc->val2[16]=y+1;
tc->val2[17]=y-1;
} else if(dir==1){
tc->val1[0]=x;
tc->val1[1]=x+1;
tc->val1[2]=x+2;
tc->val1[3]=x;
tc->val1[4]=x;
tc->val1[5]=x+1;
tc->val1[6]=x+2;
tc->val1[7]=x+2;
tc->val1[8]=x+1;
tc->val1[9]=x+1;
tc->val1[10]=x+2;
tc->val1[11]=x+2;
tc->val1[12]=x+3;
tc->val1[13]=x+3;
tc->val1[14]=x+3;
tc->val1[15]=x+4;
tc->val1[16]=x+3;
tc->val1[17]=x+4;
tc->val1[18]=x+4;
tc->val2[0]=y;
tc->val2[1]=y;
tc->val2[2]=y;
tc->val2[3]=y-1;
tc->val2[4]=y-2;
tc->val2[5]=y-1;
tc->val2[6]=y-1;
tc->val2[7]=y-2;
tc->val2[8]=y-2;
tc->val2[9]=y-3;
tc->val2[10]=y-3;
tc->val2[11]=y-4;
tc->val2[12]=y-4;
tc->val2[13]=y-1;
tc->val2[14]=y-2;
tc->val2[15]=y-2;
tc->val2[16]=y-3;
tc->val2[17]=y-3;
tc->val2[18]=y-4;
} else if(dir==3){
tc->val1[0]=x+4;
tc->val1[1]=x+4;
tc->val1[2]=x+4;
tc->val1[3]=x+3;
tc->val1[4]=x+3;
tc->val1[5]=x+3;
tc->val1[6]=x+3;
tc->val1[7]=x+2;
tc->val1[8]=x+2;
tc->val1[9]=x+2;
tc->val1[10]=x+2;
tc->val1[11]=x+2;
tc->val1[12]=x+1;
tc->val1[13]=x+1;
tc->val1[14]=x+1;
tc->val1[15]=x+1;
tc->val1[16]=x;
tc->val1[17]=x;
tc->val1[18]=x;
tc->val2[0]=y+4;
tc->val2[1]=y+3;
tc->val2[2]=y+2;
tc->val2[3]=y+4;
tc->val2[4]=y+3;
tc->val2[5]=y+2;
tc->val2[6]=y+1;
tc->val2[7]=y+4;
tc->val2[8]=y+3;
tc->val2[9]=y+2;
tc->val2[10]=y+1;
tc->val2[11]=y;
tc->val2[12]=y+3;
tc->val2[13]=y+2;
tc->val2[14]=y+1;
tc->val2[15]=y;
tc->val2[16]=y+2;
tc->val2[17]=y+1;
tc->val2[18]=y;
} else if(dir==5){
tc->val1[0]=x-4;
tc->val1[1]=x-3;
tc->val1[2]=x-2;
tc->val1[3]=x-4;
tc->val1[4]=x-3;
tc->val1[5]=x-2;
tc->val1[6]=x-1;
tc->val1[7]=x-4;
tc->val1[8]=x-3;
tc->val1[9]=x-2;
tc->val1[10]=x-1;
tc->val1[11]=x;
tc->val1[12]=x-3;
tc->val1[13]=x-2;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x-2;
tc->val1[17]=x-1;
tc->val1[18]=x;
tc->val2[0]=y+4;
tc->val2[1]=y+4;
tc->val2[2]=y+4;
tc->val2[3]=y+3;
tc->val2[4]=y+3;
tc->val2[5]=y+3;
tc->val2[6]=y+3;
tc->val2[7]=y+2;
tc->val2[8]=y+2;
tc->val2[9]=y+2;
tc->val2[10]=y+2;
tc->val2[11]=y+2;
tc->val2[12]=y+1;
tc->val2[13]=y+1;
tc->val2[14]=y+1;
tc->val2[15]=y+1;
tc->val2[16]=y;
tc->val2[17]=y;
tc->val2[18]=y;
} else if(dir==7){
tc->val1[0]=x-4;
tc->val1[1]=x-3;
tc->val1[2]=x-2;
tc->val1[3]=x-4;
tc->val1[4]=x-3;
tc->val1[5]=x-2;
tc->val1[6]=x-1;
tc->val1[7]=x-4;
tc->val1[8]=x-3;
tc->val1[9]=x-2;
tc->val1[10]=x-1;
tc->val1[11]=x;
tc->val1[12]=x-3;
tc->val1[13]=x-2;
tc->val1[14]=x-1;
tc->val1[15]=x;
tc->val1[16]=x-2;
tc->val1[17]=x-1;
tc->val1[18]=x;
tc->val2[0]=y-4;
tc->val2[1]=y-4;
tc->val2[2]=y-4;
tc->val2[3]=y-3;
tc->val2[4]=y-3;
tc->val2[5]=y-3;
tc->val2[6]=y-3;
tc->val2[7]=y-2;
tc->val2[8]=y-2;
tc->val2[9]=y-2;
tc->val2[10]=y-2;
tc->val2[11]=y-2;
tc->val2[12]=y-1;
tc->val2[13]=y-1;
tc->val2[14]=y-1;
tc->val2[15]=y-1;
tc->val2[16]=y;
tc->val2[17]=y;
tc->val2[18]=y;
}
}
this is my grid
need to make sure you mark the cell YOU ARE STANDING ON if you wanna use it with RANGED
I cant explain the grid but hold on maybe i can draw it
basically you have a slot for x and y as you look at this
tc->val1[17]=x;
tc->val1[18]=x;
tc->val2[0]=y+4;
tc->val2[1]=y+3;
tc->val2[2]=y+2;
you see how Y starts after 18 Xs for this direction ?
so these two would be a pair
tc->val1[0]=x-4;
Code:
tc->val2[0]=y-4;
Im looking at direction 7 which is...facing the top right from center
That would be the out most cells
static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are)
{
int c;
nullpo_retv(tc);
for( c = 0; c < 19; c++ ) {
switch( dir ) {
case 0: tc->val2[c]+=are; break;
case 1: tc->val1[c]-=are; tc->val2[c]+=are; break;
case 2: tc->val1[c]-=are; break;
case 3: tc->val1[c]-=are; tc->val2[c]-=are; break;
case 4: tc->val2[c]-=are; break;
case 5: tc->val1[c]+=are; tc->val2[c]-=are; break;
case 6: tc->val1[c]+=are; break;
case 7: tc->val1[c]+=are; tc->val2[c]+=are; break;
}
}
}
I changed this to increase the max of growth function
for( c = 0; c < 19; c++ ) {
so now we wont get stack errors
and finally
static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
int c,n=0;
uint8 dir;
struct square tc;
int x, y;
nullpo_retv(bl);
x = bl->x;
y = bl->y;
dir = map->calc_dir(src, x, y);
skill->brandishspear_first(&tc,dir,x,y);
skill->brandishspear_dir(&tc,dir,4);
skill->area_temp[1] = bl->id;
for(c=0;c<19;c++){
if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1);
map->foreachincell(skill->area_sub,
bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR,
src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1,
skill->castend_damage_id);
}
}
first line
int c,n=0;
No idea what N does but to me it is useless, im pretty sure N is the amount of tiers in brandish spear.. lvl 1 3 7 and 9
skill->brandishspear_dir(&tc,dir,4);
So this is why its flipped, the final number is the placement , so if you set it to 0, it would be closer to you... its weird but id leave it -4 for the same results that i get
for(c=0;c<19;c++){
if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1);
map->foreachincell(skill->area_sub,
bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR,
src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1,
skill->castend_damage_id);
}
finally set all these otherwise just get stack errors
so if you wanna re use it which ill verify, you just need to set a large struct sqaure and youll be all good
Last edited by a moderator: