Просмотр исходного кода

Dehardcoded status change 2 (#8831)

* Follow-up https://github.com/rathena/rathena/commit/7a80ecb6f26e44b52e48d7e7668d0af2c873677e
* Only status changes for players are converted (typically SCs from item)

* Updated SC_BERSERK
** SC_BERSERK now recalculates all CalcFlags for the exception from status scripts with SC_BERSERK
Atemo 5 месяцев назад
Родитель
Сommit
df580b475c
7 измененных файлов с 328 добавлено и 931 удалено
  1. 88 297
      db/pre-re/status.yml
  2. 4 7
      db/re/item_db_usable.yml
  3. 225 140
      db/re/status.yml
  4. 0 88
      src/map/battle.cpp
  5. 0 9
      src/map/pc.cpp
  6. 0 18
      src/map/skill.cpp
  7. 11 372
      src/map/status.cpp

+ 88 - 297
db/pre-re/status.yml

@@ -705,22 +705,22 @@ Body:
       RemoveOnHermode: true
   - Status: Speedup0
     Icon: EFST_MOVHASTE_HORSE
-    CalcFlags:
-      Speed: true
     Flags:
       NoSave: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bSpeedRate, getstatus(SC_SPEEDUP0, 1);
   - Status: Speedup1
     Icon: EFST_MOVHASTE_POTION
-    CalcFlags:
-      Speed: true
     Flags:
       NoSave: true
       NoClearance: true
       RemoveOnHermode: true
+    Script: |
+      bonus bSpeedRate, getstatus(SC_SPEEDUP1, 1);
   - Status: Atkpotion
     Icon: EFST_PLUSATTACKPOWER
     Flags:
@@ -732,13 +732,13 @@ Body:
       bonus bBaseAtk, getstatus(SC_ATKPOTION, 1);
   - Status: Matkpotion
     Icon: EFST_PLUSMAGICPOWER
-    CalcFlags:
-      Matk: true
     Flags:
       NoRemoveOnDead: true
       NoClearance: true
       OverlapIgnoreLevel: true
       RemoveOnHermode: true
+    Script: |
+      bonus bMatk, getstatus(SC_MATKPOTION, 1);
   - Status: Wedding
     States:
       NoAttack: true
@@ -1216,15 +1216,7 @@ Body:
       NoUnEquipItem: true
       NoConsumeItem: true
     CalcFlags:
-      Def: true
-      Def2: true
-      Mdef: true
-      MDef2: true
-      Flee: true
-      Speed: true
-      Aspd: true
-      MaxHp: true
-      Regen: true
+      All: true
     Opt3:
       Berserk: true
     Flags:
@@ -2139,8 +2131,6 @@ Body:
       NoClearance: true
   - Status: Strfood
     Icon: EFST_FOOD_STR
-    CalcFlags:
-      Str: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -2148,6 +2138,8 @@ Body:
       NoClearance: true
     EndOnStart:
       Food_Str_Cash: true
+    Script: |
+      bonus bStr, getstatus(SC_STRFOOD, 1);
   - Status: Agifood
     Icon: EFST_FOOD_AGI
     Flags:
@@ -2161,8 +2153,6 @@ Body:
       bonus bAgi, getstatus(SC_AGIFOOD, 1);
   - Status: Vitfood
     Icon: EFST_FOOD_VIT
-    CalcFlags:
-      Vit: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -2170,10 +2160,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Food_Vit_Cash: true
+    Script: |
+      bonus bVit, getstatus(SC_VITFOOD, 1);
   - Status: Intfood
     Icon: EFST_FOOD_INT
-    CalcFlags:
-      Int: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -2181,10 +2171,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Food_Int_Cash: true
+    Script: |
+      bonus bInt, getstatus(SC_INTFOOD, 1);
   - Status: Dexfood
     Icon: EFST_FOOD_DEX
-    CalcFlags:
-      Dex: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -2192,10 +2182,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Food_Dex_Cash: true
+    Script: |
+      bonus bDex, getstatus(SC_DEXFOOD, 1);
   - Status: Lukfood
     Icon: EFST_FOOD_LUK
-    CalcFlags:
-      Luk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -2203,24 +2193,26 @@ Body:
       NoClearance: true
     EndOnStart:
       Food_Luk_Cash: true
+    Script: |
+      bonus bLuk, getstatus(SC_LUKFOOD, 1);
   - Status: Hitfood
     Icon: EFST_FOOD_BASICHIT
-    CalcFlags:
-      Hit: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bHit, getstatus(SC_HITFOOD, 1);
   - Status: Fleefood
     Icon: EFST_FOOD_BASICAVOIDANCE
-    CalcFlags:
-      Flee: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bFlee, getstatus(SC_FLEEFOOD, 1);
   - Status: Batkfood
     Flags:
       NoClearbuff: true
@@ -2532,14 +2524,14 @@ Body:
       NoClearance: true
   - Status: Incflee2
     Icon: EFST_PLUSAVOIDVALUE
-    CalcFlags:
-      Flee2: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bFlee2, getstatus(SC_INCFLEE2, 1);
   - Status: Jailed
     States:
       NoWarp: true
@@ -2643,14 +2635,14 @@ Body:
       NoRemoveOnDead: true
   - Status: Inccri
     Icon: EFST_CRITICALPERCENT
-    CalcFlags:
-      Cri: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bCritical, getstatus(SC_INCCRI, 1);
   #- Status: Incdef
   #- Status: Incbaseatk
   #- Status: Fastcast
@@ -2701,12 +2693,12 @@ Body:
       bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_RESIST, 4);
   - Status: Spcost_Rate
     Icon: EFST_ATKER_BLOOD
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bUseSPrate, -getstatus(SC_SPCOST_RATE, 1);
   - Status: Commonsc_Resist
     Icon: EFST_TARGET_BLOOD
     Flags:
@@ -2811,6 +2803,12 @@ Body:
       NoRemoveOnDead: true
     Fail:
       S_Lifepotion: true
+    Script: |
+      if (!getstatus(SC_BERSERK)) {
+         .@val1 = -getstatus(SC_S_LIFEPOTION, 1);
+         .@val2 = getstatus(SC_S_LIFEPOTION, 2) * 1000;
+         bonus2 bRegenPercentHP, .@val1, .@val2;
+      }
   - Status: L_Lifepotion
     Icon: EFST_L_LIFEPOTION
     Flags:
@@ -2820,6 +2818,12 @@ Body:
       NoRemoveOnDead: true
     Fail:
       L_Lifepotion: true
+    Script: |
+      if (!getstatus(SC_BERSERK)) {
+         .@val1 = -getstatus(SC_L_LIFEPOTION, 1);
+         .@val2 = getstatus(SC_L_LIFEPOTION, 2) * 1000;
+         bonus2 bRegenPercentHP, .@val1, .@val2;
+      }
   - Status: Jexpboost
     Icon: EFST_CASH_PLUSONLYJOBEXP
     Flags:
@@ -2855,6 +2859,8 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus2 bAddRace2,RC2_MANUK, getstatus(SC_MANU_ATK, 1);
   - Status: Manu_Def
     Icon: EFST_MANU_DEF
     Flags:
@@ -2862,6 +2868,8 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus2 bSubRace2,RC2_MANUK, getstatus(SC_MANU_DEF, 1);
   - Status: Spl_Atk
     Icon: EFST_SPL_ATK
     Flags:
@@ -2869,6 +2877,8 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus2 bAddRace2,RC2_SPLENDIDE, getstatus(SC_SPL_ATK, 1);
   - Status: Spl_Def
     Icon: EFST_SPL_DEF
     Flags:
@@ -2876,6 +2886,8 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus2 bSubRace2,RC2_SPLENDIDE, getstatus(SC_SPL_DEF, 1);
   - Status: Manu_Matk
     Icon: EFST_MANU_MATK
     Flags:
@@ -2883,6 +2895,8 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus2 bMagicAddRace2,RC2_MANUK, getstatus(SC_MANU_MATK, 1);
   - Status: Spl_Matk
     Icon: EFST_SPL_MATK
     Flags:
@@ -2890,6 +2904,8 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus2 bMagicAddRace2,RC2_SPLENDIDE, getstatus(SC_SPL_MATK, 1);
   - Status: Food_Str_Cash
     Icon: EFST_FOOD_STR_CASH
     CalcFlags:
@@ -4398,12 +4414,12 @@ Body:
       Debuff: true
   - Status: Mysterious_Powder
     Icon: EFST_MYSTERIOUS_POWDER
-    CalcFlags:
-      MaxHp: true
     Flags:
       NoDispell: true
       NoBanishingBuster: true
       Debuff: true
+    Script: |
+      bonus bMaxHPrate, getstatus(SC_MYSTERIOUS_POWDER, 1);
   - Status: Melon_Bomb
     Icon: EFST_MELON_BOMB
     CalcFlags:
@@ -4431,137 +4447,137 @@ Body:
       NoSave: true
   - Status: Savage_Steak
     Icon: EFST_SAVAGE_STEAK
-    CalcFlags:
-      Str: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bStr, getstatus(SC_SAVAGE_STEAK, 1);
   - Status: Cocktail_Warg_Blood
     Icon: EFST_COCKTAIL_WARG_BLOOD
-    CalcFlags:
-      Int: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bInt, getstatus(SC_COCKTAIL_WARG_BLOOD, 1);
   - Status: Minor_Bbq
     Icon: EFST_MINOR_BBQ
-    CalcFlags:
-      Vit: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bVit, getstatus(SC_MINOR_BBQ, 1);
   - Status: Siroma_Ice_Tea
     Icon: EFST_SIROMA_ICE_TEA
-    CalcFlags:
-      Dex: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bDex, getstatus(SC_SIROMA_ICE_TEA, 1);
   - Status: Drocera_Herb_Steamed
     Icon: EFST_DROCERA_HERB_STEAMED
-    CalcFlags:
-      Agi: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bAgi, getstatus(SC_DROCERA_HERB_STEAMED, 1);
   - Status: Putti_Tails_Noodles
     Icon: EFST_PUTTI_TAILS_NOODLES
-    CalcFlags:
-      Luk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
       NoRemoveOnDead: true
+    Script: |
+      bonus bLuk, getstatus(SC_PUTTI_TAILS_NOODLES, 1);
   - Status: Boost500
     Icon: EFST_BOOST500
-    CalcFlags:
-      Aspd: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bAspdRate, getstatus(SC_BOOST500, 1);
   - Status: Full_Swing_K
     Icon: EFST_FULL_SWING_K
-    CalcFlags:
-      Batk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bBaseAtk, getstatus(SC_FULL_SWING_K, 1);
   - Status: Mana_Plus
     Icon: EFST_MANA_PLUS
-    CalcFlags:
-      Matk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bMatk, getstatus(SC_MANA_PLUS, 1);
   - Status: Mustle_M
     Icon: EFST_MUSTLE_M
-    CalcFlags:
-      MaxHp: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bMaxHPrate, getstatus(SC_MUSTLE_M, 1);
   - Status: Life_Force_F
     Icon: EFST_LIFE_FORCE_F
-    CalcFlags:
-      MaxSp: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bMaxSPrate, getstatus(SC_LIFE_FORCE_F, 1);
   - Status: Extract_White_Potion_Z
     Icon: EFST_EXTRACT_WHITE_POTION_Z
-    CalcFlags:
-      Regen: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bHPrecovRate, getstatus(SC_EXTRACT_WHITE_POTION_Z, 1);
   - Status: Vitata_500
     Icon: EFST_VITATA_500
-    CalcFlags:
-      Regen: true
-      MaxSp: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bSPrecovRate,20;
+      bonus bMaxSPrate,5;
   - Status: Extract_Salamine_Juice
     Icon: EFST_EXTRACT_SALAMINE_JUICE
-    CalcFlags:
-      Aspd: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bAspdRate, getstatus(SC_EXTRACT_SALAMINE_JUICE, 1);
   - Status: _Reproduce
     Icon: EFST_REPRODUCE
     DurationLookup: SC_REPRODUCE
@@ -5694,63 +5710,6 @@ Body:
     Icon: EFST_E_QD_SHOT_READY
     Flags:
       NoSave: true
-  - Status: Mtf_Aspd
-    Icon: EFST_MTF_ASPD
-    CalcFlags:
-      Aspd: true
-      Hit: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Rangeatk
-    Icon: EFST_MTF_RANGEATK
-    CalcFlags:
-      Batk: true
-      Watk: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Matk
-    Icon: EFST_MTF_MATK
-    CalcFlags:
-      Matk: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Mleatked
-    Icon: EFST_MTF_MLEATKED
-    CalcFlags:
-      All: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Cridamage
-    Icon: EFST_MTF_CRIDAMAGE
-    CalcFlags:
-      All: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
   - Status: Oktoberfest
     States:
       NoAttack: true
@@ -5785,39 +5744,6 @@ Body:
       NoBanishingBuster: true
       NoClearance: true
       BlEffect: true
-  - Status: Quest_Buff1
-    Icon: EFST_QUEST_BUFF1
-    CalcFlags:
-      Batk: true
-      Matk: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-  - Status: Quest_Buff2
-    Icon: EFST_QUEST_BUFF2
-    CalcFlags:
-      Batk: true
-      Matk: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-  - Status: Quest_Buff3
-    Icon: EFST_QUEST_BUFF3
-    CalcFlags:
-      Batk: true
-      Matk: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
   - Status: All_Riding
     Icon: EFST_ALL_RIDING
     States:
@@ -5863,116 +5789,6 @@ Body:
       NoBanishingBuster: true
       NoDispell: true
       RemoveOnHermode: true
-  - Status: Mtf_Aspd2
-    Icon: EFST_MTF_ASPD2
-    CalcFlags:
-      Aspd: true
-      Hit: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Rangeatk2
-    Icon: EFST_MTF_RANGEATK2
-    CalcFlags:
-      Aspd: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Matk2
-    Icon: EFST_MTF_MATK2
-    CalcFlags:
-      Matk: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: 2011rwc_Scroll
-    Icon: EFST_2011RWC_SCROLL
-    CalcFlags:
-      Str: true
-      Agi: true
-      Vit: true
-      Int: true
-      Dex: true
-      Luk: true
-      Batk: true
-      Matk: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-    EndOnStart:
-      Food_Str_Cash: true
-      Food_Agi_Cash: true
-      Food_Vit_Cash: true
-      Food_Int_Cash: true
-      Food_Dex_Cash: true
-      Food_Luk_Cash: true
-  - Status: Jp_Event04
-    Icon: EFST_JP_EVENT04
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-  - Status: Mtf_Mhp
-    Icon: EFST_MTF_MHP
-    CalcFlags:
-      MaxHp: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Msp
-    Icon: EFST_MTF_MSP
-    CalcFlags:
-      MaxSp: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Pumpkin
-    Icon: EFST_MTF_PUMPKIN
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
-  - Status: Mtf_Hitflee
-    Icon: EFST_MTF_HITFLEE
-    CalcFlags:
-      Hit: true
-      Flee: true
-      Cri: true
-    Flags:
-      NoRemoveOnDead: true
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
-      NoForcedEnd: true
   - Status: Vacuum_Extreme_Postdelay
     DurationLookup: SO_VACUUM_EXTREME
     Flags:
@@ -6912,14 +6728,14 @@ Body:
       BlEffect: true
   - Status: Increase_Maxhp
     Icon: EFST_ATKER_ASPD
-    CalcFlags:
-      MaxHp: true
-      Regen: true
+    Script: |
+      bonus bMaxHPrate, getstatus(SC_INCREASE_MAXHP, 1);
+      bonus bHPrecovRate, getstatus(SC_INCREASE_MAXHP, 2);
   - Status: Increase_Maxsp
     Icon: EFST_ATKER_MOVESPEED
-    CalcFlags:
-      MaxHp: true
-      Regen: true
+    Script: |
+      bonus bMaxSPrate, getstatus(SC_INCREASE_MAXSP, 1);
+      bonus bSPrecovRate, getstatus(SC_INCREASE_MAXSP, 2);
   - Status: Ref_T_Potion
     Icon: EFST_REF_T_POTION
   - Status: Add_Atk_Damage
@@ -6963,31 +6779,6 @@ Body:
     Flags:
       DisplayPc: true
       BlEffect: true
-  - Status: Ep16_2_Buff_Ss
-    Icon: EFST_EP16_2_BUFF_SS
-    CalcFlags:
-      Aspd: true
-    Flags:
-      NoBanishingBuster: true
-      NoDispell: true
-      NoClearance: true
-      NoClearbuff: true
-  - Status: Ep16_2_Buff_Sc
-    Icon: EFST_EP16_2_BUFF_SC
-    CalcFlags:
-      Cri: true
-    Flags:
-      NoBanishingBuster: true
-      NoDispell: true
-      NoClearance: true
-      NoClearbuff: true
-  - Status: Ep16_2_Buff_Ac
-    Icon: EFST_EP16_2_BUFF_AC
-    Flags:
-      NoBanishingBuster: true
-      NoDispell: true
-      NoClearance: true
-      NoClearbuff: true
   - Status: WeaponBreaker
     DurationLookup: NPC_WEAPONBRAKER
   - Status: Powerup

+ 4 - 7
db/re/item_db_usable.yml

@@ -3958,7 +3958,7 @@ Body:
     Weight: 30
     Script: |
       itemheal 45,0;
-      transform 1508,600000,SC_MTF_HITFLEE,10,20;
+      transform 1508,600000,SC_MTF_HITFLEE,20,30;
       specialeffect2 EF_CLOAKING;
       showscript "Trans-Form-!! Cube Fo-rm!!";
   - Id: 11596
@@ -9440,7 +9440,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_STEAL;
-      sc_start SC_VITALIZE_POTION,120000,3;
+      sc_start SC_VITALIZE_POTION,120000,2;
   - Id: 12405
     AegisName: Underripe_Yggseed
     Name: Underripe Yggseed
@@ -36286,8 +36286,7 @@ Body:
     Buy: 20
     Weight: 10
     Script: |
-      sc_start SC_Cup_Of_Boza,120000,0;
-      /*aegis data 2 Minutes*/
+      sc_start SC_CUP_OF_BOZA,120000,0;
   - Id: 14675
     AegisName: Shadow_Box2
     Name: Shadow Stat Box
@@ -57715,7 +57714,6 @@ Body:
     Script: |
       specialeffect2 EF_ENHANCE;
       sc_start SC_BEEF_RIB_STEW,180000,0;
-      /*aegis data 3 Minutes*/
   - Id: 22659
     AegisName: BraisedSpareribs
     Name: Pig Steamed Ribs
@@ -57725,7 +57723,6 @@ Body:
     Script: |
       specialeffect2 EF_ENHANCE;
       sc_start SC_PORK_RIB_STEW,180000,0;
-      /*aegis data 3 Minutes*/
   - Id: 22660
     AegisName: Sealed_Letter
     Name: Sealed Envelope
@@ -76767,7 +76764,7 @@ Body:
       BuyingStore: true
     Script: |
       specialeffect2 EF_POTION_BERSERK;
-      sc_start SC_M_DEFSCROLL,3600000,0;
+      sc_start2 SC_M_DEFSCROLL,3600000,500,200;
       sc_start4 SC_LIMIT_POWER_BOOSTER,3600000,30,1,5,0;
       sc_start SC_INFINITY_DRINK,3600000,0;
       sc_start SC_SPEEDUP0,600000,25;

Разница между файлами не показана из-за своего большого размера
+ 225 - 140
db/re/status.yml


+ 0 - 88
src/map/battle.cpp

@@ -1818,40 +1818,6 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 		if (tsc->getSCE(SC_SU_STOOP))
 			damage -= damage * 90 / 100;
 
-		// Compressed code, fixed by map.hpp [Epoque]
-		if (src->type == BL_MOB) {
-			std::vector<e_race2> race2 = status_get_race2(src);
-
-			for (const auto &raceit : race2) {
-				switch (raceit) {
-					case RC2_MANUK:
-						if (sce = tsc->getSCE(SC_MANU_DEF))
-							damage -= damage * sce->val1 / 100;
-						break;
-					case RC2_SPLENDIDE:
-						if (sce = tsc->getSCE(SC_SPL_DEF))
-							damage -= damage * sce->val1 / 100;
-						break;
-					case RC2_BIO5_ACOLYTE_MERCHANT:
-						if (sce = tsc->getSCE(SC_LHZ_DUN_N1))
-							damage -= damage * sce->val2 / 100;
-						break;
-					case RC2_BIO5_MAGE_ARCHER:
-						if (sce = tsc->getSCE(SC_LHZ_DUN_N2))
-							damage -= damage * sce->val2 / 100;
-						break;
-					case RC2_BIO5_SWORDMAN_THIEF:
-						if (sce = tsc->getSCE(SC_LHZ_DUN_N3))
-							damage -= damage * sce->val2 / 100;
-						break;
-					case RC2_BIO5_MVP:
-						if (sce = tsc->getSCE(SC_LHZ_DUN_N4))
-							damage -= damage * sce->val2 / 100;
-						break;
-				}
-			}
-		}
-
 		if((sce=tsc->getSCE(SC_ARMOR)) && //NPC_DEFENDER
 			sce->val3&flag && sce->val4&flag)
 			damage /= tsc->getSCE(SC_ARMOR)->val2;
@@ -1964,42 +1930,6 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 		if (flag&BF_MAGIC && bl->type == BL_PC && sc->getSCE(SC_GVG_GIANT) && sc->getSCE(SC_GVG_GIANT)->val4)
 			damage += damage * sc->getSCE(SC_GVG_GIANT)->val4 / 100;
 
-		// [Epoque]
-		if (bl->type == BL_MOB) {
-			if ((flag&BF_WEAPON) || (flag&BF_MAGIC)) {
-				std::vector<e_race2> race2 = status_get_race2(bl);
-
-				for (const auto &raceit : race2) {
-					switch (raceit) {
-						case RC2_MANUK:
-							if (sce = sc->getSCE(SC_MANU_ATK))
-								damage += damage * sce->val1 / 100;
-							break;
-						case RC2_SPLENDIDE:
-							if (sce = sc->getSCE(SC_SPL_ATK))
-								damage += damage * sce->val1 / 100;
-							break;
-						case RC2_BIO5_SWORDMAN_THIEF:
-							if (sce = sc->getSCE(SC_LHZ_DUN_N1))
-								damage += damage * sce->val1 / 100;
-							break;
-						case RC2_BIO5_ACOLYTE_MERCHANT:
-							if (sce = sc->getSCE(SC_LHZ_DUN_N2))
-								damage += damage * sce->val1 / 100;
-							break;
-						case RC2_BIO5_MAGE_ARCHER:
-							if (sce = sc->getSCE(SC_LHZ_DUN_N3))
-								damage += damage * sce->val1 / 100;
-							break;
-						case RC2_BIO5_MVP:
-							if (sce = sc->getSCE(SC_LHZ_DUN_N4))
-								damage += damage * sce->val1 / 100;
-							break;
-					}
-				}
-			}
-		}
-
 		if (sc->getSCE(SC_POISONINGWEAPON) && flag&BF_SHORT && damage > 0) {
 			damage += damage * 10 / 100;
 			if (rnd() % 100 < sc->getSCE(SC_POISONINGWEAPON)->val3)
@@ -3340,13 +3270,6 @@ static bool is_attack_hitting(struct Damage* wd, struct block_list *src, struct
 			hitrate += 3 * skill;
 	}
 
-	if (sc) {
-		if (sc->getSCE(SC_MTF_ASPD))
-			hitrate += sc->getSCE(SC_MTF_ASPD)->val2;
-		if (sc->getSCE(SC_MTF_ASPD2))
-			hitrate += sc->getSCE(SC_MTF_ASPD2)->val2;
-	}
-
 	hitrate = cap_value(hitrate, battle_config.min_hitrate, battle_config.max_hitrate);
 
 	if(skill_id == PA_SHIELDCHAIN)
@@ -6576,14 +6499,6 @@ static void battle_attack_sc_bonus(struct Damage* wd, struct block_list *src, st
 			RE_ALLATK_ADDRATE(wd, sc->getSCE(SC_HEAT_BARREL)->val3);
 		}
 		if((wd->flag&(BF_LONG|BF_MAGIC)) == BF_LONG) {
-			if (sc->getSCE(SC_MTF_RANGEATK)) { // Monster Transformation bonus
-				ATK_ADDRATE(wd->damage, wd->damage2, sc->getSCE(SC_MTF_RANGEATK)->val1);
-				RE_ALLATK_ADDRATE(wd, sc->getSCE(SC_MTF_RANGEATK)->val1);
-			}
-			if (sc->getSCE(SC_MTF_RANGEATK2)) { // Monster Transformation bonus
-				ATK_ADDRATE(wd->damage, wd->damage2, sc->getSCE(SC_MTF_RANGEATK2)->val1);
-				RE_ALLATK_ADDRATE(wd, sc->getSCE(SC_MTF_RANGEATK2)->val1);
-			}
 			if (sc->getSCE(SC_ARCLOUSEDASH) && sc->getSCE(SC_ARCLOUSEDASH)->val4) {
 				ATK_ADDRATE(wd->damage, wd->damage2, sc->getSCE(SC_ARCLOUSEDASH)->val4);
 				RE_ALLATK_ADDRATE(wd, sc->getSCE(SC_ARCLOUSEDASH)->val4);
@@ -10187,9 +10102,6 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			pc_addspiritball(tsd, skill_get_time2(SR_GENTLETOUCH_ENERGYGAIN, tsc->getSCE(SC_GT_ENERGYGAIN)->val1), spheres);
 	}
 
-	if (tsc && tsc->getSCE(SC_MTF_MLEATKED) && rnd()%100 < tsc->getSCE(SC_MTF_MLEATKED)->val2)
-		clif_skill_nodamage(target, *target, SM_ENDURE, tsc->getSCE(SC_MTF_MLEATKED)->val1, sc_start(src, target, SC_ENDURE, 100, tsc->getSCE(SC_MTF_MLEATKED)->val1, skill_get_time(SM_ENDURE, tsc->getSCE(SC_MTF_MLEATKED)->val1)));
-
 	if(tsc && tsc->getSCE(SC_KAAHI) && tstatus->hp < tstatus->max_hp && status_charge(target, 0, tsc->getSCE(SC_KAAHI)->val3)) {
 		int32 hp_heal = tstatus->max_hp - tstatus->hp;
 		if (hp_heal > tsc->getSCE(SC_KAAHI)->val2)

+ 0 - 9
src/map/pc.cpp

@@ -10568,15 +10568,6 @@ int32 pc_itemheal(map_session_data *sd, t_itemid itemid, int32 hp, int32 sp)
 		// Recovery Potion
 		if (sd->sc.getSCE(SC_INCHEALRATE))
 			bonus += bonus * sd->sc.getSCE(SC_INCHEALRATE)->val1 / 100;
-		// 2014 Halloween Event : Pumpkin Bonus
-		if (sd->sc.getSCE(SC_MTF_PUMPKIN)) {
-			if (itemid == ITEMID_PUMPKIN)
-				bonus += bonus * sd->sc.getSCE(SC_MTF_PUMPKIN)->val1 / 100;
-			else if (itemid == ITEMID_COOKIE_BAT)
-				bonus += sd->sc.getSCE(SC_MTF_PUMPKIN)->val2;
-		}
-		if (sd->sc.getSCE(SC_VITALIZE_POTION))
-			bonus += bonus * 10 / 100;
 
 		tmp = hp * bonus / 100; // Overflow check
 		if (bonus != 100 && tmp > hp)

+ 0 - 18
src/map/skill.cpp

@@ -681,12 +681,6 @@ int32 skill_calc_heal(struct block_list *src, struct block_list *target, uint16
 #ifdef RENEWAL
 			if (tsc->getSCE(SC_ASSUMPTIO))
 				hp_bonus += tsc->getSCE(SC_ASSUMPTIO)->val1 * 2;
-#endif
-			if (tsc->getSCE(SC_VITALIZE_POTION))
-#ifdef RENEWAL
-				hp_bonus += 10;
-#else
-				hp += hp * 10 / 100;
 #endif
 		}
 	}
@@ -2422,12 +2416,6 @@ int32 skill_additional_effect( struct block_list* src, struct block_list *bl, ui
 			mob_class_change(dstmd,class_);
 	}
 
-	if (sd && sc) {
-		struct status_change_entry *sce;
-		if ((sce = sc->getSCE(SC_2011RWC_SCROLL)) && rnd() % 1000 <= 10)
-			skill_castend_nodamage_id(src, src, AC_CONCENTRATION, max(3, pc_checkskill(sd,AC_CONCENTRATION)), tick, 0);
-	}
-
 	return 0;
 }
 
@@ -19341,8 +19329,6 @@ int32 skill_castfix_sc(struct block_list *bl, double time, uint8 flag)
 				time += sc->getSCE(SC_PARALYSIS)->val3;
 			if (sc->getSCE(SC_IZAYOI))
 				time -= time * 50 / 100;
-			if (sc->getSCE(SC_2011RWC_SCROLL))
-				time -= time * 5 / 100;
 		}
 		if (sc->getSCE(SC_SUFFRAGIUM)) {
 			if(!(flag&2))
@@ -19462,8 +19448,6 @@ int32 skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint1
 			VARCAST_REDUCTION(sc->getSCE(SC_TELEKINESIS_INTENSE)->val2);
 		if (sc->getSCE(SC_SOULFAIRY))
 			VARCAST_REDUCTION(sc->getSCE(SC_SOULFAIRY)->val3);
-		if (sc->getSCE(SC_EP16_2_BUFF_AC))
-			VARCAST_REDUCTION(80);
 		// Multiplicative Fixed CastTime values
 		if (sc->getSCE(SC_SECRAMENT))
 			fixcast_r = max(fixcast_r, sc->getSCE(SC_SECRAMENT)->val2);
@@ -19486,8 +19470,6 @@ int32 skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint1
 			fixed = 0;
 		if (sc->getSCE(SC_GLOOMYDAY))
 			fixed += skill_lv * 500;
-		if (sc->getSCE(SC_2011RWC_SCROLL))
-			VARCAST_REDUCTION(5);
 	}
 	if (sc && sc->getSCE(SC_SECRAMENT) && skill_id == HW_MAGICPOWER && (flag&2)) // Sacrament lowers Mystical Amplification cast time
 		fixcast_r = max(fixcast_r, sc->getSCE(SC_SECRAMENT)->val2);

+ 11 - 372
src/map/status.cpp

@@ -3111,6 +3111,7 @@ static int32 status_get_hpbonus(struct block_list *bl, enum e_status_bonus type)
 		}
 
 		//Bonus by SC
+		// !CHECKME: status_get_hpbonus shouldn't be used for SC from usable items
 		if (sc) {
 			if(sc->getSCE(SC_INCMHP))
 				bonus += sc->getSCE(SC_INCMHP)->val1;
@@ -3139,6 +3140,7 @@ static int32 status_get_hpbonus(struct block_list *bl, enum e_status_bonus type)
 		status_change *sc = status_get_sc(bl);
 
 		//Bonus by SC
+		// !CHECKME: status_get_hpbonus shouldn't be used for SC from usable items
 		if (sc) {
 			//Increasing
 			if(sc->getSCE(SC_INCMHPRATE))
@@ -3185,8 +3187,6 @@ static int32 status_get_hpbonus(struct block_list *bl, enum e_status_bonus type)
 				bonus += sc->getSCE(SC_LUNARSTANCE)->val2;
 			if (sc->getSCE(SC_LUXANIMA))
 				bonus += sc->getSCE(SC_LUXANIMA)->val3;
-			if (sc->getSCE(SC_MTF_MHP))
-				bonus += sc->getSCE(SC_MTF_MHP)->val1;
 			if (sc->getSCE(SC_FIRM_FAITH))
 				bonus += sc->getSCE(SC_FIRM_FAITH)->val2;
 
@@ -3199,16 +3199,6 @@ static int32 status_get_hpbonus(struct block_list *bl, enum e_status_bonus type)
 				bonus -= sc->getSCE(SC__WEAKNESS)->val2;
 			if(sc->getSCE(SC_EQC))
 				bonus -= sc->getSCE(SC_EQC)->val3;
-			if(sc->getSCE(SC_PACKING_ENVELOPE3))
-				bonus += sc->getSCE(SC_PACKING_ENVELOPE3)->val1;
-			if(sc->getSCE(SC_2011RWC_SCROLL))
-				bonus -= 10;
-			if(sc->getSCE(SC_INFINITY_DRINK))
-				bonus += 5;
-			if(sc->getSCE(SC_COMBAT_PILL))
-				bonus -= 3;
-			if(sc->getSCE(SC_COMBAT_PILL2))
-				bonus -= 5;
 		}
 		// Max rate reduce is -100%
 		bonus = cap_value(bonus,-100,INT_MAX);
@@ -3234,18 +3224,11 @@ static int32 status_get_hpbonus_equip(TBL_PC *sd) {
 static int32 status_get_hpbonus_item(block_list *bl) {
 	int32 bonus = 0;
 
-	status_change *sc = status_get_sc(bl);
+	// status_change *sc = status_get_sc(bl);
 
 	//Bonus by SC
-	if (sc) {
-		if (sc->getSCE(SC_INCREASE_MAXHP))
-			bonus += sc->getSCE(SC_INCREASE_MAXHP)->val1;
-		if (sc->getSCE(SC_MUSTLE_M))
-			bonus += sc->getSCE(SC_MUSTLE_M)->val1;
-
-		if (sc->getSCE(SC_MYSTERIOUS_POWDER))
-			bonus -= sc->getSCE(SC_MYSTERIOUS_POWDER)->val1;
-	}
+	// if (sc) {
+	// }
 
 	// Max rate reduce is -100%
 	return cap_value(bonus, -100, INT_MAX);
@@ -3290,6 +3273,7 @@ static int32 status_get_spbonus(struct block_list *bl, enum e_status_bonus type)
 		}
 
 		//Bonus by SC
+		// !CHECKME: status_get_spbonus shouldn't be used for SC from usable items
 		if (sc) {
 			if(sc->getSCE(SC_INCMSP))
 				bonus += sc->getSCE(SC_INCMSP)->val1;
@@ -3325,6 +3309,7 @@ static int32 status_get_spbonus(struct block_list *bl, enum e_status_bonus type)
 		}
 
 		//Bonus by SC
+		// !CHECKME: status_get_spbonus shouldn't be used for SC from usable items
 		if (sc) {
 			//Increasing
 			if(sc->getSCE(SC_INCMSPRATE))
@@ -3337,24 +3322,10 @@ static int32 status_get_spbonus(struct block_list *bl, enum e_status_bonus type)
 				bonus += sc->getSCE(SC_MERC_SPUP)->val2;
 			if (sc->getSCE(SC_LUXANIMA))
 				bonus += sc->getSCE(SC_LUXANIMA)->val3;
-			if (sc->getSCE(SC_MTF_MSP))
-				bonus += sc->getSCE(SC_MTF_MSP)->val1;
-			if(sc->getSCE(SC_PACKING_ENVELOPE4))
-				bonus += sc->getSCE(SC_PACKING_ENVELOPE4)->val1;
 
 			//Decreasing
 			if (sc->getSCE(SC_MELODYOFSINK))
 				bonus -= sc->getSCE(SC_MELODYOFSINK)->val3;
-			if (sc->getSCE(SC_2011RWC_SCROLL))
-				bonus -= 10;
-			if (sc->getSCE(SC_INFINITY_DRINK))
-				bonus += 5;
-			if (sc->getSCE(SC_MENTAL_POTION))
-				bonus += sc->getSCE(SC_MENTAL_POTION)->val1;
-			if(sc->getSCE(SC_COMBAT_PILL))
-				bonus -= 3;
-			if(sc->getSCE(SC_COMBAT_PILL2))
-				bonus -= 5;
 		}
 		// Max rate reduce is -100%
 		bonus = cap_value(bonus,-100,INT_MAX);
@@ -3384,12 +3355,6 @@ static int32 status_get_spbonus_item(block_list *bl) {
 
 	//Bonus by SC
 	if (sc) {
-		if (sc->getSCE(SC_INCREASE_MAXSP))
-			bonus += sc->getSCE(SC_INCREASE_MAXSP)->val1;
-		if (sc->getSCE(SC_LIFE_FORCE_F))
-			bonus += sc->getSCE(SC_LIFE_FORCE_F)->val1;
-		if (sc->getSCE(SC_VITATA_500))
-			bonus += sc->getSCE(SC_VITATA_500)->val2;
 		if (sc->getSCE(SC_ENERGY_DRINK_RESERCH))
 			bonus += sc->getSCE(SC_ENERGY_DRINK_RESERCH)->val3;
 	}
@@ -3506,7 +3471,7 @@ static uint32 status_calc_maxhpsp_pc(map_session_data* sd, uint32 stat, bool isH
 		dmax += sd->indexed_bonus.param_equip[PARAM_VIT]; //Vit from equip gives +1 additional HP
 		dmax += status_get_hpbonus(&sd->bl,STATUS_BONUS_FIX);
 		equip_bonus = (dmax * status_get_hpbonus_equip(sd) / 100);
-		item_bonus = (dmax * status_get_hpbonus_item(&sd->bl) / 100);
+		item_bonus = (dmax * status_get_hpbonus_item(&sd->bl) / 100);	// !FIXME: using bMaxHP* for usable items may cause rounding issue
 		dmax += equip_bonus + item_bonus;
 		dmax += (int64)(dmax * status_get_hpbonus(&sd->bl,STATUS_BONUS_RATE) / 100); //Aegis accuracy
 	}
@@ -3516,7 +3481,7 @@ static uint32 status_calc_maxhpsp_pc(map_session_data* sd, uint32 stat, bool isH
 		dmax += sd->indexed_bonus.param_equip[PARAM_INT]; //Int from equip gives +1 additional SP
 		dmax += status_get_spbonus(&sd->bl,STATUS_BONUS_FIX);
 		equip_bonus = (dmax * status_get_spbonus_equip(sd) / 100);
-		item_bonus = (dmax * status_get_spbonus_item(&sd->bl) / 100);
+		item_bonus = (dmax * status_get_spbonus_item(&sd->bl) / 100);	// !FIXME: using bMaxSP* for usable items may cause rounding issue
 		dmax += equip_bonus + item_bonus;
 		dmax += (int64)(dmax * status_get_spbonus(&sd->bl,STATUS_BONUS_RATE) / 100); //Aegis accuracy
 	}
@@ -4550,9 +4515,6 @@ int32 status_calc_pc_sub(map_session_data* sd, uint8 opt)
 	if(sc->getSCE(SC_SERVICE4U))
 		sd->dsprate -= sc->getSCE(SC_SERVICE4U)->val3;
 
-	if(sc->getSCE(SC_SPCOST_RATE))
-		sd->dsprate -= sc->getSCE(SC_SPCOST_RATE)->val1;
-
 	// Underflow protections.
 	if(sd->dsprate < 0)
 		sd->dsprate = 0;
@@ -4749,10 +4711,6 @@ int32 status_calc_pc_sub(map_session_data* sd, uint8 opt)
 			sd->indexed_bonus.subele[ELE_EARTH] += i;
 			sd->indexed_bonus.subele[ELE_FIRE] -= i;
 		}
-		if (sc->getSCE(SC_MTF_MLEATKED) )
-			sd->indexed_bonus.subele[ELE_NEUTRAL] += sc->getSCE(SC_MTF_MLEATKED)->val3;
-		if (sc->getSCE(SC_MTF_CRIDAMAGE))
-			sd->bonus.crit_atk_rate += sc->getSCE(SC_MTF_CRIDAMAGE)->val1;
 		if (sc->getSCE(SC_LAUDARAMUS))
 			sd->bonus.crit_atk_rate += 5 * sc->getSCE(SC_LAUDARAMUS)->val1;
 #ifdef RENEWAL
@@ -4825,48 +4783,6 @@ int32 status_calc_pc_sub(map_session_data* sd, uint8 opt)
 			sd->indexed_bonus.subele[ELE_POISON] += 100;
 			sd->indexed_bonus.subele[ELE_HOLY] -= 30;
 		}
-		if (sc->getSCE(SC_INFINITY_DRINK)) {
-			sd->bonus.crit_atk_rate += 5;
-			sd->bonus.long_attack_atk_rate += 5;
-			sd->indexed_bonus.magic_atk_ele[ELE_ALL] += 5;
-			sd->special_state.no_castcancel = 1;
-		}
-		if(sc->getSCE(SC_MENTAL_POTION))
-			sd->dsprate -= sc->getSCE(SC_MENTAL_POTION)->val1;
-		if (sc->getSCE(SC_COMBAT_PILL)) {
-			pc_bonus(sd, SP_ATK_RATE, sc->getSCE(SC_COMBAT_PILL)->val1);
-			pc_bonus(sd, SP_MATK_RATE, sc->getSCE(SC_COMBAT_PILL)->val1);
-		}
-		if (sc->getSCE(SC_COMBAT_PILL2)) {
-			pc_bonus(sd, SP_ATK_RATE, sc->getSCE(SC_COMBAT_PILL2)->val1);
-			pc_bonus(sd, SP_MATK_RATE, sc->getSCE(SC_COMBAT_PILL2)->val1);
-		}
-		if (sc->getSCE(SC_SPARKCANDY))
-			pc_bonus2(sd, SP_HP_LOSS_RATE, 100, 10000);
-		if (sc->getSCE(SC_MAGICCANDY)) {
-			sd->bonus.fixcastrate -= 70;
-			sd->special_state.no_castcancel = 1;
-			pc_bonus2(sd, SP_SP_LOSS_RATE, 90, 10000);
-		}
-		if (sc->getSCE(SC_POPECOOKIE)) {
-			pc_bonus(sd, SP_ATK_RATE, sc->getSCE(SC_POPECOOKIE)->val1);
-			pc_bonus(sd, SP_MATK_RATE, sc->getSCE(SC_POPECOOKIE)->val1);
-			sd->indexed_bonus.subele[ELE_ALL] -= sc->getSCE(SC_POPECOOKIE)->val1;
-		}
-		if (sc->getSCE(SC_VITALIZE_POTION)) {
-			pc_bonus(sd, SP_ATK_RATE, sc->getSCE(SC_VITALIZE_POTION)->val1);
-			pc_bonus(sd, SP_MATK_RATE, sc->getSCE(SC_VITALIZE_POTION)->val1);
-		}
-		if (sc->getSCE(SC_CUP_OF_BOZA))
-			sd->indexed_bonus.subele[ELE_FIRE] -= 5;
-		if (sc->getSCE(SC_SKF_CAST))
-			sd->bonus.varcastrate -= sc->getSCE(SC_SKF_CAST)->val1;
-		if (sc->getSCE(SC_BEEF_RIB_STEW)) {
-			sd->bonus.varcastrate -= 5;
-			sd->dsprate -= 3;
-		}
-		if (sc->getSCE(SC_PORK_RIB_STEW))
-			sd->dsprate -= 2;
 		if (pc_checkskill(sd, SU_POWEROFLAND) > 0 && pc_checkskill_summoner(sd, SUMMONER_POWER_LAND) >= 20)
 			pc_bonus(sd, SP_MATK_RATE, 20);
 		if (sc->getSCE(SC_SHRIMP)) {
@@ -5223,11 +5139,6 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct
 		if( (skill=pc_checkskill(sd,SM_RECOVERY)) > 0 )
 			val += skill*5 + skill*status->max_hp/500;
 
-		if (sc != nullptr && !sc->empty()) {
-			if (sc->getSCE(SC_INCREASE_MAXHP))
-				val += val * sc->getSCE(SC_INCREASE_MAXHP)->val2 / 100;
-		}
-
 		sregen->hp = cap_value(val, 0, SHRT_MAX);
 
 		val = 0;
@@ -5241,8 +5152,6 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct
 		if (sc != nullptr && !sc->empty()) {
 			if (sc->getSCE(SC_ANCILLA))
 				val += sc->getSCE(SC_ANCILLA)->val2 / 100;
-			if (sc->getSCE(SC_INCREASE_MAXSP))
-				val += val * sc->getSCE(SC_INCREASE_MAXSP)->val2 / 100;
 		}
 
 		sregen->sp = cap_value(val, 0, SHRT_MAX);
@@ -5378,10 +5287,6 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, sta
 		regen->hp += cap_value(regen->hp * sc->getSCE(SC_GT_REVITALIZE)->val3/100, 1, SHRT_MAX);
 		regen->state.walk = 1;
 	}
-	if (sc->getSCE(SC_EXTRACT_WHITE_POTION_Z))
-		regen->hp += cap_value(regen->hp * sc->getSCE(SC_EXTRACT_WHITE_POTION_Z)->val1 / 100, 1, SHRT_MAX);
-	if (sc->getSCE(SC_VITATA_500))
-		regen->sp += cap_value(regen->sp * sc->getSCE(SC_VITATA_500)->val1 / 100, 1, SHRT_MAX);
 	if (bl->type == BL_ELEM) { // Recovery bonus only applies to the Elementals.
 		int32 ele_class = status_get_class(bl);
 
@@ -5436,10 +5341,6 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, sta
 		regen->rate.hp += sc->getSCE(SC_SIRCLEOFNATURE)->val2;
 	if (sc->getSCE(SC_SONGOFMANA))
 		regen->rate.sp += sc->getSCE(SC_SONGOFMANA)->val3;
-	if (sc->getSCE(SC_BUCHEDENOEL)) {
-		regen->rate.hp += sc->getSCE(SC_BUCHEDENOEL)->val2;
-		regen->rate.sp += sc->getSCE(SC_BUCHEDENOEL)->val2;
-	}
 }
 
 /**
@@ -6504,8 +6405,6 @@ static unsigned short status_calc_str(struct block_list *bl, status_change *sc,
 		str += sc->getSCE(SC_INCALLSTATUS)->val1;
 	if(sc->getSCE(SC_CHASEWALK2))
 		str += sc->getSCE(SC_CHASEWALK2)->val1;
-	if(sc->getSCE(SC_STRFOOD))
-		str += sc->getSCE(SC_STRFOOD)->val1;
 	if(sc->getSCE(SC_BATTLEORDERS))
 		str += 5;
 	if(sc->getSCE(SC_LEADERSHIP))
@@ -6534,8 +6433,6 @@ static unsigned short status_calc_str(struct block_list *bl, status_change *sc,
 		str += sc->getSCE(SC_GIANTGROWTH)->val2;
 	if(sc->getSCE(SC_BEYONDOFWARCRY))
 		str -= sc->getSCE(SC_BEYONDOFWARCRY)->val2;
-	if(sc->getSCE(SC_SAVAGE_STEAK))
-		str += sc->getSCE(SC_SAVAGE_STEAK)->val1;
 	if(sc->getSCE(SC_INSPIRATION))
 		str += sc->getSCE(SC_INSPIRATION)->val3;
 	if(sc->getSCE(SC_STOMACHACHE))
@@ -6550,20 +6447,14 @@ static unsigned short status_calc_str(struct block_list *bl, status_change *sc,
 		str += str * sc->getSCE(SC_FULL_THROTTLE)->val3 / 100;
 	if(sc->getSCE(SC_CHEERUP))
 		str += 3;
-	if(sc->getSCE(SC_GLASTHEIM_STATE))
-		str += sc->getSCE(SC_GLASTHEIM_STATE)->val1;
 #ifdef RENEWAL
 	if (sc->getSCE(SC_NIBELUNGEN) && sc->getSCE(SC_NIBELUNGEN)->val2 == RINGNBL_ALLSTAT)
 		str += 15;
 #endif
 	if (sc->getSCE(SC_UNIVERSESTANCE))
 		str += sc->getSCE(SC_UNIVERSESTANCE)->val2;
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		str += sc->getSCE(SC_ULTIMATECOOK)->val1;
 	if (sc->getSCE(SC_ALL_STAT_DOWN))
 		str -= sc->getSCE(SC_ALL_STAT_DOWN)->val2;
-	if (sc->getSCE(SC_STR_SCROLL))
-		str += sc->getSCE(SC_STR_SCROLL)->val1;
 
 	//TODO: Stat points should be able to be decreased below 0
 	return (unsigned short)cap_value(str,0,USHRT_MAX);
@@ -6613,8 +6504,6 @@ static unsigned short status_calc_agi(struct block_list *bl, status_change *sc,
 		agi -= sc->getSCE(SC_ADORAMUS)->val2;
 	if(sc->getSCE(SC_MARSHOFABYSS))
 		agi -= agi * sc->getSCE(SC_MARSHOFABYSS)->val2 / 100;
-	if(sc->getSCE(SC_DROCERA_HERB_STEAMED))
-		agi += sc->getSCE(SC_DROCERA_HERB_STEAMED)->val1;
 	if(sc->getSCE(SC_INSPIRATION))
 		agi += sc->getSCE(SC_INSPIRATION)->val3;
 	if(sc->getSCE(SC_STOMACHACHE))
@@ -6631,16 +6520,12 @@ static unsigned short status_calc_agi(struct block_list *bl, status_change *sc,
 		agi += sc->getSCE(SC_ARCLOUSEDASH)->val2;
 	if(sc->getSCE(SC_CHEERUP))
 		agi += 3;
-	if(sc->getSCE(SC_GLASTHEIM_STATE))
-		agi += sc->getSCE(SC_GLASTHEIM_STATE)->val1;
 #ifdef RENEWAL
 	if (sc->getSCE(SC_NIBELUNGEN) && sc->getSCE(SC_NIBELUNGEN)->val2 == RINGNBL_ALLSTAT)
 		agi += 15;
 #endif
 	if (sc->getSCE(SC_UNIVERSESTANCE))
 		agi += sc->getSCE(SC_UNIVERSESTANCE)->val2;
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		agi += sc->getSCE(SC_ULTIMATECOOK)->val1;
 	if (sc->getSCE(SC_ALL_STAT_DOWN))
 		agi -= sc->getSCE(SC_ALL_STAT_DOWN)->val2;
 
@@ -6666,8 +6551,6 @@ static unsigned short status_calc_vit(struct block_list *bl, status_change *sc,
 	}
 	if(sc->getSCE(SC_INCALLSTATUS))
 		vit += sc->getSCE(SC_INCALLSTATUS)->val1;
-	if(sc->getSCE(SC_VITFOOD))
-		vit += sc->getSCE(SC_VITFOOD)->val1;
 	if(sc->getSCE(SC_CHANGE))
 		vit += sc->getSCE(SC_CHANGE)->val2;
 	if(sc->getSCE(SC_GLORYWOUNDS))
@@ -6680,8 +6563,6 @@ static unsigned short status_calc_vit(struct block_list *bl, status_change *sc,
 		vit += sc->getSCE(SC_MARIONETTE2)->val3&0xFF;
 	if(sc->getSCE(SC_SPIRIT) && sc->getSCE(SC_SPIRIT)->val2 == SL_HIGH)
 		vit += sc->getSCE(SC_SPIRIT)->val3&0xFF;
-	if(sc->getSCE(SC_MINOR_BBQ))
-		vit += sc->getSCE(SC_MINOR_BBQ)->val1;
 	if(sc->getSCE(SC_INSPIRATION))
 		vit += sc->getSCE(SC_INSPIRATION)->val3;
 	if(sc->getSCE(SC_STOMACHACHE))
@@ -6700,18 +6581,12 @@ static unsigned short status_calc_vit(struct block_list *bl, status_change *sc,
 		vit += sc->getSCE(SC_DEFENCE)->val2;
 	if(sc->getSCE(SC_CHEERUP))
 		vit += 3;
-	if(sc->getSCE(SC_GLASTHEIM_STATE))
-		vit += sc->getSCE(SC_GLASTHEIM_STATE)->val1;
 #ifdef RENEWAL
 	if (sc->getSCE(SC_NIBELUNGEN) && sc->getSCE(SC_NIBELUNGEN)->val2 == RINGNBL_ALLSTAT)
 		vit += 15;
 #endif
 	if (sc->getSCE(SC_UNIVERSESTANCE))
 		vit += sc->getSCE(SC_UNIVERSESTANCE)->val2;
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		vit += sc->getSCE(SC_ULTIMATECOOK)->val1;
-	if (sc->getSCE(SC_CUP_OF_BOZA))
-		vit += 10;
 	if (sc->getSCE(SC_ALL_STAT_DOWN))
 		vit -= sc->getSCE(SC_ALL_STAT_DOWN)->val2;
 
@@ -6737,8 +6612,6 @@ static unsigned short status_calc_int(struct block_list *bl, status_change *sc,
 	}
 	if(sc->getSCE(SC_INCALLSTATUS))
 		int_ += sc->getSCE(SC_INCALLSTATUS)->val1;
-	if(sc->getSCE(SC_INTFOOD))
-		int_ += sc->getSCE(SC_INTFOOD)->val1;
 	if(sc->getSCE(SC_CHANGE))
 		int_ += sc->getSCE(SC_CHANGE)->val3;
 	if(sc->getSCE(SC_BATTLEORDERS))
@@ -6765,8 +6638,6 @@ static unsigned short status_calc_int(struct block_list *bl, status_change *sc,
 		int_ -= sc->getSCE(SC_MELODYOFSINK)->val2;
 	if(sc->getSCE(SC_MANDRAGORA))
 		int_ -= 4 * sc->getSCE(SC_MANDRAGORA)->val1;
-	if(sc->getSCE(SC_COCKTAIL_WARG_BLOOD))
-		int_ += sc->getSCE(SC_COCKTAIL_WARG_BLOOD)->val1;
 	if(sc->getSCE(SC_STOMACHACHE))
 		int_ -= sc->getSCE(SC_STOMACHACHE)->val1;
 	if(sc->getSCE(SC_KYOUGAKU))
@@ -6781,8 +6652,6 @@ static unsigned short status_calc_int(struct block_list *bl, status_change *sc,
 		int_ += int_ * sc->getSCE(SC_FULL_THROTTLE)->val3 / 100;
 	if(sc->getSCE(SC_CHEERUP))
 		int_ += 3;
-	if(sc->getSCE(SC_GLASTHEIM_STATE))
-		int_ += sc->getSCE(SC_GLASTHEIM_STATE)->val1;
 	if (sc->getSCE(SC_UNIVERSESTANCE))
 		int_ += sc->getSCE(SC_UNIVERSESTANCE)->val2;
 
@@ -6796,12 +6665,8 @@ static unsigned short status_calc_int(struct block_list *bl, status_change *sc,
 	if (sc->getSCE(SC_NIBELUNGEN) && sc->getSCE(SC_NIBELUNGEN)->val2 == RINGNBL_ALLSTAT)
 		int_ += 15;
 #endif
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		int_ += sc->getSCE(SC_ULTIMATECOOK)->val1;
 	if (sc->getSCE(SC_ALL_STAT_DOWN))
 		int_ -= sc->getSCE(SC_ALL_STAT_DOWN)->val2;
-	if (sc->getSCE(SC_INT_SCROLL))
-		int_ += sc->getSCE(SC_INT_SCROLL)->val1;
 
 	//TODO: Stat points should be able to be decreased below 0
 	return (unsigned short)cap_value(int_,0,USHRT_MAX);
@@ -6827,8 +6692,6 @@ static unsigned short status_calc_dex(struct block_list *bl, status_change *sc,
 		dex += (dex-sc->getSCE(SC_CONCENTRATE)->val4)*sc->getSCE(SC_CONCENTRATE)->val2/100;
 	if(sc->getSCE(SC_INCALLSTATUS))
 		dex += sc->getSCE(SC_INCALLSTATUS)->val1;
-	if(sc->getSCE(SC_DEXFOOD))
-		dex += sc->getSCE(SC_DEXFOOD)->val1;
 	if(sc->getSCE(SC_BATTLEORDERS))
 		dex += 5;
 	if(sc->getSCE(SC_HAWKEYES))
@@ -6851,8 +6714,6 @@ static unsigned short status_calc_dex(struct block_list *bl, status_change *sc,
 		dex += ((sc->getSCE(SC_MARIONETTE2)->val4)>>8)&0xFF;
 	if(sc->getSCE(SC_SPIRIT) && sc->getSCE(SC_SPIRIT)->val2 == SL_HIGH)
 		dex += ((sc->getSCE(SC_SPIRIT)->val4)>>8)&0xFF;
-	if(sc->getSCE(SC_SIROMA_ICE_TEA))
-		dex += sc->getSCE(SC_SIROMA_ICE_TEA)->val1;
 	if(sc->getSCE(SC_INSPIRATION))
 		dex += sc->getSCE(SC_INSPIRATION)->val3;
 	if(sc->getSCE(SC_STOMACHACHE))
@@ -6873,16 +6734,12 @@ static unsigned short status_calc_dex(struct block_list *bl, status_change *sc,
 		dex += dex * sc->getSCE(SC_FULL_THROTTLE)->val3 / 100;
 	if(sc->getSCE(SC_CHEERUP))
 		dex += 3;
-	if(sc->getSCE(SC_GLASTHEIM_STATE))
-		dex += sc->getSCE(SC_GLASTHEIM_STATE)->val1;
 #ifdef RENEWAL
 	if (sc->getSCE(SC_NIBELUNGEN) && sc->getSCE(SC_NIBELUNGEN)->val2 == RINGNBL_ALLSTAT)
 		dex += 15;
 #endif
 	if (sc->getSCE(SC_UNIVERSESTANCE))
 		dex += sc->getSCE(SC_UNIVERSESTANCE)->val2;
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		dex += sc->getSCE(SC_ULTIMATECOOK)->val1;
 	if (sc->getSCE(SC_ALL_STAT_DOWN))
 		dex -= sc->getSCE(SC_ALL_STAT_DOWN)->val2;
 
@@ -6910,8 +6767,6 @@ static unsigned short status_calc_luk(struct block_list *bl, status_change *sc,
 		return 0;
 	if(sc->getSCE(SC_INCALLSTATUS))
 		luk += sc->getSCE(SC_INCALLSTATUS)->val1;
-	if(sc->getSCE(SC_LUKFOOD))
-		luk += sc->getSCE(SC_LUKFOOD)->val1;
 	if(sc->getSCE(SC_TRUESIGHT))
 		luk += 5;
 	if(sc->getSCE(SC_GLORIA))
@@ -6922,8 +6777,6 @@ static unsigned short status_calc_luk(struct block_list *bl, status_change *sc,
 		luk += sc->getSCE(SC_MARIONETTE2)->val4&0xFF;
 	if(sc->getSCE(SC_SPIRIT) && sc->getSCE(SC_SPIRIT)->val2 == SL_HIGH)
 		luk += sc->getSCE(SC_SPIRIT)->val4&0xFF;
-	if(sc->getSCE(SC_PUTTI_TAILS_NOODLES))
-		luk += sc->getSCE(SC_PUTTI_TAILS_NOODLES)->val1;
 	if(sc->getSCE(SC_INSPIRATION))
 		luk += sc->getSCE(SC_INSPIRATION)->val3;
 	if(sc->getSCE(SC_STOMACHACHE))
@@ -6942,18 +6795,12 @@ static unsigned short status_calc_luk(struct block_list *bl, status_change *sc,
 		luk += luk * sc->getSCE(SC_FULL_THROTTLE)->val3 / 100;
 	if(sc->getSCE(SC_CHEERUP))
 		luk += 3;
-	if(sc->getSCE(SC_GLASTHEIM_STATE))
-		luk += sc->getSCE(SC_GLASTHEIM_STATE)->val1;
 #ifdef RENEWAL
 	if (sc->getSCE(SC_NIBELUNGEN) && sc->getSCE(SC_NIBELUNGEN)->val2 == RINGNBL_ALLSTAT)
 		luk += 15;
 #endif
 	if (sc->getSCE(SC_UNIVERSESTANCE))
 		luk += sc->getSCE(SC_UNIVERSESTANCE)->val2;
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		luk += sc->getSCE(SC_ULTIMATECOOK)->val1;
-	if (sc->getSCE(SC_MYSTICPOWDER))
-		luk += 10;
 	if (sc->getSCE(SC_ALL_STAT_DOWN))
 		luk -= sc->getSCE(SC_ALL_STAT_DOWN)->val2;
 
@@ -7081,8 +6928,6 @@ static unsigned short status_calc_batk(struct block_list *bl, status_change *sc,
 	if(sc == nullptr || sc->empty())
 		return cap_value(batk,0,USHRT_MAX);
 
-	if(sc->getSCE(SC_ATKPOTION))
-		batk += sc->getSCE(SC_ATKPOTION)->val1;
 	if (sc->getSCE(SC_VOLCANO))
 		batk += sc->getSCE(SC_VOLCANO)->val2;
 #ifndef RENEWAL
@@ -7091,26 +6936,16 @@ static unsigned short status_calc_batk(struct block_list *bl, status_change *sc,
 	if(sc->getSCE(SC_MADNESSCANCEL))
 		batk += 100;
 #endif
-	if(sc->getSCE(SC_FULL_SWING_K))
-		batk += sc->getSCE(SC_FULL_SWING_K)->val1;
 	if(sc->getSCE(SC_ASH))
 		batk -= batk * sc->getSCE(SC_ASH)->val4 / 100;
 	if(bl->type == BL_HOM && sc->getSCE(SC_PYROCLASTIC))
 		batk += sc->getSCE(SC_PYROCLASTIC)->val2;
 	if (sc->getSCE(SC_ANGRIFFS_MODUS))
 		batk += sc->getSCE(SC_ANGRIFFS_MODUS)->val2;
-	if(sc->getSCE(SC_2011RWC_SCROLL))
-		batk += 30;
 	if(sc->getSCE(SC__ENERVATION))
 		batk -= batk * sc->getSCE(SC__ENERVATION)->val2 / 100;
 	if( sc->getSCE(SC_ZANGETSU) )
 		batk += sc->getSCE(SC_ZANGETSU)->val2;
-	if(sc->getSCE(SC_QUEST_BUFF1))
-		batk += sc->getSCE(SC_QUEST_BUFF1)->val1;
-	if(sc->getSCE(SC_QUEST_BUFF2))
-		batk += sc->getSCE(SC_QUEST_BUFF2)->val1;
-	if(sc->getSCE(SC_QUEST_BUFF3))
-		batk += sc->getSCE(SC_QUEST_BUFF3)->val1;
 #ifdef RENEWAL
 	if (sc->getSCE(SC_LOUD))
 		batk += 30;
@@ -7119,12 +6954,6 @@ static unsigned short status_calc_batk(struct block_list *bl, status_change *sc,
 #endif
 	if (sc->getSCE(SC_SUNSTANCE))
 		batk += batk * sc->getSCE(SC_SUNSTANCE)->val2 / 100;
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		batk += 30;
-	if(sc->getSCE(SC_SPARKCANDY))
-		batk += 20;
-	if(sc->getSCE(SC_SKF_ATK))
-		batk += sc->getSCE(SC_SKF_ATK)->val1;
 	if (sc->getSCE(SC_INTENSIVE_AIM))
 		batk += 150;
 
@@ -7215,8 +7044,6 @@ static unsigned short status_calc_watk(struct block_list *bl, status_change *sc,
 		watk += watk * sc->getSCE(SC_SUNSTANCE)->val2 / 100;
 	if (sc->getSCE(SC_SOULFALCON))
 		watk += sc->getSCE(SC_SOULFALCON)->val2;
-	if (sc->getSCE(SC_PACKING_ENVELOPE1))
-		watk += sc->getSCE(SC_PACKING_ENVELOPE1)->val1;
 	if (sc->getSCE(SC_POWERFUL_FAITH))
 		watk += sc->getSCE(SC_POWERFUL_FAITH)->val2;
 	if (sc->getSCE(SC_GUARD_STANCE))
@@ -7293,32 +7120,7 @@ uint16 status_calc_consumablematk( status_change *sc, int32 matk ){
 	if (sc == nullptr || sc->empty())
 		return static_cast<uint16>( cap_value(matk,0,USHRT_MAX) );
 
-	struct status_change_entry* sce;
-
-	if (sce = sc->getSCE(SC_MANA_PLUS))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_MATKPOTION))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_SKF_MATK))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_MTF_MATK))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_MTF_MATK2))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_PACKING_ENVELOPE2))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_QUEST_BUFF1))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_QUEST_BUFF2))
-		matk += sce->val1;
-	if (sce = sc->getSCE(SC_QUEST_BUFF3))
-		matk += sce->val1;
-	if (sc->getSCE(SC_ULTIMATECOOK))
-		matk += 30;
-	if (sc->getSCE(SC_MAGICCANDY))
-		matk += 30;
-	if (sc->getSCE(SC_2011RWC_SCROLL))
-		matk += 30;
+	// struct status_change_entry* sce;
 
 	return static_cast<uint16>( cap_value(matk,0,USHRT_MAX) );
 }
@@ -7335,12 +7137,6 @@ static signed short status_calc_critical(struct block_list *bl, status_change *s
 	if(sc == nullptr || sc->empty())
 		return cap_value(critical,10,SHRT_MAX);
 
-	if (sc->getSCE(SC_INCCRI))
-		critical += sc->getSCE(SC_INCCRI)->val2;
-	if (sc->getSCE(SC_EP16_2_BUFF_SC))
-		critical += 300;// crit +30
-	if (sc->getSCE(SC_CRIFOOD))
-		critical += sc->getSCE(SC_CRIFOOD)->val1;
 	if (sc->getSCE(SC_EXPLOSIONSPIRITS))
 		critical += sc->getSCE(SC_EXPLOSIONSPIRITS)->val2;
 	if (sc->getSCE(SC_FORTUNE))
@@ -7363,14 +7159,8 @@ static signed short status_calc_critical(struct block_list *bl, status_change *s
 		critical += 10 * sc->getSCE(SC_SOULSHADOW)->val3;
 	if(sc->getSCE(SC_BEYONDOFWARCRY))
 		critical += sc->getSCE(SC_BEYONDOFWARCRY)->val3;
-	if (sc->getSCE(SC_MTF_HITFLEE))
-		critical += sc->getSCE(SC_MTF_HITFLEE)->val1;
-	if (sc->getSCE(SC_PACKING_ENVELOPE9))
-		critical += sc->getSCE(SC_PACKING_ENVELOPE9)->val1 * 10;
 	if (sc->getSCE(SC_INTENSIVE_AIM))
 		critical += 300;
-	if (sc->getSCE(SC_BUCHEDENOEL))
-		critical += sc->getSCE(SC_BUCHEDENOEL)->val3 * 10;
 
 	return (short)cap_value(critical,10,SHRT_MAX);
 }
@@ -7389,8 +7179,6 @@ static signed short status_calc_hit(struct block_list *bl, status_change *sc, in
 
 	if(sc->getSCE(SC_INCHIT))
 		hit += sc->getSCE(SC_INCHIT)->val1;
-	if(sc->getSCE(SC_HITFOOD))
-		hit += sc->getSCE(SC_HITFOOD)->val1;
 	if(sc->getSCE(SC_TRUESIGHT))
 		hit += sc->getSCE(SC_TRUESIGHT)->val3;
 	if(sc->getSCE(SC_HUMMING))
@@ -7405,8 +7193,6 @@ static signed short status_calc_hit(struct block_list *bl, status_change *sc, in
 		hit += 20; // RockmanEXE; changed based on updated [Reddozen]
 	if(sc->getSCE(SC_MERC_HITUP))
 		hit += sc->getSCE(SC_MERC_HITUP)->val2;
-	if(sc->getSCE(SC_MTF_HITFLEE))
-		hit += sc->getSCE(SC_MTF_HITFLEE)->val1;
 	if(sc->getSCE(SC_INCHITRATE))
 		hit += hit * sc->getSCE(SC_INCHITRATE)->val1/100;
 	if (sc->getSCE(SC_POWERUP))
@@ -7425,8 +7211,6 @@ static signed short status_calc_hit(struct block_list *bl, status_change *sc, in
 		hit -= hit * 50 / 100;
 	if(sc->getSCE(SC_ILLUSIONDOPING))
 		hit -= sc->getSCE(SC_ILLUSIONDOPING)->val2;
-	if (sc->getSCE(SC_MTF_ASPD))
-		hit += sc->getSCE(SC_MTF_ASPD)->val2;
 #ifdef RENEWAL
 	if (sc->getSCE(SC_BLESSING))
 		hit += sc->getSCE(SC_BLESSING)->val1 * 2;
@@ -7441,14 +7225,10 @@ static signed short status_calc_hit(struct block_list *bl, status_change *sc, in
 		hit += sc->getSCE(SC_SOULFALCON)->val3;
 	if (sc->getSCE(SC_SATURDAYNIGHTFEVER))
 		hit -= 50 + 50 * sc->getSCE(SC_SATURDAYNIGHTFEVER)->val1;
-	if (sc->getSCE(SC_PACKING_ENVELOPE10))
-		hit += sc->getSCE(SC_PACKING_ENVELOPE10)->val1;
 	if (sc->getSCE(SC_ABYSS_SLAYER))
 		hit += sc->getSCE(SC_ABYSS_SLAYER)->val3;
 	if (sc->getSCE(SC_INTENSIVE_AIM))
 		hit += 250;
-	if (sc->getSCE(SC_BUCHEDENOEL))
-		hit += sc->getSCE(SC_BUCHEDENOEL)->val2;
 
 	return (short)cap_value(hit,1,SHRT_MAX);
 }
@@ -7481,8 +7261,6 @@ static signed short status_calc_flee(struct block_list *bl, status_change *sc, i
 	// Fixed value
 	if(sc->getSCE(SC_INCFLEE))
 		flee += sc->getSCE(SC_INCFLEE)->val1;
-	if(sc->getSCE(SC_FLEEFOOD))
-		flee += sc->getSCE(SC_FLEEFOOD)->val1;
 	if(sc->getSCE(SC_WHISTLE))
 		flee += sc->getSCE(SC_WHISTLE)->val2;
 	if(sc->getSCE(SC_WINDWALK))
@@ -7509,8 +7287,6 @@ static signed short status_calc_flee(struct block_list *bl, status_change *sc, i
 		flee += sc->getSCE(SC_HALLUCINATIONWALK)->val2;
 	if( sc->getSCE(SC_NPC_HALLUCINATIONWALK) )
 		flee += sc->getSCE(SC_NPC_HALLUCINATIONWALK)->val2;
-	if(sc->getSCE(SC_MTF_HITFLEE))
-		flee += sc->getSCE(SC_MTF_HITFLEE)->val2;
 	if( sc->getSCE(SC_WATER_BARRIER) )
 		flee -= sc->getSCE(SC_WATER_BARRIER)->val2;
 	if( sc->getSCE(SC_C_MARKER) )
@@ -7563,10 +7339,6 @@ static signed short status_calc_flee(struct block_list *bl, status_change *sc, i
 	//	flee -= (flee * sc->getSCE(SC_C_MARKER)->val3) / 100;
 	if (sc->getSCE(SC_GROOMING))
 		flee += sc->getSCE(SC_GROOMING)->val2;
-	if (sc->getSCE(SC_PACKING_ENVELOPE5))
-		flee += sc->getSCE(SC_PACKING_ENVELOPE5)->val1;
-	if (sc->getSCE(SC_MYSTICPOWDER))
-		flee += 20;
 
 	return (short)cap_value(flee,1,SHRT_MAX);
 }
@@ -7583,8 +7355,6 @@ static signed short status_calc_flee2(struct block_list *bl, status_change *sc,
 	if(sc == nullptr || sc->empty())
 		return cap_value(flee2,10,SHRT_MAX);
 
-	if(sc->getSCE(SC_INCFLEE2))
-		flee2 += sc->getSCE(SC_INCFLEE2)->val2;
 	if(sc->getSCE(SC_WHISTLE))
 		flee2 += sc->getSCE(SC_WHISTLE)->val3*10;
 	if(sc->getSCE(SC__UNLUCKY))
@@ -7696,8 +7466,6 @@ static defType status_calc_def(struct block_list *bl, status_change *sc, int32 d
 		def += sc->getSCE(SC_SOULGOLEM)->val2;
 	if (sc->getSCE(SC_STONE_WALL))
 		def += sc->getSCE(SC_STONE_WALL)->val2;
-	if( sc->getSCE(SC_PACKING_ENVELOPE7) )
-		def += sc->getSCE(SC_PACKING_ENVELOPE7)->val1;
 	if (sc->getSCE(SC_D_MACHINE))
 		def += sc->getSCE(SC_D_MACHINE)->val2;
 	if (sc->getSCE(SC_CLIMAX_CRYIMP))
@@ -7706,8 +7474,6 @@ static defType status_calc_def(struct block_list *bl, status_change *sc, int32 d
 		def += sc->getSCE(SC_GUARD_STANCE)->val2;
 	if (sc->getSCE(SC_ATTACK_STANCE))
 		def -= sc->getSCE(SC_ATTACK_STANCE)->val2;
-	if (sc->getSCE(SC_M_DEFSCROLL))
-		def += sc->getSCE(SC_M_DEFSCROLL)->val1;
 
 	return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
 }
@@ -7832,12 +7598,8 @@ static defType status_calc_mdef(struct block_list *bl, status_change *sc, int32
 		mdef += sc->getSCE(SC_SOULGOLEM)->val3;
 	if (sc->getSCE(SC_STONE_WALL))
 		mdef += sc->getSCE(SC_STONE_WALL)->val3;
-	if (sc->getSCE(SC_PACKING_ENVELOPE8))
-		mdef += sc->getSCE(SC_PACKING_ENVELOPE8)->val1;
 	if (sc->getSCE(SC_CLIMAX_CRYIMP))
 		mdef += 100;
-	if (sc->getSCE(SC_M_DEFSCROLL))
-		mdef += sc->getSCE(SC_M_DEFSCROLL)->val2;
 
 	return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
 }
@@ -8017,8 +7779,6 @@ static unsigned short status_calc_speed(struct block_list *bl, status_change *sc
 			speed_rate = 150;
 
 		// GetMoveHasteValue1()
-		if( sc->getSCE(SC_SPEEDUP1) )
-			val = max( val, sc->getSCE(SC_SPEEDUP1)->val1 );
 		if (sc->getSCE(SC_AGIUP))
 			val = max(val, sc->getSCE(SC_AGIUP)->val1);
 		if( sc->getSCE(SC_INCREASEAGI) )
@@ -8066,8 +7826,6 @@ static unsigned short status_calc_speed(struct block_list *bl, status_change *sc
 		}
 
 		// !FIXME: official items use a single bonus for this [ultramage]
-		if( sc->getSCE(SC_SPEEDUP0) ) // Temporary item-based speedup
-			val = max( val, sc->getSCE(SC_SPEEDUP0)->val1 );
 		if( sd && sd->bonus.speed_rate + sd->bonus.speed_add_rate < 0 ) // Permanent item-based speedup
 			val = max( val, -(sd->bonus.speed_rate + sd->bonus.speed_add_rate) );
 
@@ -8206,10 +7964,6 @@ static short status_calc_aspd(struct block_list *bl, status_change *sc, bool fix
 			bonus += sc->getSCE(SC_GT_CHANGE)->val3;
 		if (sc->getSCE(SC_MELON_BOMB))
 			bonus -= sc->getSCE(SC_MELON_BOMB)->val3;
-		if (sc->getSCE(SC_BOOST500))
-			bonus += sc->getSCE(SC_BOOST500)->val1;
-		if (sc->getSCE(SC_EXTRACT_SALAMINE_JUICE))
-			bonus += sc->getSCE(SC_EXTRACT_SALAMINE_JUICE)->val1;
 		if (sc->getSCE(SC_GOLDENE_FERSE))
 			bonus += sc->getSCE(SC_GOLDENE_FERSE)->val3;
 		if (sc->getSCE(SC_INCASPDRATE))
@@ -8226,14 +7980,6 @@ static short status_calc_aspd(struct block_list *bl, status_change *sc, bool fix
 			bonus += 20;
 		if (sc->getSCE(SC_STARSTANCE))
 			bonus += sc->getSCE(SC_STARSTANCE)->val2;
-		if( sc->getSCE(SC_2011RWC_SCROLL) )
-			bonus += 5;
-		if( sc->getSCE(SC_SPARKCANDY) )
-			bonus += 25;
-		if( sc->getSCE(SC_SKF_ASPD) )
-			bonus += sc->getSCE(SC_SKF_ASPD)->val1;
-		if( sc->getSCE(SC_PORK_RIB_STEW) )
-			bonus += 5;
 
 		map_session_data* sd = BL_CAST(BL_PC, bl);
 		uint8 skill_lv;
@@ -8270,18 +8016,10 @@ static short status_calc_fix_aspd(struct block_list *bl, status_change *sc, int3
 		aspd -= 50; // +5 ASPD
 	if (sc->getSCE(SC_FIGHTINGSPIRIT))
 		aspd -= sc->getSCE(SC_FIGHTINGSPIRIT)->val2;
-	if (sc->getSCE(SC_MTF_ASPD))
-		aspd -= sc->getSCE(SC_MTF_ASPD)->val1;
-	if (sc->getSCE(SC_MTF_ASPD2))
-		aspd -= sc->getSCE(SC_MTF_ASPD2)->val1;
 	if (sc->getSCE(SC_SOULSHADOW))
 		aspd -= 10 * sc->getSCE(SC_SOULSHADOW)->val2;
 	if (sc->getSCE(SC_HEAT_BARREL))
 		aspd -= sc->getSCE(SC_HEAT_BARREL)->val1 * 10;
-	if (sc->getSCE(SC_EP16_2_BUFF_SS))
-		aspd -= 100; // +10 ASPD
-	if (sc->getSCE(SC_PACKING_ENVELOPE6))
-		aspd -= sc->getSCE(SC_PACKING_ENVELOPE6)->val1 * 10;
 	if (sc->getSCE(SC_SINCERE_FAITH))
 		aspd -= 10 * sc->getSCE(SC_SINCERE_FAITH)->val2;
 
@@ -8422,10 +8160,6 @@ static short status_calc_aspd_rate(struct block_list *bl, status_change *sc, int
 		aspd_rate -= sc->getSCE(SC_GT_CHANGE)->val3 * 10;
 	if( sc->getSCE(SC_MELON_BOMB) )
 		aspd_rate += sc->getSCE(SC_MELON_BOMB)->val3 * 10;
-	if( sc->getSCE(SC_BOOST500) )
-		aspd_rate -= sc->getSCE(SC_BOOST500)->val1 *10;
-	if( sc->getSCE(SC_EXTRACT_SALAMINE_JUICE) )
-		aspd_rate -= sc->getSCE(SC_EXTRACT_SALAMINE_JUICE)->val1 * 10;
 	if( sc->getSCE(SC_INCASPDRATE) )
 		aspd_rate -= sc->getSCE(SC_INCASPDRATE)->val1 * 10;
 	if( sc->getSCE(SC_GOLDENE_FERSE))
@@ -8434,14 +8168,6 @@ static short status_calc_aspd_rate(struct block_list *bl, status_change *sc, int
 		aspd_rate -= 100;
 	if (sc->getSCE(SC_STARSTANCE))
 		aspd_rate -= 10 * sc->getSCE(SC_STARSTANCE)->val2;
-	if( sc->getSCE(SC_2011RWC_SCROLL) )
-		aspd_rate -= 50;
-	if( sc->getSCE(SC_SPARKCANDY) )
-		aspd_rate -= 250;
-	if( sc->getSCE(SC_SKF_ASPD) )
-		aspd_rate -= sc->getSCE(SC_SKF_ASPD)->val1 * 10;
-	if( sc->getSCE(SC_PORK_RIB_STEW) )
-		aspd_rate -= 50;
 
 	return (short)cap_value(aspd_rate,0,SHRT_MAX);
 }
@@ -8468,7 +8194,7 @@ static unsigned short status_calc_dmotion(struct block_list *bl, status_change *
 			return 0;
 	}
 
-	if (sc != nullptr && !sc->empty() && (sc->getSCE(SC_ENDURE) || sc->getSCE(SC_RUN) || sc->getSCE(SC_WUGDASH) || sc->getSCE(SC_SPARKCANDY)))
+	if (sc != nullptr && !sc->empty() && (sc->getSCE(SC_ENDURE) || sc->getSCE(SC_RUN) || sc->getSCE(SC_WUGDASH)))
 		return 0;
 
 	return (unsigned short)cap_value(dmotion,0,USHRT_MAX);
@@ -9766,8 +9492,6 @@ t_tick status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_
 				if (it.id == type)
 					rate -= rate * it.val / 10000;
 			}
-			if (sd->sc.getSCE(SC_COMMONSC_RESIST) && SC_COMMON_MIN <= type && type <= SC_COMMON_MAX)
-				rate -= rate*sd->sc.getSCE(SC_COMMONSC_RESIST)->val1/100;
 		}
 
 		// Aegis accuracy
@@ -9795,8 +9519,6 @@ t_tick status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_
 			if (it.id == type)
 				tick -= tick * it.val / 10000;
 		}
-		if (sd->sc.getSCE(SC_COMMONSC_RESIST) && SC_COMMON_MIN <= type && type <= SC_COMMON_MAX)
-			tick -= tick * sd->sc.getSCE(SC_COMMONSC_RESIST)->val1 / 100;
 	}
 #endif
 
@@ -10952,20 +10674,6 @@ int32 status_change_start(struct block_list* src, struct block_list* bl,enum sc_
 			if (!val4)
 				clif_emotion(bl,ET_QUESTION);
 			break;
-		case SC_S_LIFEPOTION:
-		case SC_L_LIFEPOTION:
-		case SC_M_LIFEPOTION:
-		case SC_S_MANAPOTION:
-		case SC_G_LIFEPOTION:
-			if( val1 == 0 ) return 0;
-			// val1 = heal percent/amout
-			// val2 = seconds between heals
-			// val4 = total of heals
-			if( val2 < 1 ) val2 = 1;
-			if( (val4 = tick/(val2 * 1000)) < 1 )
-				val4 = 1;
-			tick_time = val2 * 1000; // [GodLesZ] tick time
-			break;
 		case SC_GRADUAL_GRAVITY:
 			val2 = 10 * val1;
 			tick_time = status_get_sc_interval(type);
@@ -11528,16 +11236,11 @@ int32 status_change_start(struct block_list* src, struct block_list* bl,enum sc_
 			break;
 		case SC_EXPBOOST:
 		case SC_JEXPBOOST:
-		case SC_JP_EVENT04:
 		case SC_PERIOD_RECEIVEITEM_2ND:
 		case SC_PERIOD_PLUSEXP_2ND:
 			if (val1 < 1)
 				return 0;
 			break;
-		case SC_INCFLEE2:
-		case SC_INCCRI:
-			val2 = val1*10; // Actual boost (since 100% = 1000)
-			break;
 		case SC_SUFFRAGIUM:
 #ifdef RENEWAL
 			val2 = 5 + val1 * 5; // Speed cast decrease
@@ -11578,17 +11281,6 @@ int32 status_change_start(struct block_list* src, struct block_list* bl,enum sc_
 			val4 = 700; // ASPD increase
 			break;
 
-		case SC_MANU_DEF:
-		case SC_MANU_ATK:
-		case SC_MANU_MATK:
-			val2 = 1; // Manuk group
-			break;
-		case SC_SPL_DEF:
-		case SC_SPL_ATK:
-		case SC_SPL_MATK:
-			val2 = 2; // Splendide group
-			break;
-
 		/* General */
 		case SC_FEAR:
 			sc_start(src, bl, SC_ANKLE, 100, 0, 2000);
@@ -12448,12 +12140,6 @@ int32 status_change_start(struct block_list* src, struct block_list* bl,enum sc_
 			tick = INFINITE_TICK;
 			status_change_start(src,bl,SC_CLAN_INFO,10000,0,val2,0,0,INFINITE_TICK,flag);
 			break;
-		case SC_DORAM_BUF_01:
-		case SC_DORAM_BUF_02:
-			tick_time = 10000; // every 10 seconds
-			if( (val4 = tick/tick_time) < 1 )
-				val4 = 1;
-			break;
 
 		case SC_ANCILLA:
 			val1 = 15; // Heal Power rate bonus
@@ -12733,10 +12419,6 @@ int32 status_change_start(struct block_list* src, struct block_list* bl,enum sc_
 			val2 = 3 * val1;
 			val3 = 10 * val1;
 			break;
-		case SC_BUCHEDENOEL:
-			val2 = 3;	// HP & SP restoration by 3%, Hit +3
-			val3 = 7;	// Critical +7
-			break;
 
 		default:
 			if (calc_flag.none() && scdb->skill_id == 0 && scdb->icon == EFST_BLANK && scdb->opt1 == OPT1_NONE && scdb->opt2 == OPT2_NONE && scdb->state.none() && scdb->flag.none() && scdb->endonstart.empty() && scdb->endreturn.empty() && scdb->fail.empty() && scdb->endonend.empty()) {
@@ -14077,33 +13759,6 @@ TIMER_FUNC(status_change_timer){
 		}
 		break;
 
-	case SC_S_LIFEPOTION:
-	case SC_L_LIFEPOTION:
-	case SC_M_LIFEPOTION:
-	case SC_G_LIFEPOTION:
-		if( --(sce->val4) >= 0 ) {
-			// val1 < 0 = per max% | val1 > 0 = exact amount
-			int32 hp = 0;
-			if( status->hp < status->max_hp && !sc->getSCE(SC_BERSERK) )
-				hp = (sce->val1 < 0) ? (int)(status->max_hp * -1 * sce->val1 / 100.) : sce->val1;
-			status_heal(bl, hp, 0, 0);
-			sc_timer_next((sce->val2 * 1000) + tick);
-			return 0;
-		}
-		break;
-
-	case SC_S_MANAPOTION:
-		if( --(sce->val4) >= 0 ) {
-			// val1 < 0 = per max% | val1 > 0 = exact amount
-			int32 sp = 0;
-			if( status->sp < status->max_sp && !sc->getSCE(SC_BERSERK) )
-				sp = (sce->val1 < 0) ? (int)(status->max_sp * -1 * sce->val1 / 100.) : sce->val1;
-			status_heal(bl, 0, sp, 0);
-			sc_timer_next((sce->val2 * 1000) + tick);
-			return 0;
-		}
-		break;
-		
 	case SC_GRADUAL_GRAVITY:
 		if (sce->val4 >= 0) {
 			status_zap(bl, status->max_hp * sce->val2 / 100, 0);
@@ -14758,22 +14413,6 @@ TIMER_FUNC(status_change_timer){
 			return 0;
 		}
 		break;
-	case SC_DORAM_BUF_01:
-		if( sd && --(sce->val4) >= 0 ) {
-			if( status->hp < status->max_hp )
-				status_heal(bl, 10, 0, 2);
-			sc_timer_next(10000 + tick);
-			return 0;
-		}
-		break;
-	case SC_DORAM_BUF_02:
-		if( sd && --(sce->val4) >= 0 ) {
-			if( status->sp < status->max_sp )
-				status_heal(bl, 0, 5, 2);
-			sc_timer_next(10000 + tick);
-			return 0;
-		}
-		break;
 	case SC_NEWMOON:
 		if (--(sce->val4) >= 0) {
 			if (!status_charge(bl, 0, 1))

Некоторые файлы не были показаны из-за большого количества измененных файлов