Переглянути джерело

Adds bonus2 bSpeedRate
* This bonus will apply EFST_MOVEHASTE_INFINITY.
* Reverts bonuses that were changed to a status change.

aleos 3 роки тому
батько
коміт
909c141996

+ 2 - 2
db/pre-re/item_combos.yml

@@ -145,7 +145,7 @@ Body:
           - Staff_Of_Wing
           - Wing_Of_Eagle
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Combos:
       - Combo:
           - Survival_Rod_
@@ -888,7 +888,7 @@ Body:
       bonus bAgi,5;
       bonus bStr,5;
       bonus bAspdRate,5;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bSPDrainValue,1;
       if (BaseClass == Job_Thief)
          bonus bNoGemStone;

+ 7 - 7
db/pre-re/item_db_equip.yml

@@ -5611,7 +5611,7 @@ Body:
       skill "AL_HEAL",3;
       bonus2 bAddRace,RC_Demon,3;
       bonus bStr,10;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 1373
     AegisName: Brood_Axe_C
     Name: Refined Bloody Axe
@@ -5632,7 +5632,7 @@ Body:
     WeaponLevel: 4
     Script: |
       bonus bStr,20;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bAspdRate,5;
   - Id: 1374
     AegisName: Tomahawk_C
@@ -15256,7 +15256,7 @@ Body:
       Skill "HW_MAGICPOWER",10;
       bonus bMaxHPRate,200;
       bonus bNoGemStone;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bNoWalkDelay;
   - Id: 2201
     AegisName: Sunglasses
@@ -27225,7 +27225,7 @@ Body:
     ArmorLevel: 1
     View: 219
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 5151
     AegisName: Headset_OST
     Name: Note Headphones
@@ -28147,7 +28147,7 @@ Body:
     ArmorLevel: 1
     View: 253
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 5204
     AegisName: Event_Pierrot_Nose
     Name: Rudolph's Nose
@@ -29523,7 +29523,7 @@ Body:
       bonus bInt,1;
       bonus bAgi,1;
       bonus bAspdRate,3;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 5270
     AegisName: Fallen_Leaves_
     Name: Autumn Leaves
@@ -29838,7 +29838,7 @@ Body:
       NoSell: true
       NoGuildStorage: true
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bAspdRate,-10;
       bonus bCastrate,25;
   - Id: 5287

+ 0 - 10
db/pre-re/status.yml

@@ -6972,13 +6972,3 @@ Body:
       NoDispell: true
       NoClearance: true
       NoClearbuff: true
-  - Status: Movehaste_Infinity
-    Icon: EFST_MOVHASTE_INFINITY
-    CalcFlags:
-      Speed: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoSave: true
-    Fail:
-      Movehaste_Infinity: true

+ 7 - 7
db/re/item_combos.yml

@@ -405,7 +405,7 @@ Body:
           - Shield_Of_Gust
           - Shining_Trapezohedron
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Combos:
       - Combo:
           - Survival_Rod
@@ -1980,7 +1980,7 @@ Body:
           - S_Dancer_Shoes
           - S_Dancer_Armor
     Script: |
-      autobonus3 "{ bonus bAspdRate,10; bonus bSpeedRate,25; }",1000,5000,"BD_ADAPTATION";
+      autobonus3 "{ bonus bAspdRate,10; bonus2 bSpeedRate,25; }",1000,5000,"BD_ADAPTATION";
       /* Unknow Specialeffect */
   - Combos:
       - Combo:
@@ -4383,7 +4383,7 @@ Body:
       bonus bAgi,5;
       bonus bStr,5;
       bonus bAspdRate,5;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bSPDrainValue,1;
       if (BaseClass == Job_Thief)
          bonus bNoGemStone;
@@ -7932,7 +7932,7 @@ Body:
           - Puente_Robe_IL
           - Nurse_Cap_IL
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       /* unknown speed value */
       bonus bHealPower,10;
   - Combos:
@@ -10751,7 +10751,7 @@ Body:
           - White_Wing_Suits
     Script: |
       .@r = getequiprefinerycnt(EQI_ARMOR);
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bCritAtkRate,4*(readparam(bluk)/20);
       if (.@r >= 7) {
          bonus bAspdRate,8;
@@ -10774,7 +10774,7 @@ Body:
     Script: |
       .@r = getequiprefinerycnt(EQI_ARMOR);
       bonus bHPGainValue,500;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus2 bSkillAtk,"RA_CLUSTERBOMB",30*(readparam(bint)/20);
       bonus2 bSkillUseSP,"RA_ELECTRICSHOCKER",30;
       if (.@r >= 7) {
@@ -11609,7 +11609,7 @@ Body:
     Script: |
       bonus bFlee,5;
       if ((getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES)) >= 15) {
-         bonus bSpeedRate,25; /* unknown value */
+         bonus2 bSpeedRate,25; /* unknown value */
       }
   - Combos:
       - Combo:

+ 33 - 67
db/re/item_db_equip.yml

@@ -5703,9 +5703,7 @@ Body:
       bonus bStr,10;
       bonus2 bAddRace,RC_Demon,3;
       skill "AL_HEAL",3;
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      bonus2 bSpeedRate,25;
   - Id: 1316
     AegisName: Adventure_Axe
     Name: Adventure Axe
@@ -6481,9 +6479,7 @@ Body:
     Refineable: true
     Script: |
       bonus bStr,10;
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      bonus2 bSpeedRate,25;
   - Id: 1364
     AegisName: Great_Axe
     Name: Great Axe
@@ -6558,9 +6554,7 @@ Body:
       bonus bAtkEle,Ele_Holy;
       skill "AL_HEAL",3;
       bonus2 bAddRace,RC_Demon,3;
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      bonus2 bSpeedRate,25;
   - Id: 1367
     AegisName: Slaughter
     Name: Slaughter
@@ -6732,7 +6726,7 @@ Body:
       skill "AL_HEAL",3;
       bonus2 bAddRace,RC_Demon,3;
       bonus bStr,10;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       /*Gold PC Room: bonus bBaseAtk,10; bonus bMatk,10;*/
   - Id: 1373
     AegisName: Brood_Axe_C
@@ -23548,7 +23542,7 @@ Body:
       bonus bMaxHPrate,200;
       bonus bNoKnockback;
       bonus bDelayrate,-100;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bIntravision;
       bonus bNoWalkDelay;
       bonus bNoGemStone;
@@ -27314,10 +27308,8 @@ Body:
       bonus bMaxHPrate,20;
       bonus bMaxSPrate,20;
       bonus bSPrecovRate,25;
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+      bonus2 bSpeedRate,25;
       bonus bInt,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
   - Id: 2411
     AegisName: Grave
     Name: Greaves
@@ -28429,9 +28421,7 @@ Body:
       bonus bMaxHPrate,20;
       bonus bMaxSPrate,20;
       bonus bSPrecovRate,15;
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      bonus2 bSpeedRate,25;
   - Id: 2463
     AegisName: Feral_Boots
     Name: Feral Boots
@@ -29011,10 +29001,8 @@ Body:
       .@r = getrefine();
       bonus bMdef,.@r;
       if (.@r>=14) {
-         sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+         bonus2 bSpeedRate,25;
       }
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
   - Id: 2492
     AegisName: Bayani_Bangungot_Boots
     Name: Bayani Bangungot Boots of Nightmare
@@ -29032,10 +29020,8 @@ Body:
       .@r = getrefine();
       bonus bMdef,.@r;
       if (.@r>=12) {
-         sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+         bonus2 bSpeedRate,25;
       }
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
   - Id: 2493
     AegisName: Goibne's_Combat_Boots_
     Name: Goibne's Greaves
@@ -40702,7 +40688,7 @@ Body:
     ArmorLevel: 1
     View: 219
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 5151
     AegisName: Headset_OST
     Name: Note Headphones
@@ -41630,7 +41616,7 @@ Body:
     ArmorLevel: 1
     View: 253
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 5204
     AegisName: Event_Pierrot_Nose
     Name: Rudolph's Nose
@@ -42901,11 +42887,10 @@ Body:
     Refineable: true
     View: 305
     Script: |
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+      bonus2 bSpeedRate,25;
       bonus bDef,4;
       skill "TF_HIDING",1;
     UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
       sc_end SC_HIDING;
   - Id: 5274
     AegisName: Shiny_Wig
@@ -42921,11 +42906,10 @@ Body:
     Refineable: true
     View: 306
     Script: |
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+      bonus2 bSpeedRate,25;
       bonus bDef,4;
       skill "TF_HIDING",1;
     UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
       sc_end SC_HIDING;
   - Id: 5275
     AegisName: Marvelous_Wig
@@ -42941,11 +42925,10 @@ Body:
     Refineable: true
     View: 307
     Script: |
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+      bonus2 bSpeedRate,25;
       bonus bDef,4;
       skill "TF_HIDING",1;
     UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
       sc_end SC_HIDING;
   - Id: 5276
     AegisName: Fantastic_Wig
@@ -42961,11 +42944,10 @@ Body:
     Refineable: true
     View: 308
     Script: |
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+      bonus2 bSpeedRate,25;
       bonus bDef,4;
       skill "TF_HIDING",1;
     UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
       sc_end SC_HIDING;
   - Id: 5277
     AegisName: Yellow_Bandana
@@ -43176,7 +43158,7 @@ Body:
       NoMail: true
       NoAuction: true
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bAspdRate,5;
       bonus bVariableCastrate,-5;
   - Id: 5287
@@ -49550,11 +49532,9 @@ Body:
     ArmorLevel: 1
     View: 314
     Script: |
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+      bonus2 bSpeedRate,25;
       bonus bAspdRate,10;
       bonus bVariableCastrate,-25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
   - Id: 5629
     AegisName: F_Vacation_Hat
     Name: F Vacation Hat
@@ -49840,10 +49820,10 @@ Body:
     View: 308
     Script: |
       bonus bDef,4;
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+      bonus2 bSpeedRate,25;
       skill "TF_HIDING",1;
     UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      sc_end SC_HIDING;
   - Id: 5646
     AegisName: F_Whisper_Mask
     Name: F Whisper Mask
@@ -52881,7 +52861,7 @@ Body:
       NoAuction: true
     Script: |
       bonus bAllStats,5;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 5810
     AegisName: Ph.D_Hat_V
     Name: Ph.D Hat V
@@ -53689,7 +53669,7 @@ Body:
     View: 999
     Script: |
       bonus2 bAddEffWhenHit,Eff_Stone,600;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 5870
     AegisName: Bunny_Egg_Shell
     Name: Bunny Egg Shell
@@ -75444,7 +75424,7 @@ Body:
       bonus bAllStats,2;
       bonus bMdef,5;
       bonus bUnbreakableHelm;
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
   - Id: 18626
     AegisName: Gelato_Hat
     Name: Gelato Hat
@@ -75638,9 +75618,7 @@ Body:
       bonus bStr,2;
       bonus bVit,1;
       if (getrefine() > 7)
-         sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+         bonus2 bSpeedRate,25;
   - Id: 18638
     AegisName: Citron_Hat
     Name: Citron Hat
@@ -82620,7 +82598,7 @@ Body:
          bonus bAspd,1;
       }
       if (.@r >= 12) {
-         bonus bSpeedRate,25;
+         bonus2 bSpeedRate,25;
       }
       bonus2 bExpAddRace,RC_All,5;
       bonus2 bDropAddRace,RC_All,5;
@@ -83864,9 +83842,7 @@ Body:
     ArmorLevel: 1
     EquipLevelMin: 30
     Script: |
-      autobonus "{ sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25; }",50,5000,BF_NORMAL,"{ showscript \"Smokie-formation!\"; active_transform 1056,5000; /*SMOKIE*/ }";
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      autobonus "{ bonus2 bSpeedRate,25; }",50,5000,BF_NORMAL,"{ showscript \"Smokie-formation!\"; active_transform 1056,5000; /*SMOKIE*/ }";
   - Id: 19239
     AegisName: PoringTownCarrot
     Name: Poring Village Carrot
@@ -83879,9 +83855,7 @@ Body:
     ArmorLevel: 1
     EquipLevelMin: 30
     Script: |
-      autobonus "{ sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25; }",50,5000,BF_NORMAL,"{ showscript \"Lunatic-formation!\"; active_transform 1063,5000; /*LUNATIC*/ }";
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      autobonus "{ bonus2 bSpeedRate,25; }",50,5000,BF_NORMAL,"{ showscript \"Lunatic-formation!\"; active_transform 1063,5000; /*LUNATIC*/ }";
   - Id: 19240
     AegisName: Toy_Syringe_K
     Name: Toy Syringe
@@ -90355,9 +90329,7 @@ Body:
     View: 691
     Script: |
       if (gettime(DT_MONTH) == OCTOBER)
-        sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+        bonus2 bSpeedRate,25;
   - Id: 19918
     AegisName: C_Lude_Mask
     Name: Costume Lude Mask
@@ -90931,10 +90903,8 @@ Body:
     Script: |
       if (gettime(DT_MONTH) == DECEMBER) {
         bonus bAspdRate,10;
-        sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+        bonus2 bSpeedRate,25;
       }
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
   - Id: 19977
     AegisName: C_Golden_Exclamation
     Name: Costume Golden Exclamation Mark
@@ -99870,7 +99840,7 @@ Body:
          bonus bLongHPGainValue,5;
       }
       if (.@r>=8)
-         sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+         bonus2 bSpeedRate,25;
       if (.@r>=9) {
          bonus bMaxHPrate,10;
          bonus bMaxSPrate,10;
@@ -99880,8 +99850,6 @@ Body:
       }
       if (.@r>=10)
          skill "AS_CLOAKING",3;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
   - Id: 20953
     AegisName: H_AD_Hood
     Name: High Adventurer Hood
@@ -102639,7 +102607,7 @@ Body:
       bonus bMaxHPRate,4+(.@r/3);
       bonus bMaxSPRate,4+(.@r/3);
       if (.@r > 9)
-         bonus bSpeedRate,25;
+         bonus2 bSpeedRate,25;
   - Id: 22075
     AegisName: Shoes_Of_Cracks
     Name: Rift Shoes
@@ -103614,11 +103582,9 @@ Body:
       }
       if (.@r >=9) {
         .@bonus += 5;
-        sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
+        bonus2 bSpeedRate,25;
       }
       bonus bMaxSPrate,.@bonus;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
   - Id: 22132
     AegisName: Nergal_Shoes
     Name: Fire Thunder Great Boots
@@ -111349,7 +111315,7 @@ Body:
          bonus bFlee,15;
       }
       if (.@r >= 10)
-         bonus bSpeedRate,25;
+         bonus2 bSpeedRate,25;
   - Id: 24440
     AegisName: S_Sonic_Armor
     Name: Sonic Shadow Armor
@@ -116417,7 +116383,7 @@ Body:
          bonus bDef,15;
          bonus bFlee,15;
          if (.@r>=10) {
-            bonus bSpeedRate,25;
+            bonus2 bSpeedRate,25;
          }
       }
   - Id: 24733

+ 4 - 8
db/re/item_db_etc.yml

@@ -4411,9 +4411,7 @@ Body:
       BuyingStore: true
       DropEffect: CLIENT
     Script: |
-      sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25;
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      bonus2 bSpeedRate,25;
   - Id: 4132
     AegisName: Mistress_Card
     Name: Mistress Card
@@ -11027,9 +11025,7 @@ Body:
       BuyingStore: true
       DropEffect: CLIENT
     Script: |
-      autobonus "{ bonus bAgi,44; sc_start SC_MOVEHASTE_INFINITY,INFINITE_TICK,25; heal 0,-40; }",500,3000,0,"{ specialeffect2 EF_POTION_BERSERK; showscript \"I got the signal!!!!\"; }";
-    UnEquipScript: |
-      sc_end SC_MOVEHASTE_INFINITY;
+      autobonus "{ bonus bAgi,44; bonus2 bSpeedRate,25; heal 0,-40; }",500,3000,0,"{ specialeffect2 EF_POTION_BERSERK; showscript \"I got the signal!!!!\"; }";
   - Id: 4582
     AegisName: Bungisngis_Card
     Name: Bungisngis Card
@@ -44725,7 +44721,7 @@ Body:
       bonus5 bAutoSpellWhenHit,"SO_FIREWALK",5,35,BF_WEAPON,0;
       bonus5 bAutoSpellWhenHit,"SO_ELECTRICWALK",5,80,BF_MAGIC,0;
       autobonus "{ bonus bFlee,200; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_TEIHIT1; }";
-      autobonus "{ bonus bSpeedRate,25; }",25,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }";
+      autobonus "{ bonus2 bSpeedRate,25; }",25,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }";
   - Id: 300000
     AegisName: IDTest_Card
     Name: IDTest Card
@@ -45884,7 +45880,7 @@ Body:
     Flags:
       DropEffect: CLIENT
     Script: |
-      bonus bSpeedRate,25;
+      bonus2 bSpeedRate,25;
       bonus bHit,-50;
   - Id: 300140
     AegisName: ILL_Sropho_Card

+ 0 - 10
db/re/status.yml

@@ -8110,13 +8110,3 @@ Body:
       All: true
     Flags:
       RemoveElementalOption: true
-  - Status: Movehaste_Infinity
-    Icon: EFST_MOVHASTE_INFINITY
-    CalcFlags:
-      Speed: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoSave: true
-    Fail:
-      Movehaste_Infinity: true

+ 1 - 0
doc/item_bonus.txt

@@ -154,6 +154,7 @@ bonus bFlee2Rate,n;   			Perfect Dodge + n%
 bonus bPerfectHitRate,n;		On-target impact attack probability n% (only the highest among all is applied)
 bonus bPerfectHitAddRate,n;		On-target impact attack probability + n%
 bonus bSpeedRate,n;   			Movement speed + n% (only the highest among all is applied, won't be stacked with SC_SPEEDUP0, SC_SPEEDUP1)
+bonus2 bSpeedRate,n; 			Movement speed + n% where EFST_MOVHASTE_INFINITY is applied (only the highest among all is applied, won't be stacked with SC_SPEEDUP0, SC_SPEEDUP1)
 bonus bSpeedAddRate,n;			Movement speed + n%
 bonus bAspd,n;        			Attack speed + n
 bonus bAspdRate,n;    			Attack speed + n%

+ 7 - 0
src/map/pc.cpp

@@ -4026,6 +4026,13 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 	nullpo_retv(sd);
 
 	switch(type){
+	case SP_SPEED_RATE:	//Non stackable increase
+		if (sd->state.lr_flag != 2) {
+			sd->bonus.speed_rate = min(sd->bonus.speed_rate, -val);
+			sd->special_state.movehaste = true;
+			clif_status_load(&sd->bl, EFST_MOVHASTE_INFINITY, 1);
+		}
+		break;
 	case SP_ADDELE: // bonus2 bAddEle,e,x;
 		PC_BONUS_CHK_ELEMENT(type2,SP_ADDELE);
 		if(!sd->state.lr_flag || sd->state.lr_flag == 3)

+ 1 - 0
src/map/pc.hpp

@@ -408,6 +408,7 @@ struct map_session_data {
 		unsigned int bonus_coma : 1;
 		unsigned int no_mado_fuel : 1; // Disable Magic_Gear_Fuel consumption [Secret]
 		unsigned int no_walk_delay : 1;
+		bool movehaste;
 	} special_state;
 	uint32 login_id1, login_id2;
 	uint64 class_;	//This is the internal job ID used by the map server to simplify comparisons/queries/etc. [Skotlex]

+ 0 - 1
src/map/script_constants.hpp

@@ -1840,7 +1840,6 @@
 	export_constant(SC_DEEP_POISONING_OPTION);
 	export_constant(SC_POISON_SHIELD);
 	export_constant(SC_POISON_SHIELD_OPTION);
-	export_constant(SC_MOVEHASTE_INFINITY);
 #ifdef RENEWAL
 	export_constant(SC_EXTREMITYFIST2);
 #endif

+ 3 - 3
src/map/status.cpp

@@ -3141,6 +3141,9 @@ int status_calc_pc_sub(struct map_session_data* sd, uint8 opt)
 	if (sd->special_state.no_walk_delay)
 		clif_status_load(&sd->bl, EFST_ENDURE, 0);
 
+	if (sd->special_state.movehaste)
+		clif_status_load(&sd->bl, EFST_MOVHASTE_INFINITY, 0);
+
 	memset(&sd->special_state,0,sizeof(sd->special_state));
 
 	if (pc_isvip(sd)) // Magic Stone requirement avoidance for VIP.
@@ -7364,8 +7367,6 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
 		if( sc->data[SC_JAWAII_SERENADE] ){
 			val = max( val, 25 );
 		}
-		if (sc->data[SC_MOVEHASTE_INFINITY])
-			val = max(val, sc->data[SC_MOVEHASTE_INFINITY]->val1);
 
 		// !FIXME: official items use a single bonus for this [ultramage]
 		if( sc->data[SC_SPEEDUP0] ) // Temporary item-based speedup
@@ -9808,7 +9809,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 		case SC_CLAN_INFO:
 		case SC_DAILYSENDMAILCNT:
 		case SC_SOULATTACK:
-		case SC_MOVEHASTE_INFINITY:
 			tick = INFINITE_TICK;
 			break;