Ver Fonte

Dehardcoded status change (#8811)

* Dehardcoded status change follow-up https://github.com/rathena/rathena/commit/7a80ecb6f26e44b52e48d7e7668d0af2c873677e
* Only status changes for players are converted (typically SCs from item)
* Changed SCB_BATTLE to SCB_ALL by default for status script for now
Atemo há 6 meses atrás
pai
commit
179474218e

+ 1 - 1
db/pre-re/item_db_usable.yml

@@ -6875,7 +6875,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_STEAL;
-      sc_start SC_ACARAJE,1200000,0;
+      sc_start2 SC_ACARAJE,1200000,10,5;
   - Id: 12376
     AegisName: Mysterious_Can2
     Name: Mysterious Can2

+ 44 - 102
db/pre-re/status.yml

@@ -723,13 +723,13 @@ Body:
       RemoveOnHermode: true
   - Status: Atkpotion
     Icon: EFST_PLUSATTACKPOWER
-    CalcFlags:
-      Batk: true
     Flags:
       NoRemoveOnDead: true
       NoClearance: true
       OverlapIgnoreLevel: true
       RemoveOnHermode: true
+    Script: |
+      bonus bBaseAtk, getstatus(SC_ATKPOTION, 1);
   - Status: Matkpotion
     Icon: EFST_PLUSMAGICPOWER
     CalcFlags:
@@ -1134,11 +1134,14 @@ Body:
       Speed: true
   - Status: Armor_Element_Water
     Icon: EFST_RESIST_PROPERTY_WATER
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_WATER, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_WATER, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_WATER, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_WATER, 4);
   - Status: Nochat
     States:
       NoPickItem: true
@@ -2147,8 +2150,6 @@ Body:
       Food_Str_Cash: true
   - Status: Agifood
     Icon: EFST_FOOD_AGI
-    CalcFlags:
-      Agi: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -2156,6 +2157,8 @@ Body:
       NoClearance: true
     EndOnStart:
       Food_Agi_Cash: true
+    Script: |
+      bonus bAgi, getstatus(SC_AGIFOOD, 1);
   - Status: Vitfood
     Icon: EFST_FOOD_VIT
     CalcFlags:
@@ -2219,13 +2222,13 @@ Body:
       NoBanishingBuster: true
       NoClearance: true
   - Status: Batkfood
-    CalcFlags:
-      Batk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bBaseAtk, getstatus(SC_BATKFOOD, 1);
   - Status: Watkfood
     CalcFlags:
       Watk: true
@@ -2235,13 +2238,13 @@ Body:
       NoBanishingBuster: true
       NoClearance: true
   - Status: Matkfood
-    CalcFlags:
-      Matk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bMatk, getstatus(SC_MATKFOOD, 1);
   - Status: Scresist
     DurationLookup: PA_GOSPEL
   - Status: Xmas
@@ -2688,11 +2691,14 @@ Body:
     Flags:
       NoWarning: true
   - Status: Armor_Resist
-    CalcFlags:
-      All: true
     Flags:
       OverlapIgnoreLevel: true
       RemoveOnUnequipArmor: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_RESIST, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_RESIST, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_RESIST, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_RESIST, 4);
   - Status: Spcost_Rate
     Icon: EFST_ATKER_BLOOD
     CalcFlags:
@@ -5974,15 +5980,6 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
-  - Status: Crifood
-    Icon: EFST_FOOD_CRITICALSUCCESSVALUE
-    CalcFlags:
-      Cri: true
-    Flags:
-      NoClearbuff: true
-      NoDispell: true
-      NoBanishingBuster: true
-      NoClearance: true
   - Status: Atthaste_Cash
     Icon: EFST_ATTHASTE_CASH
     CalcFlags:
@@ -6479,25 +6476,34 @@ Body:
       BlEffect: true
   - Status: Armor_Element_Earth
     Icon: EFST_RESIST_PROPERTY_GROUND
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_EARTH, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_EARTH, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_EARTH, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_EARTH, 4);
   - Status: Armor_Element_Fire
     Icon: EFST_RESIST_PROPERTY_FIRE
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_FIRE, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_FIRE, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_FIRE, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_FIRE, 4);
   - Status: Armor_Element_Wind
     Icon: EFST_RESIST_PROPERTY_WIND
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_WIND, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_WIND, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_WIND, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_WIND, 4);
   - Status: Dailysendmailcnt
     Icon: EFST_DAILYSENDMAILCNT
     Flags:
@@ -6615,81 +6621,6 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
-  - Status: Glastheim_Atk
-    Icon: EFST_GLASTHEIM_ATK
-    CalcFlags:
-      All: true
-    Flags:
-      NoSave: true
-  - Status: Glastheim_Def
-    Icon: EFST_GLASTHEIM_DEF
-    Flags:
-      NoSave: true
-  - Status: Glastheim_Heal
-    Icon: EFST_GLASTHEIM_HEAL
-    Flags:
-      NoSave: true
-  - Status: Glastheim_Hidden
-    Icon: EFST_GLASTHEIM_HIDDEN
-    Flags:
-      NoSave: true
-  - Status: Glastheim_State
-    Icon: EFST_GLASTHEIM_STATE
-    CalcFlags:
-      Str: true
-      Agi: true
-      Vit: true
-      Dex: true
-      Int: true
-      Luk: true
-    Flags:
-      NoSave: true
-  - Status: Glastheim_Itemdef
-    Icon: EFST_GLASTHEIM_ITEMDEF
-    CalcFlags:
-      Def: true
-      Mdef: true
-    Flags:
-      NoSave: true
-  - Status: Glastheim_Hpsp
-    Icon: EFST_GLASTHEIM_HPSP
-    CalcFlags:
-      MaxHp: true
-      MaxSp: true
-    Flags:
-      NoSave: true
-  - Status: Lhz_Dun_N1
-    Icon: EFST_LHZ_DUN_N1
-    Flags:
-      NoClearbuff: true
-      NoClearance: true
-      NoRemoveOnDead: true
-      NoBanishingBuster: true
-      NoDispell: true
-  - Status: Lhz_Dun_N2
-    Icon: EFST_LHZ_DUN_N2
-    Flags:
-      NoClearbuff: true
-      NoClearance: true
-      NoRemoveOnDead: true
-      NoBanishingBuster: true
-      NoDispell: true
-  - Status: Lhz_Dun_N3
-    Icon: EFST_LHZ_DUN_N3
-    Flags:
-      NoClearbuff: true
-      NoClearance: true
-      NoRemoveOnDead: true
-      NoBanishingBuster: true
-      NoDispell: true
-  - Status: Lhz_Dun_N4
-    Icon: EFST_LHZ_DUN_N4
-    Flags:
-      NoClearbuff: true
-      NoClearance: true
-      NoRemoveOnDead: true
-      NoBanishingBuster: true
-      NoDispell: true
   - Status: Ancilla
     Icon: EFST_ANCILLA
     Flags:
@@ -7081,3 +7012,14 @@ Body:
       NoClearance: true
     EndOnStart:
       Decreaseagi: true
+  - Status: Acaraje
+    Icon: EFST_ACARAJE
+    Flags:
+      NoRemoveOnDead: true
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+    Script: |
+      bonus bAspdRate, getstatus(SC_ACARAJE, 1);
+      bonus bHit, getstatus(SC_ACARAJE, 2);

+ 17 - 16
db/re/item_db_usable.yml

@@ -2422,7 +2422,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_POTION_BERSERK;
-      sc_start SC_LIMIT_POWER_BOOSTER,1800000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,1800000,30,1,5,0;
   - Id: 9897
     AegisName: E_Glittering_Doll_B
     Name: Shiny Doll Button
@@ -3998,6 +3998,7 @@ Body:
       BuyingStore: true
     Script: |
       specialeffect2 EF_GUARD;
+      heal 1000,0;
       sc_start SC_EP16_DEF,180000,10;
   - Id: 11601
     AegisName: Tasty_Anchovy
@@ -9024,7 +9025,7 @@ Body:
     Weight: 80
     Script: |
       specialeffect2 EF_STEAL;
-      sc_start SC_ACARAJE,1200000,0;
+      sc_start2 SC_ACARAJE,1200000,10,5;
   - Id: 12376
     AegisName: Mysterious_Can2
     Name: Mysterious Can2
@@ -14695,7 +14696,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_BASH3D;
-      sc_start SC_ALMIGHTY,1800000,10;
+      sc_start SC_ALMIGHTY,1800000,30;
       sc_start SC_FOOD_STR_CASH,1800000,10;
       sc_start SC_FOOD_AGI_CASH,1800000,10;
       sc_start SC_FOOD_INT_CASH,1800000,10;
@@ -36189,7 +36190,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_BASH3D;
-      sc_start SC_ALMIGHTY,1800000,10;
+      sc_start SC_ALMIGHTY,1800000,30;
   - Id: 14663
     AegisName: Sealed_D_Lord_Scroll
     Name: Sealed Dark Lord Scroll
@@ -36822,7 +36823,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_POTION_BERSERK;
-      sc_start SC_LIMIT_POWER_BOOSTER,1800000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,1800000,30,1,5,0;
   - Id: 14780
     AegisName: Pump_Of_Spirit_Scroll
     Name: Soul Plunger Scroll
@@ -58659,7 +58660,7 @@ Body:
       BuyingStore: true
     Script: |
       specialeffect2 EF_BASH3D;
-      sc_start SC_ALMIGHTY,3600000,10;
+      sc_start SC_ALMIGHTY,3600000,30;
       sc_start SC_FOOD_STR_CASH,3600000,10;
       sc_start SC_FOOD_AGI_CASH,3600000,10;
       sc_start SC_FOOD_INT_CASH,3600000,10;
@@ -64424,7 +64425,7 @@ Body:
       BuyingStore: true
     Script: |
       specialeffect2 EF_BASH3D;
-      sc_start SC_ALMIGHTY,1800000,10;
+      sc_start SC_ALMIGHTY,1800000,30;
   - Id: 23605
     AegisName: Challenge_Drink
     Name: Challenger Drink
@@ -64434,7 +64435,7 @@ Body:
       BuyingStore: true
     Script: |
       specialeffect2 EF_POTION_BERSERK;
-      sc_start SC_LIMIT_POWER_BOOSTER,1800000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,1800000,30,1,5,0;
   - Id: 23606
     AegisName: Power_Drink
     Name: Power Drink
@@ -64875,7 +64876,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_BASH3D;
-      sc_start SC_ALMIGHTY,1800000,10;
+      sc_start SC_ALMIGHTY,1800000,30;
   - Id: 23726
     AegisName: E_Challenge_Drink
     Name: "[Event] Challenger Drink"
@@ -64889,7 +64890,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_POTION_BERSERK;
-      sc_start SC_LIMIT_POWER_BOOSTER,1800000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,1800000,30,1,5,0;
   - Id: 23727
     AegisName: E_Unlimited_Drink
     Name: "[Event] Unlimited Drink"
@@ -66048,7 +66049,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_POTION_BERSERK;
-      sc_start SC_LIMIT_POWER_BOOSTER,1800000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,1800000,30,1,5,0;
   - Id: 23899
     AegisName: Comp_Almighty
     Name: "[Not For Sale] Almighty"
@@ -66064,7 +66065,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_BASH3D;
-      sc_start SC_ALMIGHTY,1800000,10;
+      sc_start SC_ALMIGHTY,1800000,30;
       sc_start SC_FOOD_STR_CASH,1800000,10;
       sc_start SC_FOOD_AGI_CASH,1800000,10;
       sc_start SC_FOOD_INT_CASH,1800000,10;
@@ -66436,7 +66437,7 @@ Body:
       Sitting: true
     Script: |
       specialeffect2 EF_POTION_BERSERK;
-      sc_start SC_LIMIT_POWER_BOOSTER,3600000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,3600000,30,1,5,0;
       sc_start SC_SPEEDUP0,600000,25;
   - Id: 100008
     AegisName: G_Infinity_Drink
@@ -70768,7 +70769,7 @@ Body:
       sc_start2 SC_M_LIFEPOTION,3600000,-4,3;
       sc_start2 SC_M_DEFSCROLL,3600000,500,200;
       sc_start2 SC_S_MANAPOTION,3600000,-5,5;
-      sc_start SC_ALMIGHTY,3600000,10;
+      sc_start SC_ALMIGHTY,3600000,30;
       sc_start SC_INFINITY_DRINK,3600000,0;
       sc_start SC_FOOD_STR_CASH,3600000,20;
       sc_start SC_FOOD_AGI_CASH,3600000,20;
@@ -70780,7 +70781,7 @@ Body:
       sc_start SC_HITFOOD,3600000,30;
       sc_start SC_ATKPOTION,3600000,20;
       sc_start SC_MATKPOTION,3600000,20;
-      sc_start SC_LIMIT_POWER_BOOSTER,3600000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,3600000,30,1,5,0;
       sc_start SC_SPEEDUP0,3600000,25;
   - Id: 100908
     AegisName: S_M_Piercing_Box
@@ -76767,7 +76768,7 @@ Body:
     Script: |
       specialeffect2 EF_POTION_BERSERK;
       sc_start SC_M_DEFSCROLL,3600000,0;
-      sc_start SC_LIMIT_POWER_BOOSTER,3600000,30;
+      sc_start4 SC_LIMIT_POWER_BOOSTER,3600000,30,1,5,0;
       sc_start SC_INFINITY_DRINK,3600000,0;
       sc_start SC_SPEEDUP0,600000,25;
   - Id: 102129

+ 179 - 101
db/re/status.yml

@@ -750,13 +750,13 @@ Body:
       RemoveOnHermode: true
   - Status: Atkpotion
     Icon: EFST_PLUSATTACKPOWER
-    CalcFlags:
-      Batk: true
     Flags:
       NoRemoveOnDead: true
       NoClearance: true
       OverlapIgnoreLevel: true
       RemoveOnHermode: true
+    Script: |
+      bonus bBaseAtk, getstatus(SC_ATKPOTION, 1);  /* TODO: hidden in status window */
   - Status: Matkpotion
     Icon: EFST_PLUSMAGICPOWER
     CalcFlags:
@@ -1163,11 +1163,14 @@ Body:
       Speed: true
   - Status: Armor_Element_Water
     Icon: EFST_RESIST_PROPERTY_WATER
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_WATER, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_WATER, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_WATER, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_WATER, 4);
   - Status: Nochat
     States:
       NoPickItem: true
@@ -2123,58 +2126,58 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
   - Status: Incstr
-    CalcFlags:
-      Str: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
+    Script: |
+      bonus bStr, getstatus(SC_INCSTR, 1);
   - Status: Incagi
-    CalcFlags:
-      Agi: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bAgi, getstatus(SC_INCAGI, 1);
   - Status: Incvit
-    CalcFlags:
-      Vit: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bVit, getstatus(SC_INCVIT, 1);
   - Status: Incint
-    CalcFlags:
-      Int: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bInt, getstatus(SC_INCINT, 1);
   - Status: Incdex
-    CalcFlags:
-      Dex: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bDex, getstatus(SC_INCDEX, 1);
   - Status: Incluk
-    CalcFlags:
-      Luk: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bLuk, getstatus(SC_INCLUK, 1);
   - Status: Inchit
     CalcFlags:
       Hit: true
@@ -2272,8 +2275,6 @@ Body:
       Food_Str_Cash: true
   - Status: Agifood
     Icon: EFST_FOOD_AGI
-    CalcFlags:
-      Agi: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -2281,6 +2282,8 @@ Body:
       NoClearance: true
     EndOnStart:
       Food_Agi_Cash: true
+    Script: |
+      bonus bAgi, getstatus(SC_AGIFOOD, 1);
   - Status: Vitfood
     Icon: EFST_FOOD_VIT
     CalcFlags:
@@ -2344,13 +2347,13 @@ Body:
       NoBanishingBuster: true
       NoClearance: true
   - Status: Batkfood
-    CalcFlags:
-      Batk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bBaseAtk, getstatus(SC_BATKFOOD, 1);
   - Status: Watkfood
     CalcFlags:
       Watk: true
@@ -2360,13 +2363,13 @@ Body:
       NoBanishingBuster: true
       NoClearance: true
   - Status: Matkfood
-    CalcFlags:
-      Matk: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bMatk, getstatus(SC_MATKFOOD, 1);
   - Status: Scresist
     DurationLookup: PA_GOSPEL
   - Status: Xmas
@@ -2810,11 +2813,14 @@ Body:
     Flags:
       NoWarning: true
   - Status: Armor_Resist
-    CalcFlags:
-      All: true
     Flags:
       OverlapIgnoreLevel: true
       RemoveOnUnequipArmor: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_RESIST, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_RESIST, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_RESIST, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_RESIST, 4);
   - Status: Spcost_Rate
     Icon: EFST_ATKER_BLOOD
     CalcFlags:
@@ -3002,8 +3008,6 @@ Body:
       NoClearance: true
   - Status: Food_Str_Cash
     Icon: EFST_FOOD_STR_CASH
-    CalcFlags:
-      Str: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -3012,10 +3016,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Strfood: true
+    Script: |
+      bonus bStr, getstatus(SC_FOOD_STR_CASH, 1);
   - Status: Food_Agi_Cash
     Icon: EFST_FOOD_AGI_CASH
-    CalcFlags:
-      Agi: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -3024,10 +3028,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Agifood: true
+    Script: |
+      bonus bAgi, getstatus(SC_FOOD_AGI_CASH, 1);
   - Status: Food_Vit_Cash
     Icon: EFST_FOOD_VIT_CASH
-    CalcFlags:
-      Vit: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -3036,10 +3040,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Vitfood: true
+    Script: |
+      bonus bVit, getstatus(SC_FOOD_VIT_CASH, 1);
   - Status: Food_Dex_Cash
     Icon: EFST_FOOD_DEX_CASH
-    CalcFlags:
-      Dex: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -3048,10 +3052,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Intfood: true
+    Script: |
+      bonus bDex, getstatus(SC_FOOD_DEX_CASH, 1);
   - Status: Food_Int_Cash
     Icon: EFST_FOOD_INT_CASH
-    CalcFlags:
-      Int: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -3060,10 +3064,10 @@ Body:
       NoClearance: true
     EndOnStart:
       Dexfood: true
+    Script: |
+      bonus bInt, getstatus(SC_FOOD_INT_CASH, 1);
   - Status: Food_Luk_Cash
     Icon: EFST_FOOD_LUK_CASH
-    CalcFlags:
-      Luk: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -3072,6 +3076,8 @@ Body:
       NoClearance: true
     EndOnStart:
       Lukfood: true
+    Script: |
+      bonus bLuk, getstatus(SC_FOOD_LUK_CASH, 1);
   - Status: Fear
     DurationLookup: RK_WINDCUTTER
     States:
@@ -6241,17 +6247,15 @@ Body:
       NoClearance: true
   - Status: Crifood
     Icon: EFST_FOOD_CRITICALSUCCESSVALUE
-    CalcFlags:
-      Cri: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bCritical, getstatus(SC_CRIFOOD, 1);
   - Status: Atthaste_Cash
     Icon: EFST_ATTHASTE_CASH
-    CalcFlags:
-      Aspd: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -6260,6 +6264,8 @@ Body:
       NoClearance: true
       OverlapIgnoreLevel: true
       NoForcedEnd: true
+    Script: |
+      bonus bAspdRate, getstatus(SC_ATTHASTE_CASH, 1);
   - Status: Reuse_Limit_A
     Icon: EFST_REUSE_LIMIT_A
     Flags:
@@ -6761,26 +6767,32 @@ Body:
     DurationLookup: CG_TAROTCARD
   - Status: Geffen_Magic1
     Icon: EFST_GEFFEN_MAGIC1
-    CalcFlags:
-      All: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       RemoveOnHermode: true
+    Script: |
+      .@val1 = getstatus(SC_GEFFEN_MAGIC1, 1);
+      bonus2 bAddRace,RC_Player_Human, .@val1;
+      bonus2 bAddRace,RC_DemiHuman, .@val1;
   - Status: Geffen_Magic2
     Icon: EFST_GEFFEN_MAGIC2
-    CalcFlags:
-      All: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
+    Script: |
+      .@val1 = getstatus(SC_GEFFEN_MAGIC2, 1);
+      bonus2 bMagicAddRace,RC_Player_Human, .@val1;
+      bonus2 bMagicAddRace,RC_DemiHuman, .@val1;
   - Status: Geffen_Magic3
     Icon: EFST_GEFFEN_MAGIC3
-    CalcFlags:
-      All: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
+    Script: |
+      .@val1 = getstatus(SC_GEFFEN_MAGIC3, 1);
+      bonus2 bSubRace,RC_Player_Human, .@val1;
+      bonus2 bSubRace,RC_DemiHuman, .@val1;
   - Status: Maxpain
     Icon: EFST_MAXPAIN
     DurationLookup: NPC_MAXPAIN
@@ -6788,25 +6800,34 @@ Body:
       BlEffect: true
   - Status: Armor_Element_Earth
     Icon: EFST_RESIST_PROPERTY_GROUND
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_EARTH, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_EARTH, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_EARTH, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_EARTH, 4);
   - Status: Armor_Element_Fire
     Icon: EFST_RESIST_PROPERTY_FIRE
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_FIRE, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_FIRE, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_FIRE, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_FIRE, 4);
   - Status: Armor_Element_Wind
     Icon: EFST_RESIST_PROPERTY_WIND
-    CalcFlags:
-      All: true
     Flags:
       NoDispell: true
       OverlapIgnoreLevel: true
+    Script: |
+      bonus2 bSubEle,Ele_Water, getstatus(SC_ARMOR_ELEMENT_WIND, 1);
+      bonus2 bSubEle,Ele_Earth, getstatus(SC_ARMOR_ELEMENT_WIND, 2);
+      bonus2 bSubEle,Ele_Fire, getstatus(SC_ARMOR_ELEMENT_WIND, 3);
+      bonus2 bSubEle,Ele_Wind, getstatus(SC_ARMOR_ELEMENT_WIND, 4);
   - Status: Dailysendmailcnt
     Icon: EFST_DAILYSENDMAILCNT
     Flags:
@@ -6936,47 +6957,53 @@ Body:
       SendVal1: true
   - Status: Glastheim_Atk
     Icon: EFST_GLASTHEIM_ATK
-    CalcFlags:
-      All: true
     Flags:
       NoSave: true
+    Script: |
+      .@val1 = getstatus(SC_GLASTHEIM_ATK, 1);
+      bonus2 bAddRace2,RC2_OGH_ATK_DEF, .@val1;
+      bonus2 bMagicAddRace2,RC2_OGH_ATK_DEF, .@val1;
+      bonus2 bIgnoreDefRaceRate,RC_Undead, .@val1;
+      bonus2 bIgnoreDefRaceRate,RC_Demon, .@val1;
   - Status: Glastheim_Def
     Icon: EFST_GLASTHEIM_DEF
     Flags:
       NoSave: true
+    Script: |
+      bonus2 bSubRace2,RC2_OGH_ATK_DEF, getstatus(SC_GLASTHEIM_DEF, 1);
   - Status: Glastheim_Heal
     Icon: EFST_GLASTHEIM_HEAL
     Flags:
       NoSave: true
+    Script: |
+      bonus bHealPower, getstatus(SC_GLASTHEIM_HEAL, 1);
+      bonus bHealPower2, getstatus(SC_GLASTHEIM_HEAL, 2);
   - Status: Glastheim_Hidden
     Icon: EFST_GLASTHEIM_HIDDEN
     Flags:
       NoSave: true
+    Script: |
+      bonus2 bSubRace2,RC2_OGH_HIDDEN, getstatus(SC_GLASTHEIM_HIDDEN, 1);
   - Status: Glastheim_State
     Icon: EFST_GLASTHEIM_STATE
-    CalcFlags:
-      Str: true
-      Agi: true
-      Vit: true
-      Dex: true
-      Int: true
-      Luk: true
     Flags:
       NoSave: true
+    Script: |
+      bonus bAllStats, getstatus(SC_GLASTHEIM_STATE, 1);
   - Status: Glastheim_Itemdef
     Icon: EFST_GLASTHEIM_ITEMDEF
-    CalcFlags:
-      Def: true
-      Mdef: true
     Flags:
       NoSave: true
+    Script: |
+      bonus bDef, getstatus(SC_GLASTHEIM_ITEMDEF, 1);
+      bonus bMdef, getstatus(SC_GLASTHEIM_ITEMDEF, 2);
   - Status: Glastheim_Hpsp
     Icon: EFST_GLASTHEIM_HPSP
-    CalcFlags:
-      MaxHp: true
-      MaxSp: true
     Flags:
       NoSave: true
+    Script: |
+      bonus bMaxHP, getstatus(SC_GLASTHEIM_HPSP, 1);
+      bonus bMaxSP, getstatus(SC_GLASTHEIM_HPSP, 2);
   - Status: Lhz_Dun_N1
     Icon: EFST_LHZ_DUN_N1
     Flags:
@@ -8316,9 +8343,6 @@ Body:
       Sub_Weaponproperty: true
   - Status: Almighty
     Icon: EFST_ALMIGHTY
-    CalcFlags:
-      Batk: true
-      Matk: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
@@ -8327,6 +8351,10 @@ Body:
       NoClearance: true
     EndOnStart:
       UltimateCook: true
+    Script: |
+      .@val1 = getstatus(SC_ALMIGHTY, 1);
+      bonus bMatk, .@val1;
+      bonus bBaseAtk, .@val1;
   - Status: UltimateCook
     Icon: EFST_ULTIMATECOOK
     CalcFlags:
@@ -8381,13 +8409,24 @@ Body:
       NoClearance: true
   - Status: Limit_Power_Booster
     Icon: EFST_LIMIT_POWER_BOOSTER
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_LIMIT_POWER_BOOSTER, 1);
+      .@val2 = getstatus(SC_LIMIT_POWER_BOOSTER, 2);
+      .@val3 = getstatus(SC_LIMIT_POWER_BOOSTER, 3);
+      bonus bBaseAtk, .@val1;
+      bonus bMatk, .@val1;
+      bonus bHit, .@val1;
+      bonus bFlee, .@val1;
+      bonus bFixedCastrate, -.@val1;
+      bonus bAtkRate, .@val2;
+      bonus bMatkRate, .@val2;
+      bonus bAspd, .@val2;
+      bonus bUseSPrate, .@val3;
   - Status: Combat_Pill
     Icon: EFST_GM_BATTLE
     CalcFlags:
@@ -8441,15 +8480,15 @@ Body:
       NoClearance: true
   - Status: Acaraje
     Icon: EFST_ACARAJE
-    CalcFlags:
-      Hit: true
-      Aspd: true
     Flags:
       NoRemoveOnDead: true
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      bonus bAspdRate, getstatus(SC_ACARAJE, 1);
+      bonus bHit, getstatus(SC_ACARAJE, 2);
   - Status: PopeCookie
     Icon: EFST_POPECOOKIE
     CalcFlags:
@@ -8974,31 +9013,37 @@ Body:
       Freeze: true
   - Status: Bath_foam_a
     Icon: EFST_BATH_FOAM_A
-    CalcFlags:
-      All: true
     Flags:
       NoBanishingBuster: true
       NoClearance: true
       NoClearbuff: true
       NoDispell: true
+    Script: |
+      .@val1 = getstatus(SC_BATH_FOAM_A, 1);
+      bonus2 bAddRace2, RC2_EP172BATH, .@val1;
+      bonus2 bMagicAddRace2, RC2_EP172BATH, .@val1;
   - Status: Bath_foam_b
     Icon: EFST_BATH_FOAM_B
-    CalcFlags:
-      All: true
     Flags:
       NoBanishingBuster: true
       NoClearance: true
       NoClearbuff: true
       NoDispell: true
+    Script: |
+      .@val1 = getstatus(SC_BATH_FOAM_B, 1);
+      bonus2 bAddRace2, RC2_EP172BATH, .@val1;
+      bonus2 bMagicAddRace2, RC2_EP172BATH, .@val1;
   - Status: Bath_foam_c
     Icon: EFST_BATH_FOAM_C
-    CalcFlags:
-      All: true
     Flags:
       NoBanishingBuster: true
       NoClearance: true
       NoClearbuff: true
       NoDispell: true
+    Script: |
+      .@val1 = getstatus(SC_BATH_FOAM_C, 1);
+      bonus2 bAddRace2, RC2_EP172BATH, .@val1;
+      bonus2 bMagicAddRace2, RC2_EP172BATH, .@val1;
   - Status: Buchedenoel
     Icon: EFST_BUCHEDENOEL
     CalcFlags:
@@ -9012,8 +9057,6 @@ Body:
       NoClearance: true
   - Status: Ep16_def
     Icon: EFST_EP16_DEF
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
@@ -9023,6 +9066,8 @@ Body:
       Curse: true
       Silence: true
       Poison: true
+    Script: |
+      bonus2 bSubRace2,RC2_EP16_DEF, getstatus(SC_EP16_DEF, 1);
   - Status: Str_Scroll
     Icon: EFST_STR_SCROLL
     CalcFlags:
@@ -9045,31 +9090,38 @@ Body:
       NoRemoveOnDead: true
   - Status: Contents_1
     Icon: EFST_CONTENTS_1
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_1, 1);
+      bonus2 bAddEle,Ele_All, .@val1;
+      bonus2 bMagicAddEle,Ele_All, .@val1;
   - Status: Contents_2
     Icon: EFST_CONTENTS_2
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_2, 1);
+      bonus bShortAtkRate, .@val1;
+      bonus bLongAtkRate, .@val1;
+      bonus2 bMagicAtkEle,Ele_All, .@val1;
   - Status: Contents_3
     Icon: EFST_CONTENTS_3
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_3, 1);
+      bonus bAtkRate, .@val1;
+      bonus bMatkRate, .@val1;
   - Status: Contents_4
     Icon: EFST_CONTENTS_4
     CalcFlags:
@@ -9079,60 +9131,86 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_4, 1);
+      bonus bAtkRate, .@val1;
+      bonus bMatkRate, .@val1;
   - Status: Contents_5
     Icon: EFST_CONTENTS_5
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_5, 1);
+      bonus bVariableCastrate, -.@val1;
+      bonus bAspdRate, .@val1;
   - Status: Contents_6
     Icon: EFST_CONTENTS_6
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_6, 1);
+      bonus2 bAddRace,RC_Dragon, .@val1;
+      bonus2 bAddRace,RC_Plant, .@val1;
+      bonus2 bMagicAddRace,RC_Dragon, .@val1;
+      bonus2 bMagicAddRace,RC_Plant, .@val1;
   - Status: Contents_7
     Icon: EFST_CONTENTS_7
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_7, 1);
+      bonus2 bAddRace,RC_Demon, .@val1;
+      bonus2 bAddRace,RC_Undead, .@val1;
+      bonus2 bMagicAddRace,RC_Demon, .@val1;
+      bonus2 bMagicAddRace,RC_Undead, .@val1;
   - Status: Contents_8
     Icon: EFST_CONTENTS_8
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_8, 1);
+      bonus2 bAddRace,RC_Fish, .@val1;
+      bonus2 bAddRace,RC_Formless, .@val1;
+      bonus2 bMagicAddRace,RC_Fish, .@val1;
+      bonus2 bMagicAddRace,RC_Formless, .@val1;
   - Status: Contents_9
     Icon: EFST_CONTENTS_9
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_9, 1);
+      bonus2 bAddRace,RC_Angel, .@val1;
+      bonus2 bAddRace,RC_Brute, .@val1;
+      bonus2 bMagicAddRace,RC_Angel, .@val1;
+      bonus2 bMagicAddRace,RC_Brute, .@val1;
   - Status: Contents_10
     Icon: EFST_CONTENTS_10
-    CalcFlags:
-      All: true
     Flags:
       NoClearbuff: true
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+    Script: |
+      .@val1 = getstatus(SC_CONTENTS_10, 1);
+      bonus2 bAddRace,RC_DemiHuman, .@val1;
+      bonus2 bAddRace,RC_Insect, .@val1;
+      bonus2 bMagicAddRace,RC_DemiHuman, .@val1;
+      bonus2 bMagicAddRace,RC_Insect, .@val1;
   - Status: Mystery_Powder
     Icon: EFST_MYSTERY_POWDER
     DurationLookup: BO_MYSTERY_POWDER

+ 2 - 2
npc/re/instances/CorOperation.txt

@@ -444,7 +444,7 @@ OnTimer17000:
 		setd("'rf_" + strnpcinfo(2),1);
 		specialeffect2 EF_ENHANCE;
 		specialeffect2 EF_LIGHTSPHERE_STAR;
-		sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_STATE,30000,20,10000,SCSTART_NOTICKDEF;
 		npctalk "Power, Overwhelming power!";
 		unittalk getcharid(3),strcharinfo(0) + " : My whole body is full of power!",bc_self;
 		sleep 1500;
@@ -890,7 +890,7 @@ OnTouch:
 		setd("'rf_" + strnpcinfo(2),1);
 		specialeffect2 EF_ENHANCE;
 		specialeffect2 EF_LIGHTSPHERE_STAR;
-		sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_STATE,30000,20,10000,SCSTART_NOTICKDEF;
 		npctalk "Power, Overwhelming power!";
 		unittalk getcharid(3),strcharinfo(0) + " : My whole body is full of power!",bc_self;
 		sleep 1500;

+ 6 - 6
npc/re/instances/OldGlastHeim.txt

@@ -1979,16 +1979,16 @@ OnTouch:
 	specialeffect2 EF_ENHANCE;
 	.@num = atoi( replacestr(strnpcinfo(2), "Buff", "") );
 	if (.@num == 1)
-		sc_start SC_GLASTHEIM_HIDDEN,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_HIDDEN,30000,90,10000,SCSTART_NOTICKDEF;
 	else if (.@num == 2)
-		sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_STATE,30000,20,10000,SCSTART_NOTICKDEF;
 	else if (.@num == 3) {
-		sc_start SC_GLASTHEIM_HEAL,30000,1,10000,SCSTART_NOTICKDEF;
-		sc_start SC_GLASTHEIM_HPSP,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start2 SC_GLASTHEIM_HEAL,30000,100,50,10000,SCSTART_NOTICKDEF;
+		sc_start2 SC_GLASTHEIM_HPSP,30000,10000,1000,10000,SCSTART_NOTICKDEF;
 	}
 	else {
-		sc_start SC_GLASTHEIM_DEF,30000,1,10000,SCSTART_NOTICKDEF;
-		sc_start SC_GLASTHEIM_ITEMDEF,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_DEF,30000,100,10000,SCSTART_NOTICKDEF;
+		sc_start2 SC_GLASTHEIM_ITEMDEF,30000,200,50,10000,SCSTART_NOTICKDEF;
 	}
 	end;
 OnEvent:

+ 0 - 12
src/map/battle.cpp

@@ -1832,14 +1832,6 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 						if (sce = tsc->getSCE(SC_SPL_DEF))
 							damage -= damage * sce->val1 / 100;
 						break;
-					case RC2_OGH_ATK_DEF:
-						if (tsc->getSCE(SC_GLASTHEIM_DEF))
-							return 0;
-						break;
-					case RC2_OGH_HIDDEN:
-						if (sce = tsc->getSCE(SC_GLASTHEIM_HIDDEN))
-							damage -= damage * sce->val1 / 100;
-						break;
 					case RC2_BIO5_ACOLYTE_MERCHANT:
 						if (sce = tsc->getSCE(SC_LHZ_DUN_N1))
 							damage -= damage * sce->val2 / 100;
@@ -1987,10 +1979,6 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 							if (sce = sc->getSCE(SC_SPL_ATK))
 								damage += damage * sce->val1 / 100;
 							break;
-						case RC2_OGH_ATK_DEF:
-							if (sc->getSCE(SC_GLASTHEIM_ATK))
-								damage *= 2;
-							break;
 						case RC2_BIO5_SWORDMAN_THIEF:
 							if (sce = sc->getSCE(SC_LHZ_DUN_N1))
 								damage += damage * sce->val1 / 100;

+ 0 - 12
src/map/skill.cpp

@@ -655,12 +655,6 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
 			hp_bonus += sc->getSCE(SC_OFFERTORIUM)->val2;
 #else
 			hp += hp * sc->getSCE(SC_OFFERTORIUM)->val2 / 100;
-#endif
-		if (sc->getSCE(SC_GLASTHEIM_HEAL) && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN)
-#ifdef RENEWAL
-			hp_bonus += sc->getSCE(SC_GLASTHEIM_HEAL)->val1;
-#else
-			hp += hp * sc->getSCE(SC_GLASTHEIM_HEAL)->val1 / 100;
 #endif
 #ifdef RENEWAL
 		if (sc->getSCE(SC_MEDIALE) && skill_id == CD_MEDIALE_VOTUM)
@@ -675,12 +669,6 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
 				hp_bonus += tsc->getSCE(SC_INCHEALRATE)->val1; //Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish]
 #else
 				hp += hp * tsc->getSCE(SC_INCHEALRATE)->val1 / 100;
-#endif
-			if (tsc->getSCE(SC_GLASTHEIM_HEAL))
-#ifdef RENEWAL
-				hp_bonus += tsc->getSCE(SC_GLASTHEIM_HEAL)->val2;
-#else
-				hp += hp * tsc->getSCE(SC_GLASTHEIM_HEAL)->val2 / 100;
 #endif
 			if (tsc->getSCE(SC_ANCILLA))
 #ifdef RENEWAL

+ 2 - 258
src/map/status.cpp

@@ -3126,8 +3126,6 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += 30;
 			if(sc->getSCE(SC_CROSSBOWCLAN))
 				bonus += 30;
-			if(sc->getSCE(SC_GLASTHEIM_HPSP))
-				bonus += sc->getSCE(SC_GLASTHEIM_HPSP)->val1;
 #ifdef RENEWAL
 			if (sc->getSCE(SC_ANGELUS))
 				bonus += sc->getSCE(SC_ANGELUS)->val1 * 50;
@@ -3301,8 +3299,6 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += 10;
 			if(sc->getSCE(SC_CROSSBOWCLAN))
 				bonus += 10;
-			if(sc->getSCE(SC_GLASTHEIM_HPSP))
-				bonus += sc->getSCE(SC_GLASTHEIM_HPSP)->val2;
 		}
 	} else if (type == STATUS_BONUS_RATE) {
 		status_change *sc = status_get_sc(bl);
@@ -4729,52 +4725,6 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
 			sd->indexed_bonus.subele[ELE_HOLY] += sc->getSCE(SC_PROVIDENCE)->val2;
 			sd->indexed_bonus.subrace[RC_DEMON] += sc->getSCE(SC_PROVIDENCE)->val2;
 		}
-		if (sc->getSCE(SC_GEFFEN_MAGIC1)) {
-			sd->right_weapon.addrace[RC_PLAYER_HUMAN] += sc->getSCE(SC_GEFFEN_MAGIC1)->val1;
-			sd->right_weapon.addrace[RC_DEMIHUMAN] += sc->getSCE(SC_GEFFEN_MAGIC1)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace[RC_PLAYER_HUMAN] += sc->getSCE( SC_GEFFEN_MAGIC1 )->val1;
-				sd->left_weapon.addrace[RC_DEMIHUMAN] += sc->getSCE( SC_GEFFEN_MAGIC1 )->val1;
-			}
-		}
-		if (sc->getSCE(SC_GEFFEN_MAGIC2)) {
-			sd->indexed_bonus.magic_addrace[RC_PLAYER_HUMAN] += sc->getSCE(SC_GEFFEN_MAGIC2)->val1;
-			sd->indexed_bonus.magic_addrace[RC_DEMIHUMAN] += sc->getSCE(SC_GEFFEN_MAGIC2)->val1;
-		}
-		if(sc->getSCE(SC_GEFFEN_MAGIC3)) {
-			sd->indexed_bonus.subrace[RC_PLAYER_HUMAN] += sc->getSCE(SC_GEFFEN_MAGIC3)->val1;
-			sd->indexed_bonus.subrace[RC_DEMIHUMAN] += sc->getSCE(SC_GEFFEN_MAGIC3)->val1;
-		}
-		if(sc->getSCE(SC_ARMOR_ELEMENT_WATER)) {	// This status change should grant card-type elemental resist.
-			sd->indexed_bonus.subele[ELE_WATER] += sc->getSCE(SC_ARMOR_ELEMENT_WATER)->val1;
-			sd->indexed_bonus.subele[ELE_EARTH] += sc->getSCE(SC_ARMOR_ELEMENT_WATER)->val2;
-			sd->indexed_bonus.subele[ELE_FIRE] += sc->getSCE(SC_ARMOR_ELEMENT_WATER)->val3;
-			sd->indexed_bonus.subele[ELE_WIND] += sc->getSCE(SC_ARMOR_ELEMENT_WATER)->val4;
-		}
-		if(sc->getSCE(SC_ARMOR_ELEMENT_EARTH)) {	// This status change should grant card-type elemental resist.
-			sd->indexed_bonus.subele[ELE_WATER] += sc->getSCE(SC_ARMOR_ELEMENT_EARTH)->val1;
-			sd->indexed_bonus.subele[ELE_EARTH] += sc->getSCE(SC_ARMOR_ELEMENT_EARTH)->val2;
-			sd->indexed_bonus.subele[ELE_FIRE] += sc->getSCE(SC_ARMOR_ELEMENT_EARTH)->val3;
-			sd->indexed_bonus.subele[ELE_WIND] += sc->getSCE(SC_ARMOR_ELEMENT_EARTH)->val4;
-		}
-		if(sc->getSCE(SC_ARMOR_ELEMENT_FIRE)) {	// This status change should grant card-type elemental resist.
-			sd->indexed_bonus.subele[ELE_WATER] += sc->getSCE(SC_ARMOR_ELEMENT_FIRE)->val1;
-			sd->indexed_bonus.subele[ELE_EARTH] += sc->getSCE(SC_ARMOR_ELEMENT_FIRE)->val2;
-			sd->indexed_bonus.subele[ELE_FIRE] += sc->getSCE(SC_ARMOR_ELEMENT_FIRE)->val3;
-			sd->indexed_bonus.subele[ELE_WIND] += sc->getSCE(SC_ARMOR_ELEMENT_FIRE)->val4;
-		}
-		if(sc->getSCE(SC_ARMOR_ELEMENT_WIND)) {	// This status change should grant card-type elemental resist.
-			sd->indexed_bonus.subele[ELE_WATER] += sc->getSCE(SC_ARMOR_ELEMENT_WIND)->val1;
-			sd->indexed_bonus.subele[ELE_EARTH] += sc->getSCE(SC_ARMOR_ELEMENT_WIND)->val2;
-			sd->indexed_bonus.subele[ELE_FIRE] += sc->getSCE(SC_ARMOR_ELEMENT_WIND)->val3;
-			sd->indexed_bonus.subele[ELE_WIND] += sc->getSCE(SC_ARMOR_ELEMENT_WIND)->val4;
-		}
-		if(sc->getSCE(SC_ARMOR_RESIST)) { // Undead Scroll
-			sd->indexed_bonus.subele[ELE_WATER] += sc->getSCE(SC_ARMOR_RESIST)->val1;
-			sd->indexed_bonus.subele[ELE_EARTH] += sc->getSCE(SC_ARMOR_RESIST)->val2;
-			sd->indexed_bonus.subele[ELE_FIRE] += sc->getSCE(SC_ARMOR_RESIST)->val3;
-			sd->indexed_bonus.subele[ELE_WIND] += sc->getSCE(SC_ARMOR_RESIST)->val4;
-		}
 		if( sc->getSCE(SC_FIRE_CLOAK_OPTION) ) {
 			i = sc->getSCE(SC_FIRE_CLOAK_OPTION)->val2;
 			sd->indexed_bonus.subele[ELE_FIRE] += i;
@@ -4799,10 +4749,6 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
 			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_GLASTHEIM_ATK)) {
-			sd->indexed_bonus.ignore_mdef_by_race[RC_UNDEAD] += sc->getSCE(SC_GLASTHEIM_ATK)->val1;
-			sd->indexed_bonus.ignore_mdef_by_race[RC_DEMON] += sc->getSCE(SC_GLASTHEIM_ATK)->val1;
-		}
 		if (sc->getSCE(SC_LAUDARAMUS))
 			sd->bonus.crit_atk_rate += 5 * sc->getSCE(SC_LAUDARAMUS)->val1;
 #ifdef RENEWAL
@@ -4883,12 +4829,6 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
 		}
 		if(sc->getSCE(SC_MENTAL_POTION))
 			sd->dsprate -= sc->getSCE(SC_MENTAL_POTION)->val1;
-		if (sc->getSCE(SC_LIMIT_POWER_BOOSTER)) {
-			pc_bonus(sd, SP_ATK_RATE, 1);
-			pc_bonus(sd, SP_MATK_RATE, 1);
-			sd->dsprate -= 5;
-			sd->bonus.fixcastrate -= sc->getSCE(SC_LIMIT_POWER_BOOSTER)->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);
@@ -4923,103 +4863,6 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
 		}
 		if (sc->getSCE(SC_PORK_RIB_STEW))
 			sd->dsprate -= 2;
-		if (sc->getSCE(SC_BATH_FOAM_A)) {
-			sd->right_weapon.addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_A)->val1;
-			sd->indexed_bonus.magic_addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_A)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_A)->val1;
-			}
-		}
-		if (sc->getSCE(SC_BATH_FOAM_B)) {
-			sd->right_weapon.addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_B)->val1;
-			sd->indexed_bonus.magic_addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_B)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_B)->val1;
-			}
-		}
-		if (sc->getSCE(SC_BATH_FOAM_C)) {
-			sd->right_weapon.addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_C)->val1;
-			sd->indexed_bonus.magic_addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_C)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_C)->val1;
-			}
-		}
-		if (sc->getSCE(SC_EP16_DEF)) {
-			sd->indexed_bonus.subrace2[RC2_EP16_DEF] += sc->getSCE(SC_EP16_DEF)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_1)) {
-			sd->right_weapon.addele[ELE_ALL] += sc->getSCE(SC_CONTENTS_1)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addele[ELE_ALL] += sc->getSCE(SC_CONTENTS_1)->val1;
-			}
-			sd->indexed_bonus.magic_addele_script[ELE_ALL] += sc->getSCE(SC_CONTENTS_1)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_2)) {
-			sd->bonus.short_attack_atk_rate += sc->getSCE(SC_CONTENTS_2)->val1;
-			sd->bonus.long_attack_atk_rate += sc->getSCE(SC_CONTENTS_2)->val1;
-			sd->indexed_bonus.magic_atk_ele[ELE_ALL] += sc->getSCE(SC_CONTENTS_2)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_3)) {
-			pc_bonus(sd, SP_ATK_RATE, sc->getSCE(SC_CONTENTS_3)->val1);
-			pc_bonus(sd, SP_MATK_RATE, sc->getSCE(SC_CONTENTS_3)->val1);
-		}
-		if (sc->getSCE(SC_CONTENTS_4)) {
-			pc_bonus(sd, SP_ATK_RATE, sc->getSCE(SC_CONTENTS_4)->val1);
-			pc_bonus(sd, SP_MATK_RATE, sc->getSCE(SC_CONTENTS_4)->val1);
-		}
-		if (sc->getSCE(SC_CONTENTS_5)) {
-			sd->bonus.varcastrate -= sc->getSCE(SC_CONTENTS_5)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_6)) {
-			sd->right_weapon.addrace[RC_DRAGON] += sc->getSCE(SC_CONTENTS_6)->val1;
-			sd->right_weapon.addrace[RC_PLANT] += sc->getSCE(SC_CONTENTS_6)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace[RC_DRAGON] += sc->getSCE(SC_CONTENTS_6)->val1;
-				sd->left_weapon.addrace[RC_PLANT] += sc->getSCE(SC_CONTENTS_6)->val1;
-			}
-			sd->indexed_bonus.magic_addrace[RC_DRAGON] += sc->getSCE(SC_CONTENTS_6)->val1;
-			sd->indexed_bonus.magic_addrace[RC_PLANT] += sc->getSCE(SC_CONTENTS_6)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_7)) {
-			sd->right_weapon.addrace[RC_DEMON] += sc->getSCE(SC_CONTENTS_7)->val1;
-			sd->right_weapon.addrace[RC_UNDEAD] += sc->getSCE(SC_CONTENTS_7)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace[RC_DEMON] += sc->getSCE(SC_CONTENTS_7)->val1;
-				sd->left_weapon.addrace[RC_UNDEAD] += sc->getSCE(SC_CONTENTS_7)->val1;
-			}
-			sd->indexed_bonus.magic_addrace[RC_DEMON] += sc->getSCE(SC_CONTENTS_7)->val1;
-			sd->indexed_bonus.magic_addrace[RC_UNDEAD] += sc->getSCE(SC_CONTENTS_7)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_8)) {
-			sd->right_weapon.addrace[RC_FORMLESS] += sc->getSCE(SC_CONTENTS_8)->val1;
-			sd->right_weapon.addrace[RC_FISH] += sc->getSCE(SC_CONTENTS_8)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace[RC_FORMLESS] += sc->getSCE(SC_CONTENTS_8)->val1;
-				sd->left_weapon.addrace[RC_FISH] += sc->getSCE(SC_CONTENTS_8)->val1;
-			}
-			sd->indexed_bonus.magic_addrace[RC_FORMLESS] += sc->getSCE(SC_CONTENTS_8)->val1;
-			sd->indexed_bonus.magic_addrace[RC_FISH] += sc->getSCE(SC_CONTENTS_8)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_9)) {
-			sd->right_weapon.addrace[RC_ANGEL] += sc->getSCE(SC_CONTENTS_9)->val1;
-			sd->right_weapon.addrace[RC_BRUTE] += sc->getSCE(SC_CONTENTS_9)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace[RC_ANGEL] += sc->getSCE(SC_CONTENTS_9)->val1;
-				sd->left_weapon.addrace[RC_BRUTE] += sc->getSCE(SC_CONTENTS_9)->val1;
-			}
-			sd->indexed_bonus.magic_addrace[RC_ANGEL] += sc->getSCE(SC_CONTENTS_9)->val1;
-			sd->indexed_bonus.magic_addrace[RC_BRUTE] += sc->getSCE(SC_CONTENTS_9)->val1;
-		}
-		if (sc->getSCE(SC_CONTENTS_10)) {
-			sd->right_weapon.addrace[RC_DEMIHUMAN] += sc->getSCE(SC_CONTENTS_10)->val1;
-			sd->right_weapon.addrace[RC_INSECT] += sc->getSCE(SC_CONTENTS_10)->val1;
-			if( !battle_config.left_cardfix_to_right ){
-				sd->left_weapon.addrace[RC_DEMIHUMAN] += sc->getSCE(SC_CONTENTS_10)->val1;
-				sd->left_weapon.addrace[RC_INSECT] += sc->getSCE(SC_CONTENTS_10)->val1;
-			}
-			sd->indexed_bonus.magic_addrace[RC_DEMIHUMAN] += sc->getSCE(SC_CONTENTS_10)->val1;
-			sd->indexed_bonus.magic_addrace[RC_INSECT] += sc->getSCE(SC_CONTENTS_10)->val1;
-		}
 		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)) {
@@ -6657,12 +6500,8 @@ 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_INCSTR))
-		str += sc->getSCE(SC_INCSTR)->val1;
 	if(sc->getSCE(SC_STRFOOD))
 		str += sc->getSCE(SC_STRFOOD)->val1;
-	if(sc->getSCE(SC_FOOD_STR_CASH))
-		str += sc->getSCE(SC_FOOD_STR_CASH)->val1;
 	if(sc->getSCE(SC_BATTLEORDERS))
 		str += 5;
 	if(sc->getSCE(SC_LEADERSHIP))
@@ -6746,12 +6585,6 @@ static unsigned short status_calc_agi(struct block_list *bl, status_change *sc,
 		agi += (agi-sc->getSCE(SC_CONCENTRATE)->val3)*sc->getSCE(SC_CONCENTRATE)->val2/100;
 	if(sc->getSCE(SC_INCALLSTATUS))
 		agi += sc->getSCE(SC_INCALLSTATUS)->val1;
-	if(sc->getSCE(SC_INCAGI))
-		agi += sc->getSCE(SC_INCAGI)->val1;
-	if(sc->getSCE(SC_AGIFOOD))
-		agi += sc->getSCE(SC_AGIFOOD)->val1;
-	if(sc->getSCE(SC_FOOD_AGI_CASH))
-		agi += sc->getSCE(SC_FOOD_AGI_CASH)->val1;
 	if(sc->getSCE(SC_SOULCOLD))
 		agi += sc->getSCE(SC_SOULCOLD)->val1;
 	if(sc->getSCE(SC_TRUESIGHT))
@@ -6829,12 +6662,8 @@ 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_INCVIT))
-		vit += sc->getSCE(SC_INCVIT)->val1;
 	if(sc->getSCE(SC_VITFOOD))
 		vit += sc->getSCE(SC_VITFOOD)->val1;
-	if(sc->getSCE(SC_FOOD_VIT_CASH))
-		vit += sc->getSCE(SC_FOOD_VIT_CASH)->val1;
 	if(sc->getSCE(SC_CHANGE))
 		vit += sc->getSCE(SC_CHANGE)->val2;
 	if(sc->getSCE(SC_GLORYWOUNDS))
@@ -6904,12 +6733,8 @@ 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_INCINT))
-		int_ += sc->getSCE(SC_INCINT)->val1;
 	if(sc->getSCE(SC_INTFOOD))
 		int_ += sc->getSCE(SC_INTFOOD)->val1;
-	if(sc->getSCE(SC_FOOD_INT_CASH))
-		int_ += sc->getSCE(SC_FOOD_INT_CASH)->val1;
 	if(sc->getSCE(SC_CHANGE))
 		int_ += sc->getSCE(SC_CHANGE)->val3;
 	if(sc->getSCE(SC_BATTLEORDERS))
@@ -6998,12 +6823,8 @@ 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_INCDEX))
-		dex += sc->getSCE(SC_INCDEX)->val1;
 	if(sc->getSCE(SC_DEXFOOD))
 		dex += sc->getSCE(SC_DEXFOOD)->val1;
-	if(sc->getSCE(SC_FOOD_DEX_CASH))
-		dex += sc->getSCE(SC_FOOD_DEX_CASH)->val1;
 	if(sc->getSCE(SC_BATTLEORDERS))
 		dex += 5;
 	if(sc->getSCE(SC_HAWKEYES))
@@ -7085,12 +6906,8 @@ 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_INCLUK))
-		luk += sc->getSCE(SC_INCLUK)->val1;
 	if(sc->getSCE(SC_LUKFOOD))
 		luk += sc->getSCE(SC_LUKFOOD)->val1;
-	if(sc->getSCE(SC_FOOD_LUK_CASH))
-		luk += sc->getSCE(SC_FOOD_LUK_CASH)->val1;
 	if(sc->getSCE(SC_TRUESIGHT))
 		luk += 5;
 	if(sc->getSCE(SC_GLORIA))
@@ -7262,8 +7079,6 @@ static unsigned short status_calc_batk(struct block_list *bl, status_change *sc,
 
 	if(sc->getSCE(SC_ATKPOTION))
 		batk += sc->getSCE(SC_ATKPOTION)->val1;
-	if(sc->getSCE(SC_BATKFOOD))
-		batk += sc->getSCE(SC_BATKFOOD)->val1;
 	if (sc->getSCE(SC_VOLCANO))
 		batk += sc->getSCE(SC_VOLCANO)->val2;
 #ifndef RENEWAL
@@ -7300,12 +7115,8 @@ 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_ALMIGHTY))
-		batk += 30;
 	if (sc->getSCE(SC_ULTIMATECOOK))
 		batk += 30;
-	if(sc->getSCE(SC_LIMIT_POWER_BOOSTER))
-		batk += sc->getSCE(SC_LIMIT_POWER_BOOSTER)->val1;
 	if(sc->getSCE(SC_SPARKCANDY))
 		batk += 20;
 	if(sc->getSCE(SC_SKF_ATK))
@@ -7480,14 +7291,10 @@ uint16 status_calc_consumablematk( status_change *sc, int32 matk ){
 
 	struct status_change_entry* sce;
 
-	if (sce = sc->getSCE(SC_MATKFOOD))
-		matk += sce->val1;
 	if (sce = sc->getSCE(SC_MANA_PLUS))
 		matk += sce->val1;
 	if (sce = sc->getSCE(SC_MATKPOTION))
 		matk += sce->val1;
-	if (sce = sc->getSCE(SC_LIMIT_POWER_BOOSTER))
-		matk += sce->val1;
 	if (sce = sc->getSCE(SC_SKF_MATK))
 		matk += sce->val1;
 	if (sce = sc->getSCE(SC_MTF_MATK))
@@ -7506,8 +7313,6 @@ uint16 status_calc_consumablematk( status_change *sc, int32 matk ){
 		matk += 30;
 	if (sc->getSCE(SC_MAGICCANDY))
 		matk += 30;
-	if (sc->getSCE(SC_ALMIGHTY))
-		matk += 30;
 	if (sc->getSCE(SC_2011RWC_SCROLL))
 		matk += 30;
 
@@ -7636,10 +7441,6 @@ static signed short status_calc_hit(struct block_list *bl, status_change *sc, in
 		hit += sc->getSCE(SC_PACKING_ENVELOPE10)->val1;
 	if (sc->getSCE(SC_ABYSS_SLAYER))
 		hit += sc->getSCE(SC_ABYSS_SLAYER)->val3;
-	if (sc->getSCE(SC_LIMIT_POWER_BOOSTER))
-		hit += sc->getSCE(SC_LIMIT_POWER_BOOSTER)->val1;
-	if (sc->getSCE(SC_ACARAJE))
-		hit += 5;
 	if (sc->getSCE(SC_INTENSIVE_AIM))
 		hit += 250;
 	if (sc->getSCE(SC_BUCHEDENOEL))
@@ -7760,8 +7561,6 @@ static signed short status_calc_flee(struct block_list *bl, status_change *sc, i
 		flee += sc->getSCE(SC_GROOMING)->val2;
 	if (sc->getSCE(SC_PACKING_ENVELOPE5))
 		flee += sc->getSCE(SC_PACKING_ENVELOPE5)->val1;
-	if (sc->getSCE(SC_LIMIT_POWER_BOOSTER))
-		flee += sc->getSCE(SC_LIMIT_POWER_BOOSTER)->val1;
 	if (sc->getSCE(SC_MYSTICPOWDER))
 		flee += 20;
 
@@ -7889,8 +7688,6 @@ static defType status_calc_def(struct block_list *bl, status_change *sc, int def
 		def -= def * sc->getSCE(SC_ASH)->val3/100;
 	if( sc->getSCE(SC_OVERED_BOOST) && bl->type == BL_HOM )
 		def -= def * sc->getSCE(SC_OVERED_BOOST)->val4 / 100;
-	if(sc->getSCE(SC_GLASTHEIM_ITEMDEF))
-		def += sc->getSCE(SC_GLASTHEIM_ITEMDEF)->val1;
 	if (sc->getSCE(SC_SOULGOLEM))
 		def += sc->getSCE(SC_SOULGOLEM)->val2;
 	if (sc->getSCE(SC_STONE_WALL))
@@ -8027,8 +7824,6 @@ static defType status_calc_mdef(struct block_list *bl, status_change *sc, int md
 		mdef += mdef * sc->getSCE(SC_SYMPHONYOFLOVER)->val3 / 100;
 	if (sc->getSCE(SC_ODINS_POWER))
 		mdef -= 20 * sc->getSCE(SC_ODINS_POWER)->val1;
-	if(sc->getSCE(SC_GLASTHEIM_ITEMDEF))
-		mdef += sc->getSCE(SC_GLASTHEIM_ITEMDEF)->val2;
 	if (sc->getSCE(SC_SOULGOLEM))
 		mdef += sc->getSCE(SC_SOULGOLEM)->val3;
 	if (sc->getSCE(SC_STONE_WALL))
@@ -8357,8 +8152,6 @@ static short status_calc_aspd(struct block_list *bl, status_change *sc, bool fix
 
 		if (sc->getSCE(sc_val = SC_ASPDPOTION3) || sc->getSCE(sc_val = SC_ASPDPOTION2) || sc->getSCE(sc_val = SC_ASPDPOTION1) || sc->getSCE(sc_val = SC_ASPDPOTION0))
 			bonus += sc->getSCE(sc_val)->val1;
-		if (sc->getSCE(SC_ATTHASTE_CASH))
-			bonus += sc->getSCE(SC_ATTHASTE_CASH)->val1;
 	} else {
 		if (sc->getSCE(SC_DONTFORGETME))
 			bonus -= sc->getSCE(SC_DONTFORGETME)->val2 / 10;
@@ -8433,14 +8226,10 @@ static short status_calc_aspd(struct block_list *bl, status_change *sc, bool fix
 			bonus += 5;
 		if( sc->getSCE(SC_SPARKCANDY) )
 			bonus += 25;
-		if( sc->getSCE(SC_ACARAJE) )
-			bonus += 10;
 		if( sc->getSCE(SC_SKF_ASPD) )
 			bonus += sc->getSCE(SC_SKF_ASPD)->val1;
 		if( sc->getSCE(SC_PORK_RIB_STEW) )
 			bonus += 5;
-		if( sc->getSCE(SC_CONTENTS_5) )
-			bonus += sc->getSCE(SC_CONTENTS_5)->val1;
 
 		map_session_data* sd = BL_CAST(BL_PC, bl);
 		uint8 skill_lv;
@@ -8491,8 +8280,6 @@ static short status_calc_fix_aspd(struct block_list *bl, status_change *sc, int
 		aspd -= sc->getSCE(SC_PACKING_ENVELOPE6)->val1 * 10;
 	if (sc->getSCE(SC_SINCERE_FAITH))
 		aspd -= 10 * sc->getSCE(SC_SINCERE_FAITH)->val2;
-	if( sc->getSCE(SC_LIMIT_POWER_BOOSTER) )
-		aspd -= 10;
 
 	return cap_value(aspd, 0, 2000); // Will be recap for proper bl anyway
 }
@@ -8582,9 +8369,6 @@ static short status_calc_aspd_rate(struct block_list *bl, status_change *sc, int
 		sc->getSCE(i=SC_ASPDPOTION0) )
 		aspd_rate -= sc->getSCE(i)->val2;
 
-	if (sc->getSCE(SC_ATTHASTE_CASH))
-		aspd_rate -= sc->getSCE(SC_ATTHASTE_CASH)->val2;
-
 	if(sc->getSCE(SC_DONTFORGETME))
 		aspd_rate += sc->getSCE(SC_DONTFORGETME)->val2;
 #ifdef RENEWAL
@@ -8650,14 +8434,10 @@ static short status_calc_aspd_rate(struct block_list *bl, status_change *sc, int
 		aspd_rate -= 50;
 	if( sc->getSCE(SC_SPARKCANDY) )
 		aspd_rate -= 250;
-	if( sc->getSCE(SC_ACARAJE) )
-		aspd_rate -= 100;
 	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;
-	if ( sc->getSCE(SC_CONTENTS_5) )
-		aspd_rate -= sc->getSCE(SC_CONTENTS_5)->val1 * 10;
 
 	return (short)cap_value(aspd_rate,0,SHRT_MAX);
 }
@@ -11089,10 +10869,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			val2 = 50*(2+type-SC_ASPDPOTION0);
 			break;
 
-		case SC_ATTHASTE_CASH:
-			val2 = 50*val1; // Just custom for pre-re
-			break;
-
 		case SC_NOCHAT:
 			// A hardcoded interval of 60 seconds is expected, as the time that SC_NOCHAT uses is defined by
 			// mmocharstatus.manner, each negative point results in 1 minute with this status activated.
@@ -11770,14 +11546,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 		case SC_KAIZEL:
 			val2 = 10*val1; // % of life to be revived with
 			break;
-		// case SC_ARMOR_ELEMENT_WATER:
-		// case SC_ARMOR_ELEMENT_EARTH:
-		// case SC_ARMOR_ELEMENT_FIRE:
-		// case SC_ARMOR_ELEMENT_WIND:
-		// case SC_ARMOR_RESIST:
-			// Mod your resistance against elements:
-			// val1 = water | val2 = earth | val3 = fire | val4 = wind
-			// break;
 		// case ????:
 			// Place here SCs that have no SCB_* data, no skill associated, no ICON
 			// associated, and yet are not wrong/unknown. [Skotlex]
@@ -12678,27 +12446,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				val4 = 1;
 			break;
 
-		case SC_GLASTHEIM_ATK:
-			val1 = 100; // Undead/Demon MDEF ignore rate
-			break;
-		case SC_GLASTHEIM_HEAL:
-			val1 = 100; // Heal Power rate bonus
-			val2 = 50; // Received heal rate bonus
-			break;
-		case SC_GLASTHEIM_HIDDEN:
-			val1 = 90; // Damage rate reduction bonus
-			break;
-		case SC_GLASTHEIM_STATE:
-			val1 = 20; // All-stat bonus
-			break;
-		case SC_GLASTHEIM_ITEMDEF:
-			val1 = 200; // DEF bonus
-			val2 = 50; // MDEF bonus
-			break;
-		case SC_GLASTHEIM_HPSP:
-			val1 = 10000; // HP bonus
-			val2 = 1000; // SP bonus
-			break;
 		case SC_ANCILLA:
 			val1 = 15; // Heal Power rate bonus
 			val2 = 30; // SP Recovery rate bonus
@@ -12981,9 +12728,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			val2 = 3;	// HP & SP restoration by 3%, Hit +3
 			val3 = 7;	// Critical +7
 			break;
-		case SC_EP16_DEF:
-			status_heal(bl, 1000, 0, 1);
-			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()) {
@@ -16304,8 +16048,8 @@ void StatusDatabase::loadingFinished(){
 		auto& status = entry.second;
 
 		if( status->script != nullptr ){
-			// Maybe some have already been set in the database, but just to be sure, trigger recalculation for everything battle relevant
-			status->calc_flag |= this->SCB_BATTLE;
+			// Trigger recalculation for everything for now
+			status->calc_flag |= this->SCB_ALL;
 		}
 
 		if (status->type == SC_HALLUCINATION && !battle_config.display_hallucination) // Disable Hallucination.