viewing paste Unknown #5653 | Diff

Posted on the | Last edited on
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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
Index: db/re/skill_db.txt
===================================================================
--- db/re/skill_db.txt  (revision 17259)
+++ db/re/skill_db.txt  (working copy)
@@ -132,7 +132,7 @@
 86,9,8,1,1,0,0,5,1,yes,0,0,0,magic,0,          WZ_WATERBALL,Water Ball
 87,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,               WZ_ICEWALL,Ice Wall
 88,0,6,4,1,0x2,2,10,1,yes,0,0,0,magic,0,               WZ_FROSTNOVA,Frost Nova
-89,9,6,2,1,0,0,10,1,yes,0,0,0,magic,2,         WZ_STORMGUST,Storm Gust
+89,9,6,2,1,0,1,10,1,yes,0,0,0,magic,2,         WZ_STORMGUST,Storm Gust
 90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,  WZ_EARTHSPIKE,Earth Spike
 91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,  WZ_HEAVENDRIVE,Heaven's Drive
 92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,                WZ_QUAGMIRE,Quagmire
Index: src/map/skill.c
===================================================================
--- src/map/skill.c     (revision 17259)
+++ src/map/skill.c     (working copy)
@@ -2727,9 +2727,19 @@
                                dir = unit_getdir(bl);// backwards
                                break;
                        // This ensures the storm randomly pushes instead of exactly a cell backwards per official mechanics.
-                       case WZ_STORMGUST:
-                               dir = rand()%8;
+                       case WZ_STORMGUST: {
+                               int dx = bl->x-skill_area_temp[4];
+                               int dy = bl->y-skill_area_temp[5];
+                               if( dx == 0 && dy == 0 ){       // both are standing on the same spot
+                                       dir = rand()%8; //make it random
+                               }
+                               else //push it farther then center
+                                       dir = map_calc_dir(bl,skill_area_temp[4],skill_area_temp[5]);
+                               ShowInfo("srcx=%d,srcy=%d, blx=%d,bly=%d, \n\tdx=%d, dy=%d => dir=%d\n",
+                                       skill_area_temp[4],skill_area_temp[5],bl->x,bl->y,
+                                       dx,dy,dir);
                                break;
+                       }
                        case WL_CRIMSONROCK:
                                dir = map_calc_dir(bl,skill_area_temp[4],skill_area_temp[5]);
                                break;
@@ -3897,6 +3907,10 @@
                                status_heal(src,heal,0,0);
                        }
                } else {
+                       skill_area_temp[0] = 0;
+                       skill_area_temp[1] = bl->id;
+                       skill_area_temp[2] = 0;
+
                        switch ( skill_id ) {
                                case NJ_BAKUENRYU:
                                case LG_EARTHDRIVE:
@@ -3908,19 +3922,18 @@
                                        break;
                                case NPC_EARTHQUAKE://FIXME: Isn't EarthQuake a ground skill after all?
                                        skill_addtimerskill(src,tick+250,src->id,0,0,skill_id,skill_lv,2,flag|BCT_ENEMY|SD_SPLASH|1);
+                               case WL_CRIMSONROCK:
+                                       skill_area_temp[4] = bl->x;
+                                       skill_area_temp[5] = bl->y;
+                                       break;
+                               case WM_REVERBERATION_MELEE:
+                               case WM_REVERBERATION_MAGIC:
+                                       skill_area_temp[1] = 0;
+                                       break;
                                default:
                                        break;
                        }
 
-                       skill_area_temp[0] = 0;
-                       skill_area_temp[1] = bl->id;
-                       skill_area_temp[2] = 0;
-                       if( skill_id == WL_CRIMSONROCK ) {
-                               skill_area_temp[4] = bl->x;
-                               skill_area_temp[5] = bl->y;
-                       }
-                       if( skill_id == WM_REVERBERATION_MELEE || skill_id == WM_REVERBERATION_MAGIC )
-                               skill_area_temp[1] = 0;
                        // if skill damage should be split among targets, count them
                        //SD_LEVEL -> Forced splash damage for Auto Blitz-Beat -> count targets
                        //special case: Venom Splasher uses a different range for searching than for splashing
@@ -3932,6 +3945,17 @@
                }
                break;
 
+       case WZ_STORMGUST: //SG counter does not reset per stormgust. IE: One hit from a SG and two hits from another will freeze you.
+               #ifndef RENEWAL
+                       if (tsc)
+                               tsc->sg_counter++; //SG hit counter.
+                       if (skill_attack(skill_get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,0) <= 0 && tsc)
+                               tsc->sg_counter=0; //Attack absorbed.
+               #else
+                       skill_attack(skill_get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,0);
+               #endif
+               break;
+
        case WL_COMET:
                if(!map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR)) // Nothing should happen if the target is on Land Protector
                        skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
@@ -9856,7 +9880,6 @@
        case WZ_FIREPILLAR:
        case WZ_QUAGMIRE:
        case WZ_VERMILION:
-       case WZ_STORMGUST:
        case WZ_HEAVENDRIVE:
        case PR_SANCTUARY:
        case PR_MAGNUS:
@@ -9956,6 +9979,12 @@
        case GS_GROUNDDRIFT: //Ammo should be deleted right away.
                skill_unitsetting(src,skill_id,skill_lv,x,y,0);
                break;
+       case WZ_STORMGUST:
+               flag|=1;
+               skill_area_temp[4] = x;
+               skill_area_temp[5] = y;
+               skill_unitsetting(src,skill_id,skill_lv,x,y,0);
+               break;
        case RG_GRAFFITI:                       /* Graffiti [Valaris] */
                skill_clear_unitgroup(src);
                skill_unitsetting(src,skill_id,skill_lv,x,y,0);
@@ -11572,17 +11601,15 @@
                                                ++count < SKILLUNITTIMER_INTERVAL/sg->interval && !status_isdead(bl) );
                                }
                                break;
-               /**
-                * The storm gust counter was dropped in renewal
-                **/
-               #ifndef RENEWAL
-                               case WZ_STORMGUST: //SG counter does not reset per stormgust. IE: One hit from a SG and two hits from another will freeze you.
-                                       if (tsc)
-                                               tsc->sg_counter++; //SG hit counter.
-                                       if (skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0) <= 0 && tsc)
-                                               tsc->sg_counter=0; //Attack absorbed.
+
+                               case WZ_STORMGUST:
+                                       //make it splash to all char
+                                       map_foreachinrange(skill_area_sub, bl,
+                                           skill_get_splash(sg->skill_id,sg->skill_lv),BL_CHAR,
+                                           ss,sg->skill_id,sg->skill_lv,tick, BCT_ENEMY|1,
+                                           skill_castend_damage_id);
                                break;
-               #endif
+
                                case GS_DESPERADO:
                                        if (rnd()%100 < src->val1)
                                                skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
Viewed 774 times, submitted by lighta.