viewing paste Unknown #5815 | C

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
Index: db/re/skill_db.txt
===================================================================
--- db/re/skill_db.txt  (revision 17319)
+++ db/re/skill_db.txt  (working copy)
@@ -889,7 +889,7 @@
 2314,1,6,1,-1,0,0,1,1,no,0,0,0,weapon,0,       LG_RAGEBURST,Rage Burst
 2315,0,6,4,0,0x2,3,3,1,yes,0,0,0,none,2,       LG_SHIELDSPELL,Shield Spell
 2316,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,       LG_EXEEDBREAK,Exceed Break
-2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,      LG_OVERBRAND,Over Brand //CHECK I know the splash is needed somehow for the strange AoE it gives.
+2317,0,6,2,-1,0x2,0,5,1,yes,0,0,0,none,3:4:5:6:7,      LG_OVERBRAND,Over Brand //CHECK I know the splash is needed somehow for the strange AoE it gives.
 2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,       LG_PRESTIGE,Prestige
 2319,0,6,4,0,0x1,3,5,1,no,0,0,0,weapon,0,      LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
 2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,    LG_MOONSLASHER,Moon Slasher
Index: db/re/skill_unit_db.txt
===================================================================
--- db/re/skill_unit_db.txt     (revision 17319)
+++ db/re/skill_unit_db.txt     (working copy)
@@ -127,6 +127,7 @@
 2303,0xd0,    ,  3, 0,  -1,all,   0x2018       //SC_BLOODYLUST
 2304,0xd1,    ,  0, 2,  -1,enemy, 0x000        //SC_FEINTBOMB
 
+2317,0xec,    , -1, 0,  -1,enemy, 0x000        //LG_OVERBRAND
 2319,0xec,    ,  0, 3,5000,all,   0x000        //LG_BANDING
 
 2414,0xda,    ,  0, 0,1000,enemy, 0x008        //WM_REVERBERATION
Index: src/map/skill.c
===================================================================
--- src/map/skill.c     (revision 17319)
+++ src/map/skill.c     (working copy)
@@ -10397,13 +10397,31 @@
 
        case LG_OVERBRAND:
                {
-                       int width;//according to data from irowiki it actually is a square
-                       for( width = 0; width < 7; width++ )
-                               for( i = 0; i < 7; i++ )
-                                       map_foreachincell(skill_area_sub, src->m, x-2+i, y-2+width, splash_target(src), src, LG_OVERBRAND_BRANDISH, skill_lv, tick, flag|BCT_ENEMY,skill_castend_damage_id);
-                       for( width = 0; width < 7; width++ )
-                               for( i = 0; i < 7; i++ )
-                                       map_foreachincell(skill_area_sub, src->m, x-2+i, y-2+width, splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY,skill_castend_damage_id);
+                       struct s_skill_unit_layout *layout;
+                       layout = skill_get_unit_layout(skill_id,skill_lv,src,x,y);
+                       short dir = unit_getdir(src), ux, uy;
+                       for( i = 0; i < 53; i++ ) {
+                               if(dir > 0 && dir < 4) {
+                                       ux = x+layout->dy[i];
+                                       uy = y+layout->dx[i] * -1;
+                               } else if(dir == 4) {
+                                       ux = x+layout->dx[i];
+                                       uy = y+layout->dy[i];
+                               } else if(dir > 4) {
+                                       ux = x+layout->dy[i] * -1;
+                                       uy = y+layout->dx[i];
+                               } else {
+                                       ux = x+layout->dx[i];
+                                       uy = y+layout->dy[i] * -1;
+                               }
+                               if(i < 12) { //Close range hits twice
+                                       map_foreachincell(skill_area_sub, src->m, ux, uy, splash_target(src), src, LG_OVERBRAND_BRANDISH, skill_lv, tick, flag|BCT_ENEMY,skill_castend_damage_id);
+                                       map_foreachincell(skill_area_sub, src->m, ux, uy, splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY,skill_castend_damage_id);
+                               } else if(i > 11 && i < 45) //Far sides do knockback damage
+                                       map_foreachincell(skill_area_sub, src->m, ux, uy, splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY,skill_castend_damage_id);
+                               else //Far middle does piercing damage
+                                       map_foreachincell(skill_area_sub, src->m, ux, uy, splash_target(src), src, LG_OVERBRAND_BRANDISH, skill_lv, tick, flag|BCT_ENEMY,skill_castend_damage_id);
+                       }
                }
                break;
 
@@ -17530,6 +17548,18 @@
                                                memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
                                        }
                                        break;
+                               case LG_OVERBRAND: {
+                                               static const int dx[] = {-1,-1,-1,-1, 0, 0, 0, 0, 1, 1, 1, 1,
+                                                                        -5,-5,-5,-5,-4,-4,-4,-4,-3,-3,-3,-3,-2,-2,-2,-2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5,
+                                                                        -1,-1,-1, 0, 0, 0, 1, 1, 1};
+                                               static const int dy[] = { 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3,
+                                                                         0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3,
+                                                                        -4,-5,-6,-4,-5,-6,-4,-5,-6};
+                                               skill_unit_layout[pos].count = 53;
+                                               memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx));
+                                               memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
+                                       }
+                                       break;
                                default:
                                        ShowError("unknown unit layout at skill %d\n",i);
                                        break;
Viewed 323 times, submitted by unknown.