瀏覽代碼

Homunculus updates as of 20220602 (#7586)

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
munkrej 2 年之前
父節點
當前提交
c6c9babb5e

+ 1 - 1
conf/battle/homunc.conf

@@ -50,7 +50,7 @@ homunculus_auto_vapor: 80
 homunculus_max_level: 99
 
 // Max level for Homunculus S
-homunculus_S_max_level: 175
+homunculus_S_max_level: 250
 
 // Growth level for Homunculus S
 // This is the level at which homunculus S can use their growth tables

+ 16 - 0
db/homun_skill_tree.txt

@@ -92,23 +92,36 @@
 6048,8024,10,106,0,0,0,0,0,0,0,0,0,0,0	//MH_ERASER_CUTTER
 6048,8025,10,121,0,0,0,0,0,0,0,0,0,0,0 	//MH_XENO_SLASHER
 6048,8026,5,137,0,0,0,0,0,0,0,0,0,0,0 	//MH_SILENT_BREEZE
+6048,8046,10,210,0,0,0,0,0,0,0,0,0,0,0 	//MH_CLASSY_FLUTTER
+6048,8047,10,215,0,0,0,0,0,0,0,0,0,0,0 	//MH_TWISTER_CUTTER
+6048,8048,10,230,0,0,0,0,0,0,0,0,0,0,0 	//MH_ABSOLUTE_ZEPHYR
 //Bayeri
 6049,8031,10,105,0,0,0,0,0,0,0,0,0,0,0 	//MH_STAHL_HORN
 6049,8032,5,112,0,0,0,0,0,0,0,0,0,0,0 	//MH_GOLDENE_FERSE
 6049,8033,5,121,0,0,0,0,0,0,0,0,0,0,0 	//MH_STEINWAND
 6049,8034,10,138,0,0,0,0,0,0,0,0,0,0,0	//MH_HEILIGE_STANGE
 6049,8035,5,130,0,0,0,0,0,0,0,0,0,0,0	//MH_ANGRIFFS_MODUS
+6049,8055,10,210,0,0,0,0,0,0,0,0,0,0,0 	//MH_LICHT_GEHORN
+6049,8056,10,215,0,0,0,0,0,0,0,0,0,0,0 	//MH_GLANZEN_SPIES
+6049,8057,10,230,0,0,0,0,0,0,0,0,0,0,0 	//MH_HEILIGE_PFERD
+6049,8058,10,230,0,0,0,0,0,0,0,0,0,0,0 	//MH_GOLDENE_TONE
 //Sera
 6050,8018,5,132,0,0,0,0,0,0,0,0,0,0,0 	//MH_SUMMON_LEGION
 6050,8019,10,105,0,0,0,0,0,0,0,0,0,0,0 	//MH_NEEDLE_OF_PARALYZE
 6050,8020,5,116,0,0,0,0,0,0,0,0,0,0,0 	//MH_POISON_MIST
 6050,8021,10,123,0,0,0,0,0,0,0,0,0,0,0 	//MH_PAIN_KILLER
+6050,8052,10,210,0,0,0,0,0,0,0,0,0,0,0 	//MH_POLISHING_NEEDLE
+6050,8053,10,215,0,0,0,0,0,0,0,0,0,0,0 	//MH_TOXIN_OF_MANDARA
+6050,8054,10,230,0,0,0,0,0,0,0,0,0,0,0 	//MH_NEEDLE_STINGER
 //Dieter
 6051,8039,5,122,0,0,0,0,0,0,0,0,0,0,0 	//MH_MAGMA_FLOW
 6051,8040,5,116,0,0,0,0,0,0,0,0,0,0,0 	//MH_GRANITIC_ARMOR
 6051,8041,10,109,0,0,0,0,0,0,0,0,0,0,0 	//MH_LAVA_SLIDE
 6051,8042,10,131,0,0,0,0,0,0,0,0,0,0,0 	//MH_PYROCLASTIC
 6051,8043,5,102,0,0,0,0,0,0,0,0,0,0,0 	//MH_VOLCANIC_ASH
+6051,8059,10,210,0,0,0,0,0,0,0,0,0,0,0 	//MH_BLAZING_LAVA
+6051,8044,10,215,0,0,0,0,0,0,0,0,0,0,0 	//MH_BLAST_FORGE
+6051,8045,10,230,0,0,0,0,0,0,0,0,0,0,0 	//MH_TEMPERING
 //Elanor
 6052,8027,1,100,0,0,0,0,0,0,0,0,0,0,0 	//MH_STYLE_CHANGE
 6052,8028,5,100,0,0,0,0,0,0,0,0,0,0,0 	//MH_SONIC_CRAW
@@ -117,3 +130,6 @@
 6052,8036,5,100,0,0,0,0,0,0,0,0,0,0,0 	//MH_TINDER_BREAKER
 6052,8037,5,112,0,0,0,0,0,0,0,0,0,0,0 	//MH_CBC
 6052,8038,5,133,0,0,0,0,0,0,0,0,0,0,0 	//MH_EQC
+6052,8049,10,210,0,0,0,0,0,0,0,0,0,0,0 	//MH_BRUSHUP_CLAW
+6052,8050,10,215,0,0,0,0,0,0,0,0,0,0,0 	//MH_BLAZING_AND_FURIOUS
+6052,8051,10,230,0,0,0,0,0,0,0,0,0,0,0 	//MH_THE_ONE_FIGHTER_RISES

+ 151 - 0
db/re/exp_homun.yml

@@ -379,3 +379,154 @@ Body:
     Exp: 87140000
   - Level: 174
     Exp: 94875000
+# TODO: unconfirmed values from here
+  - Level: 175
+    Exp: 104362500
+  - Level: 176
+    Exp: 112711500
+  - Level: 177
+    Exp: 121728420
+  - Level: 178
+    Exp: 131466693
+  - Level: 179
+    Exp: 141984028
+  - Level: 180
+    Exp: 153342750
+  - Level: 181
+    Exp: 165610170
+  - Level: 182
+    Exp: 178858983
+  - Level: 183
+    Exp: 193167701
+  - Level: 184
+    Exp: 208621117
+  - Level: 185
+    Exp: 225310806
+  - Level: 186
+    Exp: 243335670
+  - Level: 187
+    Exp: 262802523
+  - Level: 188
+    Exp: 283826724
+  - Level: 189
+    Exp: 306532861
+  - Level: 190
+    Exp: 331055489
+  - Level: 191
+    Exp: 357539928
+  - Level: 192
+    Exp: 386143122
+  - Level: 193
+    Exp: 417034571
+  - Level: 194
+    Exp: 450397336
+  - Level: 195
+    Exp: 486429122
+  - Level: 196
+    Exp: 525343451
+  - Level: 197
+    Exp: 567370927
+  - Level: 198
+    Exp: 612760601
+  - Level: 199
+    Exp: 661781449
+  - Level: 200
+    Exp: 714723964
+  - Level: 201
+    Exp: 771901881
+  - Level: 202
+    Exp: 833654031
+  - Level: 203
+    Exp: 900346353
+  - Level: 204
+    Exp: 972374061
+  - Level: 205
+    Exp: 1050163985
+  - Level: 206
+    Exp: 1134177103
+  - Level: 207
+    Exp: 1224911271
+  - Level: 208
+    Exp: 1322904172
+  - Level: 209
+    Exp: 1428736505
+  - Level: 210
+    Exp: 1543035425
+  - Level: 211
+    Exp: 1666478259
+  - Level: 212
+    Exp: 1799796519
+  - Level: 213
+    Exp: 1943780240
+  - Level: 214
+    Exp: 2099282659
+  - Level: 215
+    Exp: 2267225271
+  - Level: 216
+    Exp: 2448603292
+  - Level: 217
+    Exp: 2644491555
+  - Level: 218
+    Exp: 2856050879
+  - Level: 219
+    Exp: 3084534949
+  - Level: 220
+    Exp: 3331297744
+  - Level: 221
+    Exp: 3597801563
+  - Level: 222
+    Exp: 3885625688
+  - Level: 223
+    Exp: 4196475743
+  - Level: 224
+    Exp: 4532193802
+  - Level: 225
+    Exp: 4894769306
+  - Level: 226
+    Exp: 5286350850
+  - Level: 227
+    Exp: 5709258918
+  - Level: 228
+    Exp: 6165999631
+  - Level: 229
+    Exp: 6659279601
+  - Level: 230
+    Exp: 7192021969
+  - Level: 231
+    Exp: 7767383726
+  - Level: 232
+    Exp: 8388774424
+  - Level: 233
+    Exp: 9059876377
+  - Level: 234
+    Exp: 9784666487
+  - Level: 235
+    Exp: 10567439805
+  - Level: 236
+    Exp: 11412834989
+  - Level: 237
+    Exp: 12325861788
+  - Level: 238
+    Exp: 13311930731
+  - Level: 239
+    Exp: 14376885189
+  - Level: 240
+    Exp: 15527036004
+  - Level: 241
+    Exp: 16769198884
+  - Level: 242
+    Exp: 18110734794
+  - Level: 243
+    Exp: 19559593577
+  - Level: 244
+    Exp: 21124361063
+  - Level: 245
+    Exp: 22814309948
+  - Level: 246
+    Exp: 24639454743
+  - Level: 247
+    Exp: 26610611122
+  - Level: 248
+    Exp: 28739460011
+  - Level: 249
+    Exp: 31038616811

+ 839 - 0
db/re/skill_db.yml

@@ -42624,6 +42624,845 @@ Body:
         PathCheck: true
         RangedSingleUnit: true
     Status: Ash
+  - Id: 8044
+    Name: MH_BLAST_FORGE
+    Description: Blast Forge
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Ground
+    DamageFlags:
+      Splash: true
+    Range: 1
+    Hit: Single
+    HitCount: 1
+    Element: Fire
+    ActiveInstance: 1
+    CastTime:
+      - Level: 1
+        Time: 5000
+      - Level: 2
+        Time: 5000
+      - Level: 3
+        Time: 5000
+      - Level: 4
+        Time: 4500
+      - Level: 5
+        Time: 4500
+      - Level: 6
+        Time: 4500
+      - Level: 7
+        Time: 4000
+      - Level: 8
+        Time: 4000
+      - Level: 9
+        Time: 4000
+      - Level: 10
+        Time: 3500
+    AfterCastActDelay: 1000
+    Duration1: 5000
+    FixedCastTime: 1000
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 52
+        - Level: 2
+          Amount: 59
+        - Level: 3
+          Amount: 66
+        - Level: 4
+          Amount: 73
+        - Level: 5
+          Amount: 80
+        - Level: 6
+          Amount: 87
+        - Level: 7
+          Amount: 94
+        - Level: 8
+          Amount: 101
+        - Level: 9
+          Amount: 108
+        - Level: 10
+          Amount: 115
+    Unit:
+      Id: Lava_Slide
+      Layout:
+        - Level: 1
+          Size: 1
+        - Level: 2
+          Size: 1
+        - Level: 3
+          Size: 1
+        - Level: 4
+          Size: 1
+        - Level: 5
+          Size: 2
+        - Level: 6
+          Size: 2
+        - Level: 7
+          Size: 2
+        - Level: 8
+          Size: 2
+        - Level: 9
+          Size: 3
+        - Level: 10
+          Size: 3
+      Interval: 1000
+      Target: Enemy
+      Flag:
+        NoReiteration: true
+        NoOverlap: true
+        PathCheck: true
+  - Id: 8045
+    Name: MH_TEMPERING
+    Description: Tempering
+    MaxLevel: 10
+    TargetType: Self
+    DamageFlags:
+      NoDamage: true
+    CastTime:
+      - Level: 1
+        Time: 1000
+      - Level: 2
+        Time: 1500
+      - Level: 3
+        Time: 2000
+      - Level: 4
+        Time: 2500
+      - Level: 5
+        Time: 3000
+      - Level: 6
+        Time: 3500
+      - Level: 7
+        Time: 4000
+      - Level: 8
+        Time: 4500
+      - Level: 9
+        Time: 5000
+      - Level: 10
+        Time: 5500
+    AfterCastActDelay: 1000
+    Duration1:
+      - Level: 1
+        Time: 45000
+      - Level: 2
+        Time: 60000
+      - Level: 3
+        Time: 75000
+      - Level: 4
+        Time: 90000
+      - Level: 5
+        Time: 105000
+      - Level: 6
+        Time: 120000
+      - Level: 7
+        Time: 135000
+      - Level: 8
+        Time: 150000
+      - Level: 9
+        Time: 165000
+      - Level: 10
+        Time: 180000
+    FixedCastTime: 200
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 83
+        - Level: 2
+          Amount: 91
+        - Level: 3
+          Amount: 99
+        - Level: 4
+          Amount: 107
+        - Level: 5
+          Amount: 115
+        - Level: 6
+          Amount: 123
+        - Level: 7
+          Amount: 131
+        - Level: 8
+          Amount: 139
+        - Level: 9
+          Amount: 147
+        - Level: 10
+          Amount: 155
+    Status: Tempering
+  - Id: 8046
+    Name: MH_CLASSY_FLUTTER
+    Description: Classy Flutter
+    MaxLevel: 10
+    DamageFlags:
+      NoDamage: true
+  - Id: 8047
+    Name: MH_TWISTER_CUTTER
+    Description: Twister Cutter
+    MaxLevel: 10
+    Type: Magic
+    TargetType: Attack
+    DamageFlags:
+      IgnoreDefense: true
+    Range: 7
+    Element: Wind
+    Hit: Multi_Hit
+    HitCount: -2
+    CastCancel: true
+    CastTime: # !TODO: Confirm cast time
+      - Level: 1
+        Time: 600
+      - Level: 2
+        Time: 700
+      - Level: 3
+        Time: 800
+      - Level: 4
+        Time: 900
+      - Level: 5
+        Time: 1000
+      - Level: 6
+        Time: 1100
+      - Level: 7
+        Time: 1200
+      - Level: 8
+        Time: 1300
+      - Level: 9
+        Time: 1400
+      - Level: 10
+        Time: 1500
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 106
+        - Level: 2
+          Amount: 112
+        - Level: 3
+          Amount: 118
+        - Level: 4
+          Amount: 124
+        - Level: 5
+          Amount: 130
+        - Level: 6
+          Amount: 136
+        - Level: 7
+          Amount: 142
+        - Level: 8
+          Amount: 148
+        - Level: 9
+          Amount: 154
+        - Level: 10
+          Amount: 160
+  - Id: 8048
+    Name: MH_ABSOLUTE_ZEPHYR
+    Description: Absolute Zephyr
+    MaxLevel: 10
+    Type: Magic
+    TargetType: Attack
+    DamageFlags:
+      Splash: true
+      IgnoreDefense: true
+    Range: 7
+    Hit: Multi_Hit
+    HitCount: -6
+    Element: Wind
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 2
+      - Level: 5
+        Area: 2
+      - Level: 6
+        Area: 2
+      - Level: 7
+        Area: 3
+      - Level: 8
+        Area: 3
+      - Level: 9
+        Area: 3
+      - Level: 10
+        Area: 4
+    CastTime: # !TODO: Confirm cast time
+      - Level: 1
+        Time: 600
+      - Level: 2
+        Time: 700
+      - Level: 3
+        Time: 800
+      - Level: 4
+        Time: 900
+      - Level: 5
+        Time: 1000
+      - Level: 6
+        Time: 1100
+      - Level: 7
+        Time: 1200
+      - Level: 8
+        Time: 1300
+      - Level: 9
+        Time: 1400
+      - Level: 10
+        Time: 1500
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 122
+        - Level: 2
+          Amount: 129
+        - Level: 3
+          Amount: 136
+        - Level: 4
+          Amount: 143
+        - Level: 5
+          Amount: 150
+        - Level: 6
+          Amount: 157
+        - Level: 7
+          Amount: 164
+        - Level: 8
+          Amount: 171
+        - Level: 9
+          Amount: 178
+        - Level: 10
+          Amount: 185
+  - Id: 8049
+    Name: MH_BRUSHUP_CLAW
+    Description: Brushup Claw
+    MaxLevel: 10
+    DamageFlags:
+      NoDamage: true
+  - Id: 8050
+    Name: MH_BLAZING_AND_FURIOUS
+    Description: Blazing And Furious
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Support
+    DamageFlags:
+      NoDamage: true
+      IgnoreDefense: true
+      Splash: true
+    Range: 7
+    Hit: Multi_Hit
+    HitCount: 1
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 1
+      - Level: 5
+        Area: 2
+      - Level: 6
+        Area: 2
+      - Level: 7
+        Area: 2
+      - Level: 8
+        Area: 2
+      - Level: 9
+        Area: 3
+      - Level: 10
+        Area: 3
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 103
+        - Level: 2
+          Amount: 108
+        - Level: 3
+          Amount: 113
+        - Level: 4
+          Amount: 118
+        - Level: 5
+          Amount: 123
+        - Level: 6
+          Amount: 128
+        - Level: 7
+          Amount: 133
+        - Level: 8
+          Amount: 138
+        - Level: 9
+          Amount: 143
+        - Level: 10
+          Amount: 148
+      SpiritSphereCost: 1
+  - Id: 8051
+    Name: MH_THE_ONE_FIGHTER_RISES
+    Description: The One Fighter Rises
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Self
+    DamageFlags:
+      IgnoreDefense: true
+      Splash: true
+    Range: 7
+    Hit: Single
+    HitCount: 1
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 1
+      - Level: 5
+        Area: 2
+      - Level: 6
+        Area: 2
+      - Level: 7
+        Area: 2
+      - Level: 8
+        Area: 2
+      - Level: 9
+        Area: 3
+      - Level: 10
+        Area: 3
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 100
+        - Level: 2
+          Amount: 106
+        - Level: 3
+          Amount: 112
+        - Level: 4
+          Amount: 118
+        - Level: 5
+          Amount: 124
+        - Level: 6
+          Amount: 130
+        - Level: 7
+          Amount: 136
+        - Level: 8
+          Amount: 142
+        - Level: 9
+          Amount: 148
+        - Level: 10
+          Amount: 154
+  - Id: 8052
+    Name: MH_POLISHING_NEEDLE
+    Description: Polishing Needle
+    MaxLevel: 10
+    DamageFlags:
+      NoDamage: true
+  - Id: 8053
+    Name: MH_TOXIN_OF_MANDARA
+    Description: Toxin Of Mandara
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Attack
+    DamageFlags:
+      IgnoreDefense: true
+      Splash: true
+    Range: 2
+    Hit: Single
+    HitCount: 1
+    Element: Neutral
+    CastTime:
+      - Level: 1
+        Time: 1000
+      - Level: 2
+        Time: 1000
+      - Level: 3
+        Time: 1000
+      - Level: 4
+        Time: 1100
+      - Level: 5
+        Time: 1100
+      - Level: 6
+        Time: 1100
+      - Level: 7
+        Time: 1200
+      - Level: 8
+        Time: 1200
+      - Level: 9
+        Time: 1200
+      - Level: 10
+        Time: 1300
+    Duration1:
+      - Level: 1
+        Time: 2500
+      - Level: 2
+        Time: 3000
+      - Level: 3
+        Time: 3500
+      - Level: 4
+        Time: 4000
+      - Level: 5
+        Time: 4500
+      - Level: 6
+        Time: 5000
+      - Level: 7
+        Time: 5500
+      - Level: 8
+        Time: 6000
+      - Level: 9
+        Time: 6500
+      - Level: 10
+        Time: 7000
+    FixedCastTime:
+      - Level: 1
+        Time: 500
+      - Level: 2
+        Time: 500
+      - Level: 3
+        Time: 500
+      - Level: 4
+        Time: 400
+      - Level: 5
+        Time: 400
+      - Level: 6
+        Time: 400
+      - Level: 7
+        Time: 300
+      - Level: 8
+        Time: 300
+      - Level: 9
+        Time: 300
+      - Level: 10
+        Time: 200
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 2
+      - Level: 5
+        Area: 2
+      - Level: 6
+        Area: 2
+      - Level: 7
+        Area: 3
+      - Level: 8
+        Area: 3
+      - Level: 9
+        Area: 3
+      - Level: 10
+        Area: 4
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 60
+        - Level: 2
+          Amount: 65
+        - Level: 3
+          Amount: 70
+        - Level: 4
+          Amount: 75
+        - Level: 5
+          Amount: 80
+        - Level: 6
+          Amount: 85
+        - Level: 7
+          Amount: 90
+        - Level: 8
+          Amount: 95
+        - Level: 9
+          Amount: 100
+        - Level: 10
+          Amount: 105
+    Status: Toxin_of_Mandara
+  - Id: 8054
+    Name: MH_NEEDLE_STINGER
+    Description: Needle Stinger
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Attack
+    DamageFlags:
+      IgnoreDefense: true
+    Range: 7
+    Hit: Single
+    HitCount: 1
+    Element: Poison
+    CastTime:
+      - Level: 1
+        Time: 1000
+      - Level: 2
+        Time: 1000
+      - Level: 3
+        Time: 1000
+      - Level: 4
+        Time: 1100
+      - Level: 5
+        Time: 1100
+      - Level: 6
+        Time: 1100
+      - Level: 7
+        Time: 1200
+      - Level: 8
+        Time: 1200
+      - Level: 9
+        Time: 1200
+      - Level: 10
+        Time: 1300
+    FixedCastTime:
+      - Level: 1
+        Time: 500
+      - Level: 2
+        Time: 500
+      - Level: 3
+        Time: 500
+      - Level: 4
+        Time: 400
+      - Level: 5
+        Time: 400
+      - Level: 6
+        Time: 400
+      - Level: 7
+        Time: 300
+      - Level: 8
+        Time: 300
+      - Level: 9
+        Time: 300
+      - Level: 10
+        Time: 200
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 74
+        - Level: 2
+          Amount: 82
+        - Level: 3
+          Amount: 90
+        - Level: 4
+          Amount: 98
+        - Level: 5
+          Amount: 106
+        - Level: 6
+          Amount: 114
+        - Level: 7
+          Amount: 122
+        - Level: 8
+          Amount: 130
+        - Level: 9
+          Amount: 138
+        - Level: 10
+          Amount: 146
+  - Id: 8055
+    Name: MH_LICHT_GEHORN
+    Description: Licht Gehorn
+    MaxLevel: 10
+    DamageFlags:
+      NoDamage: true
+  - Id: 8056
+    Name: MH_GLANZEN_SPIES
+    Description: Glanzen Spies
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Attack
+    DamageFlags:
+      IgnoreDefense: true
+    Range: 3
+    Element: Holy
+    Hit: Single
+    HitCount: 1
+    FixedCastTime: 500
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 60
+        - Level: 2
+          Amount: 65
+        - Level: 3
+          Amount: 70
+        - Level: 4
+          Amount: 75
+        - Level: 5
+          Amount: 80
+        - Level: 6
+          Amount: 85
+        - Level: 7
+          Amount: 90
+        - Level: 8
+          Amount: 95
+        - Level: 9
+          Amount: 100
+        - Level: 10
+          Amount: 105
+  - Id: 8057
+    Name: MH_HEILIGE_PFERD
+    Description: Heilige Pferd
+    MaxLevel: 10
+    Type: Magic
+    TargetType: Self
+    DamageFlags:
+      Splash: true
+      IgnoreDefense: true
+    Hit: Single
+    HitCount: 1
+    Element: Holy
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 1
+      - Level: 5
+        Area: 2
+      - Level: 6
+        Area: 2
+      - Level: 7
+        Area: 2
+      - Level: 8
+        Area: 2
+      - Level: 9
+        Area: 3
+      - Level: 10
+        Area: 3
+    CastTime: # !TODO: Confirm cast time
+      - Level: 1
+        Time: 600
+      - Level: 2
+        Time: 700
+      - Level: 3
+        Time: 800
+      - Level: 4
+        Time: 900
+      - Level: 5
+        Time: 1000
+      - Level: 6
+        Time: 1100
+      - Level: 7
+        Time: 1200
+      - Level: 8
+        Time: 1300
+      - Level: 9
+        Time: 1400
+      - Level: 10
+        Time: 1500
+    FixedCastTime:
+      - Level: 1
+        Time: 2000
+      - Level: 2
+        Time: 1800
+      - Level: 3
+        Time: 1600
+      - Level: 4
+        Time: 1400
+      - Level: 5
+        Time: 1200
+      - Level: 6
+        Time: 1000
+      - Level: 7
+        Time: 800
+      - Level: 8
+        Time: 600
+      - Level: 9
+        Time: 400
+      - Level: 10
+        Time: 200
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 122
+        - Level: 2
+          Amount: 129
+        - Level: 3
+          Amount: 136
+        - Level: 4
+          Amount: 143
+        - Level: 5
+          Amount: 150
+        - Level: 6
+          Amount: 157
+        - Level: 7
+          Amount: 164
+        - Level: 8
+          Amount: 171
+        - Level: 9
+          Amount: 178
+        - Level: 10
+          Amount: 185
+  - Id: 8058
+    Name: MH_GOLDENE_TONE
+    Description: Goldene Tone
+    MaxLevel: 10
+    TargetType: Self
+    DamageFlags:
+      NoDamage: true
+    CastTime:
+      - Level: 1
+        Time: 1000
+      - Level: 2
+        Time: 1500
+      - Level: 3
+        Time: 2000
+      - Level: 4
+        Time: 2500
+      - Level: 5
+        Time: 3000
+      - Level: 6
+        Time: 3500
+      - Level: 7
+        Time: 4000
+      - Level: 8
+        Time: 4500
+      - Level: 9
+        Time: 5000
+      - Level: 10
+        Time: 5500
+    AfterCastActDelay: 1000
+    Duration1:
+      - Level: 1
+        Time: 30000
+      - Level: 2
+        Time: 40000
+      - Level: 3
+        Time: 50000
+      - Level: 4
+        Time: 60000
+      - Level: 5
+        Time: 70000
+      - Level: 6
+        Time: 80000
+      - Level: 7
+        Time: 90000
+      - Level: 8
+        Time: 100000
+      - Level: 9
+        Time: 110000
+      - Level: 10
+        Time: 120000
+    FixedCastTime: 200
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 124
+        - Level: 2
+          Amount: 133
+        - Level: 3
+          Amount: 142
+        - Level: 4
+          Amount: 151
+        - Level: 5
+          Amount: 160
+        - Level: 6
+          Amount: 169
+        - Level: 7
+          Amount: 178
+        - Level: 8
+          Amount: 187
+        - Level: 9
+          Amount: 196
+        - Level: 10
+          Amount: 205
+    Status: Goldene_Tone
+  - Id: 8059
+    Name: MH_BLAZING_LAVA
+    Description: Blazing Lava
+    MaxLevel: 10
+    DamageFlags:
+      NoDamage: true
   - Id: 8201
     Name: MS_BASH
     Description: Bash

+ 18 - 0
db/re/status.yml

@@ -8530,3 +8530,21 @@ Body:
       NoClearance: true
   - Status: WeaponBreaker
     DurationLookup: NPC_WEAPONBRAKER
+  - Status: Tempering
+    Icon: EFST_TEMPERING
+    DurationLookup: MH_TEMPERING
+    CalcFlags:
+      Patk: true
+  - Status: Goldene_Tone
+    Icon: EFST_GOLDENE_TONE
+    DurationLookup: MH_GOLDENE_TONE
+    CalcFlags:
+      Res: true
+      Mres: true
+  - Status: Toxin_of_Mandara
+    Icon: EFST_TOXIN_OF_MANDARA
+    DurationLookup: MH_TOXIN_OF_MANDARA
+    Flags:
+      Debuff: true
+    CalcFlags:
+      Res: true

+ 1 - 0
src/common/database.cpp

@@ -114,6 +114,7 @@ bool YamlDatabase::load(const std::string& path) {
 		ShowError( "Failed to load %s database file from '" CL_WHITE "%s" CL_RESET "'.\n", this->type.c_str(), path.c_str() );
 		ShowError( "There is likely a syntax error in the file.\n" );
 		ShowError( "Error message: %s\n", e.what() );
+		aFree(buf);
 		return false;
 	}
 

+ 2 - 2
src/common/mmo.hpp

@@ -89,7 +89,7 @@ typedef uint32 t_itemid;
 #endif
 #define MAX_FAME 1000000000 ///Max fame points
 #define MAX_CART 100 ///Maximum item in cart
-#define MAX_SKILL 1465 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
+#define MAX_SKILL 1481 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
 #define DEFAULT_WALK_SPEED 150 ///Default walk speed
 #define MIN_WALK_SPEED 20 ///Min walk speed
 #define MAX_WALK_SPEED 1000 ///Max walk speed
@@ -179,7 +179,7 @@ const t_itemid WEDDING_RING_F = 2635;
 
 //Base Homun skill.
 #define HM_SKILLBASE 8001
-#define MAX_HOMUNSKILL 43
+#define MAX_HOMUNSKILL 59
 #define MAX_HOMUNCULUS_CLASS	52	//[orn], Increased to 60 from 16 to allow new Homun-S.
 #define HM_CLASS_BASE 6001
 #define HM_CLASS_MAX (HM_CLASS_BASE+MAX_HOMUNCULUS_CLASS-1)

+ 43 - 7
src/map/battle.cpp

@@ -2479,6 +2479,7 @@ static int battle_range_type(struct block_list *src, struct block_list *target,
 		case SHC_FATAL_SHADOW_CROW: // 9 cell cast range.
 		case MT_RUSH_QUAKE: // 9 cell cast range.
 		case ABC_UNLUCKY_RUSH: // 7 cell cast range.
+		case MH_THE_ONE_FIGHTER_RISES: // 7 cell cast range.
 		//case ABC_DEFT_STAB: // 2 cell cast range???
 		case NPC_MAXPAIN_ATK:
 			return BF_SHORT;
@@ -3894,6 +3895,14 @@ static void battle_calc_multi_attack(struct Damage* wd, struct block_list *src,s
 			if( tsc && tsc->getSCE(SC_JYUMONJIKIRI) )
 				wd->div_ = wd->div_ * -1;// needs more info
 			break;
+		case MH_BLAZING_AND_FURIOUS: {
+			struct homun_data *hd = BL_CAST(BL_HOM, src);
+			if (hd) {
+				wd->div_ = hd->homunculus.spiritball;
+				hom_delspiritball(hd, MAX_SPIRITBALL, 1);
+			}
+			break;
+		}
 #ifdef RENEWAL
 		case AS_POISONREACT:
 			skill_lv = pc_checkskill(sd, TF_DOUBLE);
@@ -4964,22 +4973,40 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			skillratio += -100 + 20 * skill_lv;
 			break;
 		case MH_NEEDLE_OF_PARALYZE:
-			skillratio += -100 + 450 * skill_lv * status_get_lv(src) / 100 + sstatus->dex / 6; // !TODO: Confirm Base Level and DEX bonus
+			skillratio += -100 + 450 * skill_lv * status_get_lv(src) / 100 + sstatus->dex; // !TODO: Confirm Base Level and DEX bonus
+			break;
+		case MH_TOXIN_OF_MANDARA:
+			skillratio += -100 + 400 + 450 * skill_lv * status_get_lv(src) / 100 + sstatus->dex; // !TODO: Confirm Base Level and DEX bonus
+			break;
+		case MH_NEEDLE_STINGER:
+			skillratio += -100 + 200 + 500 * skill_lv * status_get_lv(src) / 100 + sstatus->dex; // !TODO: Confirm Base Level and DEX bonus
 			break;
 		case MH_STAHL_HORN:
-			skillratio += -100 + 1000 + 300 * skill_lv * status_get_lv(src) / 150 + sstatus->vit / 6; // !TODO: Confirm VIT bonus
+			skillratio += -100 + 1000 + 300 * skill_lv * status_get_lv(src) / 150 + sstatus->vit; // !TODO: Confirm VIT bonus
+			break;
+		case MH_GLANZEN_SPIES:
+			skillratio += -100 + 300 + 450 * skill_lv * status_get_lv(src) / 100 + sstatus->vit; // !TODO: Confirm VIT bonus
 			break;
 		case MH_LAVA_SLIDE:
 			skillratio += -100 + 50 * skill_lv;
 			break;
+		case MH_BLAST_FORGE:
+			skillratio += -100 + 70 * skill_lv * status_get_lv(src) / 100 + sstatus->str;
+			break;
 		case MH_SONIC_CRAW:
 			skillratio += -100 + 60 * skill_lv * status_get_lv(src) / 150;
 			break;
+		case MH_BLAZING_AND_FURIOUS:
+			skillratio += -100 + 80 * skill_lv * status_get_lv(src) / 100 + sstatus->str;
+			break;
+		case MH_THE_ONE_FIGHTER_RISES:
+			skillratio += -100 + 580 * skill_lv * status_get_lv(src) / 100 + sstatus->str;
+			break;
 		case MH_SILVERVEIN_RUSH:
-			skillratio += -100 + 250 * skill_lv * status_get_lv(src) / 100 + sstatus->str / 6; // !TODO: Confirm STR bonus
+			skillratio += -100 + 250 * skill_lv * status_get_lv(src) / 100 + sstatus->str; // !TODO: Confirm STR bonus
 			break;
 		case MH_MIDNIGHT_FRENZY:
-			skillratio += -100 + 450 * skill_lv * status_get_lv(src) / 150 + sstatus->str / 6; // !TODO: Confirm STR bonus
+			skillratio += -100 + 450 * skill_lv * status_get_lv(src) / 150 + sstatus->str; // !TODO: Confirm STR bonus
 			break;
 		case MH_MAGMA_FLOW:
 			skillratio += -100 + (100 * skill_lv + 3 * status_get_lv(src)) * status_get_lv(src) / 120;
@@ -7437,13 +7464,22 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						break;
 					case MH_ERASER_CUTTER:
 					case MH_XENO_SLASHER:
-						skillratio += -100 + 450 * skill_lv * status_get_lv(src) / 100 + sstatus->int_ / 6; // !TODO: Confirm Base Level and INT bonus
+						skillratio += -100 + 450 * skill_lv * status_get_lv(src) / 100 + sstatus->int_; // !TODO: Confirm Base Level and INT bonus
+						break;
+					case MH_TWISTER_CUTTER:
+						skillratio += -100 + 480 * skill_lv * status_get_lv(src) / 100 + sstatus->int_; // !TODO: Confirm Base Level and INT bonus
+						break;
+					case MH_ABSOLUTE_ZEPHYR:
+						skillratio += -100 + 1000 + 450 * skill_lv * status_get_lv(src) / 100 + sstatus->int_; // !TODO: Confirm Base Level and INT bonus
 						break;
 					case MH_HEILIGE_STANGE:
-						skillratio += -100 + 1500 + 250 * skill_lv * status_get_lv(src) / 150 + sstatus->vit / 6; // !TODO: Confirm VIT bonus
+						skillratio += -100 + 1500 + 250 * skill_lv * status_get_lv(src) / 150 + sstatus->vit; // !TODO: Confirm VIT bonus
+						break;
+					case MH_HEILIGE_PFERD:
+						skillratio += -100 + 1200 + 350 * skill_lv * status_get_lv(src) / 100 + sstatus->vit; // !TODO: Confirm VIT bonus
 						break;
 					case MH_POISON_MIST:
-						skillratio += -100 + 200 * skill_lv * status_get_lv(src) / 100 + sstatus->dex / 6; // ! TODO: Confirm DEX bonus
+						skillratio += -100 + 200 * skill_lv * status_get_lv(src) / 100 + sstatus->dex; // ! TODO: Confirm DEX bonus
 						break;
 					case SU_SV_STEMSPEAR:
 						skillratio += 600;

+ 1 - 1
src/map/homunculus.hpp

@@ -90,7 +90,7 @@ struct homun_data {
 };
 
 #define MAX_HOM_SKILL_REQUIRE 5
-#define MAX_HOM_SKILL_TREE 8
+#define MAX_HOM_SKILL_TREE 10
 
 /// Homunculus skill entry [Celest]
 struct homun_skill_tree_entry {

+ 3 - 0
src/map/script_constants.hpp

@@ -1867,6 +1867,9 @@
 	export_constant(SC_BEEF_RIB_STEW);
 	export_constant(SC_PORK_RIB_STEW);
 	export_constant(SC_WEAPONBREAKER);
+	export_constant(SC_TOXIN_OF_MANDARA);
+	export_constant(SC_GOLDENE_TONE);
+	export_constant(SC_TEMPERING);
 
 #ifdef RENEWAL
 	export_constant(SC_EXTREMITYFIST2);

+ 35 - 1
src/map/skill.cpp

@@ -1106,7 +1106,10 @@ bool skill_isNotOk_hom(struct homun_data *hd, uint16 skill_id, uint16 skill_lv)
 			clif_skill_fail(sd, skill_id, USESKILL_FAIL_SPIRITS, spiritball);
 			return true;
 		}
-		hom_delspiritball(hd, spiritball, 1);
+
+		// Blazing And Furious removes all spirit balls after calculating the amount of hits
+		if (skill_id != MH_BLAZING_AND_FURIOUS)
+			hom_delspiritball(hd, spiritball, 1);
 	}
 
 	//Use master's criteria.
@@ -2026,6 +2029,9 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
 	case MH_NEEDLE_OF_PARALYZE:
 		sc_start(src,bl, SC_PARALYSIS, 30 + 5 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
 		break;
+	case MH_TOXIN_OF_MANDARA:
+		sc_start(src,bl, SC_TOXIN_OF_MANDARA, 100, skill_lv, skill_get_time(skill_id, skill_lv));
+		break;
 	case MH_XENO_SLASHER:
 		sc_start4(src, bl, SC_BLEEDING, skill_lv, skill_lv, src->id, 0, 0, skill_get_time2(skill_id, skill_lv));
 		break;
@@ -5587,6 +5593,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 	case RL_S_STORM:
 	case RL_R_TRIP:
 	case MH_XENO_SLASHER:
+	case MH_HEILIGE_PFERD:
+	case MH_THE_ONE_FIGHTER_RISES:
 	case NC_ARMSCANNON:
 	case SU_SCRATCH:
 	case SU_LUNATICCARROTBEAT:
@@ -6760,6 +6768,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 		break;
 
 	//recursive homon skill
+	case MH_ABSOLUTE_ZEPHYR:
+	case MH_TOXIN_OF_MANDARA:
+	case MH_BLAZING_AND_FURIOUS:
 	case MH_MAGMA_FLOW:
 	case MH_HEILIGE_STANGE:
 		if(flag&1){
@@ -6771,8 +6782,11 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 			map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id);
 		break;
 
+	case MH_TWISTER_CUTTER:
+	case MH_GLANZEN_SPIES:
 	case MH_STAHL_HORN:
 	case MH_NEEDLE_OF_PARALYZE:
+	case MH_NEEDLE_STINGER:
 	case MH_SONIC_CRAW:
 	case MH_MIDNIGHT_FRENZY:
 	case MH_SILVERVEIN_RUSH:
@@ -7639,6 +7653,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 #endif
 		break;
 
+	case MH_BLAZING_AND_FURIOUS:
 	case TK_JUMPKICK:
 		/* Check if the target is an enemy; if not, skill should fail so the character doesn't unit_movepos (exploitable) */
 		if( battle_check_target(src, bl, BCT_ENEMY) > 0 ) {
@@ -8364,6 +8379,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case LG_OVERBRAND:
 	case NPC_RAYOFGENESIS:
 	case LG_RAYOFGENESIS:
+	case MH_THE_ONE_FIGHTER_RISES:
+	case MH_HEILIGE_PFERD:
 	case KO_HAPPOKUNAI:
 	case RL_FIREDANCE:
 	case RL_R_TRIP:
@@ -8405,6 +8422,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 		}
 		if (skill_id == IQ_MASSIVE_F_BLASTER || skill_id == SHC_IMPACT_CRATER || skill_id == MT_AXE_STOMP || skill_id == ABC_ABYSS_DAGGER)
 			sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
+		if (skill_id == MH_THE_ONE_FIGHTER_RISES) {
+			hom_addspiritball(hd, MAX_SPIRITBALL);
+		}
 
 		skill_area_temp[1] = 0;
 		clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -12109,6 +12129,18 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 			else sc_start(&hd->bl,&hd->bl, SC_STYLE_CHANGE, 100, MH_MD_FIGHTING, INFINITE_TICK);
 		}
 		break;
+	case MH_GOLDENE_TONE:
+	case MH_TEMPERING: {
+		block_list* master_bl = battle_get_master(src);
+		
+		if (master_bl != nullptr){
+			clif_skill_nodamage(src,master_bl,skill_id,skill_lv,1);
+			sc_start(src, master_bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
+		}
+		
+		if (hd)
+			skill_blockhomun_start(hd, skill_id, skill_get_cooldown(skill_id, skill_lv));
+		} break;
 	case MH_PAIN_KILLER:
 		bl = battle_get_master(src);
 		if (bl != nullptr)
@@ -13520,6 +13552,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
 	case KO_ZENKAI:
 	case MH_LAVA_SLIDE:
 	case MH_VOLCANIC_ASH:
+	case MH_BLAST_FORGE:
 	case MH_POISON_MIST:
 	case MH_STEINWAND:
 	case MH_XENO_SLASHER:
@@ -14844,6 +14877,7 @@ std::shared_ptr<s_skill_unit_group> skill_unitsetting(struct block_list *src, ui
 		val3 = 0; // Suck target at n seconds.
 		break;
 	case MH_POISON_MIST:
+	case MH_BLAST_FORGE:
 	case MH_LAVA_SLIDE:
 		skill_clear_group(src, 1);
 		break;

+ 16 - 0
src/map/skill.hpp

@@ -2369,6 +2369,22 @@ enum e_skill {
 	MH_LAVA_SLIDE,
 	MH_PYROCLASTIC,
 	MH_VOLCANIC_ASH,
+	MH_BLAST_FORGE,
+	MH_TEMPERING,
+	MH_CLASSY_FLUTTER,
+	MH_TWISTER_CUTTER,
+	MH_ABSOLUTE_ZEPHYR,
+	MH_BRUSHUP_CLAW,
+	MH_BLAZING_AND_FURIOUS,
+	MH_THE_ONE_FIGHTER_RISES,
+	MH_POLISHING_NEEDLE,
+	MH_TOXIN_OF_MANDARA,
+	MH_NEEDLE_STINGER,
+	MH_LICHT_GEHORN,
+	MH_GLANZEN_SPIES,
+	MH_HEILIGE_PFERD,
+	MH_GOLDENE_TONE,
+	MH_BLAZING_LAVA,
 
 	MS_BASH = 8201,
 	MS_MAGNUM,

+ 42 - 0
src/map/status.cpp

@@ -4966,6 +4966,31 @@ int status_calc_homunculus_(struct homun_data *hd, uint8 opt)
 	if((skill_lv = hom_checkskill(hd, HLIF_BRAIN)) > 0)
 		status->max_sp += skill_lv * status->max_sp / 100;
 
+	if((skill_lv = hom_checkskill(hd, MH_CLASSY_FLUTTER)) > 0) {
+		status->matk_min += 100 + 60* skill_lv;
+		status->matk_max += 100 + 60* skill_lv;
+	}
+
+	if((skill_lv = hom_checkskill(hd, MH_BRUSHUP_CLAW)) > 0) {
+		status->batk += 100 + 60* skill_lv;
+	}
+
+	if((skill_lv = hom_checkskill(hd, MH_POLISHING_NEEDLE)) > 0) {
+		status->matk_min += 50 + 20* skill_lv;
+		status->matk_max += 50 + 20* skill_lv;
+		status->batk += 100 + 40* skill_lv;
+	}
+
+	if((skill_lv = hom_checkskill(hd, MH_LICHT_GEHORN)) > 0) {
+		status->matk_min += 100 + 30* skill_lv;
+		status->matk_max += 100 + 30* skill_lv;
+		status->batk += 100 + 30* skill_lv;
+	}
+
+	if((skill_lv = hom_checkskill(hd, MH_BLAZING_LAVA)) > 0) {
+		status->batk += 100 + 60* skill_lv;
+	}
+
 	if (opt&SCO_FIRST) {
 		hd->battle_status.hp = hom->hp;
 		hd->battle_status.sp = hom->sp;
@@ -8427,6 +8452,8 @@ static signed short status_calc_patk(struct block_list *bl, status_change *sc, i
 		patk += sc->getSCE(SC_ABYSS_SLAYER)->val2;
 	if (sc->getSCE(SC_PRON_MARCH))
 		patk += sc->getSCE(SC_PRON_MARCH)->val2;
+	if (sc->getSCE(SC_TEMPERING))
+		patk += sc->getSCE(SC_TEMPERING)->val2;
 
 	return (short)cap_value(patk, 0, SHRT_MAX);
 }
@@ -8473,10 +8500,14 @@ static signed short status_calc_res(struct block_list *bl, status_change *sc, in
 		res += sc->getSCE(SC_D_MACHINE)->val3;
 	if (sc->getSCE(SC_MUSICAL_INTERLUDE))
 		res += sc->getSCE(SC_MUSICAL_INTERLUDE)->val2;
+	if (sc->getSCE(SC_GOLDENE_TONE))
+		res += sc->getSCE(SC_GOLDENE_TONE)->val2;
 	if (sc->getSCE(SC_SHADOW_STRIP) && bl->type != BL_PC)
 		res -= res * sc->getSCE(SC_SHADOW_STRIP)->val2 / 100;
 	if (sc->getSCE(SC_AIN_RHAPSODY))
 		res -= sc->getSCE(SC_AIN_RHAPSODY)->val2;
+	if (sc->getSCE(SC_TOXIN_OF_MANDARA))
+		res -= sc->getSCE(SC_TOXIN_OF_MANDARA)->val2;
 
 	return (short)cap_value(res, 0, SHRT_MAX);
 }
@@ -8493,6 +8524,8 @@ static signed short status_calc_mres(struct block_list *bl, status_change *sc, i
 	if (!sc || !sc->count)
 		return cap_value(mres, 0, SHRT_MAX);
 
+	if (sc->getSCE(SC_GOLDENE_TONE))
+		mres += sc->getSCE(SC_GOLDENE_TONE)->val2;
 	if (sc->getSCE(SC_SHADOW_STRIP) && bl->type != BL_PC)
 		mres -= mres * sc->getSCE(SC_SHADOW_STRIP)->val2 / 100;
 	if (sc->getSCE(SC_GEF_NOCTURN))
@@ -12013,10 +12046,19 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 		case SC_PYROCLASTIC:
 			val2 += 100 + 10*val1; // atk bonus // !TODO: Confirm formula
 			break;
+		case SC_TEMPERING:
+			val2 += 5 + val1; // patk bonus
+			break;
+		case SC_GOLDENE_TONE:
+			val2 += 3 * val1; // res/mres bonus
+			break;
 		case SC_PARALYSIS: // [Lighta] need real info
 			val2 = 2*val1; // def reduction
 			val3 = 500*val1; // varcast augmentation
 			break;
+		case SC_TOXIN_OF_MANDARA:
+			val2 = 15*val1; // res reduction
+			break;
 		case SC_LIGHT_OF_REGENE: // Yommy leak need confirm
 			val2 = 20 * val1; // hp reco on death %
 			break;

+ 5 - 0
src/map/status.hpp

@@ -1258,6 +1258,11 @@ enum sc_type : int16 {
 
 	SC_WEAPONBREAKER,
 
+	// 2021 Mutated Homunculus Skills
+	SC_TOXIN_OF_MANDARA,
+	SC_GOLDENE_TONE,
+	SC_TEMPERING,
+
 #ifdef RENEWAL
 	SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
 #endif