Explorar o código

Merge remote-tracking branch 'remotes/rAthena/master'

Conflicts:
	src/map/guild.c
Akkarinage %!s(int64=11) %!d(string=hai) anos
pai
achega
3bd3b81749
Modificáronse 70 ficheiros con 5629 adicións e 2247 borrados
  1. 3 0
      conf/char_athena.conf
  2. 7 3
      db/const.txt
  3. 9 9
      db/pre-re/item_combo_db.txt
  4. 174 174
      db/pre-re/item_db.txt
  5. 17 43
      db/pre-re/skill_cast_db.txt
  6. 16 0
      db/pre-re/skill_castnodex_db.txt
  7. 52 53
      db/pre-re/skill_db.txt
  8. 53 52
      db/pre-re/skill_require_db.txt
  9. 17 15
      db/pre-re/skill_unit_db.txt
  10. 14 14
      db/re/item_combo_db.txt
  11. 167 167
      db/re/item_db.txt
  12. 18 43
      db/re/skill_cast_db.txt
  13. 16 0
      db/re/skill_castnodex_db.txt
  14. 47 47
      db/re/skill_db.txt
  15. 50 51
      db/re/skill_require_db.txt
  16. 14 13
      db/re/skill_unit_db.txt
  17. 379 399
      doc/item_bonus.txt
  18. 2 2
      doc/item_db.txt
  19. 10 1
      doc/script_commands.txt
  20. 25 7
      install.sh
  21. 4 3
      npc/jobs/1-1e/ninja.txt
  22. 2 0
      npc/other/gm_npcs.txt
  23. 3 2
      npc/quests/thana_quest.txt
  24. 2874 0
      npc/re/jobs/2e/kagerou_oboro.txt
  25. 5 4
      npc/re/quests/eden/eden_quests.txt
  26. 2 0
      npc/re/scripts_jobs.conf
  27. 3 0
      npc/re/scripts_main.conf
  28. 1 0
      npc/scripts_test.conf
  29. 8 0
      npc/test/OnInterInit.txt
  30. 174 174
      sql-files/item_db.sql
  31. 167 167
      sql-files/item_db_re.sql
  32. 245 6
      src/char/char.c
  33. 1 0
      src/char/char.h
  34. 1 3
      src/char/int_guild.c
  35. 5 7
      src/common/core.c
  36. 2 2
      src/common/grfio.c
  37. 1 3
      src/common/malloc.c
  38. 0 10
      src/common/showmsg.c
  39. 6 8
      src/common/socket.c
  40. 1 2
      src/common/timer.c
  41. 8 10
      src/login/login.c
  42. 1 0
      src/login/login.h
  43. 4 4
      src/map/atcommand.c
  44. 176 160
      src/map/battle.c
  45. 7 10
      src/map/channel.c
  46. 13 11
      src/map/chrif.c
  47. 39 25
      src/map/clif.c
  48. 0 2
      src/map/elemental.c
  49. 18 14
      src/map/guild.c
  50. 5 3
      src/map/homunculus.c
  51. 2 5
      src/map/intif.c
  52. 82 44
      src/map/itemdb.c
  53. 24 16
      src/map/itemdb.h
  54. 1 1
      src/map/log.c
  55. 4 3
      src/map/map.c
  56. 43 25
      src/map/map.h
  57. 2 2
      src/map/mercenary.c
  58. 30 30
      src/map/mob.c
  59. 0 1
      src/map/npc.c
  60. 16 0
      src/map/party.c
  61. 1 0
      src/map/party.h
  62. 43 32
      src/map/pc.c
  63. 3 1
      src/map/pc.h
  64. 120 100
      src/map/script.c
  65. 240 148
      src/map/skill.c
  66. 10 9
      src/map/skill.h
  67. 133 99
      src/map/status.c
  68. 7 6
      src/map/unit.c
  69. 1 1
      src/map/vending.c
  70. 1 1
      tools/convert_sql.pl

+ 3 - 0
conf/char_athena.conf

@@ -201,4 +201,7 @@ char_movetoused: yes
 // Allow users to move characters as often as they like?
 char_moves_unlimited: no
 
+// Should we check if sql-tables are correct on server startup ?
+char_checkdb: yes
+
 import: conf/import/char_conf.txt

+ 7 - 3
db/const.txt

@@ -304,7 +304,7 @@ EAJ_BABY_CHASER		0x6206
 Option_Nothing	0x00000000
 Option_Sight	0x00000001
 Option_Hide	0x00000002
-Option_Cloadk	0x00000004
+Option_Cloak	0x00000004
 Option_Falcon	0x00000010
 Option_Riding	0x00000020
 Option_Invisible	0x00000040
@@ -614,7 +614,7 @@ bAddSkillBlow	2041
 bSPVanishRate	2042
 bMagicSPGainValue	2043
 bMagicHPGainValue	2044
-bAddClassDropItem	2045
+bAddMonsterIdDropItem	2045
 bMatk	2046
 bSPGainRaceAttack	2047
 bHPGainRaceAttack	2048
@@ -641,6 +641,9 @@ bSubClass	2065
 bMagicAddClass	2066
 bWeaponComaClass	2067
 bIgnoreMdefClassRate	2068
+bExpAddClass	2069
+bAddClassDropItem	2070
+bAddClassDropItemGroup	2071
 
 EQI_HEAD_TOP	1
 EQI_ARMOR	2
@@ -714,7 +717,8 @@ RC_Demon	6
 RC_DemiHuman	7
 RC_Angel	8
 RC_Dragon	9
-RC_All	10
+RC_Player	10
+RC_All	11
 
 Class_Normal	0
 Class_Boss	1

+ 9 - 9
db/pre-re/item_combo_db.txt

@@ -66,18 +66,18 @@
 2357:2421:2524:5171,{ bonus bAllStats,1; }
 2358:5153,{ bonus bLuk,6; bonus bFlee,5; bonus bInt,2; }
 2359:2654,{ bonus bUseSPrate,-20; bonus bMaxHP,300; }
-//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
+//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
 2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
 2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
 2375:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
-2376:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2377:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
-2378:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2379:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2380:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2381:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
-2382:2437:2540,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2376:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2377:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
+2378:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2379:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2380:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2381:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2382:2437:2540,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
 2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bCastrate,-3; bonus bDelayrate,-15; }
 2390:2749,{ bonus bFlee2,5; }
 2394:2444:2549,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
@@ -152,7 +152,7 @@
 4268:4277,{ bonus bBaseAtk,20; bonus bLuk,3; }
 4311:4319:4331:4371,{ bonus bInt,1; bonus bStr,1; bonus bDef,2; bonus bSPrecovRate,10; bonus2 bSkillAtk,"PA_SHIELDCHAIN",10; bonus2 bSkillAtk,"PA_SACRIFICE",10; bonus bCastrate,-10; if(BaseJob==Job_Crusader) bonus bDefEle,Ele_Holy; }
 4323:4324,{ bonus3 bAutoSpell,"MG_FROSTDIVER",3,250; }
-4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; }
+4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; bonus2 bSPGainRace,RC_Player,2; }
 5040:5442,{ bonus bAspdRate,3; bonus bCastrate,3; }
 5068:5653,{ bonus bStr,1; bonus bAtkRate,5; }
 5074:5653,{ bonus bStr,1; bonus bAspdRate,2; }

+ 174 - 174
db/pre-re/item_db.txt

@@ -480,7 +480,7 @@
 1127,Saber_,Saber,5,49000,,1000,115,,1,3,0x000654E2,7,2,2,3,27,1,2,{},{},{}
 1128,Hae_Dong_Gum_,Haedonggum,5,50000,,900,120,,1,2,0x000654E2,7,2,2,3,27,1,2,{ bonus bInt,3; },{},{}
 1129,Flamberge,Flamberge,5,60000,,1500,150,,1,0,0x00004080,7,2,2,3,27,1,2,{},{},{}
-1130,Nagan,Nagan,5,20,,500,120,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
+1130,Nagan,Nagan,5,20,,500,120,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
 1131,Ice_Falchon,Ice Falchion,5,20,,600,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100; },{},{}
 1132,Edge,Edge,5,20,,700,115,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaClass,Class_Normal,10; },{},{}
 1133,Fire_Brand,Fireblend,5,20,,500,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100; },{},{}
@@ -519,25 +519,25 @@
 1166,Dragon_Slayer,Dragon Slayer,5,20,,1300,150,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{}
 1167,Schweizersabel,Schweizersabel,5,20,,1600,160,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100; },{},{}
 1168,Zweihander,Zweihander,5,20,,2200,200,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,0; },{},{}
-1169,Executioner_,Executioner,5,20,,2200,155,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark; },{},{}
+1169,Executioner_,Executioner,5,20,,2200,155,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark; },{},{}
 1170,Katzbalger,Katzbalger,5,20,,2000,175,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bVit,5; bonus bDef,10; },{},{}
 1171,Zweihander_,Zweihander,5,20,,2200,200,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,0; },{},{}
 1172,Claymore_,Claymore,5,74000,,2500,180,,1,2,0x00004080,7,2,34,3,33,1,3,{},{},{}
 1173,Muramasa_C,Muramasa,5,1,,0,204,,1,0,0x00004082,7,2,34,4,1,0,3,{ bonus bCritical,30; bonus bAspdRate,8; },{},{}
-1174,Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,7,2,34,4,0,0,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark; },{},{}
+1174,Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,7,2,34,4,0,0,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark; },{},{}
 1175,Altas_Weapon,Atlas Weapon,5,20,,3500,200,,1,1,0x00004082,2,2,34,4,55,1,3,{ bonus bCritical,10; if(readparam(bStr)>=80) bonus bBreakArmorRate,500; },{},{}
 1176,Muscle_Cutter,Muscle Cutter,5,20,,2200,160,,1,2,0x00004082,2,2,34,4,55,1,3,{ bonus2 bAddEff,Eff_Bleeding,800; bonus3 bAutoSpell,"AL_DECAGI",1,30; },{},{}
 1177,Muramash,Muramash,5,20,,0,120,,1,0,0x00004082,7,2,34,1,0,0,3,{ bonus2 bAddClass,Class_All,50; },{},{}
 1178,Schweizersabel_,Schweizersabel,5,20,,1600,160,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100; },{},{}
-1179,Executioner__,Executioner,5,20,,2200,155,,1,1,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark; },{},{}
+1179,Executioner__,Executioner,5,20,,2200,155,,1,1,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark; },{},{}
 1180,Dragon_Slayer_,Dragon Slayer,5,20,,1300,150,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{}
 1181,Tae_Goo_Lyeon,Tae Goo Lyeon,5,20,,2000,250,,1,2,0x00004082,2,2,34,4,90,1,3,{ bonus bFlee2,10; if(JobLevel>=70) autobonus "{ bonus bBaseAtk,50; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; if(getrefine()>8) { bonus bCastrate,-20; bonus bDelayRate,-20; } },{},{}
 1182,Bloody_Eater,Bloody Eater,5,20,,1200,200,,1,2,0x00004082,2,2,34,4,50,1,3,{ bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100; },{},{}
-1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{}
+1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{}
 1185,Violet_Fear,Violet Fear,5,20,,2200,275,,1,2,0x00004082,2,2,34,4,80,1,3,{ bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{}
 1186,Death_Guidance,Death Guidance,5,20,,2000,200,,1,2,0x00004082,2,2,34,4,70,1,3,{ bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; if( getrefine()>8 ) bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",2,20; else bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",1,20; },{},{}
-1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?getskilllv("LK_AURABLADE"):1,30; } },{},{}
+1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?getskilllv("LK_AURABLADE"):1,30; } },{},{}
 1188,Veteran_Sword,Veteran Sword,5,10000,,2000,180,,1,1,0x00004082,7,2,34,4,80,1,3,{ if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1; },{},{}
 1189,Krasnaya,Krasnaya,5,20,,3800,200,,2,3,0x00004082,2,2,34,2,50,1,3,{ if(readparam(bStr)>=95) { bonus bBaseAtk,20; } },{},{}
 1190,Claymore_C,Claymore,5,0,,0,220,,1,0,0x00004080,7,2,34,3,1,0,3,{ bonus2 bAddSize,Size_All,40; },{},{}
@@ -569,12 +569,12 @@
 1225,Mail_Breaker,Mailbreaker,5,20,,1000,70,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bBreakArmorRate,500; },{},{}
 1226,Damascus_,Damascus,5,49000,,800,118,,1,2,0x028F5EEE,7,2,2,3,24,1,1,{ bonus bUnbreakableWeapon,0; },{},{}
 1227,Weeder_Knife,Weeder Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15; },{},{}
-1228,Combat_Knife,Combat Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10; },{},{}
+1228,Combat_Knife,Combat Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; },{},{}
 1229,Mama's_Knife,Kitchen Knife,5,20,,500,75,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000; },{},{}
 1230,House_Auger,Ice Pick,5,20,,600,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bDefRatioAtkClass,Class_All; },{},{}
 1231,Bazerald,Bazerald,5,20,,500,70,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus bMatkRate,10; },{},{}
 1232,Assasin_Dagger,Assassin Dagger,5,20,,600,140,,1,0,0x00001000,7,2,2,4,36,1,1,{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark; },{},{}
-1233,Exercise,Exorciser,5,20,,700,90,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; },{},{}
+1233,Exercise,Exorciser,5,20,,700,90,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; },{},{}
 1234,Moonlight_Sword,Moonlight Dagger,5,20,,700,50,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{}
 1235,Azoth,Azoth,5,20,,700,110,,1,0,0x00040000,7,2,2,4,36,1,1,{ bonus bClassChange,300; },{},{}
 1236,Sucsamad,Sucsamad,5,20,,800,140,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0; },{},{}
@@ -603,28 +603,28 @@
 1258,Katar_Of_Raging_Blaze,Katar of Raging Blaze,5,45000,,1200,105,,1,0,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500; },{},{}
 1259,Katar_Of_Piercing_Wind,Katar of Piercing Wind,5,45000,,1200,105,,1,0,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500; },{},{}
 1260,Ghoul_Leg,Sharpened Legbone of Ghoul,5,52500,,1700,150,,1,0,0x00001000,7,2,34,3,65,1,16,{ bonus bAtkEle,Ele_Undead; },{},{}
-1261,Infiltrator,Infiltrator,5,57000,,1500,140,,1,0,0x00001000,7,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{}
+1261,Infiltrator,Infiltrator,5,57000,,1500,140,,1,0,0x00001000,7,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{}
 1262,Nail_Of_Loki,Loki's Nail,5,20,,1200,115,,1,0,0x00001000,7,2,34,3,55,1,16,{ bonus2 bAddEff,Eff_Bleeding,300; },{},{}
 1263,Unholy_Touch,Unholy Touch,5,20,,1250,151,,1,0,0x00001000,7,2,34,4,70,1,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{}
 1264,Various_Jur,Specialty Jur,5,20,,800,90,,1,4,0x00001000,7,2,34,1,1,1,16,{ bonus2 bAddEff2,Eff_Bleeding,10; },{},{}
-1265,Bloody_Roar,Bloody Roar,5,20,,1000,120,,1,0,0x00001000,7,2,34,4,75,1,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{}
-1266,Infiltrator_,Infiltrator,5,57000,,1500,140,,1,1,0x00001000,7,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{}
-1267,Infiltrator_C,Infiltrator,5,1,,0,189,,1,0,0x00001000,7,2,34,4,1,0,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5; },{},{}
+1265,Bloody_Roar,Bloody Roar,5,20,,1000,120,,1,0,0x00001000,7,2,34,4,75,1,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{}
+1266,Infiltrator_,Infiltrator,5,57000,,1500,140,,1,1,0x00001000,7,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{}
+1267,Infiltrator_C,Infiltrator,5,1,,0,189,,1,0,0x00001000,7,2,34,4,1,0,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5; },{},{}
 1268,Wild_Beast_Claw,Wild Beast Claw,5,20,,1450,160,,1,1,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_CRITICALWOUND",2,100; } else bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; },{},{}
 1269,Inverse_Scale,Inverse Scale,5,20,,1500,140,,1,0,0x00001000,2,2,34,4,55,1,16,{ bonus bAtkEle,Ele_Holy; bonus3 bAutoSpell,"NPC_DRAGONFEAR",1,30; },{},{}
 1270,Drill_Katar,Drill Katar,5,20,,1400,110,,1,1,0x00001000,2,2,34,4,55,1,16,{ bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150; },{},{}
 1271,Blood_Tears,Blood Tears,5,20,,1700,120,,1,2,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30; },{},{}
 1272,Scratcher,Scratcher,5,20,,0,120,,1,0,0x00001000,7,2,34,1,0,0,16,{ bonus2 bAddClass,Class_All,50; },{},{}
-1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; },{},{}
+1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; },{},{}
 1274,Unholy_Touch_C,Refined Unholy Touch,5,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{}
 1275,Katar_Of_Cold_Icicle_,Katar of Frozen Icicle,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; },{},{}
 1276,Katar_Of_Thornbush_,Katar of Quaking,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500; },{},{}
 1277,Katar_Of_Raging_Blaze_,Katar of Raging Blaze,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500; },{},{}
 1278,Katar_Of_Piercing_Wind_,Katar of Piercing Wind,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500; },{},{}
-1279,BF_Katar1,Brave Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1280,BF_Katar2,Valorous Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,0; },{},{}
-1281,Krieger_Katar1,Glorious Bloody Roar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
-1282,Krieger_Katar2,Glorious Jamadhar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
+1279,BF_Katar1,Brave Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1280,BF_Katar2,Valorous Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,0; },{},{}
+1281,Krieger_Katar1,Glorious Bloody Roar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
+1282,Krieger_Katar2,Glorious Jamadhar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
 1283,Katar_Of_Speed,Katar Of Speed,5,20,,0,175,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3; },{},{}
 1284,Krishna,Krishna,5,20,,1200,120,,1,2,0x00001000,2,2,34,3,50,1,16,{ bonus2 bSkillAtk,"AS_GRIMTOOTH",10; if(getskilllv("AS_SONICBLOW")) { bonus3 bAutoSpell,"AS_SONICBLOW",getskilllv("AS_SONICBLOW"),5; }else{ bonus3 bAutoSpell,"AS_SONICBLOW",1,5; } },{},{}
 1285,Cakram,Chakram,5,20,,1000,130,,1,2,0x00001000,2,2,34,3,50,1,16,{ if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20; },{},{}
@@ -634,12 +634,12 @@
 1302,Axe_,Axe,5,500,,800,38,,1,4,0x000654E3,7,2,2,1,3,1,6,{},{},{}
 1303,Axe__,Axe,5,500,,800,38,,1,0,0x000654E3,7,2,2,1,3,1,6,{},{},{}
 1304,Orcish_Axe,Orcish Axe,5,20,,1500,75,,1,0,0x000654E3,7,2,2,3,3,1,6,{},{},{}
-1305,Cleaver,Cleaver,5,20,,1200,140,,1,0,0x000444A2,7,2,2,4,44,1,6,{ bonus2 bSubRace,RC_DemiHuman,5; bonus3 bAddMonsterDropItem,517,RC_Brute,3000; },{},{}
+1305,Cleaver,Cleaver,5,20,,1200,140,,1,0,0x000444A2,7,2,2,4,44,1,6,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus3 bAddMonsterDropItem,517,RC_Brute,3000; },{},{}
 1306,War_Axe,War Axe,5,20,,4200,140,,1,1,0x00040400,7,2,2,3,76,1,6,{ bonus bDex,2; bonus bLuk,2; },{},{}
 1307,Windhawk,Windhawk,5,18000,,1500,115,,1,0,0x000654E2,7,2,2,2,14,1,6,{ bonus bAtkEle,Ele_Wind; bonus bAspdRate,5; },{},{}
 1308,Golden_Axe,Golden Axe,5,20,,3000,170,,1,0,0x00000001,7,2,2,4,45,1,6,{},{},{}
 1309,Orcish_Axe_,Orcish Axe,5,20,,1500,75,,1,4,0x000654E3,7,2,2,3,3,1,6,{},{},{}
-1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{}
+1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{}
 1311,Vecer_Axe,Vecer Axe,5,20,,1500,140,,1,2,0x000444A2,2,2,2,3,50,1,6,{ if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90||readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; } },{},{}
 1312,Orcish_Axe_C,Orcish Axe,5,0,,0,110,,1,0,0x000654E3,7,2,2,3,1,0,6,{ bonus2 bAddSize,Size_All,70; },{},{}
 1313,Tourist_Axe,Tourist Axe,5,0,,500,77,,1,0,0x000654E3,7,2,2,1,1,0,6,{ bonus bStr,2; },{},{}
@@ -664,7 +664,7 @@
 1366,Right_Epsilon,Light Epsilon,5,20,,2300,180,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; },{},{}
 1367,Slaughter,Slaughter,5,20,,2500,120,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bWeaponComaRace,RC_Brute,40; },{},{}
 1368,Tomahawk,Tomahawk,5,20,,2500,165,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus bAtkEle,Ele_Wind; skill "ITM_TOMAHAWK",1; },{},{}
-1369,Guillotine,Guillotine,5,20,,3000,215,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRace,RC_DemiHuman,20; },{},{}
+1369,Guillotine,Guillotine,5,20,,3000,215,,1,0,0x000444A2,7,2,34,4,44,1,7,{ bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bWeaponComaRace,RC_Player,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRaceAttack,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20; },{},{}
 1370,Doom_Slayer,Doom Slayer,5,20,,6000,10,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; } },{},{}
 1371,Doom_Slayer_,Doom Slayer,5,20,,6000,10,,1,1,0x000444A2,7,2,34,4,80,1,7,{ bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; } },{},{}
 1372,Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,7,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; bonus bStr,10; bonus bSpeedRate,25; },{},{}
@@ -674,10 +674,10 @@
 1376,Heart_Breaker,Heart Breaker,5,20,,2000,175,,1,1,0x000444A2,2,2,34,4,70,1,7,{ bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30; },{},{}
 1377,Hurricane_Fury,Hurricane's Fury,5,20,,3500,332,,1,1,0x000444A2,2,2,34,4,80,1,7,{ bonus2 bSubSize,Size_Medium,10+getrefine(); bonus bAspdRate,getrefine(); bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20; },{},{}
 1378,Great_Axe_C,Refined Great Axe,5,1,,0,215,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000; },{},{}
-1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
+1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
 1381,N_Battle_Axe,Novice Battle Axe,5,0,,0,100,,1,3,0x000444A2,7,2,34,1,3,0,7,{},{},{}
-1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,5,20,,0,220,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{}
+1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,5,20,,0,220,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{}
 1383,Holy_Celestial_Axe,Celestial Axe,5,20,,1500,200,,1,0,0x000444A2,7,2,34,4,60,1,7,{ bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,50; },{},{}
 1384,Veteran_Axe,Veteran Axe,5,10000,,3000,250,,1,2,0x000444A2,7,2,34,3,80,1,7,{ if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2; },{},{}
 1385,Bradium_Stonehammer,Bradium Stone Hammer,5,20,,2700,210,,1,0,0x000444A2,2,2,34,4,75,1,7,{ bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine()); },{},{}
@@ -707,12 +707,12 @@
 1418,Gungnir_,Gungnir,5,20,,500,120,,3,2,0x00004082,7,2,2,4,4,1,4,{ bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30; },{},{}
 1419,Pole_Axe_C,Pole Axe,5,1,,4800,159,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
 1420,Long_Horn,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
-1421,Battle_Hook,Battle Hook,5,20,,900,140,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; skill "KN_PIERCE",3; },{},{}
+1421,Battle_Hook,Battle Hook,5,20,,900,140,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3; },{},{}
 1422,Hunting_Spear,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100; },{},{}
 1423,Pole_XO,Pole XO,5,20,,0,120,,3,0,0x00004082,7,2,2,1,0,0,4,{ bonus2 bAddClass,Class_All,50; },{},{}
 1424,Skewer_C,Refined Brocca,5,1,,0,149,,3,0,0x00004082,7,2,2,4,0,0,4,{ bonus bIgnoreDefClass,Class_Normal; bonus2 bAddSize,Size_Medium,20; },{},{}
-1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,7,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{}
-1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{}
+1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,7,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{}
+1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{}
 1427,Spear_Of_Excellent,Spear Of Excellent,5,20,,0,160,,3,0,0x00004082,7,2,2,3,0,0,4,{ bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2; },{},{}
 1428,Long_Horn_M,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
 1429,Hunting_Spear_M,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500; },{},{}
@@ -736,9 +736,9 @@
 1464,Halberd_,Halberd,5,54000,,2500,165,,3,2,0x00004082,7,2,34,3,33,1,5,{},{},{}
 1465,Halberd__,Halberd,5,54000,,2500,165,,3,0,0x00004082,7,2,34,3,33,1,5,{},{},{}
 1466,Crescent_Scythe,Crescent Scythe,5,20,,2500,180,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bCritical,30; bonus bHit,10; },{},{}
-1467,Bill_Guisarme,Bill Guisarme,5,20,,1000,183,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
+1467,Bill_Guisarme,Bill Guisarme,5,20,,1000,183,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
 1468,Zephyrus,Zephyrus,5,20,,2000,170,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{}
-1469,Longinus's_Spear,Longinus's Spear,5,20,,2500,180,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Dark; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Angel,10; },{},{}
+1469,Longinus's_Spear,Longinus's Spear,5,20,,2500,180,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Dark; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddRace,RC_Angel,10; },{},{}
 1470,Brionac,Brionac,5,20,,3000,190,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",5; bonus3 bAutoSpell,"MG_SOULSTRIKE",3,100; bonus2 bAddClass,Class_Boss,5; },{},{}
 1471,Hell_Fire,Hellfire,5,20,,3500,200,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Fire; bonus3 bAutoSpell,"MG_FIREBALL",3,100; bonus bStr,3; },{},{}
 // 2-Handed Staffs
@@ -749,17 +749,17 @@
 1475,Horseback_Lance,Equestrian's Spear,5,20,,3700,200,,4,0,0x00004082,7,2,34,4,75,1,5,{},{},{}
 1476,Crescent_Scythe_,Crescent Scythe,5,20,,2500,180,,3,1,0x00004082,7,2,34,4,48,1,5,{ bonus bCritical,30; bonus bHit,10; },{},{}
 1477,Spectral_Spear,Spectral Spear,5,20,,2000,170,,3,0,0x00004082,7,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{}
-1478,Ahlspiess,Ahlspiess,5,20,,1000,120,,3,0,0x00004080,7,2,34,4,65,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
+1478,Ahlspiess,Ahlspiess,5,20,,1000,120,,3,0,0x00004080,7,2,34,4,65,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
 1479,Spectral_Spear_,Spectral Spear,5,20,,2000,170,,3,1,0x00004082,7,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{}
 1480,Gae_Bolg_,Gae Bolg,5,20,,2000,160,,3,2,0x00004082,7,2,34,4,60,1,5,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10; },{},{}
 1481,Zephyrus_,Zephyrus,5,20,,2000,170,,3,3,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{}
-1482,BF_Lance1,Assaulter Lance,5,,,0,160,,3,0,0x00004082,7,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bUnbreakableWeapon,0; },{},{}
+1482,BF_Lance1,Assaulter Lance,5,,,0,160,,3,0,0x00004082,7,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon,0; },{},{}
 1483,Ivory_Lance,Ivory Lance,5,20,,1000,160,,3,1,0x00004082,2,2,34,3,50,1,5,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"LK_JOINTBEAT",1,100; skill "KN_SPEARSTAB",5; },{},{}
 1484,Cardo,Cardo,5,20,,5600,150,,3,1,0x00000080,2,2,34,4,70,1,5,{ bonus bAspdRate,-10; bonus bDef,getrefine()/2; },{},{}
 1485,Battle_Fork,Battle Fork,5,20,,700,112,,3,4,0x00004082,2,2,34,2,50,1,5,{},{},{}
-1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,7,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{}
+1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,7,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{}
 1487,Lance_C,Lance,5,0,,0,220,,3,0,0x00004082,7,2,34,3,1,0,5,{ bonus2 bAddSize,Size_All,50; },{},{}
-1488,Ahlspiess_C,Ahlspiess,5,20,,0,135,,3,0,0x00004080,7,2,34,4,1,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
+1488,Ahlspiess_C,Ahlspiess,5,20,,0,135,,3,0,0x00004080,7,2,34,4,1,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
 // Maces
 1501,Club,Club,5,120,,700,23,,1,3,0x0004C5B3,7,2,2,1,2,1,8,{},{},{}
 1502,Club_,Club,5,120,,700,23,,1,4,0x0004C5B3,7,2,2,1,2,1,8,{},{},{}
@@ -787,7 +787,7 @@
 1524,Golden_Mace,Golden Mace,5,20,,800,110,,1,1,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{}
 1525,Long_Mace,Long Mace,5,20,,800,135,,3,0,0x00008110,7,2,2,4,40,1,8,{ bonus bLongAtkDef,10; },{},{}
 1526,Slash,Slash,5,20,,1000,145,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,15; bonus2 bWeaponComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5; },{},{}
-1527,Quadrille,Quadrille,5,20,,900,165,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddEle,Ele_Earth,10; },{},{}
+1527,Quadrille,Quadrille,5,20,,900,165,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10; },{},{}
 1528,Grand_Cross,Grand Cross,5,20,,1500,140,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3; },{},{}
 1529,Iron_Driver,Iron Driver,5,20,,3000,155,,2,0,0x00008100,7,2,2,3,78,1,8,{},{},{}
 1530,Mjolnir,Mjolnir,5,20,,6000,250,,1,0,0x000444A2,7,2,2,4,95,0,8,{ bonus bAtkEle,Ele_Wind; bonus bDex,40; bonus bStr,15; bonus bAspdRate,10; bonus bUnbreakableWeapon,0; },{},{}
@@ -797,16 +797,16 @@
 1534,Spanner_C,Wrench,5,2,,0,150,,1,0,0x00008110,7,2,2,3,0,0,8,{ bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stun,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100; },{},{}
 1535,Hollgrehenn_Hammer,Hollgrehenn's Hammer,5,4444,,44,4,,1,1,0x0004C5B2,7,2,2,4,44,1,8,{ bonus bBreakArmorRate,100; bonus bBreakWeaponRate,100; if(readparam(bStr)>=44) { bonus bBaseAtk,44; } },{},{}
 1536,Good_Morning_Star,Good Morning Star,5,20,,0,120,,1,0,0x0004C5B2,7,2,2,1,0,0,8,{ bonus2 bAddClass,Class_All,50; },{},{}
-1537,Quadrille_C,Refined Quadrille,5,1,,0,193,,1,0,0x00008110,7,2,2,4,0,0,8,{ bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40; },{},{}
+1537,Quadrille_C,Refined Quadrille,5,1,,0,193,,1,0,0x00008110,7,2,2,4,0,0,8,{ bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40; },{},{}
 1538,Spike_,Spike,5,20,,700,85,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{}
 1539,Golden_Mace_,Golden Mace,5,20,,800,110,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{}
 1540,Grand_Cross_,Grand Cross,5,20,,1500,140,,1,1,0x00008110,7,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3; },{},{}
 1541,Nemesis,Nemesis,5,20,,900,120,,1,0,0x00008110,7,2,2,4,60,1,8,{ bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus3 bAutoSpell,"AL_CRUCIS",1+getrefine(),100; autobonus "{ bonus bBaseAtk,50; }",10,20000,BF_WEAPON,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{}
-1542,BF_Morning_Star1,Valorous Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1543,BF_Morning_Star2,Brave Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
+1542,BF_Morning_Star1,Valorous Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1543,BF_Morning_Star2,Brave Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
 1544,Lunakaligo,Lunakaligo,5,20,,700,110,,1,3,0x00008110,2,2,2,3,50,1,8,{ if(readparam(bStr)>=77) { bonus bAspdRate,4; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAddMonsterDropItem,12065,RC_Plant,500; bonus3 bAddMonsterDropItem,12043,RC_Brute,500; bonus3 bAddMonsterDropItem,12069,RC_Fish,500; } },{},{}
 1545,N_Mace,Novice Mace,5,0,,0,57,,1,3,0x0004C5B3,7,2,2,1,2,0,8,{},{},{}
-1546,Krieger_Onehand_Mace1,Glorious Morning Star,5,20,,0,130,,1,0,0x0004C5B3,7,2,2,4,80,1,8,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; } },{},{}
+1546,Krieger_Onehand_Mace1,Glorious Morning Star,5,20,,0,130,,1,0,0x0004C5B3,7,2,2,4,80,1,8,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; } },{},{}
 1547,Mace_Of_Madness,Mace Of Madness,5,20,,0,150,,1,0,0x0004C5B2,7,2,2,3,0,0,8,{ bonus2 bSkillAtk,"MC_CARTREVOLUTION",25; bonus bStr,2; },{},{}
 1548,Veteran_Hammer,Veteran Hammer,5,10000,,1800,160,,1,2,0x00008110,7,2,2,3,80,1,8,{ bonus bHealPower,getskilllv("AL_DP"); bonus bCritical,getskilllv("PR_MACEMASTERY")*2; bonus bInt,1; bonus bLuk,1; },{},{}
 // Books
@@ -825,7 +825,7 @@
 1562,Bible_Of_Battlefield,Battlefield Textbook,5,20,,700,110,,1,1,0x00410100,7,2,2,4,80,0,15,{ bonus bInt,3; bonus3 bAutoSpell,"AL_BLESSING",3+(getskilllv("AL_BLESSING")>3)*(getskilllv("AL_BLESSING")-3),20; },{},{}
 1563,Diary_Of_Great_Sage_C,Sage's Diary,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{ bonus bMatkRate,20; bonus bAspdRate,5; },{},{}
 1564,Encyclopedia,Encyclopedia,5,20,,2000,110,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); },{},{}
-1565,Death_Note,Ledger of Death,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
+1565,Death_Note,Ledger of Death,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
 1566,Diary_Of_Great_Basil,Diary Of Great Basil,5,20,,0,120,,1,0,0x00410100,7,2,2,1,0,0,15,{ bonus2 bAddClass,Class_All,50; },{},{}
 1567,Hardback_C,Refined Hardcover Book,5,1,,0,168,,1,0,0x00410100,7,2,2,4,0,0,15,{ bonus bStr,5; bonus bDex,2; bonus bMatkRate,20; },{},{}
 1568,Book_Of_Billows_,Book of Billows,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Water; },{},{}
@@ -834,12 +834,12 @@
 1571,Book_Of_Gust_Of_Wind_,Book of Gust of Wind,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Wind; },{},{}
 1572,Principles_Of_Magic,Principles of Magic,5,20,,300,60,,1,2,0x00410100,7,2,2,3,60,1,15,{ bonus bMatkRate,20; bonus bInt,3; bonus bSPrecovRate,5; },{},{}
 1573,Ancient_Magic,Ancient Magic,5,20,,700,30,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; },{},{}
-1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; },{},{}
-1576,Krieger_Book1,Glorious Tablet,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{}
-1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiHuman,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; } },{},{}
+1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; },{},{}
+1576,Krieger_Book1,Glorious Tablet,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{}
+1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; } },{},{}
 1578,Book_Of_Prayer,Book Of Prayer,5,20,,0,140,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10; },{},{}
-1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
+1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
 1580,Encyclopedia_C,Giant Encyclopedia,5,0,,0,145,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40; },{},{}
 1581,F_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
 1582,E_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
@@ -877,16 +877,16 @@
 1629,Walking_Stick,Gentleman's Staff,5,20,,500,40,,1,1,0x00818314,7,2,2,4,50,1,10,{ bonus bMatkRate,15; bonus bDex,1; },{},{}
 1630,Release_Of_Wish,Release of Wish,5,20,,500,30,,1,0,0x00810204,7,2,2,3,50,1,10,{ bonus bMatkRate,15; bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }"; },{},{}
 1631,Holy_Stick,Holy Stick,5,20,,500,50,,1,1,0x00008100,7,2,2,4,70,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bCastrate,"AL_HOLYLIGHT",-25; bonus2 bCastrate,"PR_TURNUNDEAD",-25; bonus2 bCastrate,"PR_MAGNUS",-25; },{},{}
-1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
-1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
+1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
+1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
 1634,BF_Staff3,Strong Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{}
 1635,BF_Staff4,Speedy Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{}
 1636,Thorn_Staff,Thorn Staff of Darkness,5,20,,700,60,,1,0,0x00018314,2,2,2,4,75,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,20; bonus2 bIgnoreMdefClassRate,Class_Normal,getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,getrefine(); bonus bDelayRate,-(getrefine()*3/2); },{},{}
 1637,Eraser,Eraser,5,20,,500,80,,1,0,0x00018314,2,2,2,4,70,1,10,{ bonus bMatkRate,20; bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; if( getrefine()>9 ) bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",3,5,BF_MAGIC,0; else bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",1,5,BF_MAGIC,0; },{},{}
 1638,Healing_Staff_C,Staff Of Healing,5,20,,0,10,,1,0,0x00008110,7,2,2,3,1,0,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{}
 1639,N_Rod,Novice Rod,5,0,,0,15,,1,3,0x00818315,7,2,2,1,1,0,10,{ bonus bMatkRate,16; },{},{}
-1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; } },{},{}
-1641,Krieger_Onehand_Staff2,Glorious Cure Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; } },{},{}
+1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; } },{},{}
+1641,Krieger_Onehand_Staff2,Glorious Cure Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; } },{},{}
 1642,Staff_Of_Darkness,Staff Of Darkness,5,20,,0,100,,1,0,0x00818314,7,2,2,2,0,0,10,{ bonus bCastrate,-5; bonus bMatkRate,15; bonus bInt,2; },{},{}
 1643,Dead_Tree_Cane,Dead Tree Cane,5,20,,100,100,,1,0,0x00818314,7,2,2,4,70,1,10,{ bonus bMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; } },{},{}
 1644,Piercing_Staff_M,Staff of Piercing,5,20,,500,80,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine(); },{},{}
@@ -931,12 +931,12 @@
 1735,Kkakkung,Kkakkung,5,20,,0,120,,5,0,0x000A0848,7,2,34,1,1,0,11,{ bonus2 bAddClass,Class_All,50; },{},{}
 1736,Double_Bound,Double Bound,5,20,,900,70,,5,3,0x00000800,2,2,34,3,70,1,11,{ bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10; },{},{}
 1737,Ixion_Wing,Ixion Wings,5,20,,300,135,,5,1,0x00000800,2,2,34,4,70,1,11,{ autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3; },{},{}
-1738,BF_Bow1,Valorous Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1739,BF_Bow2,Brave Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus bUnbreakableWeapon,0; },{},{}
+1738,BF_Bow1,Valorous Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1739,BF_Bow2,Brave Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon,0; },{},{}
 1740,Nepenthes_Bow,Nepenthes Bow,5,20,,1000,105,,5,2,0x00000800,2,2,34,4,60,1,11,{ bonus4 bAutoSpellOnSkill,"AC_DOUBLE","AC_CHARGEARROW",1,20; },{},{}
 1741,Cursed_Lyre,Cursed Lyre,5,20,,1250,125,,5,1,0x00080808,2,2,34,4,80,1,11,{ bonus bLuk,-2; bonus2 bAddEff,Eff_Curse,400; },{},{}
 1742,N_Composite_Bow,Novice Composite Bow,5,1,,0,49,,5,3,0x000A0848,7,2,34,1,4,0,11,{},{},{}
-1743,Krieger_Bow1,Glorious Hunter Bow,5,0,,0,100,,5,0,0x001A0848,7,2,34,4,80,1,11,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20; },{},{}
+1743,Krieger_Bow1,Glorious Hunter Bow,5,0,,0,100,,5,0,0x001A0848,7,2,34,4,80,1,11,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20; },{},{}
 1744,Bow_Of_Evil,Bow Of Evil,5,0,,0,170,,5,0,0x000A0848,7,2,34,4,1,0,11,{ bonus2 bSkillAtk,"AC_DOUBLE",25; bonus bDex,2; },{},{}
 1745,Falken_Blitz,Falken Blitz,5,0,,1000,100,,5,2,0x00080808,2,2,34,3,50,1,11,{ bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; bonus2 bSkillAtk,"AC_DOUBLE",10; bonus2 bSkillAtk,"AC_CHARGEARROW",10; },{},{}
 // Arrows
@@ -986,11 +986,11 @@
 1820,Electric_Fist,Electric Fist,5,20,,650,80,,1,3,0x00008100,7,2,2,3,75,1,12,{ bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",5,10; },{},{}
 1821,Seismic_Fist,Seismic Fist,5,20,,650,80,,1,3,0x00008100,7,2,2,3,75,1,12,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",5,10; },{},{}
 1822,Combo_Battle_Glove,Combo Battle Glove,5,20,,500,30,,1,4,0x00008100,7,2,2,3,60,1,12,{ bonus2 bSkillAtk,"MO_TRIPLEATTACK",15; bonus2 bSkillAtk,"MO_CHAINCOMBO",15; bonus2 bSkillAtk,"MO_COMBOFINISH",20; },{},{}
-1823,BF_Knuckle1,Valorous Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,0; },{},{}
-1824,BF_Knuckle2,Brave Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\"MO_EXTREMITYFIST\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,0; },{},{}
+1823,BF_Knuckle1,Valorous Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,0; },{},{}
+1824,BF_Knuckle2,Brave Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\"MO_EXTREMITYFIST\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,0; },{},{}
 1825,Horn_Of_Hilthrion,Horn of Hillslion,5,20,,600,95,,1,3,0x00008000,2,2,2,3,60,1,12,{ bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"CH_PALMSTRIKE","MO_INVESTIGATE",1,100; bonus3 bAutoSpell,"MO_CALLSPIRITS",5,100; },{},{}
-1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); } },{},{}
-1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{}
+1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); } },{},{}
+1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{}
 1828,Monk_Knuckle,Monk Knuckle,5,20,,0,150,,1,0,0x00008100,7,2,2,4,0,0,12,{ bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25; },{},{}
 1829,Fist_C,Fist,5,0,,0,150,,1,0,0x00008100,7,2,2,3,1,0,12,{ bonus2 bAddSize,Size_All,40; },{},{}
 // Instruments
@@ -1016,11 +1016,11 @@
 1920,Berserk_Guitar,Berserk Guitar,5,20,,1800,10,,1,0,0x00080000,2,1,2,4,70,1,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{}
 1921,Guh_Moon_Gom,Gun Moon Gom,5,20,,0,120,,1,0,0x00080000,7,1,2,1,0,0,13,{ bonus2 bAddClass,Class_All,50; },{},{}
 1922,Oriental_Lute_,Oriental Lute,5,20,,1200,150,,1,2,0x00080000,7,1,2,4,65,1,13,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; },{},{}
-1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
+1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
 1925,Cello,Cello,5,20,,700,110,,1,3,0x00080000,2,1,2,3,70,1,13,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"BA_MUSICALSTRIKE",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{}
 1926,Harp_Of_Nepenthes,Harp of Nepenthes,5,20,,1000,120,,1,2,0x00080000,2,1,2,4,60,1,13,{ bonus bInt,2; if( getrefine()>9 ) { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,2000; } else { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,1000; } },{},{}
-1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
+1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
 1928,Berserk_Guitar_I,Spirited Guitar,5,0,,0,40,,1,0,0x00080000,2,1,2,4,0,0,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{}
 1929,Guitar_C,Guitar,5,0,,0,177,,1,0,0x00080000,7,1,2,3,1,0,13,{ bonus2 bAddSize,Size_All,40; },{},{}
 // Whips
@@ -1051,17 +1051,17 @@
 1974,Carrot_Whip,Carrot Whip,5,20,,1300,185,,2,0,0x00080000,2,0,2,4,70,1,14,{ if(getrefine()>0) bonus3 bAutoSpell,"AL_INCAGI",getrefine(),10; },{},{}
 1975,Queen_Is_Whip,Queen Is Whip,5,20,,0,120,,2,0,0x00080000,7,0,2,1,0,0,14,{ bonus2 bAddClass,Class_All,50; },{},{}
 1976,Queen's_Whip_,Queen's Whip,5,20,,1100,150,,2,2,0x00080000,7,0,2,4,65,1,14,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{}
-1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
+1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
 1979,Stem_Of_Nepenthes,Stem of Nepenthes,5,20,,1000,120,,2,2,0x00080000,2,0,2,4,60,1,14,{ bonus bInt,2; if( getrefine()>=9 ) { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,2000; } else { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,1000; } },{},{}
 1980,Whip_Of_Balance,Whip of Balance,5,20,,700,110,,2,3,0x00080000,2,0,2,3,70,1,14,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{}
-1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
+1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
 1982,Phenomena_Whip,Phenomena Whip,5,20,,0,160,,2,0,0x00080000,7,0,2,4,0,0,14,{ bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25; },{},{}
 1983,Rante_C,Rante Whip,5,0,,0,170,,2,0,0x00080000,7,0,2,3,1,0,14,{ bonus2 bAddSize,Size_All,40; },{},{}
 // Additional 2-Handed Staffs
 2000,Destruction_Rod,Staff of Destruction,5,20,,2500,130,,1,1,0x00000200,2,2,34,4,80,1,23,{ bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50; },{},{}
 2001,Divine_Cross,Divine Cross,5,20,,1500,120,,1,0,0x00008100,7,2,34,4,70,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15; },{},{}
-2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70,,1,0,0x00018314,7,2,34,4,80,1,23,{ bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{}
+2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70,,1,0,0x00018314,7,2,34,4,80,1,23,{ bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bMagicAddRace,RC_Player,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{}
 2003,Destruction_Rod_M,Staff of Destruction,5,20,,2500,130,,1,1,0x00000200,2,2,34,4,80,1,23,{ bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50; },{},{}
 2004,Kronos,Kronos,5,20,,1000,30,,1,0,0x00010204,2,2,34,4,50,1,23,{ bonus bMatkRate,20; bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
 2005,Dea_Staff,Dea Staff,5,20,,1000,30,,1,1,0x00008110,2,2,34,3,50,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15+getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }"; },{},{}
@@ -1107,7 +1107,7 @@
 2137,Valkyrja's_Shield_C,Neo Valkyrja's Shield,4,0,,0,,5,,0,0xFFFFFFFE,2,2,32,,95,0,4,{ bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Undead,20; bonus bMdef,5; },{},{}
 2138,Bradium_Shield,Bradium Shield,4,20,,1800,,5,,1,0x00CFFF80,2,2,32,,65,1,3,{ bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",60; bonus bAgi,-1; bonus bMaxHP,500; },{},{}
 // GM Shield
-2199,Ahura_Mazda,Ahura Mazdah,4,1,,10,,100,,0,0xFFFFFFFF,7,2,32,,1,1,0,{ bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone,0; bonus bSpeedRate,25; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; }
+2199,Ahura_Mazda,Ahura Mazdah,4,1,,10,,100,,0,0xFFFFFFFF,7,2,32,,1,1,0,{ bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone,0; bonus bSpeedRate,25; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; }
 // Headgears
 //===================================================================
 2201,Sunglasses,Sunglasses,4,5000,,100,,0,,0,0xFFFFFFFF,7,2,512,,0,0,12,{ bonus2 bResEff,Eff_Blind,500; },{},{}
@@ -1198,9 +1198,9 @@
 2286,Elven_Ears,Elven Ears,4,20,,100,,0,,0,0xFFFFFFFE,7,2,512,,70,0,73,{},{},{}
 2287,Pirate_Bandana,Pirate Bandana,4,20,,100,,3,,0,0xFFFFFFFE,7,2,256,,0,1,74,{ bonus bStr,1; },{},{}
 2288,Mr_Scream,Mr. Scream,4,20,,100,,1,,0,0xFFFFFFFE,7,2,513,,0,0,75,{},{},{}
-2289,Poo_Poo_Hat,Poo Poo Hat,4,20,,700,,0,,0,0xFFFFFFFF,7,2,256,,0,0,76,{ bonus2 bSubRace,RC_DemiHuman,10; },{},{}
+2289,Poo_Poo_Hat,Poo Poo Hat,4,20,,700,,0,,0,0xFFFFFFFF,7,2,256,,0,0,76,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 2290,Funeral_Costume,Funeral Hat,4,3000,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,0,77,{},{},{}
-2291,Masquerade,Masquerade,4,20,,100,,0,,0,0xFFFFFFFE,7,2,512,,0,0,78,{ bonus2 bAddRace,RC_DemiHuman,3; },{},{}
+2291,Masquerade,Masquerade,4,20,,100,,0,,0,0xFFFFFFFE,7,2,512,,0,0,78,{ bonus2 bAddRace,RC_DemiHuman,3; bonus2 bAddRace,RC_Player,3; },{},{}
 2292,Welding_Mask,Welding Mask,4,20,,300,,2,,0,0x00040420,7,2,513,,50,0,79,{ bonus2 bSubEle,Ele_Fire,10; },{},{}
 2293,Pretend_Murdered,Pretend Murdered,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,0,80,{},{},{}
 2294,Star_Dust,Stellar,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,81,{},{},{}
@@ -1279,20 +1279,20 @@
 2366,Divine_Cloth,Divine Cloth,4,20,,1500,,6,,1,0xFFFFFFFE,2,2,16,,55,1,0,{ bonus2 bResEff,Eff_Curse,500; bonus2 bResEff,Eff_Silence,500; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; bonus2 bResEff,Eff_Sleep,500; },{},{}
 2367,Sniping_Suit,Sniping Suit,4,20,,750,,5,,1,0x00000800,2,2,16,,50,1,0,{ bonus bMdef,5; bonus bCritical,6+(readparam(bLuk)/10); bonus bDelayRate,-23; },{},{}
 2368,Golden_Armor,Golden Armor,4,20,,2000,,4,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMdef,4; },{},{}
-2369,Freyja_Overcoat,Freyja Overcoat,4,0,,500,,12,,0,0xFFFFFFFE,7,2,16,,0,0,0,{ bonus bUnbreakableArmor,0; bonus2 bSubRace,RC_DemiHuman,10; },{},{}
+2369,Freyja_Overcoat,Freyja Overcoat,4,0,,500,,12,,0,0xFFFFFFFE,7,2,16,,0,0,0,{ bonus bUnbreakableArmor,0; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 2370,Used_Mage_Coat,Used Mage Coat,4,0,,0,,15,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMaxHP,300; bonus bMaxSP,30; bonus bBaseAtk,10; bonus bAGI,1; },{},{}
 2371,G_Strings_,Pantie,4,1000,,100,,4,,1,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
 2372,Mage_Coat_,Mage Coat,4,20,,600,,5,,1,0x00810204,7,2,16,,50,1,0,{ bonus bMdef,5; bonus bInt,1; },{},{}
 2373,Holy_Robe_,Holy Robe,4,20,,1700,,7,,1,0x00008110,7,2,16,,60,1,0,{ bonus bMdef,5; bonus2 bSubRace,RC_Demon,15; bonus2 bSubEle,Ele_Dark,10; },{},{}
 2374,Diabolus_Robe,Diabolus Robe,4,20,,300,,6,,1,0x00098B1C,2,2,16,,55,1,0,{ bonus bMaxSP,150; bonus bMdef,5; bonus bHealPower,6; bonus bDelayRate,-10; },{},{}
 2375,Diabolus_Armor,Diabolus Armor,4,20,,600,,7,,1,0x000654E2,2,2,16,,55,1,0,{ bonus bStr,2; bonus bDex,1; bonus bMaxHP,150; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; },{},{}
-2376,Assaulter_Plate,Assaulter Plate,4,10,,0,,7,,1,0x006444A2,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
-2377,Elite_Engineer_Armor,Elite Engineer Armor,4,10,,0,,7,,1,0x00040420,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
-2378,Assassin_Robe,Assassin Robe,4,10,,0,,7,,1,0x02021040,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
-2379,Warlock_Battle_Robe,Warlock's Battle Robe,4,10,,0,,3,,1,0x00810204,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
-2380,Medic_Robe,Medic's Robe,4,10,,0,,3,,1,0x00008110,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
-2381,Elite_Archer_Suit,Elite Archer Suit,4,10,,0,,3,,1,0x00080808,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
-2382,Elite_Shooter_Suit,Elite Shooter Suit,4,10,,0,,3,,1,0x41000000,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
+2376,Assaulter_Plate,Assaulter Plate,4,10,,0,,7,,1,0x006444A2,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
+2377,Elite_Engineer_Armor,Elite Engineer Armor,4,10,,0,,7,,1,0x00040420,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
+2378,Assassin_Robe,Assassin Robe,4,10,,0,,7,,1,0x02021040,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
+2379,Warlock_Battle_Robe,Warlock's Battle Robe,4,10,,0,,3,,1,0x00810204,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
+2380,Medic_Robe,Medic's Robe,4,10,,0,,3,,1,0x00008110,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
+2381,Elite_Archer_Suit,Elite Archer Suit,4,10,,0,,3,,1,0x00080808,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
+2382,Elite_Shooter_Suit,Elite Shooter Suit,4,10,,0,,3,,1,0x41000000,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
 2383,Brynhild,Brynhild,4,20,,400,,10,,0,0xFFFFFFFF,7,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor,0; bonus bNoKnockback,0; },{},{}
 2384,Spritual_Tunic,Spiritual Tunic,4,20,,0,,10,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; },{},{}
 2385,Recuperative_Armor,Recuperative Armor,4,20,,0,,12,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6; },{},{ heal 0,-100; }
@@ -1304,7 +1304,7 @@
 2391,Life_Link,Life Link,4,20,,3500,,9,,1,0x00004082,2,2,16,,82,1,0,{ bonus bVit,2; bonus bMdef,5; bonus bHPrecovRate,50; },{},{}
 2392,Old_Pant,Old Green Pantie,4,0,,0,,10,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bStr,2; bonus bVit,2; bonus bMaxHP,200; bonus3 bAutoSpellWhenHit,"MO_CALLSPIRITS",5,20; bonus bMdef,1; },{},{}
 2393,N_Adventurer's_Suit,Novice Adventurer's Suit,4,0,,0,,8,,1,0xFFFFFFFF,7,2,16,,0,0,0,{},{},{}
-2394,Krieger_Suit1,Glorious Suit,4,20,,0,,0,,0,0xFFFFFFFE,7,2,16,,81,1,0,{ bonus bMaxHPRate,20; bonus2 bSubRace,RC_DemiHuman,7; },{},{}
+2394,Krieger_Suit1,Glorious Suit,4,20,,0,,0,,0,0xFFFFFFFE,7,2,16,,81,1,0,{ bonus bMaxHPRate,20; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; },{},{}
 2395,Krieger_Suit2,Glorious Popularized Suit,4,20,,0,,0,,0,0xFFFFFFFE,7,2,16,,61,1,0,{ bonus bMaxHP,600; bonus bSPrecovRate,10; },{},{}
 2396,Krieger_Suit3,Glorious Mass-Production Suit,4,20,,0,,0,,0,0xFFFFFFFE,7,2,16,,0,1,0,{ bonus bMaxHP,500; },{},{}
 2397,Incredible_Coat,Incredible Event Resignation Coat,4,10,,900,,2,,0,0xFFFFFFFE,7,2,16,,0,1,0,{},{},{}
@@ -1339,23 +1339,23 @@
 2425,Black_Leather_Boots,Black Leather Boots,4,20,,500,,4,,0,0xFFFFFFFE,2,2,64,,55,1,0,{ bonus bAgi,1; if(getrefine()>=9) bonus bAgi,2; },{},{}
 2426,Shadow_Walk,Shadow Walk,4,20,,2000,,0,,0,0xFFFFFFFE,2,2,64,,75,1,0,{ bonus bMdef,10; if(getskilllv("AS_CLOAKING")<2){ bonus5 bAutoSpellWhenHit,"AS_CLOAKING",2,100,BF_MAGIC,0; } else bonus5 bAutoSpellWhenHit,"AS_CLOAKING",getskilllv("AS_CLOAKING"),100,BF_MAGIC,0; },{},{}
 2427,Golden_Shoes,Golden Shoes,4,20,,300,,4,,0,0xFFFFFFFF,7,2,64,,0,0,0,{ bonus bMdef,4; },{},{}
-//2428,Freyja_Boots,Freyja Boots,4,0,,300,,10,,0,0xFFFFFFFE,7,2,64,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,5; },{},{}
+//2428,Freyja_Boots,Freyja Boots,4,0,,300,,10,,0,0xFFFFFFFE,7,2,64,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
 2429,Iron_Boots01,Iron Boots,4,0,,1500,,5,,0,0x000E5CEA,7,2,64,,0,1,0,{},{},{}
 2430,Iron_Boots02,Iron Boots,4,0,,800,,5,,0,0xFFFFFFFF,7,2,64,,0,1,0,{},{},{}
 2431,Valley_Shoes,Valley Shoes,4,20,,0,,10,,0,0xFFFFFFFF,7,2,64,,0,0,0,{ bonus bMaxHPRate,7; bonus bMaxSPRate,7; },{},{}
 2432,Spiky_Heel_,High Heels,4,8500,,600,,2,,1,0xFFFFFFFE,7,2,64,,0,1,0,{ bonus bMdef,5; },{},{}
 2433,Diabolus_Boots,Diabolus Boots,4,20,,250,,4,,1,0x00CFFF80,2,2,64,,0,1,0,{ bonus bMaxHP,(BaseLevel*10); },{},{}
 2434,Black_Leather_Boots_,Black Leather Boots,4,20,,500,,4,,1,0xFFFFFFFE,2,2,64,,55,1,0,{ bonus bAgi,1; if(getrefine()>=9) bonus bAgi,2; },{},{}
-2435,Battle_Greave,Battle Greaves,4,10,,0,,4,,1,0x026654E2,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
-2436,Combat_Boots,Combat Boots,4,10,,0,,3,,1,0x00898B1C,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
-2437,Battle_Boots,Battle Boots,4,10,,0,,3,,1,0x41000000,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2435,Battle_Greave,Battle Greaves,4,10,,0,,4,,1,0x026654E2,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{}
+2436,Combat_Boots,Combat Boots,4,10,,0,,3,,1,0x00898B1C,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{}
+2437,Battle_Boots,Battle Boots,4,10,,0,,3,,1,0x41000000,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{}
 2438,Paw_Of_Cat,Paw Of Cat,4,10,,300,,0,,0,0xFFFFFFFF,7,2,64,,80,1,0,{ bonus bFlee,5; bonus bAgi,1; },{},{}
 2439,Refresh_Shoes,Refresh Shoes,4,20,,0,,9,,0,0xFFFFFFFF,7,2,64,,0,0,0,{ bonus bMaxHPRate,17; bonus bMaxSPRate,8; bonus2 bHPRegenRate,20,10000; bonus2 bSPRegenRate,3,10000; },{},{}
 2440,Sprint_Shoes,Sprint Shoes,4,20,,300,,2,,1,0x00CFFF80,2,2,64,,70,1,0,{ bonus bAgi,1; bonus bSPrecovRate,5; },{},{}
 2441,Beach_Sandal,Beach Sandals,4,20,,200,,0,,0,0xFFFFFFFF,7,2,64,,0,1,0,{ bonus bStr,1; bonus bInt,1; bonus bAgi,1; bonus2 bSubEle,Ele_Fire,10; },{},{}
 2442,Boots_Perforated,Red Stocking Boots,4,0,,0,,7,,0,0xFFFFFFFF,7,2,64,,0,0,0,{ bonus bLuk,2; bonus bHPrecovRate,10; bonus bSPrecovRate,10; bonus3 bAutoSpellWhenHit,"WZ_QUAGMIRE",3,20; bonus bMdef,1; },{},{}
 2443,Fish_Shoes,Fisher's Boots,4,10,,250,,0,,0,0xFFFFFFFF,7,2,64,,0,0,0,{},{},{}
-2444,Krieger_Shoes1,Glorious Shoes,4,20,,0,,0,,0,0xFFFFFFFE,7,2,64,,81,1,0,{ bonus bMaxHPRate,10; bonus2 bSubRace,RC_DemiHuman,4; bonus3 bAutoSpellWhenHit,"AL_INCAGI",1,10; },{},{}
+2444,Krieger_Shoes1,Glorious Shoes,4,20,,0,,0,,0,0xFFFFFFFE,7,2,64,,81,1,0,{ bonus bMaxHPRate,10; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; bonus3 bAutoSpellWhenHit,"AL_INCAGI",1,10; },{},{}
 2445,Krieger_Shoes2,Glorious Popularized Shoes,4,20,,0,,0,,0,0xFFFFFFFE,7,2,64,,61,1,0,{ bonus bMaxHPRate,5; bonus bMaxSPRate,5; },{},{}
 2446,Krieger_Shoes3,Glorious Mass-Production Shoes,4,20,,0,,0,,0,0xFFFFFFFE,7,2,64,,0,1,0,{ bonus bMaxHPRate,5; },{},{}
 2447,Military_Boots,Army Boots,4,0,,1000,,5,,0,0xFFFFFFFE,7,2,64,,0,1,0,{},{},{}
@@ -1396,14 +1396,14 @@
 2530,Rider_Insignia_,Rider Insignia,4,20,,500,,4,,1,0xFFFFFFFE,2,2,4,,55,1,0,{ bonus bAgi,2; },{},{}
 2531,Ulfhedinn,Ulfhedinn,4,20,,700,,3,,1,0x000654E2,2,2,4,,70,1,0,{ bonus3 bAutoSpellWhenHit,"NPC_STONESKIN",1,20; },{},{}
 2532,Mithril_Magic_Cape,Mithril Magic Cape,4,20,,400,,3,,1,0x00098B1C,2,2,4,,70,1,0,{ bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",1,200,BF_MAGIC,0; },{},{}
-//2533,Freyja_Cape,Freyja Cape,4,0,,200,,10,,0,0xFFFFFFFE,7,2,4,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,15; },{},{}
+//2533,Freyja_Cape,Freyja Cape,4,0,,200,,10,,0,0xFFFFFFFE,7,2,4,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; },{},{}
 2534,Ruffler,Ruffler,4,20,,0,,10,,0,0xFFFFFFFF,7,2,4,,0,0,0,{ bonus2 bSubEle,Ele_Neutral,17; bonus bFlee,17; },{},{}
 2535,Cloak_Of_Survival_C,Cloak Of Survival,4,1,,0,,5,,0,0x00810204,7,2,4,,0,0,0,{ bonus bVit,10; bonus bMdef,10; },{},{}
 2536,Skin_Of_Ventus,Skin of Ventus,4,20,,250,,2,,1,0xFFFFFFFE,7,2,4,,60,1,0,{ bonus bMdef,2; bonus bMaxHP,200; bonus bFlee,10; },{},{}
 2537,Diabolus_Manteau,Diabolus Manteau,4,20,,250,,5,,1,0x00CFFF80,2,2,4,,0,1,0,{ bonus2 bSubEle,Ele_Neutral,5; bonus bMaxHP,100; bonus2 bAddDamageClass,1916,10; bonus2 bAddDamageClass,1917,10; },{},{}
-2538,Commander_Manteau,Captain's Manteau,4,10,,0,,4,,1,0x026654E2,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
-2539,Commander_Manteau_,Commander's Manteau,4,10,,0,,3,,1,0x00898B1C,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
-2540,Sheriff_Manteau,Sheriff's Manteau,4,10,,0,,3,,1,0x41000000,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2538,Commander_Manteau,Captain's Manteau,4,10,,0,,4,,1,0x026654E2,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{}
+2539,Commander_Manteau_,Commander's Manteau,4,10,,0,,3,,1,0x00898B1C,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{}
+2540,Sheriff_Manteau,Sheriff's Manteau,4,10,,0,,3,,1,0x41000000,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{}
 2541,Asprika,Asprika,4,20,,400,,5,,0,0xFFFFFFFF,7,2,4,,94,0,0,{ bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,0; },{},{}
 2542,Flame_Manteau,Flame Manteau of Naght Sieger,4,20,,70,,4,,1,0xFFFFFFFE,2,2,4,,70,1,0,{ bonus bMaxHPRate,5; bonus bMdef,2; bonus bMatkRate,1; bonus2 bAddEle,Ele_Fire,2; },{},{}
 2543,Sylphid_Manteau,Sylphid Manteau,4,20,,0,,9,,0,0xFFFFFFFF,7,2,4,,0,0,0,{ bonus bFlee,13; bonus2 bSubEle,Ele_Neutral,13; bonus bFlee2,1; },{},{}
@@ -1411,8 +1411,8 @@
 2545,Musika,Musika,4,20,,500,,2,,1,0x00008100,2,2,4,,70,1,0,{ bonus bMdef,3; bonus3 bAutoSpellwhenhit,"AL_HEAL",getskilllv("AL_HEAL")?getskilllv("AL_HEAL"):1,20; },{},{}
 2546,Beach_Manteau,Beach Manteau,4,20,,600,,0,,1,0xFFFFFFFF,7,2,4,,0,1,0,{ bonus bStr,1; bonus bInt,1; bonus2 bSubEle,Ele_Fire,10; },{},{}
 2547,Cheap_Running_Shirts,Cheap Undershirt,4,0,,0,,8,,0,0xFFFFFFFF,7,2,4,,0,1,0,{ bonus bDex,2; bonus bFlee,10; bonus2 bSubEle,Ele_Neutral,10; bonus bMdef,1; },{},{}
-2548,Muffler_C,Neo Muffler,4,0,,0,,5,,0,0xFFFFFFFE,2,2,4,,95,0,0,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,10; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5; },{},{}
-2549,Krieger_Muffler1,Glorious Muffler,4,20,,0,,0,,0,0xFFFFFFFE,7,2,4,,81,1,0,{ bonus bMaxHPRate,5; bonus2 bSubRace,RC_DemiHuman,5; },{},{}
+2548,Muffler_C,Neo Muffler,4,0,,0,,5,,0,0xFFFFFFFE,2,2,4,,95,0,0,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,10; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5; },{},{}
+2549,Krieger_Muffler1,Glorious Muffler,4,20,,0,,0,,0,0xFFFFFFFE,7,2,4,,81,1,0,{ bonus bMaxHPRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
 2550,Fisher's_Muffler,Fisher's Muffler,4,20,,200,,0,,0,0xFFFFFFFF,7,2,4,,0,1,0,{},{},{}
 2551,Rider_Insignia_M,Crest of the Rider,4,20,,500,,4,,1,0xFFFFFFFE,2,2,4,,55,1,0,{ bonus bAgi,2; },{},{}
 2552,Mithril_Magic_Cape_M,Mithril Magic Manteau,4,20,,400,,3,,1,0x00098B1C,2,2,4,,70,1,0,{ bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",1,200,BF_MAGIC,0; },{},{}
@@ -1578,7 +1578,7 @@
 2757,Insecticide_Ring,Insecticide Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Insect,15; },{},{}
 2758,Fisher_Ring,Fischer Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Fish,15; },{},{}
 2759,Decussate_Ring,Decussate Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Demon,15; },{},{}
-2760,Bloody_Ring,Bloody Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_DemiHuman,15; },{},{}
+2760,Bloody_Ring,Bloody Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_DemiHuman,15; bonus2 bExpAddRace,RC_Player,15; },{},{}
 2761,Satanic_Ring,Satanic Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Angel,15; },{},{}
 2762,Dragoon_Ring,Dragon Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Dragon,15; },{},{}
 2763,Skul_Ring_C,Neo Skull Ring,4,0,,0,,0,,0,0xFFFFFFFE,2,2,136,,95,0,0,{ bonus bAtkRate,5; bonus bMatkrate,5; bonus bMaxHPrate,5; bonus2 bSkillHeal,"AL_HEAL",5; skill "MG_SIGHT",1; },{},{}
@@ -1614,8 +1614,8 @@
 //2793,Ring_Of_Resonance_I,Ring of Resonance,4,0,,0,,2,,0,0x00CFFF80,2,2,136,,0,0,0,{ bonus bAgi,2; bonus bVit,1; bonus bMdef,2; bonus4 bAutoSpellWhenHit,"WZ_QUAGMIRE",1,50,0; bonus3 bAutoSpellWhenHit,"AS_SPLASHER",10,20; bonus3 bAutoSpellWhenHit,"AL_HEAL",10,30; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,20; bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",5,20; },{},{}
 2794,Magic_Stone_Ring,Magic Stone Ring,4,0,,0,,0,,1,0x00004082,7,2,136,,99,0,0,{ bonus bStr,2; },{},{}
 2795,Green_Apple_Ring,Green Apple Ring,4,0,,0,,0,,0,0xFFFFFFFE,7,2,136,,99,0,0,{ bonus bAllStats,6; if(JobLevel <30) { bonus bAllStats,(JobLevel/5); } },{},{}
-2796,Magical_Stone,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2047,10; bonus2 bAddDefMonster,2048,-10; bonus3 bAddClassDropItem,6152,2047,70; },{},{}
-2797,Magical_Stone_,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2049,10; bonus2 bAddDefMonster,2050,-10; bonus3 bAddClassDropItem,6151,2049,70; },{},{}
+2796,Magical_Stone,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2047,10; bonus2 bAddDefMonster,2048,-10; bonus3 bAddMonsterIdDropItem,6152,2047,70; },{},{}
+2797,Magical_Stone_,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2049,10; bonus2 bAddDefMonster,2050,-10; bonus3 bAddMonsterIdDropItem,6151,2049,70; },{},{}
 2798,Will_Of_Exhausted_Angel,Will Of Exhausted Angel,4,0,,200,,0,,0,0x00008100,7,2,136,,99,0,0,{ if(strcharinfo(3)=="job3_arch02") { bonus2 bAddDefMonster,1761,50; bonus2 bAddDefMonster,1762,50; } },{},{}
 2799,Kuirpenring,Kuirpenring,4,0,,100,,0,,1,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMdef,1; },{},{}
 2819,Swordman_Manual,Swordsman Manual,4,0,,100,,0,,0,0x00000001,7,2,136,,1,0,0,{ bonus bMaxSP,100; skill "SM_BASH",1; skill "SM_PROVOKE",1; skill "SM_MAGNUM",1; },{},{}
@@ -1660,7 +1660,7 @@
 4032,Ambernite_Card,Ambernite Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,2; },{},{}
 4033,Poporing_Card,Poporing Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_DETOXIFY",1; },{},{}
 4034,Worm_Tail_Card,Wormtail Card,6,20,,10,,,,,,,,136,,,,,{ bonus bDex,2; },{},{}
-4035,Hydra_Card,Hydra Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_DemiHuman,20; },{},{}
+4035,Hydra_Card,Hydra Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; },{},{}
 4036,Muka_Card,Muka Card,6,20,,10,,,,,,,,136,,,,,{ bonus bHPrecovRate,10; },{},{}
 4037,Snake_Card,Snake Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEff,Eff_Poison,500; bonus bBaseAtk,5; },{},{}
 4038,Zombie_Card,Zombie Card,6,20,,10,,,,,,,,64,,,,,{ bonus bHPrecovRate,20; },{},{}
@@ -1683,7 +1683,7 @@
 4055,Marina_Card,Marina Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEff,Eff_Freeze,500; bonus bBaseAtk,5; },{},{}
 4056,Dustiness_Card,Dustiness Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Wind,30; bonus bFlee,5; },{},{}
 4057,Metaller_Card,Metaller Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEff,Eff_Silence,500; bonus bBaseAtk,5; },{},{}
-4058,Thara_Frog_Card,Thara Frog Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_DemiHuman,30; },{},{}
+4058,Thara_Frog_Card,Thara Frog Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player,30; },{},{}
 4059,Soldier_Andre_Card,Soldier Andre Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Plant,30; },{},{}
 4060,Goblin_Card,Goblin Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Brute,20; },{},{}
 4061,Cornutus_Card,Cornutus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bUnbreakableArmor,0; bonus bDef,1; },{},{}
@@ -1750,7 +1750,7 @@
 4122,Deviruchi_Card,Deviruchi Card,6,20,,10,,,,,,,,769,,,,,{ bonus bStr,1; bonus2 bResEff,Eff_Blind,10000; },{},{}
 4123,Eddga_Card,Eddga Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMaxHPrate,-25; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; }
 4124,Medusa_Card,Medusa Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Demon,15; bonus2 bResEff,Eff_Stone,10000; },{},{}
-4125,Deviace_Card,Deviace Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Brute,7; bonus2 bAddRace,RC_Plant,7; bonus2 bAddRace,RC_Insect,7; },{},{}
+4125,Deviace_Card,Deviace Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bAddRace,RC_Brute,7; bonus2 bAddRace,RC_Plant,7; bonus2 bAddRace,RC_Insect,7; },{},{}
 4126,Minorous_Card,Minorous Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddSize,Size_Large,15; bonus bBaseAtk,5; },{},{}
 4127,Nightmare_Card,Nightmare Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bResEff,Eff_Sleep,10000; bonus bAgi,1; },{},{}
 4128,Golden_Bug_Card,Golden Thief Bug Card,6,20,,10,,,,,,,,32,,,,,{ bonus bNoMagicDamage,100; bonus bUseSPrate,100; },{},{}
@@ -1779,7 +1779,7 @@
 4151,Gajomart_Card,Gajomart Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Plant,-20; bonus2 bExpAddRace,RC_Plant,10; },{},{}
 4152,Galapago_Card,Galapago Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemHealRate,IG_Juice,50; bonus3 bAddMonsterDropItem,531,RC_Insect,300; bonus3 bAddMonsterDropItem,532,RC_Insect,300; bonus3 bAddMonsterDropItem,534,RC_Insect,300; },{},{}
 4153,Crab_Card,Crab Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1266,30; },{},{}
-4154,Rice_Cake_Boy_Card,Dumpling Child Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; },{},{}
+4154,Rice_Cake_Boy_Card,Dumpling Child Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,529,RC_Player,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,530,RC_Player,100; },{},{}
 4155,Goblin_Leader_Card,Goblin Leader Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,1,30; },{},{}
 4156,Steam_Goblin_Card,Goblin Steamrider Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Formless,7; },{},{}
 4157,Goblin_Archer_Card,Goblin Archer Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Undead,7; },{},{}
@@ -1870,8 +1870,8 @@
 4242,Apocalips_Card,Apocalipse Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,2; if(getrefine()>8) bonus bMaxHP,800; },{},{}
 4243,Antonio_Card,Antonio Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AL_TELEPORT",1,500; },{},{}
 4244,Alarm_Card,Alarm Card,6,20,,10,,,,,,,,64,,,,,{ bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,200; bonus bMaxHP,300; bonus bVit,1; },{},{}
-4245,Am_Mut_Card,Am Mut Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bExpAddRace,RC_DemiHuman,10; },{},{}
-4246,Assulter_Card,Assaulter Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7; },{},{}
+4245,Am_Mut_Card,Am Mut Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; bonus2 bExpAddRace,RC_Player,10; },{},{}
+4246,Assulter_Card,Assaulter Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7; bonus2 bCriticalAddRace,RC_Player,7; },{},{}
 4247,Aster_Card,Aster Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1074,30; },{},{}
 4248,Ancient_Mummy_Card,Ancient Mummy Card,6,20,,10,,,,,,,,32,,,,,{ bonus3 bAutoSpellWhenHit,"AL_CRUCIS",5,30; },{},{}
 4249,Ancient_Worm_Card,Ancient Worm Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Demon,-20; bonus2 bExpAddRace,RC_Demon,10; },{},{}
@@ -1881,7 +1881,7 @@
 4253,Alice_Card,Alice Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubClass,Class_Boss,40; bonus2 bSubClass,Class_Normal,-40; },{},{}
 4254,Tirfing_Card,Ogretooth Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Medium,25; bonus bDef,1; },{},{}
 4255,Orc_Lady_Card,Orc Lady Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,3,30; },{},{}
-4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; },{},{}
+4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,12034,RC_Player,100; },{},{}
 4257,Wild_Rose_Card,Wild Rose Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAgi,1; if(BaseClass==Job_Thief) bonus bFlee2,5; },{},{}
 4258,Wicked_Nymph_Card,Evil Nymph Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,1; bonus bMaxSP,50; },{},{}
 4259,Wooden_Golem_Card,Wooden Golem Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDef,1; bonus bHPrecovRate,30; },{},{}
@@ -1954,7 +1954,7 @@
 4326,See_Otter_Card,Sea-Otter Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemHealRate,IG_Fish,50; bonus3 bAddMonsterDropItem,551,RC_Fish,300; bonus3 bAddMonsterDropItem,544,RC_Fish,300; },{},{}
 4327,Blood_Butterfly_Card,Bloody Butterfly Card,6,20,,10,,,,,,,,136,,,,,{ bonus bCastrate,30; bonus bNoCastCancel,0; bonus2 bSkillAtk,"MG_FIREWALL",5; },{},{}
 4328,Hyegun_Card,Yao Jun Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee,15; bonus bCritical,1; },{},{}
-4329,Phendark_Card,Phendark Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_DemiHuman,5; },{},{ heal 0,-5; }
+4329,Phendark_Card,Phendark Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_DemiHuman,5; bonus2 bSPGainRace,RC_Player,5; },{},{ heal 0,-5; }
 4330,Dark_Snake_Lord_Card,Evil Snake Lord Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,3; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Curse,10000; },{},{}
 4331,Heater_Card,Heater Card,6,20,,10,,,,,,,,136,,,,,{ bonus bCritical,3; if(BaseClass==Job_Swordman) bonus bFlee2,3; },{},{}
 4332,Waste_Stove_Card,Waste Stove Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,5; bonus bInt,1; },{},{}
@@ -1985,7 +1985,7 @@
 4357,B_Seyren_Card,Lord Knight Card,6,20,,10,,,,,,,,769,,,,,{ skill "LK_BERSERK",1; bonus bMaxHPrate,-50; },{},{}
 4358,Seyren_Card,Seyren Windsor Card,6,20,,10,,,,,,,,769,,,,,{ bonus bStr,getrefine()-6; },{},{}
 4359,B_Eremes_Card,Assassin Cross Card,6,20,,10,,,,,,,,4,,,,,{ skill "AS_CLOAKING",3; },{},{ sc_end SC_CLOAKING; }
-4360,Eremes_Card,Eremes Guile Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bCriticalAddRace,RC_DemiHuman,10; },{},{}
+4360,Eremes_Card,Eremes Guile Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bCriticalAddRace,RC_DemiHuman,10; bonus2 bCriticalAddRace,RC_Player,10; },{},{}
 4361,B_Harword_Card,MasterSmith Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBreakWeaponRate,1000; bonus bBreakArmorRate,700; },{},{}
 4362,Harword_Card,Howard Alt-Eisen Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,-5; bonus bHit,30; },{},{}
 4363,B_Magaleta_Card,High Priest Card,6,20,,10,,,,,,,,16,,,,,{ bonus5 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,50,BF_WEAPON|BF_MAGIC,0; },{},{}
@@ -2060,13 +2060,13 @@
 4432,Magmaring_Card,Magmaring Card,6,20,,10,,,,,,,,4,,,,,{ bonus bBaseAtk,5; bonus2 bAddEle,Ele_Earth,10; bonus2 bCriticalAddRace,RC_Brute,15; },{},{}
 4433,Imp_Card,Imp Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bSkillAtk,"MG_FIREBOLT",25; bonus2 bCastrate,"MG_FIREBOLT",-25; },{},{}
 4434,Knocker_Card,Knocker Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bAddRace,RC_Formless,5; bonus3 bAddMonsterDropItem,756,RC_Formless,10; bonus3 bAddMonsterDropItem,757,RC_Formless,10; },{},{}
-4435,Zombie_Slaughter_Card,Zombie Slaughter Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus bHPGainValue,50; },{},{}
-4436,Ragged_Zombie_Card,Ragged Zombie Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus2 bAddEff2,Eff_Bleeding,10; },{},{}
+4435,Zombie_Slaughter_Card,Zombie Slaughter Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_Player,1; bonus bHPGainValue,50; },{},{}
+4436,Ragged_Zombie_Card,Ragged Zombie Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_Player,1; bonus2 bAddEff2,Eff_Bleeding,10; },{},{}
 4437,Hell_Poodle_Card,Hell Poodle Card,6,20,,10,,,,,,,,136,,,,,{ bonus bHit,1; bonus2 bAddItemHealRate,517,100; bonus3 bAddEff,Eff_Bleeding,50,ATF_SHORT; },{},{}
 4438,Banshee_Card,Banshee Card,6,20,,10,,,,,,,,769,,,,,{ if(BaseClass==Job_Mage){ bonus bMaxSP,100; bonus bMaxHP,-100; bonus2 bSkillAtk,"MG_NAPALMBEAT",20; bonus2 bSkillAtk,"MG_SOULSTRIKE",20; bonus2 bSkillAtk,"HW_NAPALMVULCAN",20; } },{},{}
 4439,Flame_Skull_Card,Flame Skull Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bResEff,Eff_Blind,3000; bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Curse,3000; bonus2 bResEff,Eff_Stone,3000; bonus2 bAddEffWhenHit,Eff_Blind,500; bonus2 bAddEffWhenHit,Eff_Stun,500; bonus2 bAddEffWhenHit,Eff_Curse,500; bonus2 bAddEffWhenHit,Eff_Stone,500; },{},{}
 4440,Necromancer_Card,Necromancer Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { bonus bInt,1; bonus2 bIgnoreMdefClassRate,Class_Normal,2; bonus2 bIgnoreMdefClassRate,Class_Boss,2; } },{},{}
-4441,Fallen_Bishop_Card,Fallen Bishop Hibram Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiHuman,50; },{},{}
+4441,Fallen_Bishop_Card,Fallen Bishop Hibram Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiHuman,50; bonus2 bMagicAddRace,RC_Player,50; },{},{}
 4442,Tatacho_Card,Tatacho Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Neutral,20; bonus2 bAddEle,Ele_Neutral,5; },{},{}
 4443,Aqua_Elemental_Card,Aqua Elemental Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Water,20; bonus2 bAddEle,Ele_Water,5; },{},{}
 4444,Draco_Card,Draco Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Earth,20; bonus2 bAddEle,Ele_Earth,5; },{},{}
@@ -2288,7 +2288,7 @@
 5118,Ear_Of_Puppy,Puppy Headband,4,20,,100,,2,,0,0xFFFFFFFF,7,2,256,,0,1,199,{},{},{}
 5119,Super_Novice_Hat_,Super Novice Hat,4,8500,,400,,4,,1,0x00000001,7,2,256,,40,1,193,{ bonus bAllStats,1; },{},{}
 5120,Fedora_,Bucket Hat,4,6000,,300,,3,,1,0xFFFFFFFF,7,2,256,,0,1,195,{},{},{}
-5121,Zherlthsh_Mask,Zealotus Mask,4,20,,400,,3,,0,0xFFFFFFFE,7,2,768,,70,1,200,{ bonus2 bAddRace,RC_DemiHuman,5; bonus2 bSubRace,RC_DemiHuman,5; },{},{}
+5121,Zherlthsh_Mask,Zealotus Mask,4,20,,400,,3,,0,0xFFFFFFFE,7,2,768,,70,1,200,{ bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
 5122,Magni_Cap,Magni's Cap,4,30000,,1000,,5,,0,0xFFFFFFFE,7,2,256,,65,1,250,{ bonus bStr,2; },{},{}
 5123,Ulle_Cap,Ulle's Cap,4,30000,,500,,3,,1,0xFFFFFFFE,7,2,256,,65,1,254,{ bonus bDex,2; bonus bAgi,1; },{},{}
 5124,Fricca_Circlet,Fricca's Circlet,4,30000,,300,,3,,0,0xFFFFFFFE,7,2,256,,65,1,251,{ bonus bMdef,10; bonus bInt,2; bonus bMaxSP,50; },{},{}
@@ -2299,17 +2299,17 @@
 5129,Bird_Nest,Bird Nest,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,50,0,201,{ bonus bAgi,2; bonus2 bSubRace,RC_Brute,10; },{},{}
 5130,Lion_Mask,Lion Mask,4,20,,700,,0,,0,0x00CFDF80,7,2,768,,75,1,202,{ bonus2 bAddEffWhenHit,Eff_Silence,500; bonus bMdef,1; },{},{}
 5131,Close_Helmet,Close Helmet,4,20,,1200,,8,,0,0x00004082,7,2,769,,75,1,203,{ bonus bVit,3; bonus bMaxHPrate,3; },{},{}
-5132,Angeling_Hat,Angeling Hat,4,20,,700,,2,,0,0xFFFFFFFF,7,2,256,,0,0,204,{ bonus2 bSubRace,RC_DemiHuman,10; },{},{}
+5132,Angeling_Hat,Angeling Hat,4,20,,700,,2,,0,0xFFFFFFFF,7,2,256,,0,0,204,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 5133,Sheep_Hat,Sheep Hat,4,20,,150,,1,,0,0x00008110,7,2,256,,0,0,205,{ bonus bShortWeaponDamageReturn,5; },{},{}
 5134,Pumpkin_Hat,Pumpkin-Head,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus2 bSubRace,RC_Demon,5; },{},{}
 5135,Cyclops_Visor,Cyclop's Eye,4,0,,200,,0,,0,0xFFFFFFFE,7,2,512,,75,0,207,{ bonus bMaxSP,50; },{},{}
 5136,Santa's_Hat_,Antonio's Santa Hat,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,20,{},{},{}
-5137,Alice_Doll,Alice Doll,4,20,,500,,0,,1,0xFFFFFFFE,7,2,256,,30,0,208,{ bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddEff2,Eff_Sleep,10; },{},{}
+5137,Alice_Doll,Alice Doll,4,20,,500,,0,,1,0xFFFFFFFE,7,2,256,,30,0,208,{ bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEff2,Eff_Sleep,10; },{},{}
 5138,Magic_Eyes,Magic Eyes,4,20,,300,,1,,0,0x00810204,7,2,256,,30,1,209,{ bonus bMdef,5; bonus bCastrate,-10; bonus bUseSPrate,20; },{},{}
 5139,Hibiscus,Hibiscus,4,20,,200,,0,,0,0xFFFFFFFF,7,2,256,,10,0,210,{ bonus bDex,1; bonus bInt,1; bonus bMdef,5; },{},{}
 5140,Charming_Ribbon,Charming Ribbon,4,20,,400,,1,,1,0xFFFFFFFF,7,2,256,,10,1,211,{ bonus2 bSubRace,RC_Undead,5; bonus2 bSubRace,RC_Demon,5; },{},{}
 5141,Marionette_Doll,Marionette Doll,4,20,,400,,0,,1,0xFFFFFFFE,7,2,256,,30,1,212,{ bonus bStr,1; },{},{}
-5142,Crescent_Helm,Crescent Helm,4,20,,3000,,8,,0,0x000444A2,7,2,768,,50,1,213,{ bonus bVit,1; bonus2 bSubRace,RC_DemiHuman,5; },{},{}
+5142,Crescent_Helm,Crescent Helm,4,20,,3000,,8,,0,0x000444A2,7,2,768,,50,1,213,{ bonus bVit,1; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
 5143,Kabuki_Mask,Kabuki Mask,4,20,,1000,,5,,1,0xFFFFFFFE,7,1,769,,30,1,214,{ bonus2 bResEff,Eff_Silence,3000; },{},{}
 5144,Gambler_Hat,Gambler Hat,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,0,1,16,{ bonus bLuk,5; },{},{}
 5145,Carnival_Joker_Jester,Carnival Joker Jester,4,10,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,89,{},{},{}
@@ -2337,9 +2337,9 @@
 5167,Munak_Turban_,Munak Hat,4,20,,300,,5,,1,0xFFFFFFFF,7,2,769,,0,0,51,{ bonus2 bSubRace,RC_Undead,10; },{},{}
 5168,Bongun_Hat_,Bongun Hat,4,20,,300,,5,,1,0xFFFFFFFF,7,2,769,,0,0,139,{},{},{}
 5169,Bride_Mask,Bride Mask,4,30000,,500,,4,,1,0xFFFFFFFF,7,2,768,,40,1,223,{ if(BaseClass==Job_Taekwon){ bonus bLuk,2; bonus bCritical,5; } },{},{}
-5170,Feather_Beret,Feather Beret,4,30000,,600,,1,,0,0xFFFFFFFE,7,2,256,,0,1,224,{ bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10; },{},{}
+5170,Feather_Beret,Feather Beret,4,30000,,600,,1,,0,0xFFFFFFFE,7,2,256,,0,1,224,{ bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 5171,Valkyrie_Helm,Valkyrie Helm,4,100000,,1000,,5,,1,0xFFFFFFFE,2,2,256,,0,1,225,{ bonus bMdef,5; },{},{}
-5172,Beret,Beret,4,30000,,700,,0,,0,0xFFFFFFFF,7,2,256,,0,0,226,{ bonus2 bSubRace,RC_DemiHuman,10; },{},{}
+5172,Beret,Beret,4,30000,,700,,0,,0,0xFFFFFFFF,7,2,256,,0,0,226,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 5173,Satto_Hat,Magistrate Hat,4,30000,,400,,3,,1,0xFFFFFFFF,7,2,256,,60,1,227,{ if(BaseClass==Job_Taekwon){ bonus bAgi,1; bonus bHPrecovRate,3; } },{},{}
 5174,Ayam,Ayam,4,30000,,400,,3,,1,0xFFFFFFFF,7,2,256,,60,1,228,{ if(BaseClass==Job_Taekwon){ bonus bInt,1; bonus bSPrecovRate,3; } },{},{}
 5175,Censor_Bar,Censor Bar,4,30000,,100,,0,,0,0xFFFFFFFF,7,2,512,,0,0,229,{ bonus2 bResEff,Eff_Curse,500; bonus bMdef,1; bonus bHit,-5; },{},{}
@@ -2433,7 +2433,7 @@
 5263,Ati_Atihan_Hat,Pagdayaw,4,20,,100,,1,,0,0xFFFFFFFE,7,2,769,,20,1,303,{ bonus2 bSubEle,Ele_Water,1; bonus2 bSubEle,Ele_Earth,1; bonus2 bSubEle,Ele_Fire,1; bonus2 bSubEle,Ele_Wind,1; bonus2 bAddEff,Eff_Curse,300; },{},{}
 5264,Aussie_Flag_Hat,Australian Flag Hat,4,20,,500,,4,,0,0xFFFFFFFF,7,2,256,,0,1,304,{ bonus bAllStats,2; },{},{}
 5265,Apple_Of_Archer_C,Apple of Archer,4,1,,0,,7,,0,0xFFFFFFFE,7,2,256,,1,0,72,{ bonus bDex,4; },{},{}
-5266,Bunny_Band_C,Bunny Band,4,1,,0,,9,,0,0xFFFFFFFF,7,2,256,,1,0,15,{ bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,10; },{},{}
+5266,Bunny_Band_C,Bunny Band,4,1,,0,,9,,0,0xFFFFFFFF,7,2,256,,1,0,15,{ bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 5267,Sahkkat_C,Sakkat,4,1,,0,,10,,0,0xFFFFFFFF,7,2,256,,0,0,67,{ bonus bAgi,3; },{},{}
 5268,Lord_Circlet_C,Grand Circlet,4,1,,0,,10,,0,0xFFFFFFFE,7,2,256,,1,0,93,{ bonus bStr,3; bonus bInt,3; bonus bLuk,3; bonus bMdef,4; },{},{}
 5269,Flying_Angel_,Flapping Angel Wing,4,20,,300,,1,,0,0xFFFFFFFF,7,2,256,,10,1,264,{ bonus bInt,1; bonus bAgi,1; bonus bAspdRate,3; bonus bSpeedRate,25; },{},{}
@@ -2450,7 +2450,7 @@
 5280,Magestic_Goat_C,Baphomet Horns,4,2,,0,,5,,0,0xFFFFFFFF,7,2,256,,0,0,41,{ bonus bStr,1; },{},{}
 5281,Deviruchi_Cap_C,Refined Deviruchi Hat,4,2,,0,,2,,0,0xFFFFFFFE,7,2,256,,0,0,123,{ bonus bStr,1; bonus bInt,1; },{},{}
 5282,euRO_Baseball_Cap,Europe Baseball Cap,4,0,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,216,{},{},{}
-5283,Chick_Hat,Chick Hat,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,10,0,311,{ bonus bLuk,2; bonus bMaxHP,50; bonus bMaxSP,50; skill "TF_DOUBLE",2; bonus bDoubleRate,10; bonus2 bSubRace,RC_DemiHuman,3; },{},{}
+5283,Chick_Hat,Chick Hat,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,10,0,311,{ bonus bLuk,2; bonus bMaxHP,50; bonus bMaxSP,50; skill "TF_DOUBLE",2; bonus bDoubleRate,10; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; },{},{}
 5284,Water_Lily_Crown,Water Lily Crown,4,20,,200,,0,,1,0xFFFFFFFF,7,2,256,,30,0,312,{ bonus bDex,1; bonus bAgi,1; bonus bHPrecovRate,5; bonus bSPrecovRate,3; },{},{}
 5285,Vane_Hairpin,Vane Hairpin,4,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,30,0,313,{ bonus bAgi,2; },{},{}
 5286,Pecopeco_Hairband,Pecopeco Hairband,4,20,,0,,3,,0,0xFFFFFFFF,7,2,256,,70,0,314,{ bonus bSpeedRate,25; bonus bAspdRate,-10; bonus bCastrate,25; },{},{}
@@ -2473,15 +2473,15 @@
 5303,Flower_Coronet,Flower Crown,4,20,,300,,1,,0,0xFFFFFFFF,7,2,256,,0,1,325,{ bonus bMdef,3; bonus bMaxHP,50; },{},{}
 5304,Cap_Of_Blindness,Cap Of Blindness,4,20,,800,,4,,1,0xFFFFFFFF,7,2,769,,50,1,326,{ bonus2 bResEff,Eff_Curse,700; bonus2 bResEff,Eff_Blind,10000; },{},{}
 5305,Pirate_Dagger,Pirate Dagger,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,327,{ bonus bBaseAtk,5; },{},{}
-5306,Freyja_Crown,Freya's Crown,4,0,,500,,12,,0,0xFFFFFFFE,7,2,256,,0,0,328,{ bonus2 bSubRace,RC_DemiHuman,5; },{},{}
+5306,Freyja_Crown,Freya's Crown,4,0,,500,,12,,0,0xFFFFFFFE,7,2,256,,0,0,328,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
 5307,Carmen_Miranda's_Hat,Carmen Miranda's Hat,4,20,,400,,3,,0,0xFFFFFFFF,7,2,256,,0,1,329,{ bonus bMdef,3; bonus3 bAutoSpellWhenHit,"DC_WINKCHARM",1,50; },{},{}
 5308,Brazilian_Flag_Hat,Brazil National Flag Hat,4,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,0,1,330,{ bonus bSpeedAddRate,25; },{},{}
 5309,Mahican,Wool Mask,4,20,,200,,1,,0,0xFFFFFFFF,7,2,769,,0,1,331,{ skill "RG_GRAFFITI",1; },{},{}
 5310,Bulb_Hairband,Shining Electric Bulb Hairband,4,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,332,{ bonus2 bSubEle,Ele_Dark,10; skill "MG_SIGHT",1; },{},{ sc_end SC_SIGHT; }
 5311,Large_Hibiscus,Large Hisbiscus,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,333,{ bonus bMdef,15; },{},{}
-5312,Ayothaya_Hat,Ayothaya King's Hat,4,20,,100,,5,,1,0x000654E2,7,2,256,,0,1,334,{ bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
+5312,Ayothaya_Hat,Ayothaya King's Hat,4,20,,100,,5,,1,0x000654E2,7,2,256,,0,1,334,{ bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
 5313,Diadem,Diadem,4,20,,100,,3,,1,0xFFFFFFFF,7,2,768,,0,1,335,{ bonus bInt,1; bonus bMatkRate,3; bonus bCastrate,-3; },{},{}
-5314,Hockey_Mask,Hockey Mask,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,50,0,336,{ bonus2 bAddRace,RC_DemiHuman,5; },{},{}
+5314,Hockey_Mask,Hockey Mask,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,50,0,336,{ bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
 5315,Observer,Observer,4,20,,100,,1,,0,0xFFFFFFFF,7,2,512,,35,0,337,{ skill "WZ_ESTIMATION",1; },{},{}
 5316,Umbrella_Hat,Umbrella Hat,4,20,,100,,2,,0,0xFFFFFFFF,7,2,256,,50,1,338,{ bonus2 bSubEle,Ele_Water,3; },{},{}
 5317,Fisherman_Hat,Fisherman's Hat,4,20,,100,,2,,0,0xFFFFFFFF,7,2,256,,50,1,339,{ bonus3 bAutoSpell,"WZ_WATERBALL",3,50; },{},{}
@@ -2493,7 +2493,7 @@
 5323,Misstrance_Crown,Misstrance Crown,4,20,,0,,10,,0,0xFFFFFFFF,7,2,256,,0,0,165,{ bonus bAllStats,2; },{},{}
 5324,Little_Angel_Doll,Little Angel Doll,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,10,1,344,{ bonus bDex,3; bonus4 bAutoSpellWhenHit,"CR_GRANDCROSS",3,30,0; },{},{}
 5325,Robo_Eye,Robo Eye,4,20,,200,,2,,0,0xFFFFFFFF,7,2,512,,10,0,345,{ bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; bonus bDex,1; },{},{}
-5326,Masquerade_C,Masquerade C,4,1,,0,,1,,0,0xFFFFFFFF,7,2,512,,0,0,78,{ bonus2 bAddRace,RC_DemiHuman,7; },{},{}
+5326,Masquerade_C,Masquerade C,4,1,,0,,1,,0,0xFFFFFFFF,7,2,512,,0,0,78,{ bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; },{},{}
 5327,Orc_Hero_Helm_C,Refined Helmet of Orc Hero,4,1,,0,,10,,0,0xFFFFFFFE,7,2,768,,0,0,178,{ bonus bStr,5; bonus bVit,3; },{},{}
 5328,Evil_Wing_Ears_C,Evil Wing Ears C,4,1,,0,,2,,0,0xFFFFFFFF,7,2,512,,0,0,152,{ bonus bStr,1; },{},{}
 5329,Dark_Blindfold_C,Dark Blindfold C,4,1,,0,,1,,0,0xFFFFFFFF,7,2,512,,0,0,187,{ bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Stun,500; },{},{}
@@ -2507,12 +2507,12 @@
 5337,Party_Recruiter_Hat,Party Recruiter Hat,4,0,,0,,2,,0,0xFFFFFFFF,7,2,256,,10,1,351,{},{},{}
 5338,Bf_Recruiter_Hat,Bf Recruiter Hat,4,0,,0,,2,,0,0xFFFFFFFF,7,2,256,,10,1,352,{},{},{}
 5339,Friend_Recruiter_Hat,Friend Recruiter Hat,4,0,,0,,2,,0,0xFFFFFFFF,7,2,256,,10,1,353,{},{},{}
-5340,Deprotai_Doll_Hat,Defolty Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,354,{ bonus2 bSubRace,RC_DemiHuman,5; bonus bStr,2; bonus3 bAutoSpellWhenHit,"AL_ANGELUS",10,20; },{},{}
-5341,Claris_Doll_Hat,Glaris Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,355,{ bonus2 bSubRace,RC_DemiHuman,5; bonus bInt,2; bonus bMagicHPGainValue,50; },{},{}
-5342,Sorin_Doll_Hat,Sorin Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,356,{ bonus2 bSubRace,RC_DemiHuman,5; bonus bDex,2; autobonus "{ bonus bBaseAtk,50; }",20,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
-5343,Tayelin_Doll_Hat,Telling Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,357,{ bonus2 bSubRace,RC_DemiHuman,5; bonus bAgi,2; bonus2 bAddItemHealRate,504,10; bonus2 bAddItemHealRate,547,10; },{},{}
-5344,Binit_Doll_Hat,Bennit Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,358,{ bonus2 bSubRace,RC_DemiHuman,5; bonus bVit,2; autobonus "{ bonus bAspdRate,5; }",20,30000,0,"{ specialeffect2 EF_HASTEUP; }"; },{},{}
-5345,Debril_Doll_Hat,W Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,359,{ bonus2 bSubRace,RC_DemiHuman,5; bonus bLuk,2; bonus2 bAddRace,RC_Undead,5; bonus2 bMagicAddRace,RC_Undead,5; bonus2 bSubRace,RC_Undead,5; },{},{}
+5340,Deprotai_Doll_Hat,Defolty Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,354,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bStr,2; bonus3 bAutoSpellWhenHit,"AL_ANGELUS",10,20; },{},{}
+5341,Claris_Doll_Hat,Glaris Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,355,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bInt,2; bonus bMagicHPGainValue,50; },{},{}
+5342,Sorin_Doll_Hat,Sorin Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,356,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bDex,2; autobonus "{ bonus bBaseAtk,50; }",20,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
+5343,Tayelin_Doll_Hat,Telling Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,357,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bAgi,2; bonus2 bAddItemHealRate,504,10; bonus2 bAddItemHealRate,547,10; },{},{}
+5344,Binit_Doll_Hat,Bennit Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,358,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bVit,2; autobonus "{ bonus bAspdRate,5; }",20,30000,0,"{ specialeffect2 EF_HASTEUP; }"; },{},{}
+5345,Debril_Doll_Hat,W Doll Hat,4,0,,500,,0,,1,0xFFFFFFFF,7,2,256,,60,0,359,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bLuk,2; bonus2 bAddRace,RC_Undead,5; bonus2 bMagicAddRace,RC_Undead,5; bonus2 bSubRace,RC_Undead,5; },{},{}
 5346,Gf_Recruiter_Hat,Gf Recruiter Hat,4,0,,0,,2,,0,0xFFFFFFFF,7,2,256,,10,1,360,{},{},{}
 5347,Ph.D_Hat_,Ph.D Hat,4,20,,200,,3,,1,0xFFFFFFFE,7,2,256,,0,1,98,{},{},{}
 5348,Big_Sis'_Ribbon_,Big Ribbon,4,15000,,200,,2,,1,0xFFFFFFFE,7,2,256,,0,1,28,{ bonus bMdef,3; },{},{}
@@ -2530,7 +2530,7 @@
 5360,Whikebain_Ears,Hyuke's Black Cat Ears,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,45,1,368,{ bonus bFlee,10; bonus bCritical,3; bonus bCritAtkRate,10; bonus bDefRate,-50; bonus bDef2Rate,-50; },{},{}
 5361,Gang_Scarf,Gangster Scarf,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,60,0,369,{ bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1; },{},{}
 5362,Ninja_Scroll,Ninja Scroll,4,20,,200,,0,,0,0xFFFFFFFF,7,2,1,,60,0,370,{ bonus bMatkRate,1; },{},{}
-5363,Helm_Of_Abyss,Helm Of Abyss,4,20,,1000,,2,,1,0x000654E2,7,2,256,,70,1,371,{ bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubClass,Class_Boss,10; },{},{}
+5363,Helm_Of_Abyss,Helm Of Abyss,4,20,,1000,,2,,1,0x000654E2,7,2,256,,70,1,371,{ bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus2 bSubClass,Class_Boss,10; },{},{}
 5364,Dark_Snake_Lord_Hat,Evil Snake Lord Hat,4,20,,500,,2,,1,0xFFFFFFFF,7,2,256,,60,1,372,{ bonus bStr,1; bonus bInt,1; bonus bAgi,2; },{},{}
 5365,Fried_Egg,Magnolia Hat,4,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,1,0,373,{ bonus2 bResEff,Eff_Stun,500; skill "HT_FLASHER",1; },{},{}
 5366,Hat_0f_King,Love Dad Bandana,4,20,,200,,3,,0,0xFFFFFFFF,7,2,256,,0,1,374,{ bonus bAllStats,5; },{},{}
@@ -2541,16 +2541,16 @@
 5371,Hat_Of_Judge,Judge Hat,4,20,,300,,2,,0,0xFFFFFFFF,7,2,768,,0,1,377,{ bonus bLuk,1; bonus bMaxSP,30; },{},{}
 5372,Drooping_White_Kitty,Koneko Hat,4,20,,500,,1,,0,0xFFFFFFFF,7,2,256,,0,1,378,{ bonus bInt,1; bonus bDelayRate,-3; bonus bMatkRate,3; bonus bMaxSPrate,3; bonus bMdef,3; },{},{}
 5373,Darkness_Helm,Dark Randgris Helm,4,20,,300,,2,,1,0xFFFFFFFF,7,2,768,,0,1,379,{ bonus bDex,3; bonus bMdef,1; },{},{}
-5374,L_Magestic_Goat,Gigantic Majestic Goat,4,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,0,1,380,{ bonus2 bAddRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{}
+5374,L_Magestic_Goat,Gigantic Majestic Goat,4,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,0,1,380,{ bonus2 bAddRace,RC_DemiHuman,12; bonus2 bAddRace,RC_Player,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{}
 5375,L_Orc_Hero_Helm,Orc Hero Headdress,4,20,,900,,5,,1,0xFFFFFFFF,7,2,768,,0,1,381,{ bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",3,10; },{},{}
 5376,Satanic_Chain_P,Flying Evil Wing,4,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,382,{ bonus bMaxSP,120; bonus2 bAddEff2,Eff_Curse,300; },{},{}
-5377,Antique_Pipe,Gentleman's Pipe,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,383,{ bonus2 bSubRace,RC_DemiHuman,2; },{},{}
+5377,Antique_Pipe,Gentleman's Pipe,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,383,{ bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{}
 5378,Rabbit_Ear_Hat,Bunny Top Hat,4,20,,300,,0,,0,0xFFFFFFFF,7,2,256,,0,1,384,{ bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10; },{},{}
 5379,Balloon_Hat,Tam,4,0,,800,,3,,1,0xFFFFFFFF,7,2,256,,50,1,385,{ bonus bMdef,2; bonus bMatkRate,2+(getrefine()/2); },{},{}
 5380,Fish_Head_Hat,Fish Head Hat,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,0,1,386,{ bonus3 bAutoSpell,"SA_FROSTWEAPON",1,5; },{},{}
 5381,Santa_Poring_Hat,Santa Poring Hat,4,20,,100,,2,,1,0xFFFFFFFF,7,2,256,,0,0,387,{ bonus bMdef,2; bonus2 bAddEle,Ele_Dark,3; bonus2 bSubEle,Ele_Dark,3; },{},{}
 5382,Bell_Ribbon,Bell Ribbon,4,20,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,388,{ bonus bVit,1; skill "AL_ANGELUS",1; },{},{ sc_end SC_ANGELUS; }
-5383,Hunting_Cap,Hunter's Cap,4,20,,250,,3,,1,0xFFFFFFFE,7,2,256,,50,1,389,{ bonus bLuk,1; bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
+5383,Hunting_Cap,Hunter's Cap,4,20,,250,,3,,1,0xFFFFFFFE,7,2,256,,50,1,389,{ bonus bLuk,1; bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
 5384,Santa_Hat_1,Twin Pompom By JB,4,20,,200,,1,,1,0xFFFFFFFF,7,2,256,,20,1,390,{ bonus bLuk,3; skill "WZ_ESTIMATION",1; bonus3 bAutoSpell,"AL_INCAGI",1,500; },{},{}
 5385,Yoyo_Hat,Yoyo Hat,4,20,,300,,1,,0,0xFFFFFFFF,7,2,256,,20,1,391,{ skill "TF_HIDING", 1; },{},{ sc_end SC_HIDING; }
 5386,Ayam_,Ayam,4,0,,70,,7,,0,0xFFFFFFFF,7,2,256,,1,0,228,{ bonus bMdef,7; bonus bFlee,7; bonus2 bAddMonsterDropItem,12198,200; },{},{}
@@ -2577,7 +2577,7 @@
 5407,Academy_Graduating_Cap,Academy Completion Hat,4,0,,200,,2,,1,0xFFFFFFFF,7,2,256,,0,1,410,{ bonus bMaxSP,30; },{},{}
 5408,Old_Bandanna,Old Bandana,4,0,,0,,5,,0,0xFFFFFFFF,7,2,256,,0,0,6,{ bonus bInt,2; bonus bMaxSP,50; bonus bCastrate,10; },{},{}
 5409,New_Cowboy_Hat,Purple Cowboy Hat,4,20,,500,,4,,1,0xFFFFFFFF,7,2,256,,0,1,411,{ bonus bInt,2; bonus bVit,2; bonus bMaxSP,50; },{},{}
-5410,Bread_Bag2,Brown Paperbag Hat,4,20,,200,,6,,0,0xFFFFFFFF,7,2,769,,0,0,412,{ bonus bMaxHP,100; bonus2 bResEff, Eff_Stun, 400; bonus2 bSubRace,RC_DemiHuman,4; },{},{}
+5410,Bread_Bag2,Brown Paperbag Hat,4,20,,200,,6,,0,0xFFFFFFFF,7,2,769,,0,0,412,{ bonus bMaxHP,100; bonus2 bResEff, Eff_Stun, 400; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; },{},{}
 5411,White_Snake_Hat,White Snake Hat,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,413,{ bonus bDex,2; },{},{}
 5412,Sweet_Candy,Sweet Candy,4,20,,100,,1,,0,0xFFFFFFFF,7,2,1,,0,0,414,{ bonus bUnbreakableHelm, 0; },{},{}
 5413,Popcorn_Hat,Pop Corn Hat,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,0,0,415,{ bonus2 bSubEle,Ele_Wind, 10; },{},{}
@@ -2590,12 +2590,12 @@
 5420,Mask_Of_Ifrit,Mask Of Ifrit,4,,,0,,8,,0,0xFFFFFFFE,7,2,769,,70,0,421,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; bonus2 bSubEle,Ele_Fire,10; bonus2 bSubEle,Ele_Water,-10; skill "MG_SIGHT",1; bonus3 bAutoSpellWhenHit,"WZ_METEOR",3,50; bonus3 bAutoSpell,"MG_FIREBOLT",3,50; },{},{ sc_end SC_SIGHT; }
 5421,Ifrit's_Ear,Ears Of Ifrit,4,20,,0,,0,,0,0xFFFFFFFE,7,2,512,,70,0,422,{ bonus bStr,1; bonus bMdef,3; bonus2 bSkillAtk,"MG_FIREBOLT",2; bonus2 bSkillAtk,"WZ_FIREPILLAR",2; bonus2 bSkillAtk,"WZ_METEOR",2; bonus2 bSkillAtk,"SM_BASH",2; bonus2 bSkillAtk,"SM_MAGNUM",2; bonus2 bSkillAtk,"KN_PIERCE",2; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,-5; },{},{}
 5422,Linguistic_Book_Cap,Linguistic Book Hat,4,20,,70,,0,,0,0xFFFFFFFF,7,2,256,,0,1,423,{ bonus bInt,1; bonus bMdef,2; },{},{}
-5423,Lovecap_China,I Love China,4,20,,250,,5,,0,0xFFFFFFFF,7,2,256,,0,0,424,{ bonus bDex,3; bonus2 bSubRace,RC_DemiHuman,10; },{},{}
+5423,Lovecap_China,I Love China,4,20,,250,,5,,0,0xFFFFFFFF,7,2,256,,0,0,424,{ bonus bDex,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 5424,Fanta_Orange_Can,Fanta Orange Can Hat,4,20,,100,,2,,1,0xFFFFFFFF,7,2,256,,0,1,425,{},{},{}
 5425,Fanta_Grape_Can,Fanta Grape Can Hat,4,20,,100,,2,,1,0xFFFFFFFF,7,2,256,,0,1,426,{},{},{}
 5426,Karada_Meguri_Tea_Hat,Karada Meguricha Hat,4,20,,100,,2,,1,0xFFFFFFFF,7,2,256,,0,1,427,{ bonus bLuk,1; },{},{}
 5427,Royal_Milk_Tea_Hat,Black Tea Kochakaden Hat,4,20,,100,,2,,1,0xFFFFFFFF,7,2,256,,0,1,428,{ bonus bAgi,1; },{},{}
-5428,Bread_Bag1,RWC Anniversary Bread Envelope,4,,,100,,0,,0,0xFFFFFFFF,7,2,769,,0,1,429,{ bonus2 bSubRace,RC_DemiHuman,12; },{},{}
+5428,Bread_Bag1,RWC Anniversary Bread Envelope,4,,,100,,0,,0,0xFFFFFFFF,7,2,769,,0,1,429,{ bonus2 bSubRace,RC_DemiHuman,12; bonus2 bSubRace,RC_Player,12; },{},{}
 5429,Bogy_Cap,Bogy Cap,4,20,,100,,2,,1,0xFFFFFFFF,7,2,256,,0,1,430,{ bonus bHPrecovRate, 5; bonus bSPrecovRate, 5; },{},{}
 5430,Sacred_Torch_Coronet,Torch Cap,4,20,,0,,3,,0,0xFFFFFFFF,7,2,256,,0,0,431,{ bonus2 bSubEle,Ele_Fire,20; skill "MG_FIREBOLT",5; },{},{}
 5431,Chicken_Hat,Chicken Hat,4,20,,1000,,0,,1,0xFFFFFFFF,7,2,256,,30,1,432,{ bonus3 bAutoSpell,"MC_LOUD",1,30; bonus bAspdRate,5; },{},{}
@@ -2618,9 +2618,9 @@
 5448,Solo_Play_Box1,Soloplay Box1,4,,,300,,0,,1,0xFFFFFFFF,7,2,769,,0,1,449,{},{},{}
 5449,Solo_Play_Box2,Soloplay Box2,4,,,300,,0,,1,0xFFFFFFFF,7,2,769,,0,1,450,{},{},{}
 5450,Sun_Cap,Solar Hat,4,20,,1000,,0,,0,0xFFFFFFFE,7,2,256,,20,1,451,{},{},{}
-5451,Dragonhelm_Gold,RWC 2008 Dragon Helm Gold,4,20,,2500,,7,,1,0xFFFFFFFF,7,2,256,,1,0,452,{ bonus bAspdRate,10; bonus bAllStats,3; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
-5452,Dragonhelm_Silver,RWC 2008 Dragon Helm Silver,4,20,,2500,,5,,1,0xFFFFFFFF,7,2,256,,1,0,453,{ bonus bAspdRate,7; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,3; },{},{}
-5453,Dragonhelm_Copper,RWC 2008 Dragon Helm Copper,4,20,,2500,,0,,1,0xFFFFFFFF,7,2,256,,1,0,454,{ bonus bAspdRate,5; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,1; },{},{}
+5451,Dragonhelm_Gold,RWC 2008 Dragon Helm Gold,4,20,,2500,,7,,1,0xFFFFFFFF,7,2,256,,1,0,452,{ bonus bAspdRate,10; bonus bAllStats,3; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
+5452,Dragonhelm_Silver,RWC 2008 Dragon Helm Silver,4,20,,2500,,5,,1,0xFFFFFFFF,7,2,256,,1,0,453,{ bonus bAspdRate,7; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,3; bonus2 bAddRace,RC_Player,3; },{},{}
+5453,Dragonhelm_Copper,RWC 2008 Dragon Helm Copper,4,20,,2500,,0,,1,0xFFFFFFFF,7,2,256,,1,0,454,{ bonus bAspdRate,5; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1; },{},{}
 5454,Dog_Cap_,Puppy Hat,4,20,,500,,3,,1,0xFFFFFFFF,7,2,256,,0,1,234,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus bCritical,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus2 bIgnoreMdefClassRate,Class_Normal,100; bonus2 bIgnoreMdefClassRate,Class_Boss,100; }",10,3000,BF_MAGIC,"{ specialeffect2 EF_MAGICALATTHIT; }"; },{},{}
 5455,Geographer_Band_,Decorative Geographer,4,20,,500,,1,,1,0xFFFFFFFF,7,2,256,,0,1,238,{ bonus bInt,1; bonus3 bAutoSpell,"AL_HEAL",5,50; bonus3 bAutoSpellWhenHit,"AL_HEAL",5,30; },{},{}
 5456,Vacation_Hat_,Summer Hat,4,20,,200,,0,,1,0xFFFFFFFF,7,2,256,,0,1,315,{ bonus bVit,5; bonus bHPrecovRate,20; bonus bSPrecovRate,15; },{},{}
@@ -2629,7 +2629,7 @@
 5459,Drooping_Bunny_Chusuk,Drooping Bunny,4,0,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,249,{ bonus bDex,1; bonus bFlee,2; },{},{}
 5460,Adv_Dragon_Skull,Evolved Dragon Skull Hat,4,20,,1000,,7,,0,0xFFFFFFFF,7,2,256,,60,1,457,{ bonus bAllStats, 2; bonus bMaxHPrate, 3; },{},{}
 5461,Adv_Whisper_Mask,Evolved Whisper Mask,4,20,,300,,1,,0,0xFFFFFFFF,7,2,769,,50,1,458,{ bonus bDex,3; bonus2 bSubEle,Ele_Ghost, 20; },{},{}
-5462,Spiked_Scarf,Spiked Scarf,4,20,,100,,1,,0,0xFFFFFFFF,7,2,1,,90,0,459,{ bonus bVit,1; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+5462,Spiked_Scarf,Spiked Scarf,4,20,,100,,1,,0,0xFFFFFFFF,7,2,1,,90,0,459,{ bonus bVit,1; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{}
 5463,Rainbow_Scarf,Rainbow Scarf,4,20,,100,,1,,0,0xFFFFFFFF,7,2,1,,90,0,460,{ bonus bInt,1; bonus bMdef,2; bonus bMatkRate,1; },{},{}
 5464,Zaha_Doll_Hat,Zaha Doll Hat,4,20,,0,,1,,0,0xFFFFFFFF,7,2,256,,0,0,461,{ bonus bInt,2; skill "PR_MAGNIFICAT", 3; },{},{}
 //5465,Celestial_Hat,Hat Of Fortune,4,20,,500,,3,,1,0xFFFFFFFF,7,2,256,,40,1,462,{ bonus bLuk,2; bonus bMdef,5; if(getrefine()>4) bonus bLuk,getrefine()-4; },{},{}
@@ -2639,7 +2639,7 @@
 //5469,Noble_Hat,Musketeer Hat,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,30,1,466,{ bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_ADRENALINE",1,7; },{},{}
 //5470,Eyes_Of_Darkness,Eye Of Darkness,4,20,,100,,1,,0,0xFFFFFFFF,7,2,512,,50,0,467,{ bonus bDex,1; bonus2 bResEff,Eff_Blind,10000; },{},{}
 //5471,Hairband_Of_Reginleif,Hairband Of Reginleif,4,20,,800,,1,,0,0xFFFFFFFF,7,2,512,,50,0,468,{ bonus2 bSubEle,Ele_Water,3; bonus2 bSubEle,Ele_Fire,3; bonus2 bSubEle,Ele_Undead,3; bonus2 bSubEle,Ele_Ghost,3; },{},{}
-//5472,Red_White_Hat,Red Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,469,{ bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3; },{},{}
+//5472,Red_White_Hat,Red Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,469,{ bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3; bonus3 bAddMonsterDropItem,550,RC_Player,3; },{},{}
 //5473,Forceps_Hairpin,Nipper Crab Hairpin,4,20,,500,,4,,0,0xFFFFFFFF,7,2,256,,30,1,470,{ bonus3 bAutoSpellWhenHit,"MG_COLDBOLT",1,100; bonus3 bAddMonsterDropItem,991,RC_Fish,3; },{},{}
 //5474,Notice_Board,AFK Hat,4,20,,700,,2,,0,0xFFFFFFFF,7,2,256,,10,0,471,{},{},{}
 //5475,Cube_Mask,Mask Cube,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,0,0,472,{},{},{}
@@ -2650,7 +2650,7 @@
 5480,Bizofnil_Wing_Deco,Bijofnil Wings,4,20,,1000,,3,,0,0xFFFFFFFF,7,2,256,,30,1,477,{ bonus bAllStats,2; bonus3 bAutoSpell,"PR_IMPOSITIO",3,3; },{},{}
 5481,Hermose_Cap,Hermode Cap,4,20,,1000,,1,,1,0xFFFFFFFF,7,2,256,,1,1,478,{ bonus bAspdRate,10; bonus bBaseAtk,-20; bonus bMatkRate,-10; },{},{}
 5482,Dark_Knight_Mask,Dark Knight Mask,4,,,3000,,5,,0,0xFFFFFFFF,7,2,769,,80,1,479,{ bonus bStr,3; },{},{}
-5483,Odin_Mask,Odin Mask,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,50,0,480,{ bonus bHit,-10; bonus2 bAddRace,RC_Demihuman,6; },{},{}
+5483,Odin_Mask,Odin Mask,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,50,0,480,{ bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,6; bonus2 bAddRace,RC_Player,6; },{},{}
 //5484,Taiwan_Flag_Hat,Holidays Hat,4,20,,500,,4,,0,0xFFFFFFFF,7,2,256,,0,0,482,{ bonus bAllStats,5; bonus2 bResEff,Eff_Stun,500; },{},{}
 5485,Tiger_Face,Tiger Face,4,20,,1000,,3,,0,0xFFFFFFFF,7,2,769,,60,1,483,{ bonus2 bSubRace,RC_Brute,5; bonus2 bAddRace,RC_Brute,5; bonus2 bMagicAddRace,RC_Brute,5; },{},{}
 5486,J_Anniversary_Hat,Anniversary Hat,4,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,0,1,395,{ bonus bAllStats, 2; },{},{}
@@ -2659,7 +2659,7 @@
 5489,Love_Daddy,Love Daddy Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,484,{ bonus bDex,2; },{},{}
 5490,Anubis_Helm,Anubis Helm,4,20,,0,,3,,0,0xFFFFFFFF,7,2,256,,70,0,485,{ bonus bMdef,5; bonus2 bSubClass,Class_Boss,10; bonus bHealpower2,10; bonus bAddItemHealRate,10; },{},{}
 5491,Hat_Of_Outlaw,Bandit Hat,4,20,,800,,3,,1,0xFFFFFFFF,7,2,256,,0,1,486,{ bonus bStr,2; bonus2 bSubEle,Ele_Fire, 10; },{},{}
-5492,Boy's_Cap_I,Student Cap,4,0,,0,,5,,0,0xFFFFFFFE,7,2,256,,0,0,102,{ bonus bMdef,3; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
+5492,Boy's_Cap_I,Student Cap,4,0,,0,,5,,0,0xFFFFFFFE,7,2,256,,0,0,102,{ bonus bMdef,3; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; },{},{}
 5493,Ulle_Cap_I,Ulle's Cap,4,0,,0,,3,,0,0xFFFFFFFE,7,2,256,,0,0,254,{ bonus bDex,2; bonus bAgi,1; },{},{}
 5494,Spinx_Helm_I,Sphinx Hat,4,0,,0,,5,,0,0x00004082,7,2,257,,0,0,137,{ bonus bStr,5; },{},{}
 5495,Power_Of_Thor,Power Of Thor,4,20,,100,,6,,1,0xFFFFFFFF,7,2,256,,75,1,493,{ bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5; },{},{}
@@ -2685,7 +2685,7 @@
 5515,Pisces_Crown,Pisces Crown,4,20,,300,,6,,0,0xFFFFFFFF,7,2,256,,70,1,512,{ bonus bInt,2; bonus bMdef,5; bonus2 bSubEle,Ele_Water, 5; if(getrefine()>6) { bonus bDef, 1; bonus bMatkRate,2; } },{},{}
 5516,Hawk_Eyes01,hawk Eyes,4,10,,100,,0,,0,0x00000800,2,2,512,,60,0,23,{ bonus bDex,1; },{},{}
 5517,Hawk_Eyes02,Hawk Eyes,4,10,,100,,0,,0,0x00080808,7,2,512,,60,0,23,{ bonus bDex,1; },{},{}
-5518,L_Magestic_Goat2,Gigantic Majestic Goat,4,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,50,1,513,{ bonus2 bSubRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{}
+5518,L_Magestic_Goat2,Gigantic Majestic Goat,4,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,50,1,513,{ bonus2 bSubRace,RC_DemiHuman,12; bonus2 bSubRace,RC_Player,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{}
 5519,Peacock_Feather,Peacock Feather,4,20,,800,,4,,1,0xFFFFFFFF,7,2,256,,1,1,514,{ bonus bInt,2; },{},{}
 5520,Rabbit_Earplug,Rabbit Earplugs,4,,,400,,0,,1,0xFFFFFFFF,7,2,768,,1,1,515,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; },{},{}
 5521,Angry_Mouth_C,Angry Mouth,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,0,0,194,{ bonus bDelayRate,-3; },{},{}
@@ -2702,7 +2702,7 @@
 5532,Pirate_Dagger_J,Pirate Dagger,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,1,327,{ bonus bShortWeaponDamageReturn,1; },{},{}
 5533,Emperor_Wreath_J,Emperor Wreath,4,20,,800,,3,,1,0xFFFFFFFF,7,2,256,,80,1,261,{ bonus bAllStats,1; },{},{}
 //5534,Fox_Hat_J,Fox Hat,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,70,0,403,{ bonus bAgi,1; bonus bFlee2,2; },{},{}
-5535,Side_Cap,Side Cap,4,0,,500,,3,,0,0xFFFFFFFF,7,2,256,,0,1,529,{ bonus bVit,1; bonus bDex,1; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bAddRace,RC_DemiHuman,3; },{},{}
+5535,Side_Cap,Side Cap,4,0,,500,,3,,0,0xFFFFFFFF,7,2,256,,0,1,529,{ bonus bVit,1; bonus bDex,1; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddRace,RC_DemiHuman,3; bonus2 bAddRace,RC_Player,3; },{},{}
 5536,Spare_Card,Spare Card,4,20,,10,,1,,0,0xFFFFFFFF,7,2,1,,1,0,526,{ bonus2 bAddMonsterDropItem,6187,1000; },{},{}
 5537,Quati_Hat,Kwati Hat,4,20,,700,,2,,1,0xFFFFFFFF,7,2,256,,45,0,527,{ bonus bAgi,3; },{},{}
 5538,Tucan_Hat,Tucan Hat,4,20,,600,,2,,1,0xFFFFFFFF,7,2,768,,45,0,528,{ bonus bDex,3; },{},{}
@@ -2720,7 +2720,7 @@
 5550,Taurus_Crown,Taurus Crown,4,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,70,1,536,{ bonus bDex,2; bonus bDelayRate,-2; bonus2 bSubEle,Ele_earth,5; if(getrefine()>6) { bonus bDex,1; bonus bMatkRate,1; } },{},{}
 //5551,Holy_Egg_Hat,Holy Egg Hat,4,20,,0,,1,,0,0xFFFFFFFF,7,2,256,,0,1,537,{},{},{}
 5552,Fest_Lord_Circlet,Festival Grand Circlet,4,0,,0,,8,,0,0xFFFFFFFF,7,2,256,,0,0,93,{ bonus bStr,3; bonus bInt,3; bonus bMdef,3; },{},{}
-5553,Fest_Bunny_Band,Festival Bunny Band,4,0,,0,,7,,0,0xFFFFFFFF,7,2,256,,0,0,15,{ bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9; },{},{}
+5553,Fest_Bunny_Band,Festival Bunny Band,4,0,,0,,7,,0,0xFFFFFFFF,7,2,256,,0,0,15,{ bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9; bonus2 bSubRace,RC_Player,9; },{},{}
 5554,Octopus_Hat,Octopus Hat,4,20,,200,,3,,0,0xFFFFFFFF,7,2,256,,20,1,538,{ bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm,0; },{},{}
 5555,Leaf_Cat_Hat,Leaf Cat Hat,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,539,{ bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",3,10; },{},{}
 5556,Fur_Seal_Hat,Seal Hat,4,20,,500,,3,,0,0xFFFFFFFF,7,2,769,,55,1,540,{ bonus bInt,1; bonus3 bAutoSpell,"WZ_FROSTNOVA",1,30; },{},{}
@@ -2732,8 +2732,8 @@
 5562,Good_Wedding_Veil_J,Luxurious Wedding Veil,4,0,,500,,0,,1,0xFFFFFFFF,7,2,768,,45,0,489,{ bonus bMdef,10; bonus bCastRate,-3; bonus bUseSPrate,-5; },{},{}
 //5563,Dolor_Hat,Dolor Hat,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,0,547,{},{},{}
 5564,Crown_Of_Deceit,Crown of Deceit,4,20,,300,,3,,1,0xFFFFFFFF,7,2,768,,85,1,544,{ bonus bInt,4; bonus bCastRate,-10; },{},{}
-5565,Dragon_Arhat_Mask,Dragon Arhat Mask,4,0,,0,,5,,0,0xFFFFFFFF,7,2,513,,1,0,545,{ bonus2 bAddRace,RC_DemiHuman,10; },{},{}
-5566,Tiger_Arhat_Mask,Tiger Arhat Mask,4,0,,0,,1,,0,0xFFFFFFFF,7,2,513,,1,0,546,{ bonus2 bAddRace,RC_DemiHuman,2; },{},{}
+5565,Dragon_Arhat_Mask,Dragon Arhat Mask,4,0,,0,,5,,0,0xFFFFFFFF,7,2,513,,1,0,545,{ bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; },{},{}
+5566,Tiger_Arhat_Mask,Tiger Arhat Mask,4,0,,0,,1,,0,0xFFFFFFFF,7,2,513,,1,0,546,{ bonus2 bAddRace,RC_DemiHuman,2; bonus2 bAddRace,RC_Player,2; },{},{}
 5567,Bright_Fury,Bright Fury,4,20,,300,,1,,1,0xFFFFFFFF,7,2,256,,1,1,548,{ bonus bStr,1; bonus2 bAddClass,Class_All,2; bonus bAspdRate,2; },{},{}
 5568,Rabbit_Bonnet,Rabbit Bonnet,4,20,,1000,,1,,1,0xFFFFFFFF,7,2,768,,0,1,549,{ bonus bInt,2; },{},{}
 5569,Gemini_Diadem,Gemini Diadem,4,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,550,{ bonus bAgi,2; bonus bMatkRate,2; if(getrefine()>6) { bonus bMdef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; } },{},{}
@@ -2966,8 +2966,8 @@
 5797,Cheer_Scarf2,Cheer Scarf2,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,1,0,369,{},{},{}
 5798,Cheer_Scarf3,Cheer Scarf3,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,1,0,369,{},{},{}
 5799,Cheer_Scarf4,Cheer Scarf4,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,1,0,369,{},{},{}
-5800,Blush_Of_Groom,Blush of Groom,4,20,,50,,0,,0,0xFFFFFFFF,7,2,512,,0,0,125,{ bonus2 bSubRace,RC_DemiHuman,3; },{},{}
-5801,Ribbon_Of_Bride,Red Tailed Ribbon,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,167,{ bonus bAllStats,2; bonus2 bSubRace,RC_DemiHuman,10; if(getskilllv("AL_HEAL")==10) { bonus3 bAutoSpellWhenHit,"AL_HEAL",10,20; } else { bonus3 bAutoSpellWhenHit,"AL_HEAL",5,20; } },{},{}
+5800,Blush_Of_Groom,Blush of Groom,4,20,,50,,0,,0,0xFFFFFFFF,7,2,512,,0,0,125,{ bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; },{},{}
+5801,Ribbon_Of_Bride,Red Tailed Ribbon,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,167,{ bonus bAllStats,2; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(getskilllv("AL_HEAL")==10) { bonus3 bAutoSpellWhenHit,"AL_HEAL",10,20; } else { bonus3 bAutoSpellWhenHit,"AL_HEAL",5,20; } },{},{}
 5802,Upgrade_Elephant_Hat,Upgraded Elephant Hat,4,0,,500,,3,,1,0xFFFFFFFF,7,2,256,,0,1,215,{},{},{}
 5803,Flower_Love_Hat,Love Flower Hat,4,20,,100,,2,,0,0xFFFFFFFF,7,2,256,,0,1,5,{ bonus2 bAddMonsterDropItem,608,100; },{},{}
 5804,Pirate_Eyepatch,Pirate Eye Bandage,4,1000,,100,,0,,0,0xFFFFFFFF,7,2,512,,0,0,13,{},{},{}
@@ -2988,7 +2988,7 @@
 5819,Carnival_Circlet,Carnival Circlet,4,0,,0,,6,,0,0xFFFFFFFF,7,2,256,,0,1,506,{ bonus bAllStats, 3; },{},{}
 //5820,Black_Elven_Ears,Black Elven Ears,4,10,,100,,2,,0,0xFFFFFFFF,7,2,512,,0,0,498,{},{},{}
 5821,Gold_Tulip_Hairpin,Gold Tulip Hairpin,4,10,,100,,2,,0,0xFFFFFFFF,7,2,256,,0,1,499,{ bonus2 bExpAddClass,Class_All,5; },{},{}
-5822,Love_Chick_Hat,Love Chick Hat,4,10000,,100,,4,,0,0xFFFFFFFF,7,2,256,,0,1,500,{ bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Undead,7; },{},{}
+5822,Love_Chick_Hat,Love Chick Hat,4,10000,,100,,4,,0,0xFFFFFFFF,7,2,256,,0,1,500,{ bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; bonus2 bSubRace,RC_Undead,7; },{},{}
 //5823,Love_Arrow,Love Arrow,4,5000,,100,,1,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bDex,5; bonus bAgi,5; },{},{}
 5824,Fools_Day_Hat,Fools Day Hat,4,20,,300,,6,,1,0xFFFFFFFF,7,2,256,,30,1,265,{},{},{}
 //5825,Badge_Of_Order_Grace,Badge Of Order Grace,4,0,,0,,1,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMdef,1; },{},{}
@@ -4929,7 +4929,7 @@
 12380,Desert_Wolf_Babe_Scroll,Job Change Flute,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ mercenary_create 2034,1800000; },{},{}
 12381,ValkyrieA_Scroll,Ancient Languages Scroll,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(strcharinfo(3)=="job3_arch02") { mercenary_create 2037,1800000; } },{},{}
 12382,ValkyrieB_Scroll,Ancient Languages Scroll,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(strcharinfo(3)=="job3_arch02") { mercenary_create 2038,1800000; } },{},{}
-12383,Vulcan_Bullet_Magazine,Vulcan Bullet Magazine,2,11000,,500,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+12383,Vulcan_Bullet_Magazine,Vulcan Bullet Magazine,2,11000,,500,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6145,1000; },{},{}
 12384,Rainbow_Ruby_Water,Rainbow Ruby,11,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ /* if(strcharinfo(3)=="job3_war02") { itemskill "WL_FROSTMISTY",5; } */ },{},{}
 12385,Rainbow_Ruby_Fire,Rainbow Ruby,11,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ /* if(strcharinfo(3)=="job3_war02") { itemskill "WL_CRIMSONROCK",5; } */ },{},{}
 12386,Rainbow_Ruby_Wind,Rainbow Ruby,11,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ /* if(strcharinfo(3)=="job3_war02") { itemskill "WL_CHAINLIGHTNING",5; } */ },{},{}
@@ -4938,9 +4938,9 @@
 12389,Runstone_Storm,Pertz Runestone For Apprentice,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ /* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_STORMBLAST",1; } */ },{},{}
 12390,Runstone_Millennium,Verkana Runestone For Apprentice,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ /* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_MILLENNIUMSHIELD",1; } */ },{},{}
 12391,Lucky_Egg_C,Lucky Egg,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12392,Repair_A,Repair A,0,220,,70,,,,,0x00000400,8,2,,,,,,{/* madoheal rand(200,300),0; */},{},{}
-12393,Repair_B,Repair B,0,500,,70,,,,,0x00000400,8,2,,,,,,{/* madoheal rand(300,400),0; */},{},{}
-12394,Repair_C,Repair C,0,1100,,70,,,,,0x00000400,8,2,,,,,,{/* madoheal rand(400,500),0; */},{},{}
+12392,Repair_A,Repair A,2,220,,100,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(200,300),0; } },{},{}
+12393,Repair_B,Repair B,2,500,,140,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(300,400),0; } },{},{}
+12394,Repair_C,Repair C,2,1100,,180,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(400,500),0; } },{},{}
 12395,Tantanmen,Tantan Noodle,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1519; },{},{}
 12396,Fools_Day_Box,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(1,10)==1) itemskill "AL_TELEPORT",1; else if(rand(1,10)==2) itemskill "AL_TELEPORT",3; else if(rand(1,10)==3) percentheal 50,0; else if(rand(1,10)==4) percentheal 0,50; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 512,1; else if(rand(1,10)==7) itemskill "ALL_REVERSEORCISH",1; else if(rand(1,10)==8) specialeffect2 247; else if(rand(1,10)==9) specialeffect2 338; else specialeffect2 10; },{},{}
 12397,Fools_Day_Box2,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(1,10)==1) itemskill "TF_DETOXIFY",1; else if(rand(1,10)==2) itemskill "TF_PICKSTONE",1; else if(rand(1,10)==3) itemskill "BA_FROSTJOKER",1; else if(rand(1,10)==4) itemskill "DC_SCREAM",1; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 909,1; else if(rand(1,10)==7) itemskill "AL_RUWACH",1; else if(rand(1,10)==8) specialeffect2 328; else if(rand(1,10)==9) specialeffect2 68; else specialeffect2 196; },{},{}
@@ -4963,11 +4963,11 @@
 12414,Guarana_Candy,Guarana Candy,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_ASPDPOTION0,1800000,0; sc_start SC_INCREASEAGI,140000,5; skilleffect "AL_INCAGI",0; },{},{}
 12415,Siege_Teleport_Scroll2,Siege Teleport Scroll Silver,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12416,Lucky_Egg_C3,Lucky Egg C3,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12417,Boost500,Boost500,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12418,Full_SwingK,Full SwingK,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12419,Mana_Plus,Mana Plus,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12420,Stamina_Up_M,Stamina Up M,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12421,Falmons_F,Falmons F,3,10,,10,,,,,,,,,,,,,{},{},{}
+12417,Boost500,Boost500,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_BOOST500,500000,10; },{},{}
+12418,Full_SwingK,Full SwingK,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_FULL_SWING_K,500000,50; },{},{}
+12419,Mana_Plus,Mana Plus,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MANA_PLUS,500000,50; },{},{}
+12420,Stamina_Up_M,Stamina Up M,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MUSTLE_M,500000,5; },{},{}
+12421,Falmons_F,Falmons F,3,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_LIFE_FORCE_F,500000,5; },{},{}
 12422,HP_Increase_Potion_(Small),HP Increase Potion (Small),0,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INCMHP,500000,(500+(BaseLevel*10/3)); percentheal 1,0; },{},{}
 12423,HP_Increase_Potion_(Medium),HP Increase Potion (Medium),0,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INCMHP,500000,(1500+(BaseLevel*10/3)); percentheal 2,0; },{},{}
 12424,HP_Increase_Potion_(Large),HP Increase Potion (Large),0,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INCMHP,500000,(2500+(BaseLevel*10/3)); percentheal 5,0; },{},{}
@@ -5322,8 +5322,8 @@
 13009,Kamaitachi,Kamaitachi,5,48000,,900,125,,2,0,0x02000000,7,2,2,4,70,1,1,{ bonus bAtkEle,Ele_Wind; bonus bCritical,3; bonus bAspdRate,3; },{},{}
 13010,Asura,Asura,5,3000,,600,50,,1,2,0x02000000,7,2,2,1,12,1,1,{ bonus bMatkRate,10; },{},{}
 13011,Asura_,Asura,5,3000,,600,50,,1,3,0x02000000,7,2,2,1,12,1,1,{ bonus bMatkRate,10; },{},{}
-13012,Murasame,Murasame,5,20,,700,95,,1,1,0x02000000,7,2,2,2,24,1,1,{ bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10; },{},{}
-13013,Murasame_,Murasame,5,20,,700,95,,1,2,0x02000000,7,2,2,2,24,1,1,{ bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10; },{},{}
+13012,Murasame,Murasame,5,20,,700,95,,1,1,0x02000000,7,2,2,2,24,1,1,{ bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10; bonus2 bCriticalAddRace,RC_Player,10; },{},{}
+13013,Murasame_,Murasame,5,20,,700,95,,1,2,0x02000000,7,2,2,2,24,1,1,{ bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10; bonus2 bCriticalAddRace,RC_Player,10; },{},{}
 13014,Hakujin,Hakujin,5,20,,800,120,,1,0,0x02000000,7,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{}
 13015,Hakujin_,Hakujin,5,20,,800,120,,1,1,0x02000000,7,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{}
 13016,Poison_Knife_,Poison Knife,5,20,,800,64,,1,2,0x028F5EEE,7,2,2,3,65,1,1,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000; },{},{}
@@ -5331,7 +5331,7 @@
 13018,Sucsamad_,Sucsamad,5,20,,800,140,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0; },{},{}
 13019,Ginnungagap_,Ginnungagap,5,20,,700,148,,1,1,0xFE9F7EEF,7,2,2,4,70,1,1,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50; },{},{}
 13020,Warrior_Balmung_,Warrior's Balmung,5,20,,1000,170,,1,0,0xFFFFFFFF,7,2,2,4,48,1,1,{ bonus bAllStats,5; },{},{}
-13021,Combat_Knife_C,Combat Knife,5,1,,0,129,,1,0,0x028F5EEE,7,2,2,4,1,0,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{}
+13021,Combat_Knife_C,Combat Knife,5,1,,0,129,,1,0,0x028F5EEE,7,2,2,4,1,0,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{}
 13022,Counter_Dagger_C,Dagger of Counter,5,1,,0,209,,1,0,0x00810204,7,2,2,4,1,0,1,{ bonus bCritical,90; },{},{}
 13023,Asura_C,Ashura,5,1,,0,120,,1,0,0x02000000,7,2,2,1,1,0,1,{ bonus bMatkRate,15; },{},{}
 13024,Sword_Breaker_C,Refined Swordbreaker,5,2,,0,105,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{ bonus bBreakWeaponRate,500; },{},{}
@@ -5346,13 +5346,13 @@
 13033,Assasin_Dagger_,Assassin Dagger,5,20,,600,140,,1,1,0x00001000,7,2,2,4,36,1,1,{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark; },{},{}
 13034,Twilight_Desert,Desert Twilight,5,20,,600,130,,1,2,0x00001000,2,2,2,2,70,1,1,{},{},{}
 13035,Sandstorm,Sandstorm,5,20,,600,50,,1,4,0x00001000,2,2,2,2,70,1,1,{},{},{}
-13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
-13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
+13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
+13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
 13038,Dagger_Of_Hunter,Dagger of Hunter,5,20,,700,120,,1,3,0x00020000,2,2,2,3,70,1,1,{ bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20; },{},{}
 13039,Ivory_Knife,Ivory Knife,5,20,,700,130,,1,2,0x028F5EEE,2,2,2,3,50,1,1,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; },{},{}
 13040,N_Cutter,Novice Cutter,5,0,,0,50,,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,{},{},{}
 13041,N_Main_Gauche,Novice Main Gauche,5,0,,0,63,,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,{},{},{}
-13042,Krieger_Dagger1,Glorious Gladius,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250; },{},{}
+13042,Krieger_Dagger1,Glorious Gladius,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250; },{},{}
 13043,Fortune_Sword_I,Fortune Sword,5,0,,0,120,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{ bonus bLuk,5; },{},{}
 13044,House_Auger_I,Ice Pick,5,0,,0,105,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{},{},{}
 13045,Kamaitachi_I,Kamaitachi,5,0,,0,155,,2,0,0x02000000,7,2,2,4,0,0,1,{},{},{}
@@ -5368,9 +5368,9 @@
 13105,The_Garrison_,Garrison,5,48000,,500,70,,7,2,0x41000000,7,2,34,2,55,1,17,{ bonus bHit,-10; },{},{}
 13106,Gold_Lux,Gold Lux,5,100000,,500,20,,7,0,0x41000000,7,2,34,3,12,1,17,{ bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100; },{},{}
 13107,Wasteland_Outlaw,Wasteland's Outlaw,5,20,,580,68,,7,2,0x41000000,7,2,34,3,70,1,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; },{},{}
-13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,7,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
+13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,7,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
 13109,Wasteland_Outlaw_C,Wasteland Outlaw,5,20,,0,100,,7,0,0x41000000,7,2,34,3,0,0,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; },{},{}
-13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,7,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; } },{},{}
+13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,7,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bAddRace,RC_Player,pow(getrefine()-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; } },{},{}
 //13111,Sharpshooter_Revolver
 13112,P_Revolver1,Eden Revlover I,5,0,,0,4,,7,0,0x41000000,7,2,34,1,26,0,17,{ bonus bHit,-5; },{},{}
 13113,P_Revolver2,Eden Revlover II,5,0,,0,60,,7,0,0x41000000,7,2,34,1,40,0,17,{ bonus bHit,-5; },{},{}
@@ -5396,15 +5396,15 @@
 13168,Thunder_P,Thunder P,5,76000,,700,80,,9,1,0x41000000,7,2,34,3,70,1,20,{ bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20; },{},{}
 13169,Thunder_P_,Thunder P,5,76000,,700,80,,9,2,0x41000000,7,2,34,3,70,1,20,{ bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20; },{},{}
 13170,Lever_Action_Rifle,Lever Action Rifle,5,20,,770,138,,9,2,0x41000000,7,2,34,3,70,1,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; },{},{}
-13171,BF_Rifle1,Soldier Rifle,5,0,,0,50,,9,0,0x41000000,7,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-13172,BF_Gatling_Gun1,Soldier Gatling Gun,5,0,,0,80,,9,0,0x41000000,7,2,34,3,80,1,19,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
-13173,BF_Shotgun1,Soldier Shotgun,5,0,,0,100,,9,0,0x41000000,7,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
-13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,7,2,34,3,80,1,21,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
+13171,BF_Rifle1,Soldier Rifle,5,0,,0,50,,9,0,0x41000000,7,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+13172,BF_Gatling_Gun1,Soldier Gatling Gun,5,0,,0,80,,9,0,0x41000000,7,2,34,3,80,1,19,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
+13173,BF_Shotgun1,Soldier Shotgun,5,0,,0,100,,9,0,0x41000000,7,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
+13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,7,2,34,3,80,1,21,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
 13175,Lever_Action_Rifle_C,Lever Action Rifle,5,20,,0,170,,9,0,0x41000000,7,2,34,3,0,0,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; },{},{}
-13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; } },{},{}
-13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); } },{},{}
-13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,7,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{}
-13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,7,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{}
+13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; } },{},{}
+13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); } },{},{}
+13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,7,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{}
+13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,7,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{}
 // Bullets
 13200,Bullet,Bullet,10,1,,2,10,,,,0x41000000,7,2,32768,,1,,3,{},{},{}
 13201,Silver_Bullet,Silver Bullet,10,15,,2,15,,,,0x41000000,7,2,32768,,1,,3,{ bonus bAtkEle,Ele_Holy; },{},{}
@@ -5463,9 +5463,9 @@
 13302,Huuma_Giant_Wheel_,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,4,0x02000000,7,2,34,4,42,1,22,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100; },{},{}
 13303,Huuma_Blaze,Huuma Blaze Shuriken,5,78000,,1500,185,,1,0,0x02000000,7,2,34,4,55,1,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30; },{},{}
 13304,Huuma_Calm_Mind,Huuma Calm Mind,5,20,,1550,112,,1,2,0x02000000,7,2,34,3,70,1,22,{ bonus bUnbreakableWeapon,0; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel,0; },{},{}
-13305,BF_Huuma_Shuriken1,Brave Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
-13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; } },{},{}
+13305,BF_Huuma_Shuriken1,Brave Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
+13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; } },{},{}
 13308,Huuma_Blaze_I,Huuma Blaze Shuriken,5,0,,0,230,,1,0,0x02000000,7,2,34,4,0,0,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,2; },{},{}
 13309,Huuma_Giant_Wheel_C,Huuma Giant Wheel Shuriken,5,0,,0,99,,1,0,0x02000000,7,2,34,4,1,0,22,{ bonus2 bAddSize,Size_All,80; },{},{}
 // More 1-Handed Swords
@@ -5476,16 +5476,16 @@
 13404,Platinum_Shotel,Platinum Shotel,5,20,,1500,130,,1,1,0x000654E2,7,2,2,4,55,1,2,{ bonus bCritical,50; },{},{}
 13405,Curved_Sword,Curved Sword,5,20,,800,125,,1,2,0x000654E2,7,2,2,4,55,1,2,{ bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300; },{},{}
 13406,Edger,Edger,5,20,,0,120,,1,0,0x000654E2,7,2,2,1,0,0,2,{ bonus2 bAddClass,Class_All,50; },{},{}
-13407,Nagan_C,Refined Nagan,5,1,,0,148,,1,0,0x000654E2,7,2,2,4,0,0,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; },{},{}
+13407,Nagan_C,Refined Nagan,5,1,,0,148,,1,0,0x000654E2,7,2,2,4,0,0,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40; },{},{}
 13408,Fire_Brand_C,Refined Fireblend,5,1,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100; },{},{}
 13409,Immaterial_Sword_C,Refined Immaterial Sword,5,1,,0,160,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0; },{},{}
-13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; },{},{}
+13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{}
+13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; },{},{}
 13412,Twin_Edge_B,Twin Edge of Naght Sieger,5,20,,1500,150,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{}
 13413,Twin_Edge_R,Twin Edge of Naght Sieger,5,20,,1500,160,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{}
 13414,Elemental_Sword,Elemental Sword,5,20,,1200,105,,1,3,0x000654E2,2,2,2,3,70,1,2,{ bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus bMatkRate,5; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,10000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,10000; },{},{}
 13415,N_Falchion,Novice Falchion,5,0,,0,59,,1,3,0x000654E3,7,2,2,1,2,0,2,{},{},{}
-13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{}
+13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{}
 13417,Krieger_Onehand_Sword2,Glorious Rapier,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5; },{},{}
 13418,Krieger_Onehand_Sword3,Glorious Holy Avenger,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXDIVINA",1,1000; if(getrefine()>9) bonus bInt,5; },{},{}
 13419,Holy_Saber,Holy saber,5,20,,0,160,,1,0,0x000654E2,7,2,2,3,0,0,2,{},{},{}
@@ -6425,7 +6425,7 @@
 14608,Luxurious_Dinner_E,Manchu-Han Imperial Feast,2,20000,,1200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCALLSTATUS,3600000,6; },{},{}
 14609,Spoiled_Cuisine,Spoiled Cuisine,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 10,10; },{},{}
 // More Armors
-15000,Bone_Plate,Bone Plate,4,20,,1000,,7,,1,0x000654E2,2,2,16,,85,1,0,{ bonus bStr,1; bonus bMdef,3; bonus2 bIgnoreDefRate,RC_DemiHuman,10; bonus2 bIgnoreDefRate,RC_Brute,10; bonus3 bAutoSpellWhenHit,"NPC_WIDEBLEEDING",1,10; },{},{}
+15000,Bone_Plate,Bone Plate,4,20,,1000,,7,,1,0x000654E2,2,2,16,,85,1,0,{ bonus bStr,1; bonus bMdef,3; bonus2 bIgnoreDefRate,RC_DemiHuman,10; bonus2 bIgnoreDefRate,RC_Player,10; bonus2 bIgnoreDefRate,RC_Brute,10; bonus3 bAutoSpellWhenHit,"NPC_WIDEBLEEDING",1,10; },{},{}
 15001,Odin's_Blessing_I,Odin's Blessing,4,0,,0,,10,,0,0xFFFFFFFE,7,2,16,,0,0,0,{},{},{}
 // More Maces
 16000,Erde,Erde,5,20,,500,130,,1,2,0x0004C5B2,2,2,2,4,50,1,8,{ bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus bMaxSP,50; bonus bHealPower,10; },{},{}
@@ -6547,7 +6547,7 @@
 18596,Sprout_Hat,Sprout Hat,4,20,,200,,4,,0,0xFFFFFFFF,7,2,256,,70,1,758,{ skill "WZ_HEAVENDRIVE",3; },{},{}
 18597,Mercury_Riser,Mercury Riser,4,40,,200,,10,,1,0xFFFFFFFF,7,2,256,,0,,759,{ bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }},{},{}
 //
-18600,Cat_Ear_Beret,Cat Ear Beret,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,761,{ bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bSubRace,RC_DemiHuman,7; } },{},{}
+18600,Cat_Ear_Beret,Cat Ear Beret,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,761,{ bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; } },{},{}
 //
 18612,White_Musang_Hat,White Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,770,{ bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,0; },{},{}
 18613,Black_Musang_Hat,Black Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,771,{ bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,0; },{},{}

+ 17 - 43
db/pre-re/skill_cast_db.txt

@@ -1083,12 +1083,10 @@
 2005,0,0,0,15000,0,2000
 //-- RK_IGNITIONBREAK
 2006,1000,0,0,0,0,2000
-
 //-- RK_DRAGONBREATH
 2008,0:0:0:1000:1000:1000:1500:1500:2000:2000,2000,0,10000,0,0
 //-- RK_DRAGONHOWLING
 2009,0,0,0,15000,0,10000
-
 //-- RK_MILLENNIUMSHIELD
 2011,0,1000,0,180000,0,60000
 //-- RK_CRUSHSTRIKE
@@ -1116,11 +1114,8 @@
 2022,0,2500:2000:1500:1000:500,0,0,0,0
 //-- GC_DARKILLUSION
 2023,0,1500,0,0,0,0
-
 //-- GC_CREATENEWPOISON
 2025,0,500,0,0,0,0
-//-- GC_ANTIDOTE
-2026,0,0,0,0,0,0
 //-- GC_POISONINGWEAPON
 2027,0,1000,0,60000:120000:180000:240000:300000,300000,0
 //-- GC_WEAPONBLOCKING
@@ -1128,11 +1123,11 @@
 //-- GC_COUNTERSLASH
 2029,0,2000,0,0,0,0
 //-- GC_WEAPONCRUSH
-2030,0,1000,0,60000,0,0
+2030,0,1000,0,75000:90000:105000:120000:135000,0,0
 //-- GC_VENOMPRESSURE
 2031,0,1000,0,0,0,0
 //-- GC_POISONSMOKE
-2032,0,2000,0,6000:8000:10000:12000:14000,0,0
+2032,0,2000,0,10000:12000:14000:16000:18000,0,0
 //-- GC_CLOAKINGEXCEED
 2033,0,2000,0,0,0,0
 //-- GC_PHANTOMMENACE
@@ -1168,7 +1163,6 @@
 2047,1000,0,0,60000,0,3000
 //-- AB_LAUDARAMUS
 2048,1000,0,0,60000,0,3000
-
 //-- AB_RENOVATIO
 2050,3000,0,0,90000,0,0
 //-- AB_HIGHNESSHEAL
@@ -1179,7 +1173,6 @@
 2053,1000,0,0,150000:180000:210000:240000:270000,0,0
 //-- AB_DUPLELIGHT
 2054,2000,1000,0,90000:120000:150000:180000:210000:240000:270000:300000:330000:360000,0,0
-
 //-- AB_SILENTIUM
 2057,4000,0,0,20000:30000:40000:50000:60000,0,15000
 //==========================================
@@ -1199,7 +1192,6 @@
 2206,1000,1000,0,60000:90000:120000:150000:180000,0,50000:80000:110000:140000:170000
 //-- WL_SIENNAEXECRATE
 2207,2000,2000,0,10000:12000:14000:16000:18000,0,0
-
 //-- WL_STASIS
 2209,3000,1000,0,10000:15000:20000:25000:30000,0,300000
 //-- WL_DRAINLIFE
@@ -1212,12 +1204,10 @@
 2213,10000:11000:12000:13000:14000,0,0,15000,0,60000
 //-- WL_CHAINLIGHTNING
 2214,3500:4000:4500:5000:5500,0,0,100,0,3000
-
 //-- WL_EARTHSTRAIN
 2216,2000:3000:4000:5000:6000,1000,0,150,75000:90000:105000:120000:135000,10000
 //-- WL_TETRAVORTEX
 2217,5000:6000:7000:8000:9000,2000,0,20000,0,15000
-
 //-- WL_SUMMONFB
 2222,2000,0,0,120000:160000:200000:240000:280000,0,0
 //-- WL_SUMMONBL
@@ -1226,38 +1216,33 @@
 2224,2000,0,0,120000:160000:200000:240000:280000,0,0
 //-- WL_SUMMONSTONE
 2229,2000,0,0,120000:160000:200000:240000:280000,0,0
-
 //-- WL_READING_SB
 2231,5000,500,0,0,0,0
 //==========================================
 
 //===== Ranger =============================
 //-- RA_ARROWSTORM
-2233,2000:2200:2400:2600:2800,0,0,0,0,5400:5600:5800:6000:6400
+2233,2000:2200:2400:2600:2800:3000:3200:3400:3600:3800,0,0,0,0,5000:4800:4600:4400:4200:4000:3800:3600:3400:3200
 //-- RA_FEARBREEZE
 2234,2000,0,0,60000:90000:120000:150000:180000,0,0
-
 //-- RA_AIMEDBOLT
 2236,4000,1000,0,0,0,0
 //-- RA_DETONATOR
 2237,0,0,0,1000,0,0
 //-- RA_ELECTRICSHOCKER
-2238,0,0,0,15000,20000:22000:24000:26000,0
+2238,0,0,0,15000,20000:22000:24000:26000:28000,0
 //-- RA_CLUSTERBOMB
 2239,0,0,0,15000,0,0
 //-- RA_WUGMASTERY
 2240,0,1000,0,0,0,0
 //-- RA_WUGRIDER
 2241,0,500,0,0,0,0
-
 //-- RA_WUGBITE
 2244,0,2000,0,1000:2000:3000:4000:5000,0,4000:6000:8000:10000:12000
-
 //-- RA_SENSITIVEKEEN
 2246,0,3000,0,0,0,0
 //-- RA_CAMOUFLAGE
 2247,0,0,0,10000,0,0
-
 //-- RA_MAGENTATRAP
 2249,0,2000,0,15000,10000,0
 //-- RA_COBALTTRAP
@@ -1280,20 +1265,19 @@
 //-- NC_VULCANARM
 2258,0,300:200:100,0,0,0,0
 //-- NC_FLAMELAUNCHER
-2259,1000:1500:2000,1500:1000:500,0,7000:14000:21000,0,0
+2259,500:1000:1500,1500:1000:500,0,7000:14000:21000,0,0
 //-- NC_COLDSLOWER
 2260,1000,1000:2000:3000,0,7000:14000:21000,0,0
 // -- NC_ARMSCANNON
 2261,1400:1600:1800,500:1000:2000,0,0,0,0
 //-- NC_ACCELERATION
-2262,0,0,0,30000:60000:90000,0,0
+2262,0,0,0,60000:90000:120000,0,0
 //-- NC_HOVERING
 2263,0,0,0,90000,0,0
 //-- NC_F_SIDESLIDE
 2264,0,500,0,0,0,0
 //-- NC_B_SIDESLIDE
 2265,0,500,0,0,0,0
-
 //-- NC_SELFDESTRUCTION
 2267,2000:1500:1000,0,0,0,0,300000
 //-- NC_SHAPESHIFT
@@ -1305,14 +1289,13 @@
 //-- NC_ANALYZE
 2271,0,1000,0,20000,0,0
 //-- NC_MAGNETICFIELD
-2272,500:1000:1500,0,0,15000,0,20000:15000:10000
+2272,0,0,0,4000:6000:8000,0,20000:15000:10000
 //-- NC_NEUTRALBARRIER
-2273,500:1000:1500,0,0,30000:45000:60000,0,20000:15000:10000
+2273,0,0,0,30000:45000:60000,0,20000:15000:10000
 //-- NC_STEALTHFIELD
-2274,500:1000:1500,0,0,15000:20000:25000,0,20000:15000:10000
+2274,0,0,0,15000:20000:25000,0,20000:15000:10000
 //-- NC_REPAIR
 2275,200:300:400:500:600,1000,0,0,0,0
-
 //-- NC_AXEBOOMERANG
 2278,0,0,0,0,0,5000:4500:4000:3500:3000
 //-- NC_POWERSWING
@@ -1341,7 +1324,7 @@
 //-- SC_BODYPAINT
 2289,0,1000,0,5000:7000:9000:11000:13000,0,2000
 //-- SC_INVISIBILITY
-2290,1000,1000,0,20000,0,20000:30000:40000:50000:60000
+2290,1000,1000,0,0,0,20000:30000:40000:50000:60000
 //-- SC_DEADLYINFECT
 2291,0,1000,0,10000:15000:20000:25000:30000,0,2000
 //-- SC_ENERVATION
@@ -1375,7 +1358,6 @@
 //==== Royal Guard skills ==================
 //-- LG_CANNONSPEAR
 2307,0,0,0,0,0,2000
-
 //-- LG_TRAMPLE
 2309,0,0,0,0,0,1000
 //-- LG_SHIELDPRESS
@@ -1423,7 +1405,6 @@
 2329,0,0,0,500:1000:1500:2000:2500,0,0
 //-- SR_TIGERCANNON
 2330,1100:1200:1300:1400:1500:1600:1700:1800:1900:2000,1000,0,0,0,5000
-
 //-- SR_RAMPAGEBLASTER
 2332,0,1000,0,0,0,10000
 //-- SR_CRESCENTELBOW
@@ -1438,12 +1419,10 @@
 2337,1000,500,0,0,0,3000
 //-- SR_RAISINGDRAGON
 2338,0,1000,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,0,30000
-
 //-- SR_ASSIMILATEPOWER
 2340,0,1000,0,0,0,5000
 //-- SR_POWERVELOCITY
 2341,1500,0,0,0,0,0
-
 //-- SR_GATEOFHELL
 2343,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,100:200:300:400:500:600:700:800:900:1000,0,0,0,0
 //-- SR_GENTLETOUCH_QUIET
@@ -1485,7 +1464,7 @@
 //-- WM_DOMINION_IMPULSE
 2417,0,1000,0,0,0,0
 //-- WM_SEVERE_RAINSTORM
-2418,1000:1500:2000:2500:3000,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000
+2418,1500:2000:2500:3000:3500,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000
 //-- WM_POEMOFNETHERWORLD
 2419,3000,0,0,9000:11000:13000:15000:17000,8000:10000:12000:14000:16000,0
 //-- WM_VOICEOFSIREN
@@ -1507,13 +1486,13 @@
 //-- WM_DANCE_WITH_WUG
 2428,1500:2000:2500:3000:3500,1000,0,30000:60000:90000:120000:150000,0,90000
 //-- WM_SOUND_OF_DESTRUCTION
-2429,0:500:1000:1500:2000,1000,0,0,0,20000
+2429,0:500:1000:1500:2000,1000,0,0,0,6000:7000:8000:9000:10000
 //-- WM_SATURDAY_NIGHT_FEVER
 2430,1000:2000:3000:4000:5000,1000,0,10000:15000:20000:25000:30000,10000:8000:6000:4000:2000,180000
 //-- WM_LERADS_DEW
 2431,1000,1000,0,20000:30000:40000:50000:60000,0,180000
 //-- WM_MELODYOFSINK
-2432,100,1000,0,20000:30000:40000:50000:60000,0,180000
+2432,1000,1000,0,20000:30000:40000:50000:60000,0,180000
 //-- WM_BEYOND_OF_WARCRY
 2433,1000,1000,0,20000:30000:40000:50000:60000,0,180000
 //-- WM_UNLIMITED_HUMMING_VOICE
@@ -1561,7 +1540,6 @@
 2461,0,0,0,0,0,5000
 //-- SO_EL_ANALYSIS
 2462,0,0,0,0,0,0
-
 //-- SO_EL_CURE
 2464,2000,1000,0,0,0,0
 //-- SO_FIRE_INSIGNIA
@@ -1593,16 +1571,14 @@
 2483,3000:3500:4000:4500:5000:5500:6000:6500:7000:7500,500,0,0,0,5000
 //-- GN_CRAZYWEED_ATK
 2484,0,0,0,100,0,0
-
 //-- GN_DEMONIC_FIRE
-2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,15000,5000
+2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,8000:16000:24000:32000:40000,5000
 //-- GN_FIRE_EXPANSION
 2486,2000,500,0,0,0,0
 //-- GN_FIRE_EXPANSION_SMOKE_POWDER
 2487,0,0,0,10000:12000:14000:16000:18000,0,0
 //-- GN_FIRE_EXPANSION_TEAR_GAS
 2488,0,0,0,10000:12000:14000:16000:18000,0,0
-
 //-- GN_HELLS_PLANT
 2490,3000:3500:4000:4500:5000,500,0,14000:21000:28000:35000:42000,0,0
 //-- GN_HELLS_PLANT_ATK
@@ -1610,20 +1586,18 @@
 //-- GN_MANDRAGORA
 2492,1000,500,0,10000:15000:20000:25000:30000,0,15000
 //-- GN_SLINGITEM
-2493,0,0,0,77000,10000,1000
-
+2493,0,0,0,0,0,1000
 //-- GN_SLINGITEM_RANGEMELEEATK
-2498,0,0,0,3000,0,0
+2498,0,0,0,5000:10000:60000:60000:3000,0,0
 //==========================================
 
 //===== Extra 3rd Class Skills =============
 //-- AB_SECRAMENT
 2515,1000,500,0,60000:90000:120000:150000:180000,0,0
-
 //-- SR_HOWLINGOFLION
 2517,1000,0,0,12000:14000:16000:18000:20000,0,10000
 //-- SR_RIDEINLIGHTNING
-2518,1000:2000:3000:4000:5000,200,0,0,0,1000
+2518,1000:2000:3000:4000:5000,0,0,0,0,1000
 //==========================================
 
 //===== Misc. Skills =======================

+ 16 - 0
db/pre-re/skill_castnodex_db.txt

@@ -36,6 +36,22 @@
 512,3	//GS_TRACKING
 1014,1	//PR_REDEMPTIO
 
+2012,7	//RK_CRUSHSTRIKE
+2013,7	//RK_REFRESH
+2014,7	//RK_GIANTGROWTH
+2015,7	//RK_STONEHARDSKIN
+2022,0,2	//GC_CROSSIMPACT
+2032,7	//GC_POISONSMOKE
+2234,7	//RA_FEARBREEZE
+//2267,7	//NC_SELFDESTRUCTION
+2268,7	//NC_SHAPESHIFT
+//2270,7	//NC_INFRAREDSCAN
+2271,7	//NC_ANALYZE
+2281,7	//NC_SILVERSNIPER
+2282,7	//NC_MAGICDECOY
+2313,7	//LG_FORCEOFVANGUARD
+2462,7	//SO_EL_ANALYSIS
+
 2534,7,7	//RETURN_TO_ELDICASTES
 2536,7,7	//ALL_GUARDIAN_RECALL
 2537,0,7	//ALL_ODINS_POWER

+ 52 - 53
db/pre-re/skill_db.txt

@@ -1,4 +1,4 @@
-//id,range,hit,inf,element,nk,splash,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count,name,description
+//id,range,hit,inf,element,nk,splash,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count,inf3,name,description
 // 01 ID
 // 02 range (combo skills do not check for range when used,
 //           if range is < 5, the skill is considered melee-range)
@@ -135,7 +135,6 @@
 51,1,6,4,0,1,0,10,1,no,0,0,0,none,0,0x64,		TF_HIDING,Hiding
 52,-2,6,1,5,0,0,10,1,no,0,0,0,weapon,0,0x0,		TF_POISON,Envenom
 53,9,6,16,5,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		TF_DETOXIFY,Detoxify
-
 //
 54,9,6,16,6,0x1,0,4,1,yes,0,0,0,magic,0,0x20,		ALL_RESURRECTION,Resurrection
 
@@ -870,7 +869,7 @@
 1010,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	BA_PANGVOICE,Pang Voice
 1011,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	DC_WINKCHARM,Wink of Charm
 1012,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x4000,	BS_UNFAIRLYTRICK,Unfair Trick
-1013,0,6,4,0,0x3,2,1,0,no,0,0x1,0,weapon,0,0x4000,	BS_GREED,Greed
+1013,0,6,4,0,0x3,2,1,0,no,0,0x1,0,weapon,0,0x0,	BS_GREED,Greed
 1014,0,6,4,6,0x3,14,1,0,yes,0,0x1,0,magic,0,0x0,	PR_REDEMPTIO,Redemptio
 1015,9,6,16,0,0x1,0,1,1,no,0,0x401,0,weapon,0,0x0,	MO_KITRANSLATION,Ki Translation
 1016,-1,6,1,-1,0x2,1,1,1,no,0,0x1,0,weapon,5,0x0,	MO_BALKYOUNG,Ki Explosion
@@ -905,8 +904,8 @@
 // WL Warlock
 2201,11,6,16,0,0,0,5,1,yes,0,0,0,magic,0,0x420,	WL_WHITEIMPRISON,White Imprison
 2202,11,8,1,8,0x2,1:1:1:2:2,5,-2,yes,0,0,0,magic,0,0x420,	WL_SOULEXPANSION,Soul Expansion
-2203,0,8,4,1,0x2,13,5,-3:-4:-5:-6:-7,yes,0,0,0,magic,0,0x400,	WL_FROSTMISTY,Frosty Misty
-2204,0,8,4,1,0x2,13,5,-5,yes,0,0,0,magic,0,0x0,	WL_JACKFROST,Jack Frost
+2203,0,8,4,1,0x2,9,5,-3:-4:-5:-6:-7,yes,0,0,0,magic,0,0x400,	WL_FROSTMISTY,Frosty Misty
+2204,0,8,4,1,0x2,5:6:7:8:9,5,-5,yes,0,0,0,magic,0,0x0,	WL_JACKFROST,Jack Frost
 2205,11,6,1,0,0x1,0,5,1,yes,0,0,0,magic,0,0x400,	WL_MARSHOFABYSS,Marsh of Abyss
 2206,0,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	WL_RECOGNIZEDSPELL,Recognized Spell
 2207,7,6,1,2,0x3,1:2:2:3:3,5,1,yes,0,0,0,magic,0,0x420,	WL_SIENNAEXECRATE,Sienna Execrate
@@ -915,10 +914,10 @@
 2210,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0,0x420,	WL_DRAINLIFE,Drain Life
 2211,11,8,1,3,0x2,3,5,-7,yes,0,0,0,magic,3,0x400,	WL_CRIMSONROCK,Crimson Rock
 2212,11,6,1,3,0,0,5,1,yes,0,0,0,magic,0,0x400,	WL_HELLINFERNO,Hell Inferno
-2213,11,8,2,0,0x2,7,5,-20,yes,0,0,0,magic,2,0x400,	WL_COMET,Comet
-2214,11,6,1,0,0,3,5,1,yes,0,0,0,magic,0,0x400,		WL_CHAINLIGHTNING,Chain Lightning //CHECK Is the splash being used for the target search?
+2213,11,8,2,0,0x2,9,5,-20,yes,0,0,0,magic,2,0x400,	WL_COMET,Comet
+2214,11,6,1,0,0x2,3,5,1,yes,0,0,0,magic,0,0x400,		WL_CHAINLIGHTNING,Chain Lightning //CHECK Is the splash being used for the target search?
 2215,11,6,1,4,0,0,5,1,no,0,0,0,magic,0,0x0,		WL_CHAINLIGHTNING_ATK,Chain Lightning Attack
-2216,3,8,2,2,0,0,5,-6:-7:-8:-9:-10,yes,0,0,0,magic,0,0x20,	WL_EARTHSTRAIN,Earth Strain
+2216,6,8,2,2,0,0,5,-6:-7:-8:-9:-10,yes,0,0,0,magic,0,0x20,	WL_EARTHSTRAIN,Earth Strain
 2217,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0,0x400,	WL_TETRAVORTEX,Tetra Vortex
 2218,11,6,1,3,0,0,5,1,no,0,0,0,magic,0,0x0,		WL_TETRAVORTEX_FIRE,Tetra Vortex Fire
 2219,11,6,1,1,0,0,5,1,no,0,0,0,magic,0,0x0,		WL_TETRAVORTEX_WATER,Tetra Vortex Water
@@ -939,19 +938,19 @@
 
 //****
 // GC Guillotine Cross
-2021,10,6,1,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_VENOMIMPRESS,Venom Impress
-2022,3,8,1,-1,0,0,5,-7,no,0,0,0,weapon,0,0x0,	GC_CROSSIMPACT,Cross Impact
-2023,3:4:5:6:7,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_DARKILLUSION,Dark Illusion
+2021,10,6,1,0,0x1,0,5,1,no,0,0,0,none,0,0x0,			GC_VENOMIMPRESS,Venom Impress
+2022,3,8,1,-1,0,0,5,-7,no,0,0,0,weapon,0,0x0,			GC_CROSSIMPACT,Cross Impact
+2023,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_DARKILLUSION,Dark Illusion
 2024,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		GC_RESEARCHNEWPOISON,Research New Poison
 2025,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		GC_CREATENEWPOISON,Create New Poison
 2026,5,6,16,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	GC_ANTIDOTE,Antidote
 2027,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_POISONINGWEAPON,Poisoning Weapon
 2028,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_WEAPONBLOCKING,Weapon Blocking
-2029,-2,6,4,-1,0x2,1,5,1,no,0,0,0,weapon,3,0x0,	GC_COUNTERSLASH,Counter Slash
-2030,-2,6,4,-1,0x1,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush //CHECK SHould this and the above skill have INF2 0x200?
+2029,0,6,4,-1,0x22,1,5,1,no,0,0,0,weapon,3,0x0,	GC_COUNTERSLASH,Counter Slash
+2030,-2,6,4,-1,0x1,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush
 2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_VENOMPRESSURE,Venom Pressure
 2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0,	GC_POISONSMOKE,Poison Smoke
-2033,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x40,		GC_CLOAKINGEXCEED,Cloaking Exceed
+2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40,	GC_CLOAKINGEXCEED,Cloaking Exceed
 2034,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,0,0x0,	GC_PHANTOMMENACE,Phantom Menace
 2035,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_HALLUCINATIONWALK,Hallucination Walk
 2036,0,6,4,-1,0x2,1:1:1:1:2,5,1,no,0,0,0,weapon,0,0x0,	GC_ROLLINGCUTTER,Rolling Cutter
@@ -984,7 +983,7 @@
 
 //****
 // RA Ranger
-2233,9,8,1,-1,0x2,3:3:3:3:3:4:4:4:4:5,10,-3,yes,0,0,0,weapon,0,0x80,	RA_ARROWSTORM,Arrow Storm
+2233,9,8,1,-1,0x2,3:3:3:3:3:4:4:4:4:5,10,-3,yes,0,0,0,weapon,0,0x80,		RA_ARROWSTORM,Arrow Storm
 2234,0,6,4,0,0,0,5,1,yes,0,0,0,none,0,0x0,		RA_FEARBREEZE,Fear Breeze
 2235,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RA_RANGERMAIN,Ranger Main
 2236,9,8,1,-1,0,0,10,1,yes,0,0,0,weapon,0,0x80,	RA_AIMEDBOLT,Aimed Bolt
@@ -994,8 +993,8 @@
 2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0,		RA_WUGMASTERY,Warg Mastery
 2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000,		RA_WUGRIDER,Warg Rider
 2242,0,6,4,-1,0x2,1,1,0,no,0,0,0,weapon,0,0x2000,	RA_WUGDASH,Warg Dash
-2243,9,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x2000,	RA_WUGSTRIKE,Warg Strike
-2244,9,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x80,	RA_WUGBITE,Warg Bite
+2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x2000,	RA_WUGSTRIKE,Warg Strike
+2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x80,	RA_WUGBITE,Warg Bite
 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RA_TOOTHOFWUG,Tooth of Warg
 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0,	RA_SENSITIVEKEEN,Sensitive Keen
 2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x42,		RA_CAMOUFLAGE,Camouflage
@@ -1012,32 +1011,32 @@
 2255,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		NC_MADOLICENCE,Mado License
 2256,11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	NC_BOOSTKNUCKLE,Boost Knuckle
 2257,3,6,1,-1,0,0,3,1,no,0,0,0,weapon,0,0x0,	NC_PILEBUNKER,Pile Bunker
-2258,13,6,1,-1,0,0,3,1,no,0,0,0,weapon,0,0x0,	NC_VULCANARM,Vulcan Arm
-2259,5,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0,		NC_FLAMELAUNCHER,Flame Launcher
+2258,13,6,1,-1,0x2,1,3,1,no,0,0,0,weapon,0,0x0,	NC_VULCANARM,Vulcan Arm
+2259,7,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0,		NC_FLAMELAUNCHER,Flame Launcher
 2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0,0,weapon,0,0x0,	NC_COLDSLOWER,Cold Slower
-2261,7,6,2,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
+2261,9:11:13,6,1,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
 2262,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,		NC_ACCELERATION,Acceleration
 2263,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_HOVERING,Hovering
 2264,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0,		NC_F_SIDESLIDE,Front-Side Slide
 2265,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0,		NC_B_SIDESLIDE,Back-Side Slide
 2266,0,0,0,0,0,0,4,0,no,0,0,0,none,0,0x0,		NC_MAINFRAME,Mainframe Restructure // Check me. Part of the code notes translated to "The amount of fuel have".
-2267,0,6,4,-1,0x42,2:3:4,3,1,no,0,0,0,misc,5,0x0,	NC_SELFDESTRUCTION,Self Destruction
+2267,0,6,4,-1,0x4A,2:3:4,3,1,no,0,0,0,misc,5,0x0,	NC_SELFDESTRUCTION,Self Destruction
 2268,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0,	NC_SHAPESHIFT,Shape Shift
 2269,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_EMERGENCYCOOL,Emergency Cool
 2270,0,6,4,0,0x3,7,1,1,yes,0,0,0,none,0,0x0,	NC_INFRAREDSCAN,Infrared Scan
 2271,9,6,1,0,0x1,0,3,1,yes,0,0,0,none,0,0x0,	NC_ANALYZE,Analyze
-2272,0,6,4,0,0x3,1:2:3,3,1,yes,0,0,0,none,0,0x0,	NC_MAGNETICFIELD,Magnetic Field
-2273,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0,0x0,	NC_NEUTRALBARRIER,Neutral Barrier
-2274,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0,0x0,	NC_STEALTHFIELD,Stealth Field
-2275,5,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	NC_REPAIR,Repair
+2272,0,6,4,0,0x3,2,3,1,no,0,0,0,none,0,0x0,	NC_MAGNETICFIELD,Magnetic Field
+2273,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,	NC_NEUTRALBARRIER,Neutral Barrier
+2274,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,	NC_STEALTHFIELD,Stealth Field
+2275,5:6:7:8:9,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	NC_REPAIR,Repair
 2276,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		NC_TRAININGAXE,Axe Training
 2277,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		NC_RESEARCHFE,Research Fire/Earth
-2278,4:5:6:7:8,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	NC_AXEBOOMERANG,Axe Boomerang
+2278,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	NC_AXEBOOMERANG,Axe Boomerang
 2279,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	NC_POWERSWING,Power Swing
 2280,0,8,4,-1,0x2,2:2:3:3:3,5,-6,no,0,0,0,weapon,0,0x0,	NC_AXETORNADO,Axe Tornado // Check me. Takes 20 * Skill LV amount of HP each use.
 2281,2,6,2,0,0x1,0,5,1,yes,0,0,2,none,0,0x0,	NC_SILVERSNIPER,FAW - Silver Sniper
 2282,2,6,2,0,0x1,0,5,1,yes,0,0,2,none,0,0x0,	NC_MAGICDECOY,FAW - Magic Decoy //CHECK FIX ME!!!! Wind and Earth stones spawning opposite decoys.
-2283,2,6,1,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_DISJOINT,FAW Removal
+2283,5,6,1,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_DISJOINT,FAW Removal
 
 //****
 // SC Shadow Chaser
@@ -1060,7 +1059,7 @@
 2300,7,6,2,0,0x1,0,3,1,yes,0,0,1,none,0,0x0,	SC_DIMENSIONDOOR,Dimension Door
 2301,7,6,2,0,0x1,0,3,1,yes,0,0x20000,0,none,0,0x0,	SC_CHAOSPANIC,Chaos Panic
 2302,7,6,2,0,0x1,0,3,1,yes,0,0x20000,0,none,0,0x0,	SC_MAELSTROM,Maelstrom
-2303,7,6,2,0,0x1,0,3,1,yes,0,0,0,none,0,0x0,	SC_BLOODYLUST,Bloody Lust
+2303,7,6,2,0,0x1,3,3,1,yes,0,0,1,none,0,0x0,	SC_BLOODYLUST,Bloody Lust
 2304,0,6,4,-1,0,0,3,1,no,0,0,0,weapon,0,0x0,	SC_FEINTBOMB,Feint Bomb
 
 //****
@@ -1073,11 +1072,11 @@
 2312,5,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	LG_PINPOINTATTACK,Pinpoint Attack
 2313,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_FORCEOFVANGUARD,Force of Vanguard
 2314,1,6,1,-1,0,0,1,1,no,0,0,0,weapon,0,0x0,	LG_RAGEBURST,Rage Burst
-2315,0,6,4,0,0x2,3,3,1,yes,0,0,0,none,2,0x0,	LG_SHIELDSPELL,Shield Spell
+2315,0,6,4,0:6:0,0x2,0,3,1,yes,0,0,0,none,2:0:0,0x0,	LG_SHIELDSPELL,Shield Spell
 2316,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_EXEEDBREAK,Exceed Break
-2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,0x0,	LG_OVERBRAND,Over Brand //CHECK I know the splash is needed somehow for the strange AoE it gives.
+2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,0x0,	LG_OVERBRAND,Over Brand
 2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_PRESTIGE,Prestige
-2319,0,6,4,0,0x1,3,5,1,no,0,0,0,weapon,0,0x0,	LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
+2319,0,6,4,0,0x3,3,5,1,no,0,0,0,weapon,0,0x0,	LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
 2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x0,	LG_MOONSLASHER,Moon Slasher
 2321,1,8,2,6,0x2,5,5,-7,yes,0,0,0,weapon,0,0x0,	LG_RAYOFGENESIS,Ray of Genesis
 2322,0,6,16,0,0x3,1,5,1,yes,0,0,0,none,0,0x0,	LG_PIETY,Piety
@@ -1087,15 +1086,15 @@
 
 //****
 // SR Sura
-2326,-2,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x0,	SR_DRAGONCOMBO,Dragon Combo //CHECK Is this 2 regular hits or sub hits? Yes its 2 sub hits.
-2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0,	SR_SKYNETBLOW,Sky Net Blow //CHECK Video shows 3 hits. Its sub hits right? Data check shows no sub, one source shows 3 hits, another shows 5.
-2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0,	SR_EARTHSHAKER,Earth Shaker //CHECK Must add a check in battle.c to triple damage if hitting a hidden target.
-2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0,	SR_FALLENEMPIRE,Fallen Empire //CHECK Video shows 2 hits. Is it sub hits? Yes its divided between 2 hits.
+2326,-2,8,1,-1,0,0,10,-2,no,0,0,0,weapon,0,0x0,	SR_DRAGONCOMBO,Dragon Combo
+2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0,	SR_SKYNETBLOW,Sky Net Blow
+2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0,	SR_EARTHSHAKER,Earth Shaker
+2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0,	SR_FALLENEMPIRE,Fallen Empire
 2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0,	SR_TIGERCANNON,Tiger Cannon //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire.
 2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SR_HELLGATE,Hell Gate
-2332,5,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	SR_RAMPAGEBLASTER,Rampage Blaster
+2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	SR_RAMPAGEBLASTER,Rampage Blaster
 2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_CRESCENTELBOW,Crescent Elbow //CHECK Check the autospell ID.
-2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0,	SR_CURSEDCIRCLE,Cursed Circle //CHECK Code shows it takes up to 5% of your HP upon use?
+2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0,	SR_CURSEDCIRCLE,Cursed Circle
 2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_LIGHTNINGWALK,Lightning Walk
 2336,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	SR_KNUCKLEARROW,Knuckle Arrow
 2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x0,	SR_WINDMILL,Windmill
@@ -1106,13 +1105,13 @@
 2342,1,6,1,-1,0x20,0,5,1,no,0,0,0,weapon,3,0x0,	SR_CRESCENTELBOW_AUTOSPELL,Crescent Elbow Autospell //CHECK Does this ignore defense?
 2343,1:2:3:3:4:4:5:5:6:7,8,1,0,0,0,10,-7,yes,0,0,0,weapon,0,0x0,	SR_GATEOFHELL,Gate of Hell //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire
 2344,2,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	SR_GENTLETOUCH_QUIET,Gentle Touch - Quiet
-2345,2,6,16,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,	SR_GENTLETOUCH_CURE,Gentle Touch - Cure //CHECK Its a healing skill. Guessing it has to be magic type? Healing isnt working.
+2345,2,6,16,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	SR_GENTLETOUCH_CURE,Gentle Touch - Cure
 2346,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	SR_GENTLETOUCH_ENERGYGAIN,Gentle Touch - Energy Gain
 2347,2,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	SR_GENTLETOUCH_CHANGE,Gentle Touch - Change
 2348,2,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	SR_GENTLETOUCH_REVITALIZE,Gentle Touch - Revitalize
 //More from Sura but not following ID order
 2517,0,6,4,-1,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0,	SR_HOWLINGOFLION,Howling of Lion
-2518,11,6,2,-1,0x2,2:2:3:3:4,5,1,no,0,0,0,weapon,0,0x0,	SR_RIDEINLIGHTNING,Ride In Lightening
+2518,11,6,2,-1,0x2,1:1:2:2:3,5,1,no,0,0,0,weapon,0,0x0,	SR_RIDEINLIGHTNING,Ride In Lightening
 
 //****
 // WA Wanderer
@@ -1131,26 +1130,26 @@
 2412,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		WM_LESSON,Lesson
 2413,9,8,1,-1,0,0,5,-2:-2:-3:-3:-4,yes,0,0,0,magic,0,0x0,	WM_METALICSOUND,Metallic Sound
 2414,9,6,2,-1,0x3,1,5,1,yes,0,0x80,3,none,0,0x0,	WM_REVERBERATION,Reverberation
-2415,0,6,1,-1,0x6,1,5,1,no,0,0,0,weapon,0,0x0,	WM_REVERBERATION_MELEE,Reverberation Melee
-2416,0,6,1,0,0x6,1,5,1,no,0,0,0,magic,0,0x0,	WM_REVERBERATION_MAGIC,Reverberation Magic
+2415,0,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	WM_REVERBERATION_MELEE,Reverberation Melee
+2416,0,6,1,-1,0,0,5,1,no,0,0,0,magic,0,0x0,	WM_REVERBERATION_MAGIC,Reverberation Magic
 2417,11,6,2,0,0x3,5,1,1,no,0,0,0,none,0,0x0,	WM_DOMINION_IMPULSE,Dominion Impulse
-2418,9,6,2,-1,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_SEVERE_RAINSTORM,Severe Rainstorm
+2418,9,6,2,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_SEVERE_RAINSTORM,Severe Rainstorm
 2419,9,6,2,0,0x3,1,5,1,yes,0,0x80,5,none,0,0x0,	WM_POEMOFNETHERWORLD,Poem of The Netherworld //CHECK May need to recode too.
 2420,0,6,4,0,0x2,2:3:4:5:6,5,1,yes,0,0,0,none,0,0x0,	WM_VOICEOFSIREN,Voice of Siren
 2421,7,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_DEADHILLHERE,Valley of Death
-2422,7,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0,0,none,0,0x0,	WM_LULLABY_DEEPSLEEP,Deep Sleep Lullaby
+2422,0,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0,0,none,0,0x0,	WM_LULLABY_DEEPSLEEP,Deep Sleep Lullaby
 2423,0,6,4,0,0x3,3:4:5:6:7,5,1,yes,0,0,0,none,0,0x0,	WM_SIRCLEOFNATURE,Circle of Nature's Sound
 2424,9,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	WM_RANDOMIZESPELL,Improvised Song
 2425,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_GLOOMYDAY,Gloomy Day
 2426,9,6,2,0,0x2,2:3:3:4:4,5,1,yes,0,0x4000,0,weapon,0,0x0,	WM_GREAT_ECHO,Great Echo
 2427,0,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0x4000,0,none,0,0x0,	WM_SONG_OF_MANA,Song of Mana
 2428,0,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0x4000,0,none,0,0x0,	WM_DANCE_WITH_WUG,Dance With A Warg
-2429,9,6,1,0,0x2,2:2:3:3:4,5,1,yes,0,0x4000,0,weapon,0,0x0,	WM_SOUND_OF_DESTRUCTION,Sound of Destruction //CHECK Source shows its magic attack. Need to confirm before changing.
+2429,9,6,1,0,0x42,4:4:5:5:6,5,1,yes,0,0x4000,0,weapon,0,0x0,	WM_SOUND_OF_DESTRUCTION,Sound of Destruction //CHECK Source shows its magic attack. Need to confirm before changing.
 2430,0,6,4,0,0x3,3:4:5:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_SATURDAY_NIGHT_FEVER,Saturday Night Fever
-2431,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,magic,0,0x0,	WM_LERADS_DEW,Lerad's Dew
-2432,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,none,0,0x0,	WM_MELODYOFSINK,Melody of Sink
-2433,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,none,0,0x0,	WM_BEYOND_OF_WARCRY,Warcry of Beyond
-2434,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,none,0,0x0,	WM_UNLIMITED_HUMMING_VOICE,Unlimited Humming Voice
+2431,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,magic,0,0x0,	WM_LERADS_DEW,Lerad's Dew
+2432,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_MELODYOFSINK,Melody of Sink
+2433,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_BEYOND_OF_WARCRY,Warcry of Beyond
+2434,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_UNLIMITED_HUMMING_VOICE,Unlimited Humming Voice
 2516,11,6,1,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0,	WM_SEVERE_RAINSTORM_MELEE,Severe Rainstorm Melee
 
 //****
@@ -1167,7 +1166,7 @@
 2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_WARMER,Warmer
 2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_VACUUM_EXTREME,Vacuum Extreme
 2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_VARETYR_SPEAR,Varetyr Spear
-2455,9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_ARRULLO,Arrullo
+2455,7:7:7:7:9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_ARRULLO,Arrullo
 2456,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0,	SO_EL_CONTROL,Spirit Control
 2457,0,6,4,3,0x1,0,3,1,yes,0,0,0,none,0,0x0,	SO_SUMMON_AGNI,Summon Fire Spirit Agni
 2458,0,6,4,1,0x1,0,3,1,yes,0,0,0,none,0,0x0,	SO_SUMMON_AQUA,Summon Water Spirit Aqua
@@ -1194,16 +1193,16 @@
 2481,11,6,1,-1,0x2,1:2:3:4:5,5,1,yes,0,0,0,weapon,0,0x0,	GN_SPORE_EXPLOSION,Spore Explosion //CHECK Data says its element is set to neutral. Need to confirm.
 2482,11,6,16,0,0,0,5,1,yes,0,0,1,weapon,2,0x0,	GN_WALLOFTHORN,Wall of Thorns
 2483,11,6,2,0,0x3,4,10,1,yes,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED,Crazy Weed
-2484,0,6,2,2,0x2,3,10,1,no,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED_ATK,Crazy Weed Attack
+2484,0,6,2,2,0x2,2,10,1,no,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED_ATK,Crazy Weed Attack
 2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0,		GN_DEMONIC_FIRE,Demonic Fire
 2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION,Fire Expansion //CHECK FIX ME!!!! Level 1 is reducing the damage. Should increase it by 50%
 2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
 2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
 2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0,		GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
 2490,9,6,2,0,0x3,1,5,1,yes,0,0x80,2:3:4:5:6,none,0,0x0,	GN_HELLS_PLANT,Hell's Plant
-2491,0,6,1,0,0xC0,0,5,1,no,0,0,0,misc,0,0x0,	GN_HELLS_PLANT_ATK,Hell's Plant Attack
-2492,0,6,4,0,0x3,6:7:8:9:10,5,1,yes,0,0,0,none,0,0x0,	GN_MANDRAGORA,Howling of Mandragora
-2493,11,6,16,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	GN_SLINGITEM,Sling Item
+2491,0,6,1,0,0x90,0,5,1,no,0,0,0,misc,0,0x0,	GN_HELLS_PLANT_ATK,Hell's Plant Attack
+2492,0,6,4,0,0x3,5:6:6:7:7,5,1,yes,0,0,0,none,0,0x0,	GN_MANDRAGORA,Howling of Mandragora
+2493,11,6,16,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	GN_SLINGITEM,Sling Item
 2494,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		GN_CHANGEMATERIAL,Change Material
 2495,0,6,4,0,0x1,0,2,1,no,0,0,0,none,0,0x0,		GN_MIX_COOKING,Mix Cooking
 2496,0,6,4,0,0x1,0,2,1,no,0,0,0,none,0,0x0,		GN_MAKEBOMB,Create Bomb

+ 53 - 52
db/pre-re/skill_require_db.txt

@@ -598,14 +598,14 @@
 2203,0,0,40:48:56:64:72,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_FROSTMISTY#Frosty Misty#
 2204,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_JACKFROST#Jack Frost#
 2205,0,0,40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_MARSHOFABYSS#Marsh of Abyss#
-2206,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_RECOGNIZEDSPELL#Recognized Spell#
+2206,0,0,100:120:140:160:180,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_RECOGNIZEDSPELL#Recognized Spell#
 2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_SIENNAEXECRATE#Sienna Execrate#
 
 2209,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_STASIS#Stasis#
 2210,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_DRAINLIFE#Drain Life#
 2211,0,0,60:70:80:90:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_CRIMSONROCK#Crimson Rock#
 2212,0,0,35:40:45:50:55,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_HELLINFERNO#Hell Inferno#
-2213,0,0,240:280:320:360:400,0,0,0,99,0,0,none,0,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_COMET#Comet#
+2213,0,0,480:560:640:720:800,0,0,0,99,0,0,none,0,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_COMET#Comet#
 2214,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_CHAINLIGHTNING#Chain Lightning#
 2215,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_CHAINLIGHTNING_ATK#Chain Lightning Attack#
 2216,0,0,70:78:86:94:102,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_EARTHSTRAIN#Earth Strain#
@@ -654,25 +654,25 @@
 //****
 // RA Ranger
 2233,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,11,1,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_ARROWSTORM#Arrow Storm#
-2234,0,0,36:40:44:48:52,0,0,0,11,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_FEARBREEZE#Fear Breeze#
+2234,0,0,55:60:65:70:75,0,0,0,11,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_FEARBREEZE#Fear Breeze#
 
 2236,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,11,1,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_AIMEDBOLT#Aimed Bolt# //How many arrows does it require???
 2237,0,0,15,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_DETONATOR#Detonator#
 2238,0,0,35,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_ELECTRICSHOCKER#Electric Shocker#
 2239,0,0,20,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_CLUSTERBOMB#Cluster Bomb#
 2240,0,0,5,0,0,0,99,0,0,none,0,0,6124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGMASTERY#Warg Mastery#
-2241,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//RA_WUGRIDER#Warg Rider#
-2242,0,0,40,0,0,0,99,0,0,move_enable,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGDASH#Warg Dash#
-2243,0,0,20:22:24:26:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGSTRIKE#Warg Strike#
-2244,0,0,42:44:46:48:50,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGBITE#Warg Bite#
+2241,0,0,2,0,0,0,99,0,0,ridingwarg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGRIDER#Warg Rider#
+2242,0,0,4,0,0,0,99,0,0,move_enable,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGDASH#Warg Dash#
+2243,0,0,20:22:24:26:28,0,0,0,99,0,0,ridingwarg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGSTRIKE#Warg Strike#
+2244,0,0,40:42:44:46:48,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGBITE#Warg Bite#
 
 2246,0,0,12,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_SENSITIVEKEEN#Sensitive Keen#
 2247,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_CAMOUFLAGE#Camouflage#
 
-2249,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,990,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAGENTATRAP#Magenta Trap#
-2250,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,991,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_COBALTTRAP#Cobalt Trap#
-2251,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,993,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAIZETRAP#Maize Trap#
-2252,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,992,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_VERDURETRAP#Verdure Trap#
+2249,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6360,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAGENTATRAP#Magenta Trap#
+2250,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6361,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_COBALTTRAP#Cobalt Trap#
+2251,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6363,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAIZETRAP#Maize Trap#
+2252,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6362,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_VERDURETRAP#Verdure Trap#
 2253,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_FIRINGTRAP#Firing Trap#
 2254,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_ICEBOUNDTRAP#Icebound Trap#
 
@@ -680,35 +680,35 @@
 // NC Mechanic
 2256,0,0,3:6:9:12:15,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_BOOSTKNUCKLE#Boost Knuckle#
 2257,0,0,50,0,0,0,99,0,0,mado,0,0,1549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_PILEBUNKER#Pile Bunker#
-2258,0,0,2,0,0,0,99,0,0,mado,0,0,6145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_VULCANARM#Vulcan Arm#
-2259,0,0,20,0,0,0,99,0,0,mado,0,0,2139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_FLAMELAUNCHER#Flame Launcher#
-2260,0,0,20,0,0,0,99,0,0,mado,0,0,6147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_COLDSLOWER#Cold Slower#
-2261,0,0,30:45:60,0,0,0,99,8,1,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_ARMSCANNON#Arm Cannon#
-2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,6146,1,2800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_ACCELERATION#Acceleration#
-2263,0,0,25,0,0,0,99,0,0,mado,0,0,6146,1,2801,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_HOVERING#Hovering#
+2258,0,0,2:4:6,0,0,0,99,0,0,mado,0,0,6145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_VULCANARM#Vulcan Arm#
+2259,0,0,20,0,0,0,99,0,0,mado,0,0,2139,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_FLAMELAUNCHER#Flame Launcher#
+2260,0,0,20,0,0,0,99,0,0,mado,0,0,6146,1,6147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_COLDSLOWER#Cold Slower#
+2261,0,0,40:45:50,0,0,0,99,8,1,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_ARMSCANNON#Arm Cannon#
+2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2800	//NC_ACCELERATION#Acceleration#
+2263,0,0,25,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2801	//NC_HOVERING#Hovering#
 2264,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_F_SIDESLIDE#Front - Side Slide#
 2265,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_B_SIDESLIDE#Back - Side Slide#
 
-2267,0,0,200,0,0,0,99,0,0,mado,0,0,6146,5,2802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_SELFDESTRUCTION#Self Destruction#
-2268,0,0,100,0,0,0,99,0,0,mado,0,0,994,1,997,1,996,1,995,1,6146,2,2803,0,0,0,0,0,0,0,0,0,0	//NC_SHAPESHIFT#Shape Shift# //CHECK Shouldnt the different stones all be in the same slot?
-2269,0,0,20,0,0,0,99,0,0,mado,0,0,6146,2,2804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_EMERGENCYCOOL#Emergency Cool#
+2267,0,0,1,0,0,0,99,0,0,mado,0,0,6146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2802	//NC_SELFDESTRUCTION#Self Destruction#
+2268,0,0,100,0,0,0,99,0,0,mado,0,0,6360,1,6363,1,6362,1,6361,1,6146,2,0,0,0,0,0,0,0,0,0,0,2803	//NC_SHAPESHIFT#Shape Shift#
+2269,0,0,20,0,0,0,99,0,0,mado,0,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2804	//NC_EMERGENCYCOOL#Emergency Cool#
 2270,0,0,45,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_INFRAREDSCAN#Infrared Scan#
 2271,0,0,30,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_ANALYZE#Analyze#
-2272,0,0,90,0,0,0,99,0,0,mado,0,0,6146,3,2805,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_MAGNETICFIELD#Magnetic Field#
-2273,0,0,90,0,0,0,99,0,0,mado,0,0,6146,1,2806,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_NEUTRALBARRIER#Neutral Barrier#
-2274,0,0,100:150:200,0,0,0,99,0,0,mado,0,0,6146,2,2808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_STEALTHFIELD#Stealth Field#
-2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,2807,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_REPAIR#Repair#
+2272,0,0,90,0,0,0,99,0,0,mado,0,0,2805,0,6146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2805	//NC_MAGNETICFIELD#Magnetic Field#
+2273,0,0,90,0,0,0,99,0,0,mado,0,0,2806,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2806	//NC_NEUTRALBARRIER#Neutral Barrier#
+2274,0,0,100:150:200,0,0,0,99,0,0,mado,0,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2808	//NC_STEALTHFIELD#Stealth Field#
+2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2807	//NC_REPAIR#Repair#
 
 2278,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_AXEBOOMERANG#Axe Boomerang#
-2279,0,0,10:12:14:16:18,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_POWERSWING#Power Swing#
-2280,0,0,18:20:22:24:26,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_AXETORNADO#Axe Tornado#
-2281,0,0,25:30:35:40:45,0,0,0,99,0,0,none,0,0,998,1,999,2,612,0,615,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_SILVERSNIPER#FAW - Silver Sniper#
-2282,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,998,2,7054,1,612,0,615,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_MAGICDECOY#FAW - Magic Decoy#
+2279,0,0,20:22:24:26:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_POWERSWING#Power Swing#
+2280,20:40:60:80:100,0,18:20:22:24:26,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_AXETORNADO#Axe Tornado#
+2281,0,0,25:30:35:40:45,0,0,0,99,0,0,none,0,0,612,0,615,0,998,1,999,5,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_SILVERSNIPER#FAW - Silver Sniper#
+2282,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,612,0,615,0,998,2,7054,1,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_MAGICDECOY#FAW - Magic Decoy#
 2283,0,0,15,0,0,0,99,0,0,none,0,0,6186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_DISJOINT#FAW Removal#
 
 //****
 // SC Shadow Chaser
-2284,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_FATALMENACE#Fatal Menace#
+2284,0,0,20:25:30:35:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_FATALMENACE#Fatal Menace#
 2285,0,0,40:45:50:55:60:65:70:75:80:85,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_REPRODUCE#Reproduce#
 2286,0,0,40:45:50:55:60:65:70:75:80:85,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_AUTOSHADOWSPELL#Auto Shadow Spell#
 2287,0,0,40:50:60:70:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_SHADOWFORM#Shadow Form#
@@ -736,21 +736,22 @@
 2308,0,0,20:20:20:20:20:25:25:25:25:25,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_BANISHINGPOINT#Banishing Point#
 2309,0,0,30:45:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_TRAMPLE#Trample#
 2310,0,0,10:12:14:16:18,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_SHIELDPRESS#Shield Press#
-2311,0,0,40:50:60:70:80,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_REFLECTDAMAGE#Reflect Damage#
-2312,0,0,30,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PINPOINTATTACK#Pinpoint Attack#
+2311,0,0,60:80:100:120:140,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_REFLECTDAMAGE#Reflect Damage#
+2312,0,0,50,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PINPOINTATTACK#Pinpoint Attack#
 2313,0,0,30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_FORCEOFVANGUARD#Force of Vanguard#
 2314,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_RAGEBURST#Rage Burst#
 2315,0,0,50,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_SHIELDSPELL#Shield Spell#
-2316,0,0,24:28:32:36:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_EXEEDBREAK#Exceed Break#
-2317,0,0,42:44:46:48:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_OVERBRAND#Over Brand#
+2316,0,0,20:32:44:56:68,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_EXEEDBREAK#Exceed Break#
+2317,0,0,20:30:40:50:60,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_OVERBRAND#Over Brand#
 2318,0,0,75:80:85:90:95,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PRESTIGE#Prestige#
 2319,0,0,30:36:42:48:54,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_BANDING#Banding#
-2320,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_MOONSLASHER#Moon Slasher#
-2321,0,0,60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_RAYOFGENESIS#Ray of Genesis#
+2320,0,0,20:24:28:32:36,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_MOONSLASHER#Moon Slasher#
+2321,0,0,60:65:70:75:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_RAYOFGENESIS#Ray of Genesis#
 2322,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,523,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PIETY#Piety#
 2323,0,0,52:60:68:76:84,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_EARTHDRIVE#Earth Drive#
-2324,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_HESPERUSLIT#Hesperus Lit#
-2325,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_INSPIRATION#Inspiration#
+2324,0,0,80:90:100:110:120,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_HESPERUSLIT#Hesperus Lit#
+2325,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_INSPIRATION#Inspiration#
+
 //****
 // SR Sura
 2326,0,0,3:4:5:6:7:8:9:10:11:12,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_DRAGONCOMBO#Dragon Combo#
@@ -759,7 +760,7 @@
 2329,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_FALLENEMPIRE#Fallen Empire#
 2330,0,0,1:2:3:4:5:6:7:8:9:10,-12:-14:-16:-18:-20:-22:-24:-26:-28:-30,-6:-7:-8:-9:-10:-11:-12:-13:-14:-15,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_TIGERCANNON#Tiger Cannon#
 2331,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HELLGATE#Hell Gate#
-2332,0,0,110:120:130:140:150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAMPAGEBLASTER#Rampage Blaster#
+2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAMPAGEBLASTER#Rampage Blaster#
 2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CRESCENTELBOW#Crescent Elbow#
 2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CURSEDCIRCLE#Cursed Circle#
 2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_LIGHTNINGWALK#Lightning Walk#
@@ -777,8 +778,8 @@
 2347,0,0,40:50:60:70:80,-2:-4:-6:-8:-10,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_GENTLETOUCH_CHANGE#Gentle Touch - Change#
 2348,0,0,40:50:60:70:80,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_GENTLETOUCH_REVITALIZE#Gentle Touch - Revitalize#
 //More from SR Sura (but not following ID order)
-2517,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HOWLINGOFLION#Howling of Lion# 
-2518,0,0,40:50:60:70:80,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RIDEINLIGHTNING#Ride In Lightening#
+2517,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HOWLINGOFLION#Howling of Lion# 
+2518,0,0,22:24:26:28:30,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RIDEINLIGHTNING#Ride In Lightening#
 
 //****
 // WA Wanderer
@@ -800,22 +801,22 @@
 2416,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_REVERBERATION_MAGIC#Reverberation Magic# 
 2417,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DOMINION_IMPULSE#Dominion Impulse#
 2418,0,0,80:90:100:110:120,0,0,0,11,1,20,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SEVERE_RAINSTORM#Severe Rainstorm#
-2419,0,0,12:16:20:24:28,0,0,0,99,0,0,none,0,0,11513,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_POEMOFNETHERWORLD#Poem of Netherworld#
+2419,0,0,12:16:20:24:28,0,0,0,13:14,0,0,none,0,0,11513,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_POEMOFNETHERWORLD#Poem of Netherworld#
 2420,0,0,48:56:64:72:80,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_VOICEOFSIREN#Voice of Siren#
-2421,0,0,50:53:56:59:62,0,0,0,99,0,0,none,0,0,6144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DEADHILLHERE#Valley of Death#
+2421,0,0,50:53:56:59:62,0,0,0,13:14,0,0,none,0,0,6144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DEADHILLHERE#Valley of Death#
 2422,0,0,80:90:100:110:120,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_LULLABY_DEEPSLEEP#Deep Sleep Lullaby#
 2423,0,0,42:46:50:54:58,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SIRCLEOFNATURE#Circle of Nature's Sound#
 2424,0,0,40:45:50:55:60,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_RANDOMIZESPELL#Improvised Song#
-2425,0,0,60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MW_GLOOMYDAY#Gloomy Day#
+2425,0,0,60:75:90:105:120,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MW_GLOOMYDAY#Gloomy Day#
 2426,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,11513,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_GREAT_ECHO#Great Echo# - Missing 1 Lozange. Need item ID.
-2427,0,0,120:140:160:180:200,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SONG_OF_MANA#Song of Mana#
-2428,0,0,120:140:160:180:200,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DANCE_WITH_WUG#Dance With Warg#
-2429,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SOUND_OF_DESTRUCTION#Sound of Destruction#
-2430,0,0,150:160:170:180:190,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SATURDAY_NIGHT_FEVER#Saturday Night Fever#
-2431,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_LERADS_DEW#Lerad's Dew#
-2432,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_MELODYOFSINK#Melody of Sink#
-2433,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_WARCRY_OF_BEYOND#Warcry of Beyond#
-2434,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_UNLIMITED_HUMMING_VOICE#Unlimited Humming Voice#
+2427,0,0,120:140:160:180:200,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SONG_OF_MANA#Song of Mana#
+2428,0,0,120:140:160:180:200,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DANCE_WITH_WUG#Dance With Warg#
+2429,0,0,50:60:70:80:90,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SOUND_OF_DESTRUCTION#Sound of Destruction#
+2430,0,0,150:160:170:180:190,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SATURDAY_NIGHT_FEVER#Saturday Night Fever#
+2431,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_LERADS_DEW#Lerad's Dew#
+2432,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_MELODYOFSINK#Melody of Sink#
+2433,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_WARCRY_OF_BEYOND#Warcry of Beyond#
+2434,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_UNLIMITED_HUMMING_VOICE#Unlimited Humming Voice#
 
 //****
 // SO Sorcerer
@@ -883,7 +884,7 @@
 //2543,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//ALL_RAY_OF_PROTECTION#Ray of Protection#
 //2544,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MC_CARTDECORATE#Cart Decorate#
 
-//***
+//****
 // Rebellion
 2551,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_GLITTERING_GREED#Flip The Coin Greed#
 2552,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_RICHS_COIN#Rich's Coin#

+ 17 - 15
db/pre-re/skill_unit_db.txt

@@ -101,12 +101,13 @@
 
 //706,0xfd,    ,  0, 0,1000,all, 0x000	//NPC_VENOMFOG
 
-2044,0xca,    ,  0, 2,1000,all,   0x018	//AB_EPICLESIS
+2044,0xca,    ,  0, 2,3000,all,   0x018	//AB_EPICLESIS
 
 2032,0xe1,    ,  2, 0,1000,enemy, 0x018	//GC_POISONSMOKE
 
+2213,0x86,    ,  0, 9,1000,enemy, 0x018	//WL_COMET
 2214,0x86,    ,  0, 5, 100,enemy, 0x080	//WL_CHAINLIGHTNING
-2216,0xcb,    , -1, 0, 150,enemy, 0x018	//WL_EARTHSTRAIN
+2216,0xcb,    , -1, 2,2000,enemy, 0x018	//WL_EARTHSTRAIN
 
 2238,0xd8,    ,  0, 1,1000,enemy, 0x006	//RA_ELECTRICSHOCKER
 2239,0xd9,    ,  0, 1,1000,enemy, 0x006	//RA_CLUSTERBOMB
@@ -117,19 +118,20 @@
 2253,0xd6,    ,  0, 1,1000,enemy, 0x002	//RA_FIRINGTRAP
 2254,0xd7,    ,  0, 1,1000,enemy, 0x002	//RA_ICEBOUNDTRAP
 
-2273,0xe2,    ,  1, 0, 500,friend,0x000	//NC_NEUTRALBARRIER
-2274,0xe3,    ,  1, 0, 500,all,   0x000	//NC_STEALTHFIELD
+2273,0xe2,    ,  2, 0, 500,friend,0x000	//NC_NEUTRALBARRIER
+2274,0xe3,    ,  2, 0, 500,all,   0x000	//NC_STEALTHFIELD
 
 2299,0xcc,    ,  0, 1,1000,all,   0x006	//SC_MANHOLE
 2300,0xcd,    ,  0, 1,1000,all,   0x006	//SC_DIMENSIONDOOR
-2301,0xce,    ,  2, 0,  -1,all,   0x200E	//SC_CHAOSPANIC
-2302,0xcf,    ,  0, 2,  -1,enemy,   0x002	//SC_MAELSTROM
-2303,0xd0,    ,  3, 0,  -1,all,   0x2018	//SC_BLOODYLUST
-2304,0xd1,    ,  0, 2,  -1,enemy, 0x000	//SC_FEINTBOMB
+2301,0xce,    ,  0, 2,  -1,all,   0x200E	//SC_CHAOSPANIC
+2302,0xcf,    ,  0, 2,  -1,enemy, 0x002	//SC_MAELSTROM
+2303,0xd0,    ,  0, 2,  -1,all,   0x2018	//SC_BLOODYLUST
+2304,0xd1,    ,  0, 2,1000,enemy, 0x018	//SC_FEINTBOMB
 
+2317,0x86,    , -1, 0,	-1,enemy, 0x010	//LG_OVERBRAND
 2319,0xec,    ,  0, 3,5000,all,   0x000	//LG_BANDING
 
-2414,0xda,    ,  0, 0,1000,enemy, 0x008	//WM_REVERBERATION
+2414,0xda,    ,  0, 1,1000,enemy, 0x008	//WM_REVERBERATION
 2418,0xdb,    ,  0, 5, 300,enemy, 0x800	//WM_SEVERE_RAINSTORM
 2419,0xde,    ,  0, 1,1000,all,	  0x014  //WM_POEMOFNETHERWORLD
 
@@ -138,20 +140,20 @@
 2446,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_EARTHGRAVE
 2447,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_DIAMONDDUST
 2449,0xdf,    ,  0, 3:3:4:4:5,500,enemy,  0x018	//SO_PSYCHIC_WAVE
-2450,0xe0,    ,  0, 3, 500,enemy, 0x010	//SO_CLOUD_KILL
+2450,0xe0,    ,  3, 0, 500,enemy, 0x010	//SO_CLOUD_KILL
 2452,0xe4,    ,  0, 3,3000,all,   0x010	//SO_WARMER
-2453,0xeb,    ,  0, 1:1:2:2:3,1000,enemy,0x010	//SO_VACUUM_EXTREME
+2453,0xeb,    ,  0, 1:1:2:2:3,500,enemy,0x010	//SO_VACUUM_EXTREME
 2465,0xf1,    ,  0, 1,1000,all,   0x010	//SO_FIRE_INSIGNIA
 2466,0xf2,    ,  0, 1,1000,all,   0x010	//SO_WATER_INSIGNIA
 2467,0xf3,    ,  0, 1,1000,all,   0x010	//SO_WIND_INSIGNIA
 2468,0xf4,    ,  0, 1,1000,all,   0x010	//SO_EARTH_INSIGNIA
 
 2479,0xe5,    ,  0, 1,1000,enemy, 0x006	//GN_THORNS_TRAP
-2482,0xe6,0x7f, -1, 1,  -1,all,   0x000	//GN_WALLOFTHORN
+2482,0xe6,0x7f, -1, 1, 100,all,   0x000	//GN_WALLOFTHORN
 2484,0x86,    ,  0, 1, 100,enemy, 0x080	//GN_CRAZYWEED_ATK
-2485,0xe7,    ,  0, 3,1000,enemy, 0x098	//GN_DEMONIC_FIRE
-2487,0xe8,    ,  0, 3,1000,enemy, 0x000	//GN_FIRE_EXPANSION_SMOKE_POWDER
-2488,0xe9,    ,  0, 3,1000,enemy, 0x000	//GN_FIRE_EXPANSION_TEAR_GAS
+2485,0xe7,    ,  0, 2,2000,enemy, 0x098	//GN_DEMONIC_FIRE
+2487,0xe8,    ,  0, 2, 500,enemy, 0x000	//GN_FIRE_EXPANSION_SMOKE_POWDER
+2488,0xe9,    ,  0, 2, 500,enemy, 0x000	//GN_FIRE_EXPANSION_TEAR_GAS
 2490,0xea,    ,  0, 1,1000,enemy, 0x002	//GN_HELLS_PLANT
 
 2555,0x104,   ,  0, 1:2:2:3:3,500,enemy,0x006	//RL_B_TRAP

+ 14 - 14
db/re/item_combo_db.txt

@@ -98,17 +98,17 @@
 2357:2421:2524:5171,{ bonus bAllStats,1; }
 2358:5153,{ bonus bLuk,6; bonus bFlee,5; bonus bInt,2; }
 2359:2654,{ bonus bUseSPrate,-20; bonus bMaxHP,300; }
-//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
+//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
 2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
 2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
-2376:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2377:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
-2378:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2379:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2380:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2381:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
-2382:2437:2540,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2376:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2377:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
+2378:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2379:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2380:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2381:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2382:2437:2540,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
 2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bVariableCastrate,-3; bonus bDelayrate,-15; }
 2390:2749,{ bonus bFlee2,5; }
 2394:2444:2549,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
@@ -132,9 +132,9 @@
 2478:2578:2887:15039,{ bonus3 bAutoSpell,"ASC_BREAKER",(getskilllv("ASC_BREAKER"))?getskilllv("ASC_BREAKER"):1,20; if(readparam(bStr)>119) { bonus bBaseAtk,30; } bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bCritical,-20; }
 2479:2580:2890:15042,{ bonus bAspd,2; bonus2 bSkillAtk,"RA_ARROWSTORM",50; bonus bLongAtkRate,30; bonus3 bAutoSpell,"AC_DOUBLE",(getskilllv("AC_DOUBLE") < 3)?3:getskilllv("AC_DOUBLE"),20; }
 2480:2581:2891:15043,{ bonus bMaxHPRate,15; bonus bFlee2,20; bonus2 bSkillAtk,"RA_CLUSTERBOMB",20; bonus bLongAtkRate,-30; bonus bAspd,-7; }
-2483:2586:15046,{ bonus2 bSubRace,RC_DemiHuman,15; }
-2484:2587:15047,{ bonus bDex,5; bonus2 bSubRace,RC_DemiHuman,15; }
-2485:2587:15048,{ bonus bInt,5; bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,15; }
+2483:2586:15046,{ bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; }
+2484:2587:15047,{ bonus bDex,5; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; }
+2485:2587:15048,{ bonus bInt,5; bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; }
 2518:2648:2649:5126,{ bonus bInt,5; bonus bMdef,11; bonus bMaxSPrate,20; bonus bNoCastCancel,0; bonus bVariableCastrate,25; }
 2519:2650:2651:5127,{ bonus bStr,2; bonus bLuk,9; bonus bCritical,13; bonus bBaseAtk,18; bonus bFlee2,13; }
 2527:13001,{ bonus2 bAddRace,RC_Dragon,5; }
@@ -209,7 +209,7 @@
 4268:4277,{ bonus bBaseAtk,20; bonus bLuk,3; }
 4311:4319:4331:4371,{ bonus bInt,1; bonus bStr,1; bonus bDef,2; bonus bSPrecovRate,10; bonus2 bSkillAtk,"PA_SHIELDCHAIN",10; bonus2 bSkillAtk,"PA_SACRIFICE",10; bonus bVariableCastrate,-10; if(BaseJob==Job_Crusader) bonus bDefEle,Ele_Holy; }
 4323:4324,{ bonus3 bAutoSpell,"MG_FROSTDIVER",3,250; }
-4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; }
+4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; bonus2 bSPGainRace,RC_Player,2; }
 4545:18730,{ bonus bMatk,5; bonus bBaseAtk,5; }
 5040:5442,{ bonus bAspdRate,3; bonus bVariableCastrate,3; }
 5068:5653,{ bonus bStr,1; bonus bAtkRate,5; }
@@ -223,7 +223,7 @@
 5401:5653,{ bonus bInt,1; bonus bMatkRate,2; }
 //5470:5653,{ bonus bDex,1; bonus bLongAtkRate,3; }
 //9024:18832,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,(GetPetRelationship >= 3)?15:10; }
-13027:15044,{ set .@i,getequiprefinerycnt(EQI_ARMOR)?getequiprefinerycnt(EQI_ARMOR):1; bonus3 bAddMonsterDropItem,929,RC_DemiHuman,70*.@i; bonus3 bAddMonsterDropItem,970,RC_DemiHuman,50*.@i; bonus3 bAddMonsterDropItem,929,RC_Brute,70*.@i; bonus3 bAddMonsterDropItem,970,RC_Brute,50*.@i; }
+13027:15044,{ set .@i,getequiprefinerycnt(EQI_ARMOR)?getequiprefinerycnt(EQI_ARMOR):1; bonus3 bAddMonsterDropItem,929,RC_DemiHuman,70*.@i; bonus3 bAddMonsterDropItem,970,RC_DemiHuman,50*.@i; bonus3 bAddMonsterDropItem,929,RC_Player,70*.@i; bonus3 bAddMonsterDropItem,970,RC_Player,50*.@i; bonus3 bAddMonsterDropItem,929,RC_Brute,70*.@i; bonus3 bAddMonsterDropItem,970,RC_Brute,50*.@i; }
 13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }
 15088:18816:18818,{ bonus bMatk,BaseLevel/3; bonus2 bExpAddClass,Class_All,5; }
 15088:18817:18819,{ bonus bBaseAtk,BaseLevel/3; bonus2 bExpAddClass,Class_All,5; }
@@ -247,7 +247,7 @@
 24038:24044,{ bonus bVit,1; }
 24039:24045,{ bonus bAgi,1; }
 24046:24051,{ bonus2 bSubEle,Ele_Neutral,1; if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L)) { bonus2 bSubEle,Ele_Neutral,1; } }
-24052:24062,{ bonus2 bExpAddRace,RC_DemiHuman,3; }
+24052:24062,{ bonus2 bExpAddRace,RC_DemiHuman,3; bonus2 bExpAddRace,RC_Player,3; }
 24053:24063,{ bonus2 bAddRace,10,5; bonus2 bMagicAddRace,10,5; }
 24054:24065,{ bonus2 bExpAddRace,RC_Brute,3; }
 24055:24066,{ bonus2 bExpAddRace,RC_Insect,3; }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 167 - 167
db/re/item_db.txt


+ 18 - 43
db/re/skill_cast_db.txt

@@ -1082,14 +1082,12 @@
 2005,0,0,0,15000,0,2000,-1
 //-- RK_IGNITIONBREAK
 2006,1000,0,0,0,0,2000,-1
-
 //-- RK_DRAGONBREATH
 2008,0:0:0:1000:1000:1000:1500:1500:2000:2000,2000,0,10000,0,0,500
 //-- RK_DRAGONHOWLING
 2009,0,0,0,15000,0,10000,-1
-
 //-- RK_MILLENNIUMSHIELD
-2011,0,1000,0,180000,0,60000,-1
+2011,0,1000,0,180000,1000,60000,-1
 //-- RK_CRUSHSTRIKE
 2012,0,0,0,30000,0,30000,1000
 //-- RK_REFRESH
@@ -1119,7 +1117,6 @@
 2022,0,2500:2000:1500:1000:500,0,0,0,0,-1
 //-- GC_DARKILLUSION
 2023,0,1500,0,0,0,0,-1
-
 //-- GC_CREATENEWPOISON
 2025,0,500,0,0,0,0,-1
 //-- GC_POISONINGWEAPON
@@ -1129,11 +1126,11 @@
 //-- GC_COUNTERSLASH
 2029,0,2000,0,0,0,0,-1
 //-- GC_WEAPONCRUSH
-2030,0,1000,0,60000,0,0,-1
+2030,0,1000,0,75000:90000:105000:120000:135000,0,0,-1
 //-- GC_VENOMPRESSURE
 2031,0,1000,0,0,0,0,-1
 //-- GC_POISONSMOKE
-2032,0,2000,0,6000:8000:10000:12000:14000,0,0,2000
+2032,0,2000,0,10000:12000:14000:16000:18000,0,0,2000
 //-- GC_CLOAKINGEXCEED
 2033,0,2000,0,0,0,0,-1
 //-- GC_PHANTOMMENACE
@@ -1171,7 +1168,6 @@
 2047,1000,0,0,60000,0,3000,-1
 //-- AB_LAUDARAMUS
 2048,1000,0,0,60000,0,3000,-1
-
 //-- AB_RENOVATIO
 2050,3000,0,0,90000,0,0,2000
 //-- AB_HIGHNESSHEAL
@@ -1182,7 +1178,6 @@
 2053,1000,0,0,150000:180000:210000:240000:270000,0,0,1000
 //-- AB_DUPLELIGHT
 2054,2000,1000,0,90000:120000:150000:180000:210000:240000:270000:300000:330000:360000,0,0,2000
-
 //-- AB_SILENTIUM
 2057,4000,0,0,20000:30000:40000:50000:60000,0,15000,-1
 //-- AB_OFFERTORIUM
@@ -1204,7 +1199,6 @@
 2206,1000,1000,0,60000:90000:120000:150000:180000,0,50000:80000:110000:140000:170000,1000
 //-- WL_SIENNAEXECRATE
 2207,2000,2000,0,10000:12000:14000:16000:18000,0,0,-1
-
 //-- WL_STASIS
 2209,3000,1000,0,10000:15000:20000:25000:30000,0,300000,1000
 //-- WL_DRAINLIFE
@@ -1217,12 +1211,10 @@
 2213,10000:11000:12000:13000:14000,0,0,15000,0,60000,1000:1500:2000:2500:3000
 //-- WL_CHAINLIGHTNING
 2214,3500:4000:4500:5000:5500,0,0,100,0,3000,1000
-
 //-- WL_EARTHSTRAIN
 2216,2000:3000:4000:5000:6000,1000,0,150,75000:90000:105000:120000:135000,10000,2000
 //-- WL_TETRAVORTEX
 2217,5000:6000:7000:8000:9000,2000,0,20000,0,15000,2000
-
 //-- WL_SUMMONFB
 2222,2000,0,0,120000:160000:200000:240000:280000,0,0,-1
 //-- WL_SUMMONBL
@@ -1231,7 +1223,6 @@
 2224,2000,0,0,120000:160000:200000:240000:280000,0,0,-1
 //-- WL_SUMMONSTONE
 2229,2000,0,0,120000:160000:200000:240000:280000,0,0,-1
-
 //-- WL_READING_SB
 2231,5000,500,0,0,0,0,1000
 //-- WL_TELEKINESIS_INTENSE
@@ -1243,28 +1234,24 @@
 2233,2000:2200:2400:2600:2800:3000:3200:3400:3600:3800,0,0,0,0,5000:4800:4600:4400:4200:4000:3800:3600:3400:3200,-1
 //-- RA_FEARBREEZE
 2234,2000,0,0,60000:90000:120000:150000:180000,0,0,0
-
 //-- RA_AIMEDBOLT
 2236,4000,1000,0,0,0,0,500
 //-- RA_DETONATOR
 2237,0,0,0,1000,0,0,-1
 //-- RA_ELECTRICSHOCKER
-2238,0,0,0,15000,20000:22000:24000:26000,0,-1
+2238,0,0,0,15000,20000:22000:24000:26000:28000,0,-1
 //-- RA_CLUSTERBOMB
 2239,0,0,0,15000,0,0,-1
 //-- RA_WUGMASTERY
 2240,0,1000,0,0,0,0,-1
 //-- RA_WUGRIDER
 2241,0,500,0,0,0,0,-1
-
 //-- RA_WUGBITE
 2244,0,2000,0,1000:2000:3000:4000:5000,0,4000:6000:8000:10000:12000,-1
-
 //-- RA_SENSITIVEKEEN
 2246,0,3000,0,0,0,0,-1
 //-- RA_CAMOUFLAGE
 2247,0,0,0,10000,0,0,-1
-
 //-- RA_MAGENTATRAP
 2249,0,2000,0,15000,10000,0,-1
 //-- RA_COBALTTRAP
@@ -1274,7 +1261,7 @@
 //-- RA_VERDURETRAP
 2252,0,2000,0,15000,10000,0,-1
 //-- RA_FIRINGTRAP
-2253,0,0,0,20000,15000,0,-1
+2253,0,0,0,15000,15000,0,-1
 //-- RA_ICEBOUNDTRAP
 2254,0,0,0,20000,15000,0,-1
 //-- RA_UNLIMIT
@@ -1289,20 +1276,19 @@
 //-- NC_VULCANARM
 2258,0,300:200:100,0,0,0,0,-1
 //-- NC_FLAMELAUNCHER
-2259,1000:1500:2000,1500:1000:500,0,7000:14000:21000,0,0,500
+2259,500:1000:1500,1500:1000:500,0,7000:14000:21000,0,0,500
 //-- NC_COLDSLOWER
 2260,1000,1000:2000:3000,0,7000:14000:21000,0,0,-1
 // -- NC_ARMSCANNON
 2261,1400:1600:1800,500:1000:2000,0,0,0,0,600:400:200
 //-- NC_ACCELERATION
-2262,0,0,0,30000:60000:90000,0,0,-1
+2262,0,0,0,60000:90000:120000,0,0,-1
 //-- NC_HOVERING
 2263,0,0,0,90000,0,0,-1
 //-- NC_F_SIDESLIDE
 2264,0,500,0,0,0,0,-1
 //-- NC_B_SIDESLIDE
 2265,0,500,0,0,0,0,-1
-
 //-- NC_SELFDESTRUCTION
 2267,2000:1500:1000,0,0,0,0,300000,500
 //-- NC_SHAPESHIFT
@@ -1314,14 +1300,13 @@
 //-- NC_ANALYZE
 2271,0,1000,0,20000,0,0,-1
 //-- NC_MAGNETICFIELD
-2272,500:1000:1500,0,0,15000,0,20000:15000:10000,-1
+2272,0,0,0,4000:6000:8000,0,20000:15000:10000,-1
 //-- NC_NEUTRALBARRIER
-2273,0,0,0,30000:45000:60000,0,20000:15000:10000,500:1000:1500
+2273,0,0,0,30000:45000:60000,0,20000:15000:10000,-1
 //-- NC_STEALTHFIELD
-2274,0,0,0,15000:20000:25000,0,20000:15000:10000,500:1000:1500
+2274,0,0,0,15000:20000:25000,0,20000:15000:10000,-1
 //-- NC_REPAIR
 2275,200:300:400:500:600,1000,0,0,0,0,-1
-
 //-- NC_AXEBOOMERANG
 2278,0,0,0,0,0,5000:4500:4000:3500:3000,-1
 //-- NC_POWERSWING
@@ -1342,7 +1327,7 @@
 //-- SC_FATALMENACE
 2284,0,500,0,0,0,0,-1
 //-- SC_REPRODUCE
-2285,0,1000,0,60000,0,0,-1
+2285,0,1000,0,300000,0,0,-1
 //-- SC_AUTOSHADOWSPELL
 2286,4000:3600:3200:2800:2400:2000:1600:1200:800:400,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:300000,0,0,2000
 //-- SC_SHADOWFORM
@@ -1388,7 +1373,6 @@
 //==== Royal Guard skills ==================
 //-- LG_CANNONSPEAR
 2307,0,0,0,0,0,2000,-1
-
 //-- LG_TRAMPLE
 2309,0,0,0,0,0,1000,-1
 //-- LG_SHIELDPRESS
@@ -1429,7 +1413,7 @@
 
 //===== Sura Skills ========================
 //-- SR_DRAGONCOMBO
-2326,0,0,0,3000,0,0,-1
+2326,0,0,0,5000,0,0,-1
 //-- SR_SKYNETBLOW
 2327,0,500,0,0,0,0,-1
 //-- SR_EARTHSHAKER
@@ -1438,7 +1422,6 @@
 2329,0,0,0,500:1000:1500:2000:2500,0,0,-1
 //-- SR_TIGERCANNON
 2330,1100:1200:1300:1400:1500:1600:1700:1800:1900:2000,1000,0,0,0,5000,-1
-
 //-- SR_RAMPAGEBLASTER
 2332,0,1000,0,0,0,10000,-1
 //-- SR_CRESCENTELBOW
@@ -1453,12 +1436,10 @@
 2337,1000,500,0,0,0,3000,-1
 //-- SR_RAISINGDRAGON
 2338,0,1000,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,0,30000,-1
-
 //-- SR_ASSIMILATEPOWER
 2340,0,1000,0,0,0,5000,-1
 //-- SR_POWERVELOCITY
 2341,1500,0,0,0,0,0,500
-
 //-- SR_GATEOFHELL
 2343,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,100:200:300:400:500:600:700:800:900:1000,0,0,0,0,-1
 //-- SR_GENTLETOUCH_QUIET
@@ -1498,11 +1479,10 @@
 2413,1000:1500:2000:2500:3000,1000,0,0,0,2000:2500:3000:3500:4000,-1
 //-- WM_REVERBERATION
 2414,1100:1200:1300:1400:1500,1000,0,9000:10000:11000:12000:13000,0,0,-1
-
 //-- WM_DOMINION_IMPULSE
 2417,0,1000,0,0,0,0,-1
 //-- WM_SEVERE_RAINSTORM
-2418,1000:1500:2000:2500:3000,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000,500
+2418,1500:2000:2500:3000:3500,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000,500
 //-- WM_POEMOFNETHERWORLD
 2419,3000,0,0,9000:11000:13000:15000:17000,8000:10000:12000:14000:16000,0,-1
 //-- WM_VOICEOFSIREN
@@ -1524,13 +1504,13 @@
 //-- WM_DANCE_WITH_WUG
 2428,1500:2000:2500:3000:3500,1000,0,30000:60000:90000:120000:150000,0,90000,500
 //-- WM_SOUND_OF_DESTRUCTION
-2429,0:500:1000:1500:2000,1000,0,0,0,20000,500
+2429,0:500:1000:1500:2000,1000,0,0,0,6000:7000:8000:9000:10000,500
 //-- WM_SATURDAY_NIGHT_FEVER
 2430,1000:2000:3000:4000:5000,1000,0,10000:15000:20000:25000:30000,10000:8000:6000:4000:2000,180000,1000
 //-- WM_LERADS_DEW
 2431,1000,1000,0,20000:30000:40000:50000:60000,0,180000,500
 //-- WM_MELODYOFSINK
-2432,100,1000,0,20000:30000:40000:50000:60000,0,180000,500
+2432,1000,1000,0,20000:30000:40000:50000:60000,0,180000,500
 //-- WM_BEYOND_OF_WARCRY
 2433,1000,1000,0,20000:30000:40000:50000:60000,0,180000,500
 //-- WM_UNLIMITED_HUMMING_VOICE
@@ -1580,7 +1560,6 @@
 2461,0,0,0,0,0,5000,0
 //-- SO_EL_ANALYSIS
 2462,0,0,0,0,0,0,2000
-
 //-- SO_EL_CURE
 2464,2000,1000,0,0,0,0,-1
 //-- SO_FIRE_INSIGNIA
@@ -1614,16 +1593,14 @@
 2483,3000:3500:4000:4500:5000:5500:6000:6500:7000:7500,500,0,0,0,5000,-1
 //-- GN_CRAZYWEED_ATK
 2484,0,0,0,100,0,0,-1
-
 //-- GN_DEMONIC_FIRE
-2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,15000,5000,-1
+2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,8000:16000:24000:32000:40000,5000,-1
 //-- GN_FIRE_EXPANSION
 2486,2000,500,0,0,0,0,-1
 //-- GN_FIRE_EXPANSION_SMOKE_POWDER
 2487,0,0,0,10000:12000:14000:16000:18000,0,0,-1
 //-- GN_FIRE_EXPANSION_TEAR_GAS
 2488,0,0,0,10000:12000:14000:16000:18000,0,0,-1
-
 //-- GN_HELLS_PLANT
 2490,3000:3500:4000:4500:5000,500,0,14000:21000:28000:35000:42000,0,0,-1
 //-- GN_HELLS_PLANT_ATK
@@ -1631,8 +1608,7 @@
 //-- GN_MANDRAGORA
 2492,1000,500,0,10000:15000:20000:25000:30000,0,15000,-1
 //-- GN_SLINGITEM
-2493,0,0,0,77000,10000,1000,-1
-
+2493,0,0,0,0,0,1000,-1
 //-- GN_SLINGITEM_RANGEMELEEATK
 2498,0,0,0,5000:10000:60000:60000:3000,0,0,-1
 //-- GN_ILLUSIONDOPING
@@ -1642,11 +1618,10 @@
 //===== Extra 3rd Class Skills =============
 //-- AB_SECRAMENT
 2515,1000,500,0,60000:90000:120000:150000:180000,0,0,1000
-
 //-- SR_HOWLINGOFLION
 2517,1000,0,0,12000:14000:16000:18000:20000,0,10000,500
 //-- SR_RIDEINLIGHTNING
-2518,1000:2000:3000:4000:5000,200,0,0,0,1000,-1
+2518,1000:2000:3000:4000:5000,0,0,0,0,1000,-1
 //==========================================
 
 //===== Misc. Skills =======================

+ 16 - 0
db/re/skill_castnodex_db.txt

@@ -36,6 +36,22 @@
 512,3	//GS_TRACKING
 1014,1	//PR_REDEMPTIO
 
+2012,7	//RK_CRUSHSTRIKE
+2013,7	//RK_REFRESH
+2014,7	//RK_GIANTGROWTH
+2015,7	//RK_STONEHARDSKIN
+2022,0,2	//GC_CROSSIMPACT
+2032,7	//GC_POISONSMOKE
+2234,7	//RA_FEARBREEZE
+//2267,7	//NC_SELFDESTRUCTION
+2268,7	//NC_SHAPESHIFT
+//2270,7	//NC_INFRAREDSCAN
+2271,7	//NC_ANALYZE
+2281,7	//NC_SILVERSNIPER
+2282,7	//NC_MAGICDECOY
+2313,7	//LG_FORCEOFVANGUARD
+2462,7	//SO_EL_ANALYSIS
+
 2534,7,7	//RETURN_TO_ELDICASTES
 2536,7,7	//ALL_GUARDIAN_RECALL
 2537,0,7	//ALL_ODINS_POWER

+ 47 - 47
db/re/skill_db.txt

@@ -869,7 +869,7 @@
 1010,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	BA_PANGVOICE,Pang Voice
 1011,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	DC_WINKCHARM,Wink of Charm
 1012,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x4000,	BS_UNFAIRLYTRICK,Unfair Trick
-1013,0,6,4,0,0x3,2,1,0,no,0,0x1,0,weapon,0,0x4000,	BS_GREED,Greed
+1013,0,6,4,0,0x3,2,1,0,no,0,0x1,0,weapon,0,0x0,	BS_GREED,Greed
 1014,0,6,4,6,0x3,14,1,0,yes,0,0x1,0,magic,0,0x0,	PR_REDEMPTIO,Redemptio
 1015,9,6,16,0,0x1,0,1,1,no,0,0x401,0,weapon,0,0x0,	MO_KITRANSLATION,Ki Translation
 1016,-1,6,1,-1,0x2,1,1,1,no,0,0x1,0,weapon,5,0x0,	MO_BALKYOUNG,Ki Explosion
@@ -904,8 +904,8 @@
 // WL Warlock
 2201,11,6,16,0,0,0,5,1,yes,0,0,0,magic,0,0x420,	WL_WHITEIMPRISON,White Imprison
 2202,11,8,1,8,0x2,1:1:1:2:2,5,-2,yes,0,0,0,magic,0,0x420,	WL_SOULEXPANSION,Soul Expansion
-2203,0,8,4,1,0x2,13,5,-3:-4:-5:-6:-7,yes,0,0,0,magic,0,0x400,	WL_FROSTMISTY,Frosty Misty
-2204,0,8,4,1,0x2,13,5,-5,yes,0,0,0,magic,0,0x0,	WL_JACKFROST,Jack Frost
+2203,0,8,4,1,0x2,9,5,-3:-4:-5:-6:-7,yes,0,0,0,magic,0,0x400,	WL_FROSTMISTY,Frosty Misty
+2204,0,8,4,1,0x2,5:6:7:8:9,5,-5,yes,0,0,0,magic,0,0x0,	WL_JACKFROST,Jack Frost
 2205,11,6,1,0,0x1,0,5,1,yes,0,0,0,magic,0,0x400,	WL_MARSHOFABYSS,Marsh of Abyss
 2206,0,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	WL_RECOGNIZEDSPELL,Recognized Spell
 2207,7,6,1,2,0x3,1:2:2:3:3,5,1,yes,0,0,0,magic,0,0x420,	WL_SIENNAEXECRATE,Sienna Execrate
@@ -914,10 +914,10 @@
 2210,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0,0x420,	WL_DRAINLIFE,Drain Life
 2211,11,8,1,3,0x2,3,5,-7,yes,0,0,0,magic,3,0x400,	WL_CRIMSONROCK,Crimson Rock
 2212,11,6,1,3,0,0,5,1,yes,0,0,0,magic,0,0x400,	WL_HELLINFERNO,Hell Inferno
-2213,11,8,2,0,0x2,7,5,-20,yes,0,0,0,magic,2,0x400,	WL_COMET,Comet
-2214,11,6,1,0,0,3,5,1,yes,0,0,0,magic,0,0x400,		WL_CHAINLIGHTNING,Chain Lightning //CHECK Is the splash being used for the target search?
+2213,11,8,2,0,0x2,9,5,-20,yes,0,0,0,magic,2,0x400,	WL_COMET,Comet
+2214,11,6,1,0,0x2,3,5,1,yes,0,0,0,magic,0,0x400,		WL_CHAINLIGHTNING,Chain Lightning //CHECK Is the splash being used for the target search?
 2215,11,6,1,4,0,0,5,1,no,0,0,0,magic,0,0x0,		WL_CHAINLIGHTNING_ATK,Chain Lightning Attack
-2216,3,8,2,2,0,0,5,-6:-7:-8:-9:-10,yes,0,0,0,magic,0,0x20,	WL_EARTHSTRAIN,Earth Strain
+2216,6,8,2,2,0,0,5,-6:-7:-8:-9:-10,yes,0,0,0,magic,0,0x20,	WL_EARTHSTRAIN,Earth Strain
 2217,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0,0x400,	WL_TETRAVORTEX,Tetra Vortex
 2218,11,6,1,3,0,0,5,1,no,0,0,0,magic,0,0x0,		WL_TETRAVORTEX_FIRE,Tetra Vortex Fire
 2219,11,6,1,1,0,0,5,1,no,0,0,0,magic,0,0x0,		WL_TETRAVORTEX_WATER,Tetra Vortex Water
@@ -940,14 +940,14 @@
 // GC Guillotine Cross
 2021,10,6,1,0,0x1,0,5,1,no,0,0,0,none,0,0x0,			GC_VENOMIMPRESS,Venom Impress
 2022,3,8,1,-1,0,0,5,-7,no,0,0,0,weapon,0,0x0,			GC_CROSSIMPACT,Cross Impact
-2023,3:4:5:6:7,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_DARKILLUSION,Dark Illusion
+2023,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_DARKILLUSION,Dark Illusion
 2024,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		GC_RESEARCHNEWPOISON,Research New Poison
 2025,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		GC_CREATENEWPOISON,Create New Poison
 2026,5,6,16,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	GC_ANTIDOTE,Antidote
 2027,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_POISONINGWEAPON,Poisoning Weapon
 2028,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_WEAPONBLOCKING,Weapon Blocking
-2029,-2,6,4,-1,0x2,1,5,1,no,0,0,0,weapon,3,0x0,	GC_COUNTERSLASH,Counter Slash
-2030,-2,6,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush
+2029,0,6,4,-1,0x22,1,5,1,no,0,0,0,weapon,3,0x0,	GC_COUNTERSLASH,Counter Slash
+2030,-2,6,4,-1,0x1,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush
 2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_VENOMPRESSURE,Venom Pressure
 2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0,	GC_POISONSMOKE,Poison Smoke
 2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40,	GC_CLOAKINGEXCEED,Cloaking Exceed
@@ -993,8 +993,8 @@
 2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0,		RA_WUGMASTERY,Warg Mastery
 2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000,		RA_WUGRIDER,Warg Rider
 2242,0,6,4,-1,0x2,1,1,0,no,0,0,0,weapon,0,0x2000,	RA_WUGDASH,Warg Dash
-2243,9,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x2000,	RA_WUGSTRIKE,Warg Strike
-2244,9,6,1,0,0,0,5,1,no,0,0,0,weapon,0,0x80,	RA_WUGBITE,Warg Bite
+2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x2000,	RA_WUGSTRIKE,Warg Strike
+2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x80,	RA_WUGBITE,Warg Bite
 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RA_TOOTHOFWUG,Tooth of Warg
 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0,	RA_SENSITIVEKEEN,Sensitive Keen
 2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x42,		RA_CAMOUFLAGE,Camouflage
@@ -1011,32 +1011,32 @@
 2255,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		NC_MADOLICENCE,Mado License
 2256,11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	NC_BOOSTKNUCKLE,Boost Knuckle
 2257,3,6,1,-1,0,0,3,1,no,0,0,0,weapon,0,0x0,	NC_PILEBUNKER,Pile Bunker
-2258,13,6,1,-1,0,0,3,1,no,0,0,0,weapon,0,0x0,	NC_VULCANARM,Vulcan Arm
-2259,5,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0,		NC_FLAMELAUNCHER,Flame Launcher
+2258,13,6,1,-1,0x2,1,3,1,no,0,0,0,weapon,0,0x0,	NC_VULCANARM,Vulcan Arm
+2259,7,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0,		NC_FLAMELAUNCHER,Flame Launcher
 2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0,0,weapon,0,0x0,	NC_COLDSLOWER,Cold Slower
-2261,7,6,2,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
+2261,9:11:13,6,1,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
 2262,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,		NC_ACCELERATION,Acceleration
 2263,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_HOVERING,Hovering
 2264,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0,		NC_F_SIDESLIDE,Front-Side Slide
 2265,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0,		NC_B_SIDESLIDE,Back-Side Slide
 2266,0,0,0,0,0,0,4,0,no,0,0,0,none,0,0x0,		NC_MAINFRAME,Mainframe Restructure // Check me. Part of the code notes translated to "The amount of fuel have".
-2267,0,6,4,-1,0x42,2:3:4,3,1,no,0,0,0,misc,5,0x0,	NC_SELFDESTRUCTION,Self Destruction
+2267,0,6,4,-1,0x4A,2:3:4,3,1,no,0,0,0,misc,5,0x0,	NC_SELFDESTRUCTION,Self Destruction
 2268,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0,	NC_SHAPESHIFT,Shape Shift
 2269,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_EMERGENCYCOOL,Emergency Cool
 2270,0,6,4,0,0x3,7,1,1,yes,0,0,0,none,0,0x0,	NC_INFRAREDSCAN,Infrared Scan
 2271,9,6,1,0,0x1,0,3,1,yes,0,0,0,none,0,0x0,	NC_ANALYZE,Analyze
-2272,0,6,4,0,0x3,1:2:3,3,1,yes,0,0,0,none,0,0x0,	NC_MAGNETICFIELD,Magnetic Field
-2273,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0,0x0,	NC_NEUTRALBARRIER,Neutral Barrier
-2274,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0,0x0,	NC_STEALTHFIELD,Stealth Field
-2275,5,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	NC_REPAIR,Repair
+2272,0,6,4,0,0x3,2,3,1,no,0,0,0,none,0,0x0,	NC_MAGNETICFIELD,Magnetic Field
+2273,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,	NC_NEUTRALBARRIER,Neutral Barrier
+2274,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,	NC_STEALTHFIELD,Stealth Field
+2275,5:6:7:8:9,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	NC_REPAIR,Repair
 2276,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		NC_TRAININGAXE,Axe Training
 2277,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		NC_RESEARCHFE,Research Fire/Earth
-2278,4:5:6:7:8,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	NC_AXEBOOMERANG,Axe Boomerang
+2278,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	NC_AXEBOOMERANG,Axe Boomerang
 2279,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	NC_POWERSWING,Power Swing
 2280,0,8,4,-1,0x2,2:2:3:3:3,5,-6,no,0,0,0,weapon,0,0x0,	NC_AXETORNADO,Axe Tornado // Check me. Takes 20 * Skill LV amount of HP each use.
 2281,2,6,2,0,0x1,0,5,1,yes,0,0,2,none,0,0x0,	NC_SILVERSNIPER,FAW - Silver Sniper
-2282,2,6,2,0,0x1,0,5,1,yes,0,0,2,none,0,0x0,	NC_MAGICDECOY,FAW - Magic Decoy //CHECK FIX ME!!!! Wind and Earth stones spawning opposite decoys.
-2283,2,6,1,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_DISJOINT,FAW Removal
+2282,2,6,2,0,0x1,0,5,1,yes,0,0,2,none,0,0x0,	NC_MAGICDECOY,FAW - Magic Decoy
+2283,5,6,1,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_DISJOINT,FAW Removal
 
 //****
 // SC Shadow Chaser
@@ -1072,11 +1072,11 @@
 2312,5,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	LG_PINPOINTATTACK,Pinpoint Attack
 2313,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_FORCEOFVANGUARD,Force of Vanguard
 2314,1,6,1,-1,0,0,1,1,no,0,0,0,weapon,0,0x0,	LG_RAGEBURST,Rage Burst
-2315,0,6,4,0:6:0,0x2,3,3,1,yes,0,0,0,none,2,0x0,	LG_SHIELDSPELL,Shield Spell
+2315,0,6,4,0:6:0,0x2,0,3,1,yes,0,0,0,none,2:0:0,0x0,	LG_SHIELDSPELL,Shield Spell
 2316,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_EXEEDBREAK,Exceed Break
-2317,0,6,2,-1,0x2,0,5,1,yes,0,0,0,none,3:4:5:6:7,0x0,	LG_OVERBRAND,Over Brand
+2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,0x0,	LG_OVERBRAND,Over Brand
 2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_PRESTIGE,Prestige
-2319,0,6,4,0,0x1,3,5,1,no,0,0,0,weapon,0,0x0,	LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
+2319,0,6,4,0,0x3,3,5,1,no,0,0,0,weapon,0,0x0,	LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
 2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x0,	LG_MOONSLASHER,Moon Slasher
 2321,1,8,2,6,0x2,5,5,-7,yes,0,0,0,weapon,0,0x0,	LG_RAYOFGENESIS,Ray of Genesis
 2322,0,6,16,0,0x3,1,5,1,yes,0,0,0,none,0,0x0,	LG_PIETY,Piety
@@ -1086,15 +1086,15 @@
 
 //****
 // SR Sura
-2326,-2,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x0,	SR_DRAGONCOMBO,Dragon Combo //CHECK Is this 2 regular hits or sub hits? Yes its 2 sub hits.
-2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0,	SR_SKYNETBLOW,Sky Net Blow //CHECK Video shows 3 hits. Its sub hits right? Data check shows no sub, one source shows 3 hits, another shows 5.
-2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0,	SR_EARTHSHAKER,Earth Shaker //CHECK Must add a check in battle.c to triple damage if hitting a hidden target.
-2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0,	SR_FALLENEMPIRE,Fallen Empire //CHECK Video shows 2 hits. Is it sub hits? Yes its divided between 2 hits.
+2326,-2,8,1,-1,0,0,10,-2,no,0,0,0,weapon,0,0x0,	SR_DRAGONCOMBO,Dragon Combo
+2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0,	SR_SKYNETBLOW,Sky Net Blow
+2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0,	SR_EARTHSHAKER,Earth Shaker
+2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0,	SR_FALLENEMPIRE,Fallen Empire
 2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0,	SR_TIGERCANNON,Tiger Cannon //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire.
 2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SR_HELLGATE,Hell Gate
-2332,5,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	SR_RAMPAGEBLASTER,Rampage Blaster
+2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	SR_RAMPAGEBLASTER,Rampage Blaster
 2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_CRESCENTELBOW,Crescent Elbow //CHECK Check the autospell ID.
-2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0,	SR_CURSEDCIRCLE,Cursed Circle //CHECK Code shows it takes up to 5% of your HP upon use?
+2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0,	SR_CURSEDCIRCLE,Cursed Circle
 2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_LIGHTNINGWALK,Lightning Walk
 2336,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	SR_KNUCKLEARROW,Knuckle Arrow
 2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x0,	SR_WINDMILL,Windmill
@@ -1105,13 +1105,13 @@
 2342,1,6,1,-1,0x20,0,5,1,no,0,0,0,weapon,3,0x0,	SR_CRESCENTELBOW_AUTOSPELL,Crescent Elbow Autospell //CHECK Does this ignore defense?
 2343,1:2:3:3:4:4:5:5:6:7,8,1,0,0,0,10,-7,yes,0,0,0,weapon,0,0x0,	SR_GATEOFHELL,Gate of Hell //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire
 2344,2,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	SR_GENTLETOUCH_QUIET,Gentle Touch - Quiet
-2345,2,6,16,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,	SR_GENTLETOUCH_CURE,Gentle Touch - Cure //CHECK Its a healing skill. Guessing it has to be magic type? Healing isnt working.
+2345,2,6,16,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	SR_GENTLETOUCH_CURE,Gentle Touch - Cure
 2346,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	SR_GENTLETOUCH_ENERGYGAIN,Gentle Touch - Energy Gain
 2347,2,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	SR_GENTLETOUCH_CHANGE,Gentle Touch - Change
 2348,2,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	SR_GENTLETOUCH_REVITALIZE,Gentle Touch - Revitalize
 //More from Sura but not following ID order
 2517,0,6,4,-1,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0,	SR_HOWLINGOFLION,Howling of Lion
-2518,11,6,2,-1,0x2,2:2:3:3:4,5,1,no,0,0,0,weapon,0,0x0,	SR_RIDEINLIGHTNING,Ride In Lightening
+2518,11,6,2,-1,0x2,1:1:2:2:3,5,1,no,0,0,0,weapon,0,0x0,	SR_RIDEINLIGHTNING,Ride In Lightening
 
 //****
 // WA Wanderer
@@ -1130,26 +1130,26 @@
 2412,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		WM_LESSON,Lesson
 2413,9,8,1,-1,0,0,5,-2:-2:-3:-3:-4,yes,0,0,0,magic,0,0x0,	WM_METALICSOUND,Metallic Sound
 2414,9,6,2,-1,0x3,1,5,1,yes,0,0x80,3,none,0,0x0,	WM_REVERBERATION,Reverberation
-2415,0,6,1,-1,0x6,1,5,1,no,0,0,0,weapon,0,0x0,	WM_REVERBERATION_MELEE,Reverberation Melee
-2416,0,6,1,0,0x6,1,5,1,no,0,0,0,magic,0,0x0,	WM_REVERBERATION_MAGIC,Reverberation Magic
+2415,0,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	WM_REVERBERATION_MELEE,Reverberation Melee
+2416,0,6,1,-1,0,0,5,1,no,0,0,0,magic,0,0x0,	WM_REVERBERATION_MAGIC,Reverberation Magic
 2417,11,6,2,0,0x3,5,1,1,no,0,0,0,none,0,0x0,	WM_DOMINION_IMPULSE,Dominion Impulse
-2418,9,6,2,-1,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_SEVERE_RAINSTORM,Severe Rainstorm
+2418,9,6,2,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_SEVERE_RAINSTORM,Severe Rainstorm
 2419,9,6,2,0,0x3,1,5,1,yes,0,0x80,5,none,0,0x0,	WM_POEMOFNETHERWORLD,Poem of The Netherworld //CHECK May need to recode too.
 2420,0,6,4,0,0x2,2:3:4:5:6,5,1,yes,0,0,0,none,0,0x0,	WM_VOICEOFSIREN,Voice of Siren
 2421,7,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_DEADHILLHERE,Valley of Death
-2422,7,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0,0,none,0,0x0,	WM_LULLABY_DEEPSLEEP,Deep Sleep Lullaby
+2422,0,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0,0,none,0,0x0,	WM_LULLABY_DEEPSLEEP,Deep Sleep Lullaby
 2423,0,6,4,0,0x3,3:4:5:6:7,5,1,yes,0,0,0,none,0,0x0,	WM_SIRCLEOFNATURE,Circle of Nature's Sound
 2424,9,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	WM_RANDOMIZESPELL,Improvised Song
 2425,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	WM_GLOOMYDAY,Gloomy Day
 2426,9,6,2,0,0x2,2:3:3:4:4,5,1,yes,0,0x4000,0,weapon,0,0x0,	WM_GREAT_ECHO,Great Echo
 2427,0,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0x4000,0,none,0,0x0,	WM_SONG_OF_MANA,Song of Mana
 2428,0,6,4,0,0x3,5:6:7:8:9,5,1,yes,0,0x4000,0,none,0,0x0,	WM_DANCE_WITH_WUG,Dance With A Warg
-2429,9,6,1,0,0x2,2:2:3:3:4,5,1,yes,0,0x4000,0,weapon,0,0x0,	WM_SOUND_OF_DESTRUCTION,Sound of Destruction //CHECK Source shows its magic attack. Need to confirm before changing.
+2429,9,6,1,0,0x42,4:4:5:5:6,5,1,yes,0,0x4000,0,weapon,0,0x0,	WM_SOUND_OF_DESTRUCTION,Sound of Destruction //CHECK Source shows its magic attack. Need to confirm before changing.
 2430,0,6,4,0,0x3,3:4:5:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_SATURDAY_NIGHT_FEVER,Saturday Night Fever
-2431,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,magic,0,0x0,	WM_LERADS_DEW,Lerad's Dew
-2432,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,none,0,0x0,	WM_MELODYOFSINK,Melody of Sink
-2433,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,none,0,0x0,	WM_BEYOND_OF_WARCRY,Warcry of Beyond
-2434,0,6,4,0,0x3,5,5,1,yes,0,0x4000,0,none,0,0x0,	WM_UNLIMITED_HUMMING_VOICE,Unlimited Humming Voice
+2431,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,magic,0,0x0,	WM_LERADS_DEW,Lerad's Dew
+2432,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_MELODYOFSINK,Melody of Sink
+2433,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_BEYOND_OF_WARCRY,Warcry of Beyond
+2434,0,6,4,0,0x3,5:5:6:6:7,5,1,yes,0,0x4000,0,none,0,0x0,	WM_UNLIMITED_HUMMING_VOICE,Unlimited Humming Voice
 2516,11,6,1,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0,	WM_SEVERE_RAINSTORM_MELEE,Severe Rainstorm Melee
 
 //****
@@ -1166,7 +1166,7 @@
 2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_WARMER,Warmer
 2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_VACUUM_EXTREME,Vacuum Extreme
 2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_VARETYR_SPEAR,Varetyr Spear
-2455,9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_ARRULLO,Arrullo
+2455,7:7:7:7:9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_ARRULLO,Arrullo
 2456,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0,	SO_EL_CONTROL,Spirit Control
 2457,0,6,4,3,0x1,0,3,1,yes,0,0,0,none,0,0x0,	SO_SUMMON_AGNI,Summon Fire Spirit Agni
 2458,0,6,4,1,0x1,0,3,1,yes,0,0,0,none,0,0x0,	SO_SUMMON_AQUA,Summon Water Spirit Aqua
@@ -1193,16 +1193,16 @@
 2481,11,6,1,-1,0x2,1:2:3:4:5,5,1,yes,0,0,0,weapon,0,0x0,	GN_SPORE_EXPLOSION,Spore Explosion //CHECK Data says its element is set to neutral. Need to confirm.
 2482,11,6,16,0,0,0,5,1,yes,0,0,1,weapon,2,0x0,	GN_WALLOFTHORN,Wall of Thorns
 2483,11,6,2,0,0x3,4,10,1,yes,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED,Crazy Weed
-2484,0,6,2,2,0x2,3,10,1,no,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED_ATK,Crazy Weed Attack
+2484,0,6,2,2,0x2,2,10,1,no,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED_ATK,Crazy Weed Attack
 2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0,		GN_DEMONIC_FIRE,Demonic Fire
 2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION,Fire Expansion //CHECK FIX ME!!!! Level 1 is reducing the damage. Should increase it by 50%
 2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
 2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
 2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0,		GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
 2490,9,6,2,0,0x3,1,5,1,yes,0,0x80,2:3:4:5:6,none,0,0x0,	GN_HELLS_PLANT,Hell's Plant
-2491,0,6,1,0,0xC0,0,5,1,no,0,0,0,misc,0,0x0,	GN_HELLS_PLANT_ATK,Hell's Plant Attack
-2492,0,6,4,0,0x3,6:7:8:9:10,5,1,yes,0,0,0,none,0,0x0,	GN_MANDRAGORA,Howling of Mandragora
-2493,11,6,16,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	GN_SLINGITEM,Sling Item
+2491,0,6,1,0,0x90,0,5,1,no,0,0,0,misc,0,0x0,	GN_HELLS_PLANT_ATK,Hell's Plant Attack
+2492,0,6,4,0,0x3,5:6:6:7:7,5,1,yes,0,0,0,none,0,0x0,	GN_MANDRAGORA,Howling of Mandragora
+2493,11,6,16,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	GN_SLINGITEM,Sling Item
 2494,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		GN_CHANGEMATERIAL,Change Material
 2495,0,6,4,0,0x1,0,2,1,no,0,0,0,none,0,0x0,		GN_MIX_COOKING,Mix Cooking
 2496,0,6,4,0,0x1,0,2,1,no,0,0,0,none,0,0x0,		GN_MAKEBOMB,Create Bomb

+ 50 - 51
db/re/skill_require_db.txt

@@ -598,14 +598,14 @@
 2203,0,0,40:48:56:64:72,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_FROSTMISTY#Frosty Misty#
 2204,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_JACKFROST#Jack Frost#
 2205,0,0,40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_MARSHOFABYSS#Marsh of Abyss#
-2206,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_RECOGNIZEDSPELL#Recognized Spell#
+2206,0,0,100:120:140:160:180,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_RECOGNIZEDSPELL#Recognized Spell#
 2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_SIENNAEXECRATE#Sienna Execrate#
 
 2209,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_STASIS#Stasis#
 2210,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_DRAINLIFE#Drain Life#
 2211,0,0,60:70:80:90:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_CRIMSONROCK#Crimson Rock#
 2212,0,0,35:40:45:50:55,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_HELLINFERNO#Hell Inferno#
-2213,0,0,240:280:320:360:400,0,0,0,99,0,0,none,0,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_COMET#Comet#
+2213,0,0,480:560:640:720:800,0,0,0,99,0,0,none,0,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_COMET#Comet#
 2214,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_CHAINLIGHTNING#Chain Lightning#
 2215,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_CHAINLIGHTNING_ATK#Chain Lightning Attack#
 2216,0,0,70:78:86:94:102,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_EARTHSTRAIN#Earth Strain#
@@ -626,7 +626,6 @@
 2231,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_READING_SB#Reading Spellbook#
 //2232,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_FREEZE_SP#Freeze Spell# (Passive Skill)
 
-
 //****
 // AB Arch Bishop
 2038,0,0,20:23:26:29:32,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//AB_JUDEX#Judex#
@@ -655,25 +654,25 @@
 //****
 // RA Ranger
 2233,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,11,1,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_ARROWSTORM#Arrow Storm#
-2234,0,0,36:40:44:48:52,0,0,0,11,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_FEARBREEZE#Fear Breeze#
+2234,0,0,55:60:65:70:75,0,0,0,11,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_FEARBREEZE#Fear Breeze#
 
 2236,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,11,1,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_AIMEDBOLT#Aimed Bolt# //How many arrows does it require???
 2237,0,0,15,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_DETONATOR#Detonator#
 2238,0,0,35,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_ELECTRICSHOCKER#Electric Shocker#
 2239,0,0,20,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_CLUSTERBOMB#Cluster Bomb#
 2240,0,0,5,0,0,0,99,0,0,none,0,0,6124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGMASTERY#Warg Mastery#
-2241,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGRIDER#Warg Rider#
-2242,0,0,40,0,0,0,99,0,0,move_enable,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGDASH#Warg Dash#
-2243,0,0,20:22:24:26:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGSTRIKE#Warg Strike#
+2241,0,0,2,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGRIDER#Warg Rider#
+2242,0,0,4,0,0,0,99,0,0,move_enable,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGDASH#Warg Dash#
+2243,0,0,20:22:24:26:28,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGSTRIKE#Warg Strike#
 2244,0,0,40:42:44:46:48,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_WUGBITE#Warg Bite#
 
 2246,0,0,12,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_SENSITIVEKEEN#Sensitive Keen#
 2247,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_CAMOUFLAGE#Camouflage#
 
-2249,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,990,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAGENTATRAP#Magenta Trap#
-2250,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,991,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_COBALTTRAP#Cobalt Trap#
-2251,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,993,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAIZETRAP#Maize Trap#
-2252,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,992,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_VERDURETRAP#Verdure Trap#
+2249,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6360,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAGENTATRAP#Magenta Trap#
+2250,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6361,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_COBALTTRAP#Cobalt Trap#
+2251,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6363,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_MAIZETRAP#Maize Trap#
+2252,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,6362,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_VERDURETRAP#Verdure Trap#
 2253,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_FIRINGTRAP#Firing Trap#
 2254,0,0,10,0,0,0,99,0,0,none,0,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RA_ICEBOUNDTRAP#Icebound Trap#
 
@@ -681,35 +680,35 @@
 // NC Mechanic
 2256,0,0,3:6:9:12:15,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_BOOSTKNUCKLE#Boost Knuckle#
 2257,0,0,50,0,0,0,99,0,0,mado,0,0,1549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_PILEBUNKER#Pile Bunker#
-2258,0,0,2,0,0,0,99,0,0,mado,0,0,6145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_VULCANARM#Vulcan Arm#
-2259,0,0,20,0,0,0,99,0,0,mado,0,0,2139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_FLAMELAUNCHER#Flame Launcher#
-2260,0,0,20,0,0,0,99,0,0,mado,0,0,6147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_COLDSLOWER#Cold Slower#
-2261,0,0,30:45:60,0,0,0,99,8,1,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_ARMSCANNON#Arm Cannon#
-2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,6146,1,2800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2800	//NC_ACCELERATION#Acceleration#
-2263,0,0,25,0,0,0,99,0,0,mado,0,0,6146,1,2801,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2801	//NC_HOVERING#Hovering#
+2258,0,0,2:4:6,0,0,0,99,0,0,mado,0,0,6145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_VULCANARM#Vulcan Arm#
+2259,0,0,20,0,0,0,99,0,0,mado,0,0,2139,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_FLAMELAUNCHER#Flame Launcher#
+2260,0,0,20,0,0,0,99,0,0,mado,0,0,6146,1,6147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_COLDSLOWER#Cold Slower#
+2261,0,0,40:45:50,0,0,0,99,8,1,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_ARMSCANNON#Arm Cannon#
+2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2800	//NC_ACCELERATION#Acceleration#
+2263,0,0,25,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2801	//NC_HOVERING#Hovering#
 2264,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_F_SIDESLIDE#Front - Side Slide#
 2265,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_B_SIDESLIDE#Back - Side Slide#
 
-2267,0,0,200,0,0,0,99,0,0,mado,0,0,6146,5,2802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2802	//NC_SELFDESTRUCTION#Self Destruction#
-2268,0,0,100,0,0,0,99,0,0,mado,0,0,6360,1,6363,1,6362,1,6361,1,6146,2,2803,0,0,0,0,0,0,0,0,0,2803	//NC_SHAPESHIFT#Shape Shift# //CHECK Shouldnt the different stones all be in the same slot?
-2269,0,0,20,0,0,0,99,0,0,mado,0,0,6146,2,2804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2804	//NC_EMERGENCYCOOL#Emergency Cool#
+2267,0,0,1,0,0,0,99,0,0,mado,0,0,6146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2802	//NC_SELFDESTRUCTION#Self Destruction#
+2268,0,0,100,0,0,0,99,0,0,mado,0,0,6360,1,6363,1,6362,1,6361,1,6146,2,0,0,0,0,0,0,0,0,0,0,2803	//NC_SHAPESHIFT#Shape Shift#
+2269,0,0,20,0,0,0,99,0,0,mado,0,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2804	//NC_EMERGENCYCOOL#Emergency Cool#
 2270,0,0,45,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_INFRAREDSCAN#Infrared Scan#
 2271,0,0,30,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_ANALYZE#Analyze#
-2272,0,0,90,0,0,0,99,0,0,mado,0,0,6146,3,2805,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2805	//NC_MAGNETICFIELD#Magnetic Field#
-2273,0,0,90,0,0,0,99,0,0,mado,0,0,6146,1,2806,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2806	//NC_NEUTRALBARRIER#Neutral Barrier#
-2274,0,0,100:150:200,0,0,0,99,0,0,mado,0,0,6146,2,2808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2808	//NC_STEALTHFIELD#Stealth Field#
-2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,2807,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2807	//NC_REPAIR#Repair#
+2272,0,0,90,0,0,0,99,0,0,mado,0,0,2805,0,6146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2805	//NC_MAGNETICFIELD#Magnetic Field#
+2273,0,0,90,0,0,0,99,0,0,mado,0,0,2806,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2806	//NC_NEUTRALBARRIER#Neutral Barrier#
+2274,0,0,100:150:200,0,0,0,99,0,0,mado,0,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2808	//NC_STEALTHFIELD#Stealth Field#
+2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2807	//NC_REPAIR#Repair#
 
 2278,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_AXEBOOMERANG#Axe Boomerang#
-2279,0,0,10:12:14:16:18,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_POWERSWING#Power Swing#
-2280,0,0,18:20:22:24:26,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_AXETORNADO#Axe Tornado#
-2281,0,0,25:30:35:40:45,0,0,0,99,0,0,none,0,0,998,1,999,2,612,0,615,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_SILVERSNIPER#FAW - Silver Sniper#
-2282,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,998,2,7054,1,612,0,615,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_MAGICDECOY#FAW - Magic Decoy#
+2279,0,0,20:22:24:26:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_POWERSWING#Power Swing#
+2280,20:40:60:80:100,0,18:20:22:24:26,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_AXETORNADO#Axe Tornado#
+2281,0,0,25:30:35:40:45,0,0,0,99,0,0,none,0,0,612,0,615,0,998,1,999,5,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_SILVERSNIPER#FAW - Silver Sniper#
+2282,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,612,0,615,0,998,2,7054,1,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_MAGICDECOY#FAW - Magic Decoy#
 2283,0,0,15,0,0,0,99,0,0,none,0,0,6186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NC_DISJOINT#FAW Removal#
 
 //****
 // SC Shadow Chaser
-2284,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_FATALMENACE#Fatal Menace#
+2284,0,0,20:25:30:35:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_FATALMENACE#Fatal Menace#
 2285,0,0,40:45:50:55:60:65:70:75:80:85,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_REPRODUCE#Reproduce#
 2286,0,0,40:45:50:55:60:65:70:75:80:85,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_AUTOSHADOWSPELL#Auto Shadow Spell#
 2287,0,0,40:50:60:70:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SC_SHADOWFORM#Shadow Form#
@@ -737,21 +736,21 @@
 2308,0,0,20:20:20:20:20:25:25:25:25:25,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_BANISHINGPOINT#Banishing Point#
 2309,0,0,30:45:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_TRAMPLE#Trample#
 2310,0,0,10:12:14:16:18,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_SHIELDPRESS#Shield Press#
-2311,0,0,40:50:60:70:80,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_REFLECTDAMAGE#Reflect Damage#
-2312,0,0,30,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PINPOINTATTACK#Pinpoint Attack#
+2311,0,0,60:80:100:120:140,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_REFLECTDAMAGE#Reflect Damage#
+2312,0,0,50,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PINPOINTATTACK#Pinpoint Attack#
 2313,0,0,30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_FORCEOFVANGUARD#Force of Vanguard#
 2314,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_RAGEBURST#Rage Burst#
 2315,0,0,50,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_SHIELDSPELL#Shield Spell#
-2316,0,0,24:28:32:36:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_EXEEDBREAK#Exceed Break#
-2317,0,0,42:44:46:48:50,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_OVERBRAND#Over Brand#
+2316,0,0,20:32:44:56:68,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_EXEEDBREAK#Exceed Break#
+2317,0,0,20:30:40:50:60,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_OVERBRAND#Over Brand#
 2318,0,0,75:80:85:90:95,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PRESTIGE#Prestige#
 2319,0,0,30:36:42:48:54,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_BANDING#Banding#
-2320,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_MOONSLASHER#Moon Slasher#
-2321,0,0,60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_RAYOFGENESIS#Ray of Genesis#
+2320,0,0,20:24:28:32:36,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_MOONSLASHER#Moon Slasher#
+2321,0,0,60:65:70:75:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_RAYOFGENESIS#Ray of Genesis#
 2322,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,523,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_PIETY#Piety#
 2323,0,0,52:60:68:76:84,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_EARTHDRIVE#Earth Drive#
-2324,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_HESPERUSLIT#Hesperus Lit#
-2325,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_INSPIRATION#Inspiration#
+2324,0,0,80:90:100:110:120,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_HESPERUSLIT#Hesperus Lit#
+2325,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LG_INSPIRATION#Inspiration#
 
 //****
 // SR Sura
@@ -761,7 +760,7 @@
 2329,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_FALLENEMPIRE#Fallen Empire#
 2330,0,0,1:2:3:4:5:6:7:8:9:10,-12:-14:-16:-18:-20:-22:-24:-26:-28:-30,-6:-7:-8:-9:-10:-11:-12:-13:-14:-15,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_TIGERCANNON#Tiger Cannon#
 2331,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HELLGATE#Hell Gate#
-2332,0,0,110:120:130:140:150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAMPAGEBLASTER#Rampage Blaster#
+2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAMPAGEBLASTER#Rampage Blaster#
 2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CRESCENTELBOW#Crescent Elbow#
 2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CURSEDCIRCLE#Cursed Circle#
 2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_LIGHTNINGWALK#Lightning Walk#
@@ -779,8 +778,8 @@
 2347,0,0,40:50:60:70:80,-2:-4:-6:-8:-10,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_GENTLETOUCH_CHANGE#Gentle Touch - Change#
 2348,0,0,40:50:60:70:80,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_GENTLETOUCH_REVITALIZE#Gentle Touch - Revitalize#
 //More from SR Sura (but not following ID order)
-2517,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HOWLINGOFLION#Howling of Lion# 
-2518,0,0,40:50:60:70:80,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RIDEINLIGHTNING#Ride In Lightening#
+2517,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HOWLINGOFLION#Howling of Lion# 
+2518,0,0,22:24:26:28:30,0,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RIDEINLIGHTNING#Ride In Lightening#
 
 //****
 // WA Wanderer
@@ -802,22 +801,22 @@
 2416,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_REVERBERATION_MAGIC#Reverberation Magic# 
 2417,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DOMINION_IMPULSE#Dominion Impulse#
 2418,0,0,80:90:100:110:120,0,0,0,11,1,20,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SEVERE_RAINSTORM#Severe Rainstorm#
-2419,0,0,12:16:20:24:28,0,0,0,99,0,0,none,0,0,11513,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_POEMOFNETHERWORLD#Poem of Netherworld#
+2419,0,0,12:16:20:24:28,0,0,0,13:14,0,0,none,0,0,11513,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_POEMOFNETHERWORLD#Poem of Netherworld#
 2420,0,0,48:56:64:72:80,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_VOICEOFSIREN#Voice of Siren#
-2421,0,0,50:53:56:59:62,0,0,0,99,0,0,none,0,0,6144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DEADHILLHERE#Valley of Death#
+2421,0,0,50:53:56:59:62,0,0,0,13:14,0,0,none,0,0,6144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DEADHILLHERE#Valley of Death#
 2422,0,0,80:90:100:110:120,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_LULLABY_DEEPSLEEP#Deep Sleep Lullaby#
 2423,0,0,42:46:50:54:58,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SIRCLEOFNATURE#Circle of Nature's Sound#
 2424,0,0,40:45:50:55:60,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_RANDOMIZESPELL#Improvised Song#
-2425,0,0,60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MW_GLOOMYDAY#Gloomy Day#
+2425,0,0,60:75:90:105:120,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MW_GLOOMYDAY#Gloomy Day#
 2426,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,11513,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_GREAT_ECHO#Great Echo# - Missing 1 Lozange. Need item ID.
-2427,0,0,120:140:160:180:200,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SONG_OF_MANA#Song of Mana#
-2428,0,0,120:140:160:180:200,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DANCE_WITH_WUG#Dance With Warg#
-2429,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SOUND_OF_DESTRUCTION#Sound of Destruction#
-2430,0,0,150:160:170:180:190,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SATURDAY_NIGHT_FEVER#Saturday Night Fever#
-2431,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_LERADS_DEW#Lerad's Dew#
-2432,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_MELODYOFSINK#Melody of Sink#
-2433,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_WARCRY_OF_BEYOND#Warcry of Beyond#
-2434,0,0,120:130:140:150:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_UNLIMITED_HUMMING_VOICE#Unlimited Humming Voice#
+2427,0,0,120:140:160:180:200,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SONG_OF_MANA#Song of Mana#
+2428,0,0,120:140:160:180:200,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_DANCE_WITH_WUG#Dance With Warg#
+2429,0,0,50:60:70:80:90,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SOUND_OF_DESTRUCTION#Sound of Destruction#
+2430,0,0,150:160:170:180:190,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_SATURDAY_NIGHT_FEVER#Saturday Night Fever#
+2431,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_LERADS_DEW#Lerad's Dew#
+2432,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_MELODYOFSINK#Melody of Sink#
+2433,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_WARCRY_OF_BEYOND#Warcry of Beyond#
+2434,0,0,120:130:140:150:160,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WM_UNLIMITED_HUMMING_VOICE#Unlimited Humming Voice#
 
 //****
 // SO Sorcerer

+ 14 - 13
db/re/skill_unit_db.txt

@@ -103,12 +103,13 @@
 
 //706,0xfd,    ,  0, 0,1000,all, 0x000	//NPC_VENOMFOG
 
-2044,0xca,    ,  0, 2,1000,all,   0x018	//AB_EPICLESIS
+2044,0xca,    ,  0, 2,3000,all,   0x018	//AB_EPICLESIS
 
 2032,0xe1,    ,  2, 0,1000,enemy, 0x018	//GC_POISONSMOKE
 
+2213,0x86,    ,  0, 9,1000,enemy, 0x018	//WL_COMET
 2214,0x86,    ,  0, 5, 100,enemy, 0x080	//WL_CHAINLIGHTNING
-2216,0xcb,    , -1, 0, 150,enemy, 0x018	//WL_EARTHSTRAIN
+2216,0xcb,    , -1, 2,2000,enemy, 0x018	//WL_EARTHSTRAIN
 
 2238,0xd8,    ,  0, 1,1000,enemy, 0x006	//RA_ELECTRICSHOCKER
 2239,0xd9,    ,  0, 1,1000,enemy, 0x006	//RA_CLUSTERBOMB
@@ -124,15 +125,15 @@
 
 2299,0xcc,    ,  0, 1,1000,all,   0x006	//SC_MANHOLE
 2300,0xcd,    ,  0, 1,1000,all,   0x006	//SC_DIMENSIONDOOR
-2301,0xce,    ,  2, 0,  -1,all,   0x200E	//SC_CHAOSPANIC
-2302,0xcf,    ,  0, 2,  -1,enemy,   0x002	//SC_MAELSTROM
-2303,0xd0,    ,  3, 0,  -1,all,   0x2018	//SC_BLOODYLUST
-2304,0xd1,    ,  0, 2,  -1,enemy, 0x000	//SC_FEINTBOMB
+2301,0xce,    ,  0, 2,  -1,all,   0x200E	//SC_CHAOSPANIC
+2302,0xcf,    ,  0, 2,  -1,enemy, 0x002	//SC_MAELSTROM
+2303,0xd0,    ,  0, 2,  -1,all,   0x2018	//SC_BLOODYLUST
+2304,0xd1,    ,  0, 2,1000,enemy, 0x018	//SC_FEINTBOMB
 
 2317,0x86,    , -1, 0,	-1,enemy, 0x010	//LG_OVERBRAND
 2319,0xec,    ,  0, 3,5000,all,   0x000	//LG_BANDING
 
-2414,0xda,    ,  0, 0,1000,enemy, 0x008	//WM_REVERBERATION
+2414,0xda,    ,  0, 1,1000,enemy, 0x008	//WM_REVERBERATION
 2418,0xdb,    ,  0, 5, 300,enemy, 0x800	//WM_SEVERE_RAINSTORM
 2419,0xde,    ,  0, 1,1000,all,	  0x014  //WM_POEMOFNETHERWORLD
 
@@ -141,20 +142,20 @@
 2446,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_EARTHGRAVE
 2447,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_DIAMONDDUST
 2449,0xdf,    ,  0, 3:3:4:4:5,500,enemy,  0x018	//SO_PSYCHIC_WAVE
-2450,0xe0,    ,  0, 3, 500,enemy, 0x010	//SO_CLOUD_KILL
+2450,0xe0,    ,  3, 0, 500,enemy, 0x010	//SO_CLOUD_KILL
 2452,0xe4,    ,  0, 3,3000,all,   0x010	//SO_WARMER
-2453,0xeb,    ,  0, 1:1:2:2:3,1000,enemy,0x010	//SO_VACUUM_EXTREME
+2453,0xeb,    ,  0, 1:1:2:2:3,500,enemy,0x010	//SO_VACUUM_EXTREME
 2465,0xf1,    ,  0, 1,1000,all,   0x010	//SO_FIRE_INSIGNIA
 2466,0xf2,    ,  0, 1,1000,all,   0x010	//SO_WATER_INSIGNIA
 2467,0xf3,    ,  0, 1,1000,all,   0x010	//SO_WIND_INSIGNIA
 2468,0xf4,    ,  0, 1,1000,all,   0x010	//SO_EARTH_INSIGNIA
 
 2479,0xe5,    ,  0, 1,1000,enemy, 0x006	//GN_THORNS_TRAP
-2482,0xe6,0x7f, -1, 1,  -1,all,   0x000	//GN_WALLOFTHORN
+2482,0xe6,0x7f, -1, 1, 100,all,   0x000	//GN_WALLOFTHORN
 2484,0x86,    ,  0, 1, 100,enemy, 0x080	//GN_CRAZYWEED_ATK
-2485,0xe7,    ,  0, 3,1000,enemy, 0x098	//GN_DEMONIC_FIRE
-2487,0xe8,    ,  0, 3,1000,enemy, 0x000	//GN_FIRE_EXPANSION_SMOKE_POWDER
-2488,0xe9,    ,  0, 3,1000,enemy, 0x000	//GN_FIRE_EXPANSION_TEAR_GAS
+2485,0xe7,    ,  0, 2,2000,enemy, 0x098	//GN_DEMONIC_FIRE
+2487,0xe8,    ,  0, 2, 500,enemy, 0x000	//GN_FIRE_EXPANSION_SMOKE_POWDER
+2488,0xe9,    ,  0, 2, 500,enemy, 0x000	//GN_FIRE_EXPANSION_TEAR_GAS
 2490,0xea,    ,  0, 1,1000,enemy, 0x002	//GN_HELLS_PLANT
 
 2555,0x104,   ,  0, 1:2:2:3:3,500,enemy,0x006	//RL_B_TRAP

+ 379 - 399
doc/item_bonus.txt

@@ -3,418 +3,398 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20130711
+//= 20140110
 //===== Description: =========================================
-//= List of script instructions used in item bonuses,
-//= mainly bonus/bonus2/bonus3/bonus4/bonus5 arguments.
+//= List of script instructions used in item bonuses.
 //============================================================
 
-skill i,n;				Gives skill #i at level n (supports skill names)
+Constants
+---------
+This list contains all available constants referenced in the 'bonus' commands.
 
-bonus bStr,n;				STR + n
-bonus bAgi,n;				AGI + n
-bonus bVit,n;				VIT + n
-bonus bInt,n;				INT + n
-bonus bDex,n;				DEX + n
-bonus bLuk,n;				LUK + n
-bonus bAllStats,n;			STR + n, AGI + n, VIT + n, INT + n, DEX + n, LUK + n
-bonus bAgiVit,n;			AGI + n, VIT + n
+* Status effect (eff)
+	Eff_Stone, Eff_Freeze, Eff_Stun, Eff_Sleep, Eff_Poison, Eff_Curse, Eff_Silence,
+	Eff_Confusion, Eff_Blind, Eff_Bleeding, Eff_DPoison, Eff_Fear, Eff_Burning
+
+* Element (e)
+	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, 
+	Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
+
+* Race (r)
+	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish,
+	RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_Player, RC_All
+
+* Class (c)
+	Class_Normal, Class_Boss, Class_Guardian, Class_All
+
+* Size (s)
+	Size_Small, Size_Medium, Size_Large, Size_All
+
+* Trigger criteria (bf)
+	BF_SHORT: Trigger on melee attacks
+	BF_LONG: Trigger on ranged attacks
+	(Default: BF_SHORT+BF_LONG)
+   
+	BF_WEAPON: Trigger on weapon skills 
+	BF_MAGIC: Trigger on magic skills 
+	BF_MISC: Trigger on misc skills
+	(Default: BF_WEAPON)
+   
+	BF_NORMAL: Trigger on normal attacks
+	BF_SKILL: Trigger on skills
+	(Default: BF_SKILL if type is BF_MISC or BF_MAGIC, BF_NORMAL if type is BF_WEAPON)
+
+* Other values:
+	Skill (sk): see 'db/(pre-)re/skill_db.txt' (NOTE: Both skill IDs and names, in quotes, are supported.)
+	Monster race (mr): see 'db/(pre-)re/mob_race2_db.txt'
+	Monster id (mid): see 'db/(pre-)re/mob_db.txt'
+	Item id (iid): see 'db/(pre-)re/item_db.txt'
+	Item group (ig): see 'db/(pre-)re/item_group_db.txt' and the constants in 'db/const.txt', prefixed with IG_*
+	Weapon type (w): see 'doc/item_db.txt' -> View -> Weapons
+
+
+Bonuses
+-------
+The format of bonuses listed in this file is as follows:
+	1. Basic Bonuses
+	2. Extended Bonuses
+	3. Group-specific Bonuses
+	4. Status-related Bonuses
+	5. AutoSpell Bonuses
+	6. Misc Bonuses
+
+====================
+| 1. Basic Bonuses |
+====================
+
+Base stats
+----------
+bonus bStr,n;      			STR + n
+bonus bAgi,n;      			AGI + n
+bonus bVit,n;      			VIT + n
+bonus bInt,n;      			INT + n
+bonus bDex,n;      			DEX + n
+bonus bLuk,n;      			LUK + n
+bonus bAllStats,n; 			STR + n, AGI + n, VIT + n, INT + n, DEX + n, LUK + n
+bonus bAgiVit,n;   			AGI + n, VIT + n
 bonus bAgiDexStr,n;			STR + n, AGI + n, DEX + n
-bonus bMaxHP,n;				MaxHP + n
-bonus bMaxSP,n;				MaxSP + n
+
+HP/SP
+-----
+bonus bMaxHP,n;    			MaxHP + n
 bonus bMaxHPrate,n;			MaxHP + n% 
+bonus bMaxSP,n;    			MaxSP + n
 bonus bMaxSPrate,n;			MaxSP + n%
-bonus bAtk,n;				ATK + n
-bonus bAtk2,n;				ATK2 + n
-bonus bAtkRate,n;			Attack power + n%
-bonus bBaseAtk,n;			Basic attack power + n
-bonus bMatk,n;				Magical attack power + n
-bonus bMatkRate,n;			Magical attack power + n%
-bonus bDef,n;				Equipment DEF + n
-bonus bDef2,n;				VIT based DEF + n
-bonus bDefRate,n;			Equipment DEF + n%
-bonus bDef2Rate,n;			VIT based DEF + n%
-bonus bMdef,n;				Equipment MDEF + n
-bonus bMdef2,n;				INT based MDEF + n
-bonus bMdefRate,n;			Equipment MDEF + n%
+
+Atk/Def
+-------
+bonus bBaseAtk,n;  			Basic attack power + n
+bonus bAtk,n;      			ATK + n (unofficial)
+bonus bAtk2,n;     			ATK2 + n
+bonus bAtkRate,n;  			Attack power + n%
+bonus bMatk,n;     			Magical attack power + n
+bonus bMatkRate,n; 			Magical attack power + n%
+bonus bDef,n;      			Equipment DEF + n
+bonus bDefRate,n;  			Equipment DEF + n%
+bonus bDef2,n;     			VIT based DEF + n
+bonus bDef2Rate,n; 			VIT based DEF + n%
+bonus bMdef,n;     			Equipment MDEF + n
+bonus bMdefRate,n; 			Equipment MDEF + n%
+bonus bMdef2,n;    			INT based MDEF + n
 bonus bMdef2Rate,n;			INT based MDEF + n%
-bonus bHit,n;				Hit + n
-bonus bHitRate,n;			Hit + n%
-bonus bCritical,n;			Critical + n
+
+Additional stats
+----------------
+bonus bHit,n;         			Hit + n
+bonus bHitRate,n;     			Hit + n%
+bonus bCritical,n;    			Critical + n
+bonus2 bCriticalAddRace,r,n;		Critical + n against enemies of race r
 bonus bCriticalRate,n;			Critical + n%
-bonus bFlee,n;				Flee + n
-bonus bFleeRate,n;			Flee + n%
-bonus bFlee2,n;				Perfect Dodge + n
-bonus bFlee2Rate,n;			Perfect Dodge + n%
-bonus bSpeedRate,n;			Moving speed + n% (only the highest among all is applied)
-bonus bSpeedAddRate,n;			Moving speed + n%
-bonus bAspd,n;				Attack speed + n
-bonus bAspdRate,n;			Attack speed + n%
-bonus bAtkRange,n;			Attack range + n
-bonus bCastrate,n;			Skill casting time rate + n%
-bonus bUseSPrate,n;			SP consumption + n%
-bonus bHPrecovRate,n;			Natural HP recovery ratio + n%
-bonus bSPrecovRate,n;			Natural SP recovery ratio + n%
-bonus bDoubleRate,n;			Double Attack probability n% (works with all weapons | only the highest among all is applied)
-bonus bDoubleAddRate,n;			Double Attack probability + n% (works with all weapons)
+bonus bFlee,n;        			Flee + n
+bonus bFleeRate,n;    			Flee + n%
+bonus bFlee2,n;       			Perfect Dodge + n
+bonus bFlee2Rate,n;   			Perfect Dodge + n%
 bonus bPerfectHitRate,n;		On-target impact attack probability n% (only the highest among all is applied)
 bonus bPerfectHitAddRate,n;		On-target impact attack probability + n%
-bonus bCriticalDef,n;			Critical ? and others the trap it is, probability + n%
-bonus bNearAtkDef,n;			Adds n% damage reduction against melee physical attacks
-bonus bLongAtkDef,n;			Adds n% damage reduction against ranged physical attacks
+bonus bSpeedRate,n;   			Movement speed + n% (only the highest among all is applied)
+bonus bSpeedAddRate,n;			Movement speed + n%
+bonus bAspd,n;        			Attack speed + n
+bonus bAspdRate,n;    			Attack speed + n%
+bonus bAtkRange,n;    			Attack range + n
+
+=======================
+| 2. Extended Bonuses |
+=======================
+
+HP/SP
+-----
+bonus bHPrecovRate,n;   		Natural HP recovery ratio + n%
+bonus bSPrecovRate,n;   		Natural SP recovery ratio + n%
+bonus2 bHPRegenRate,n,t;		Gain n HP every t milliseconds
+bonus2 bHPLossRate,n,t; 		Lose n HP every t milliseconds
+bonus2 bSPRegenRate,n,t;		Gain n SP every t milliseconds
+bonus2 bSPLossRate,n,t; 		Lose n SP every t milliseconds
+bonus bNoRegen,x;       		Stops HP or SP regeneration (x: 1=HP, 2=SP)
+
+bonus bUseSPrate,n;         		SP consumption + n%
+bonus2 bSkillUseSP,sk,n;    		Reduces SP consumption of skill sk by n
+bonus2 bSkillUseSPrate,sk,n;		Reduces SP consumption of skill sk by n%
+
+Atk/Def
+-------
+bonus2 bSkillAtk,sk,n;    		Increases damage of skill sk by n%
+bonus bLongAtkRate,n;     		Increases damage of ranged attacks by n%
+bonus bCritAtkRate,n;     		Increases critical damage by +n%
+bonus bCriticalDef,n;     		Decreases the chance of being hit by critical hits by n%
+bonus2 bWeaponAtk,w,n;    		Adds n ATK when weapon of type w is equipped
+bonus2 bWeaponAtkRate,w,n;		Adds n% damage to normal attacks when weapon of type w is equipped
+
+bonus bNearAtkDef,n; 			Adds n% damage reduction against melee physical attacks
+bonus bLongAtkDef,n; 			Adds n% damage reduction against ranged physical attacks
 bonus bMagicAtkDef,n;			Adds n% damage reduction against magical attacks
-bonus bMiscAtkDef,n;			Adds n% damage reduction against MISC attacks (traps, falcon, ...)
-bonus bIgnoreDefRace,n;			Disregard DEF against enemies of race n
-					n: 	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-bonus bIgnoreDefEle,n;			Disregard DEF against enemies of element n
-					n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus bIgnoreMDefRace,n;		Disregard MDEF against enemies of race n
-					n: 	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All 
-bonus bIgnoreMDefEle,n;			Disregard MDEF against enemies of element n
-					n:	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus bIgnoreMdefRate,n;		Disregard n% of the target's MDEF
-bonus bDefRatioAtkRace,n;		Does more damage depending on monster Defense against race n (defense disregard)
-					n: 	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-bonus bDefRatioAtkEle,n;		n attribute if defensive power is high the high extent big damage is given, (defense disregard)
-					n:	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus bAtkEle,n;			Gives the player's attacks element n
-					n:	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus bDefEle,n;			Gives the player's defense element n
-					n:	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus bSplashRange,n;			Splash attack radius + n (e.g. n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc)
-					Only the highest among all is applied
-bonus bSplashAddRange,n;		Splash attack radius + n (e.g. n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc)
-bonus bRestartFullRecover,n;		When reviving, HP and SP are fully healed (n is meaningless)
-bonus bNoCastCancel,n;			Prevents casting from being interrupted when hit (does not work in GvG | n is meaningless)
+bonus bMiscAtkDef,n; 			Adds n% damage reduction against MISC attacks (traps, falcon, ...)
+
+bonus bNoWeaponDamage,n;		Adds n% reduction to received physical damage
+bonus bNoMagicDamage,n; 		Adds n% reduction to received magical effect (attack, healing, support spells are all blocked)
+bonus bNoMiscDamage,n;  		Adds n% reduction to received misc damage
+
+Healing
+-------
+bonus bHealPower,n;      		Increases heal amount of all heal skills by n%
+bonus bHealPower2,n;     		Increases heal amount if you are healed by any skills by n%
+bonus2 bSkillHeal,sk,n;  		Increases heal amount of skill sk by n%
+bonus2 bSkillHeal2,sk,n; 		Increases heal amount if you are healed by skill sk by n%
+bonus bAddItemHealRate,n;		Increases HP recovered by n% for healing items
+bonus2 bAddItemHealRate,iid/ig,n;	Increases HP recovered by n% for items of either id iid or item group ig
+
+Cast time/delay
+---------------
+bonus bCastrate,n;             		Skill cast time rate + n%
+bonus2 bCastrate,sk,n;         		Adjust casting time of skill sk by n%
+bonus bFixedCastrate,n;        		Increases fixed cast time of all skills by n%
+bonus2 bFixedCastrate,sk,n;    		Increases fixed cast time of skill sk by n%
+bonus bVariableCastrate,n;     		Increases variable cast time of all skills by n%
+bonus2 bVariableCastrate,sk,n; 		Increases variable cast time of skill sk by n%
+bonus bFixedCast,t;            		Increases fixed cast time of all skills by t milliseconds
+bonus2 bSkillFixedCast,sk,t;   		Increases fixed cast time of skill sk by t milliseconds
+bonus bVariableCast,t;         		Increases variable cast time of all skills by t milliseconds
+bonus2 bSkillVariableCast,sk,t;		Increases variable cast time of skill sk by t milliseconds
+
+bonus bNoCastCancel,n; 			Prevents casting from being interrupted when hit (does not work in GvG | n is meaningless)
 bonus bNoCastCancel2,n;			Prevents casting from being interrupted when hit (works even in GvG | n is meaningless)
-bonus bNoSizeFix,n;			The attack revision with the size of the monster is not received (n is meaningless)
-bonus bNoWeaponDamage,n;		Prevents from receiving n% physical damage
-bonus bNoMagicDamage,n;			Prevents from receiving n% magical effect (Attack, Healing, Support spells are all blocked)
-bonus bNoGemStone,n;			Skills requiring Gemstones do no require them (Hocus Pocus will still require 1 Yellow Gemstone | n is meaningless)
-bonus bIntravision,n;			Always see Hiding and Cloaking players/mobs (n is meaningless)
-bonus bHealPower,n;			Increase heal amount of all heal skills by n%
-bonus bHealPower2,n;			Increase heal amount if you are healed by any skills by n%
-bonus2 bAddEff,e,x;			Adds a x/100 chance to cause effect e to the target when attacking (e.g. x=100 makes 1% chance, x=10000 makes 100% chance, etc)
-					e:	Eff_Blind, Eff_Sleep, Eff_Poison, Eff_Freeze, Eff_Silence,
-						Eff_Stun, Eff_Curse, Eff_Confusion, Eff_Stone, Eff_Bleeding,
-						Eff_DPoison, Eff_Fear, Eff_Burning
-bonus2 bResEff,e,x;			Adds a x/100 tolerance to effect e (e.g. x=100 makes 1% tolerance, x=10000 makes 100% tolerance, etc)
-					e:	Eff_Blind, Eff_Sleep, Eff_Poison, Eff_Freeze, Eff_Silence,
-						Eff_Stun, Eff_Curse, Eff_Confusion, Eff_Stone, Eff_Bleeding,
-						Eff_DPoison, Eff_Fear, Eff_Burning
-bonus2 bCastrate,n,x;			Adjust casting time of skill n by x% (supports skill names)
-bonus2 bAddSize,n,x;			+x% physical damage against size n.
-					n:	Size_Small, Size_Medium, Size_Large, Size_All
-bonus2 bMagicAddSize,n,x;		+x% magical damage against size n.
-					n:	Size_Small, Size_Medium, Size_Large, Size_All
-bonus2 bSubSize,n,x;			x% Damage reduction against size n.
-					n:	Size_Small, Size_Medium, Size_Large, Size_All
-bonus2 bAddRace,n,x;			+x% physical damage against race n
-					n: 	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-bonus2 bMagicAddRace,n,x;		+x% magical damage against race n
-					n: 	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-bonus2 bSubRace,n,x;			+x% damage reduction against race n
-					n: 	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-bonus2 bAddEle,n,x;			+x% physical damage against element n
-					n: 	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus2 bMagicAddEle,n,x; 		+x% magical damage against element n
-					n: 	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus2 bSubEle,n,x;			x% Damage reduction against element n.
-					n: 	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus2 bMagicAtkEle,n,x; 		Increases damage of n element magic by x%.
-					n: 	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus2 bAddDamageClass,n,x;		+x% extra physical damage against monsters of class n
-					Against players, n is their job id
-bonus2 bAddMagicDamageClass,n,x;	+x% extra magical damage against monsters of class n
-					Against players, n is their job id.
-bonus2 bAddDefMonster,n,x;		x% physical damage reduction against monsters of class n
-					Against players, n is their job id.
-bonus2 bAddMDefMonster,n,x;		x% magical damage reduction against monsters of class n
-					Against players, n is their job id.
-bonus2 bIgnoreMdefRaceRate,n,x;		Disregard x% of the target's MDEF if the target belongs to race n
-bonus2 bHPDrainRate,n,x;		n/10 % probability to drain x% HP when attacking
-bonus2 bSPDrainRate,n,x;		n/10 % probability to drain x% SP when attacking
-bonus2 bSPVanishRate,n,x;		Add the (n/10)% chance of decreasing enemy's SP (player) amount by x% when attacking
-bonus2 bHPVanishRate,n,x;		Add the (n/10)% chance of decreasing enemy's HP (player) amount by x% when attacking
-bonus2 bAddMonsterDropItem,n,x;		Adds a x/100% chance for item n to be dropped, when killing any monster.
-					If 'x' is negative value, then it's a part of formula
-						chance = -x*(killed_mob_level/10)+1
-bonus2 bGetZenyNum,n,x;			When killing a monster, there is a x% chance of gaining 1~n zeny (only the highest among all is applied).
-					If n < 0, the max zeny to gain is -n*monster level.
-bonus2 bAddGetZenyNum,n,x;		Same as bGetZenyNum, but the rates and zeny to gain stack.
-
-bonus3 bAddMonsterDropItem,n,x,y;	Adds a y/100% chance for item n to be dropped, when killing any monster of race x.
-						RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-					If 'y' is negative value, then it's a part of formula
-						chance = -y*(killed_mob_level/10)+1
-bonus3 bAutoSpell,n,x,y;		Auto Spell casting on attack of spell n at level x with y/10% chance. (supports skill names)
-					Skill is casted on target unless it is a self or support (inf = 4/16) skill.
-
-// bAddDamageClass, bAddMagicDamageClass and bAddMonsterDropItem it is setting possible up to 10. Those which exceed 10 are ignored.
-// those which can be used with the arrow are only bCritical, bAtkEle, bHit, bAddEle, bAddRace, bAddSize and bAddEff. The other things are ignored.
-
-
-
-//---- 2/15 new card effects ----
-
-bonus bCritAtkRate,n;			Increase critical damage by +n%
-bonus bNoRegen,n;			Stops regeneration for n
-					n:	1=HP, 2=SP
+
+bonus bDelayrate,n;        		Increases skill delay by n%
+bonus2 bSkillCooldown,sk,t;		Increases cooldown of skill sk by t milliseconds
+
+=============================
+| 3. Group-specific Bonuses |
+=============================
+
+Damage modifiers
+----------------
+bonus2 bAddEle,e,x;       		+x% physical damage against element e
+bonus3 bAddEle,e,x,bf;    		+x% physical damage against element e with trigger criteria bf
+bonus2 bMagicAddEle,e,x;  		+x% magical damage against element e
+bonus2 bSubEle,e,x;       		+x% damage reduction against element e
+bonus3 bSubEle,e,x,bf;    		+x% damage reduction against element e with trigger criteria bf
+
+bonus2 bAddRace,r,x;      		+x% physical damage against race r
+bonus2 bMagicAddRace,r,x; 		+x% magical damage against race r
+bonus2 bSubRace,r,x;      		+x% damage reduction against race r
+
+bonus2 bAddClass,c,x;     		+x% physical damage against class c
+bonus2 bMagicAddClass,c,x;		+x% magical damage against class c
+bonus2 bSubClass,c,x;     		+x% damage reduction against class c
+
+bonus2 bAddSize,s,x;      		+x% physical damage against size s
+bonus2 bMagicAddSize,s,x; 		+x% magical damage against size s
+bonus2 bSubSize,s,x;      		+x% damage reduction against size s
+bonus bNoSizeFix,n;       		Ignores the size modifier when calculating damage (n is meaningless)
+
+bonus2 bAddDamageClass,mid,x;     	+x% physical damage against monster mid
+bonus2 bAddMagicDamageClass,mid,x;	+x% magical damage against monster mid
+                                  	NOTE: Against players, mid is the player's job id.
+									LIMIT: Only 10 of these bonuses can be set. Those which exceed 10 are ignored.
+
+bonus2 bAddDefMonster,mid,x;      	+x% physical damage reduction against monster mid
+bonus2 bAddMDefMonster,mid,x;     	+x% magical damage reduction against monster mid
+                                  	NOTE: Against players, mid is the player's job id.
+
+bonus2 bAddRace2,mr,x;			+x% damage against monster race mr
+bonus2 bSubRace2,mr,x;			+x% damage reduction against monster race mr
+
+Atk/Def
+-------
+bonus bAtkEle,e;          		Gives the player's attacks element e
+bonus bDefEle,e;          		Gives the player's defense element e
+
+bonus2 bMagicAtkEle,e,x;  		Increases damage of e element magic by x%
+
+bonus bDefRatioAtkRace,r; 		Deals more damage to enemies of race r with higher defense
+bonus bDefRatioAtkEle,e;  		Deals more damage to enemies of element e with higher defense
+bonus bDefRatioAtkClass,c;		Deals more damage to enemies of class c with higher defense
+
+bonus4 bSetDefRace,r,n,t,y; 		Set DEF to y of an enemy of race r at n% for t milliseconds with normal attack
+bonus4 bSetMDefRace,r,n,t,y;		Set MDEF to y of an enemy of race r at n% for t milliseconds with normal attack
+
+Ignore Def
+----------
+bonus bIgnoreDefEle,e;  		Disregard DEF against enemies of element e
+bonus bIgnoreDefRace,r; 		Disregard DEF against enemies of race r
+bonus2 bIgnoreDefRaceRate,r,n;  	Disregard n% of the target's DEF if the target belongs to race r
+bonus bIgnoreDefClass,c;		Disregard DEF against enemies of class c
+bonus bIgnoreMdefRate,n;		Disregard n% of the target's MDEF
+bonus bIgnoreMDefRace,r;		Disregard MDEF against enemies of race r
+bonus2 bIgnoreMdefRaceRate,r,n; 	Disregard n% of the target's MDEF if the target belongs to race r
+bonus bIgnoreMDefEle,e; 		Disregard MDEF against enemies of element e
+bonus2 bIgnoreMdefClassRate,c,n;	Disregard n% of the target's MDEF if the target belongs to class c
+
+Experience
+----------
+bonus2 bExpAddRace,r,x; 		Increase exp gained by x% against enemies of race r
+bonus2 bExpAddClass,c,x;		Increase exp gained by x% against enemies of class c
+
+=============================
+| 4. Status-related Bonuses |
+=============================
+
+bonus2 bAddEff,eff,n;       		Adds a n/100% chance to cause status eff on the target when attacking
+bonus2 bAddEff2,eff,n;      		Adds a n/100% chance to cause status eff on self when attacking
+bonus2 bAddEffWhenHit,eff,n;		Adds a n/100% chance to cause status eff on the enemy when being hit by physical damage
+bonus2 bResEff,eff,n;       		Adds a n/100% tolerance to status eff
+
+bonus3 bAddEff,eff,n,y;       		Adds a n/100% chance to cause status eff on the target when attacking
+bonus3 bAddEffWhenHit,eff,n,y;		Adds a n/100% chance to cause status eff on the enemy when being hit by physical damage
+                              		y is the trigger criteria:
+                              		  ATF_SELF   = trigger effect on self
+                              		  ATF_TARGET = trigger effect on target (default)
+                              		  ATF_SHORT  = trigger on melee attacks
+                              		  ATF_LONG   = trigger on ranged attacks (default: trigger on all attacks)
+
+bonus3 bAddEffOnSkill,sk,eff,n;   	Adds a n/100% chance to cause status eff on enemy when using skill sk
+bonus4 bAddEffOnSkill,sk,eff,n,y;	Adds a n/100% chance to cause status eff when using skill sk
+                                 	y is the trigger criteria:
+                                 	  ATF_SELF   = trigger effect on self
+                                 	  ATF_TARGET = trigger effect on target
+
+bonus2 bWeaponComaEle,e,n;  		Adds a n/100% chance to cause Coma when attacking a target of element e with a normal attack
+bonus2 bWeaponComaClass,c,n;		Adds a n/100% chance to cause Coma when attacking a target of class c with a normal attack
+bonus2 bWeaponComaRace,r,n; 		Adds a n/100% chance to cause Coma when attacking a target of race r with a normal attack
+
+========================
+| 5. AutoSpell Bonuses |
+========================
+NOTES:
+  - For all AutoSpell bonuses, target must be within the spell's range to go off.
+  - By default, AutoSpell skills are casted on target unless it is a self or support skill (inf = 4/16).
+
+bonus3 bAutoSpell,sk,y,n;       	Adds a n/10% chance to cast skill sk of level y when attacking
+bonus3 bAutoSpellWhenHit,sk,y,n;	Adds a n/10% chance to cast skill sk of level y when being hit by a direct attack
+
+bonus4 bAutoSpell,sk,y,n,i;          	Adds a n/10% chance to cast skill sk of level y when attacking
+bonus5 bAutoSpell,sk,y,n,bf,i;       	Adds a n/10% chance to cast skill sk of level y when attacking with trigger criteria bf
+bonus4 bAutoSpellWhenHit,sk,y,n,i;   	Adds a n/10% chance to cast skill sk of level y when being hit by a direct attack
+bonus5 bAutoSpellWhenHit,sk,y,n,bf,i;	Adds a n/10% chance to cast skill sk of level y when being hit by a direct attack with trigger criteria bf
+                                        i provides additional options (bitfield):
+                                          &0 = cast on self
+                                          &1 = cast on enemy
+                                          &2 = use random skill level in [1..y]
+                                          &3 = 1+2 (random level on enemy)
+
+bonus4 bAutoSpellOnSkill,sk,x,y,n;  	Adds a n/10% chance to autospell skill x at level y when using skill sk
+bonus5 bAutoSpellOnSkill,sk,x,y,n,i;	Adds a n/10% chance to autospell skill x at level y when using skill sk
+                                    	i provides additional options (bitfield):
+                                    	  &1 = forces the skill to be casted on self, rather than on the target of skill sk
+                                    	  &2 = random skill level in [1..y] is chosen
+
+===================
+| 6. Misc Bonuses |
+===================
+
+HP/SP drain
+-----------
+bonus bHPDrainValue,n;        		Heals +n HP with a normal attack
+bonus2 bHPDrainValue,n,x;     		Heals +n HP with a normal attack (x: 0=gain n SP, 1=drain n SP from target)
+bonus2 bHPDrainValueRace,r,n; 		Heals +n HP when attacking a monster of race r with normal attack
+bonus2 bHpDrainValueClass,c,n;		Heals +n HP when attacking a monster of class c with normal attack
+bonus bSPDrainValue,n;        		Heals +n SP with a normal attack
+bonus2 bSPDrainValue,n,x;     		Heals +n SP with a normal attack (x: 0=gain n SP, 1=drain n SP from target)
+bonus2 bSPDrainValueRace,r,n; 		Heals +n SP when attacking a monster of race r with normal attack
+bonus2 bSpDrainValueClass,c,n;		Heals +n SP when attacking a monster of class c with normal attack
+
+bonus2 bHPDrainRate,n,x;		Adds a n/10% chance to drain x% HP when attacking
+bonus2 bSPDrainRate,n,x;		Adds a n/10% chance to drain x% SP when attacking
+bonus3 bSPDrainRate,n,x,y;		Adds a n/10% chance to either gain SP equivalent to x% of damage dealt, OR drain the amount of SP from the enemy
+                          		(y: 0=gain SP, 1=drain SP from target)
+
+bonus2 bHPVanishRate,n,x;		Add a n/10% chance of decreasing enemy's HP (player) amount by x% when attacking
+bonus2 bSPVanishRate,n,x;		Add a n/10% chance of decreasing enemy's SP (player) amount by x% when attacking
+
+bonus2 bHPGainRaceAttack,r,n;		Heals +n HP on every hit when attacking an enemy of race r
+bonus2 bSPGainRaceAttack,r,n;		Heals +n SP on every hit when attacking an enemy of race r
+
+bonus bHPGainValue,n;     		Heals +n HP when killing an enemy with a physical attack
+bonus bSPGainValue,n;     		Heals +n SP when killing an enemy with a physical attack
+bonus2 bSPGainRace,r,n;   		Heals +n SP when killing an enemy of race r with a physical attack
+bonus bMagicHPGainValue,n;		Heals +n HP when killing an enemy with a magical attack
+bonus bMagicSPGainValue,n;		Heals +n SP when killing an enemy with a magical attack
+
+Damage return
+-------------
+bonus bShortWeaponDamageReturn,n;	Reflects n% of received melee damage back to the enemy that caused it
+bonus bLongWeaponDamageReturn,n; 	Reflects n% of received ranged damage back to the enemy that caused it
+bonus bMagicDamageReturn,n;      	Adds a n% chance to reflect targetted magic spells back to the enemy that caused it
+
+Strip/Break equipment
+---------------------
 bonus bUnstripableWeapon,n;		Weapon cannot be taken off via Strip skills (n is meaningless)
-bonus bUnstripableArmor,n;		Armor cannot be taken off via Strip skills (n is meaningless)
-bonus bUnstripableHelm,n;		Helm cannot be taken off via Strip skills (n is meaningless)
+bonus bUnstripableArmor,n; 		Armor cannot be taken off via Strip skills (n is meaningless)
+bonus bUnstripableHelm,n;  		Helm cannot be taken off via Strip skills (n is meaningless)
 bonus bUnstripableShield,n;		Shield cannot be taken off via Strip skills (n is meaningless)
-bonus bSPGainValue,n;			When killing a monster by physical attack, you gain n SP
-bonus bHPGainValue,n;			When killing a monster by physical attack, you gain n HP
-bonus2 bCriticalAddRace,r,n;		Critical + n vs. enemies of race r
-					r:
-						RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-bonus2 bHPRegenRate,n,x;		Gain n HP every x milliseconds
-bonus2 bHPLossRate,n,x;			Lose n HP every x milliseconds
-bonus2 bAddEffWhenHit,n,x;		x/100% chance to cause n state to the enemy when being hit by physical damage
-bonus2 bSkillAtk,n,x;			Increase damage of skill n by x% (supports skill names)
-bonus2 bSkillHeal,n,x;			Increase heal amount of skill n by x% (supports skill names)
-bonus2 bSkillHeal2,n,x;			Increase heal amount if you are healed by skill n by x% (supports skill names)
-bonus2 bAddRace2,n,x;			Increase damage by x% vs. enemies of race n (Check db/mob_race2_db.txt)
-					y:	0=Don't show damage 1=Show damage
-bonus3 bAutoSpellWhenHit,x,y,n;		n/10% chance to cast skill x of level y on attacker (unless it is a self or support skill) when being hit by a
-					direct attack. (supports skill names)
-					Target must be within spell's range to go off.
-bonus3 bSPDrainRate,n,x,y;		When attacking there is a n/10% chance to either gain SP equivalent to x% of damage dealt,
-					OR drain the amount of sp from the enemy.
-					y:	0=gain sp  1:drain enemy sp
-bonus4 bAutoSpell,x,y,n,i;		n/10% chance to cast skill x of level y when attacking (supports skill names)
-					i:
-						0=cast on self
-						1=cast on enemy, not on self
-						2=use random skill lv in [1..y]
-						3=1+2 (random lv on enemy)
-bonus4 bAutoSpellWhenHit,x,y,n,i;	n/10% chance to cast skill x of level y when being hit by a direct attack. (supports skill names)
-					Target must be within spell's range to go off.
-					i:
-						0=cast on self
-						1=cast on enemy, not on self
-						2=use random skill lv in [1..y]
-						3=1+2 (random lv on enemy)
-bonus5 bAutoSpell,x,y,n,t,i;		n/10% chance to cast skill x of level y when attacking (supports skill names)
-					t: Trigger criteria:
-					   BF_SHORT: Trigger on melee attack
-					   BF_LONG: Trigger on ranged attack
-					   ( Default: BF_SHORT+BF_LONG )
-					   
-					   BF_WEAPON: Trigger on weapon skills 
-					   BF_MAGIC: Trigger on magic skills 
-					   BF_MISC: Trigger on misc skills
-					   ( Default: BF_WEAPON )
-					   
-					   BF_NORMAL: Trigger on normal
-					   attacks.
-					   BF_SKILL: Trigger on skills
-					   (Default: BF_SKILL if type is BF_MISC or BF_MAGIC, BF_NORMAL if type is BF_WEAPON)
-					   
-					   i:
-					   0=cast on self
-					   1=cast on enemy, not on self
-					   2=use random skill lv in [1..y]
-					   3=1+2 (random lv on enemy)
-					   
-bonus5 bAutoSpellWhenHit,x,y,n,t,i;	n/10% chance to cast skill x of level y when being hit by a direct attack. (supports skill names)
-					Target must be within spell's range to go off.
-					t: Trigger criteria:
-					   BF_SHORT: Trigger on melee attack
-					   BF_LONG: Trigger on ranged attack
-					   ( Default: BF_SHORT+BF_LONG )
-					   
-					   BF_WEAPON: Trigger on weapon skills 
-					   BF_MAGIC: Trigger on magic skills 
-					   BF_MISC: Trigger on misc skills
-					   ( Default: BF_WEAPON )
-					   
-					   BF_NORMAL: Trigger on normal
-					   attacks.
-					   BF_SKILL: Trigger on skills
-					   (Default: BF_SKILL if type is BF_MISC or BF_MAGIC, BF_NORMAL if type is BF_WEAPON)
-					   
-					   i: 1=cast on enemy, not on self
-					   2=use random skill lv in [1..y]
-					   3=1+2 (random lv on enemy)
-
-//---- 2/22 new card effects ----
-
-bonus2 bAddItemHealRate,n,x;		Increases HP recovered by n type items by x%, you can also use direct item IDs instead of group values.
-					(Check db/item_group_db.txt)
-
-//---- 3/15 new card effects ----
-
-bonus2 bSPRegenRate,n,x;		Gain n SP every x milliseconds
-bonus2 bSPLossRate,n,x;			Lose n SP every x milliseconds
-bonus2 bExpAddRace,n,x;			Increase exp gained by x% vs. enemies of race n
-bonus2 bSPGainRace,n,x;			When killing a monster of race n by physical attack gain x amount of sp
-bonus2 bSubRace2,n,x;			Damage x% reduction from enemies of race n (Check db/mob_race2_db.txt)
-
-bonus2 bAddMonsterDropItemGroup,n,x;	Adds a x/100% chance to get an item of group type n when you kill a monster (Check db/item_group_db.txt)
-					If 'x' is negative value, then it's a part of formula
-						chance = -x*(killed_mob_level/10)+1
-
-bonus3 bAddEff,n,x,y;			Adds a x/100 chance to cause effect n to the target when attacking (e.g. x=100 makes 1% chance, x=10000 makes 100% chance, etc).
-					y is the trigger criteria:
-						ATF_SELF: Trigger effect on self.
-						ATF_TARGET: Trigger effect on target (default)
-						ATF_SHORT: Trigger on melee attacks
-						ATF_LONG: Trigger in ranged attacks (default: trigger on all attacks)
-
-bonus3 bAddEffWhenHit,n,x,y;		x/100 chance to cause n state to the enemy when being hit by physical damage.
-					y is the trigger criteria:
-						ATF_SELF: Trigger effect on self.
-						ATF_TARGET: Trigger effect on target (default)
-						ATF_SHORT: Trigger on melee attacks
-						ATF_LONG: Trigger in ranged attacks (default: trigger on all attacks)
-
-bonus3 bAddMonsterDropItemGroup,n,x,y;	Adds a y/100% chance to get an item of group type n when you kill a monster of race x (Check db/item_group_db.txt)
-						x: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-					If 'y' is negative value, then it's a part of formula
-						chance = -y*(killed_mob_level/10)+1
-
-bonus2 bWeaponComaRace,x,y;		y/100% chance to cause Coma when attacking a monster of race x with a normal attack
-						x: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-
-bonus bAddStealRate,n;			n/100% increase to Steal skill success chance
-
-bonus2 bAddSkillBlow,x,y;		Pushback the target by y cells when using skill x (supports skill names)
-
-bonus bSPDrainValue,n;			When hitting a monster by physical attack, you gain n SP
-					(use negative numbers so the user loses SP)
-bonus2 bSPDrainValue,n,x;		When hitting a monster by physical attack, ...
-					x:
-						0=you gain n SP, 1=you drain n SP from target
-
-bonus2 bIgnoreDefRate,n,x;		Disregard x% of the target's DEF if the target belongs to race n
-
-bonus3 bAddEle,n,x,t;			+x% physical damage against element n
-					n: 	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-					t: Trigger criteria:
-					   BF_SHORT: Trigger on melee attack
-					   BF_LONG: Trigger on ranged attack
-					   ( Default: BF_SHORT+BF_LONG )
-					   
-					   BF_WEAPON: Trigger on weapon skills 
-					   BF_MAGIC: Trigger on magic skills 
-					   BF_MISC: Trigger on misc skills
-					   ( Default: BF_WEAPON )
-					   
-					   BF_NORMAL: Trigger on normal
-					   attacks.
-					   BF_SKILL: Trigger on skills
-					   (Default: BF_SKILL if type is BF_MISC or BF_MAGIC, BF_NORMAL if type is BF_WEAPON)
-					   
-					   i: 1=cast on enemy, not on self
-					   2=use random skill lv in [1..y]
-					   3=1+2 (random lv on enemy)
-bonus3 bSubEle,n,x,t;			x% Damage reduction against element n.
-					n: 	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-					t: Trigger criteria:
-					   BF_SHORT: Trigger on melee attack
-					   BF_LONG: Trigger on ranged attack
-					   ( Default: BF_SHORT+BF_LONG )
-					   
-					   BF_WEAPON: Trigger on weapon skills 
-					   BF_MAGIC: Trigger on magic skills 
-					   BF_MISC: Trigger on misc skills
-					   ( Default: BF_WEAPON )
-					   
-					   BF_NORMAL: Trigger on normal
-					   attacks.
-					   BF_SKILL: Trigger on skills
-					   (Default: BF_SKILL if type is BF_MISC or BF_MAGIC, BF_NORMAL if type is BF_WEAPON)
-					   
-					   i: 1=cast on enemy, not on self
-					   2=use random skill lv in [1..y]
-					   3=1+2 (random lv on enemy)
-bonus4 bAutoSpellOnSkill,s,x,l,n	Adds a n/10% chance to autospell skill x at level l when using skill s. (supports skill names)
-					Supportive spells are casted on self, others on target of skill s.
-bonus5 bAutoSpellOnSkill,s,x,l,n,i	Adds a n/10% chance to autospell skill x at level l when using skill s. (supports skill names)
-					i: Flags (bitfield)
-						&1: Forces the skill to be casted on self, rather than on the target of skill s.
-						&2: Random skill level between 1 and l is chosen.
-bonus bAddItemHealRate,x;		Increases HP recovered by x% for healing items.
+bonus bUnstripable,n;      		All equipment cannot be taken off via strip skills (n is meaningless)
+
 bonus bUnbreakableGarment,n;		Garment cannot be damaged/broken by any means (n is meaningless)
-bonus bUnbreakableWeapon,n;		Weapon cannot be damaged/broken by any means (n is meaningless)
-bonus bUnbreakableArmor,n;		Armor cannot be damaged/broken by any means (n is meaningless)
-bonus bUnbreakableHelm,n;		Helm cannot be damaged/broken by any means (n is meaningless)
-bonus bUnbreakableShield,n;		Shield cannot be damaged/broken by any means (n is meaningless)
-bonus bUnbreakableShoes,n;		Shoes cannot be damaged/broken by any means (n is meaningless)
-bonus bBreakWeaponRate,n;		Adds a n/100% chance to break enemy's weapon while attacking (stacks with other break chances).
-bonus bBreakArmorRate,n;		Adds a n/100% chance to break enemy's armor while attacking (stacks with other break chances).
-bonus bUnbreakable,n;			Reduces the break chance of all equipped equipment by n%.
-bonus bShortWeaponDamageReturn,n;	Reflects n% of received melee damage back to the enemy that caused it.
-bonus bLongWeaponDamageReturn,n;	Reflects n% of received ranged damage back to the enemy that caused it.
-bonus2 bWeaponComaEle,x,n;		Adds a n/100% chance to cause Coma when attacking a monster of element x with normal attack.
-					x:	Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
-bonus2 bAddEff2,e,n;			Adds a n/100% chance to cause status change e on self when attacking.
-					e:	Eff_Blind, Eff_Sleep, Eff_Poison, Eff_Freeze, Eff_Silence,
-						Eff_Stun, Eff_Curse, Eff_Confusion, Eff_Stone, Eff_Bleeding,
-						Eff_DPoison, Eff_Fear, Eff_Burning
-bonus bMagicDamageReturn,n;		Adds a n% chance to reflect targetted magic spells back to the enemy that caused it.
-bonus bPerfectHide,n;			Hidden/cloaked character is no longer detected by monsters with 'detector' mode (n is meaningless).
-bonus bNoKnockback,n;			Character is no longer knocked back by enemy skills with such effect (n is meaningless).
-bonus bClassChange,n;			Gives a n/100% chance to change the attacked monster's class with normal attack.
-bonus bHPDrainValue,n;			Heals +n HP with normal attack.
-bonus2 bHPDrainValue,n,x;		Heals +n HP with normal attack. When x is non-zero, the HP is drained instead.
-bonus2 bWeaponAtk,x,n;			Adds n ATK when weapon of type x is equipped.
-					x:	see doc/item_db.txt -> view -> weapons for possible values
-bonus2 bWeaponAtkRate,x,n;		Adds n% damage to normal attacks when weapon of type x is equipped.
-					x:	see doc/item_db.txt -> view -> weapons for possible values
-bonus bDelayrate,n;			Increases skill delay by n%.
-bonus3 bAddEffOnSkill,s,x,n;		Adds a n/100% chance to cause status change x on enemy when using skill s (supports skill names)
-bonus4 bAddEffOnSkill,s,x,n,t;		Adds a n/100% chance to cause status change x when using skill s (supports skill names)
-					t:	ATF_SELF   = causes status change to oneself
-						ATF_TARGET = causes status change to the enemy
-bonus bNoMiscDamage,n;			Adds n% reduction to received misc damage.
-bonus bLongAtkRate,n;			Increases damage of ranged attacks by n%.
-bonus bUnstripable,n;			Armor cannot be taken off via strip skills (n is meaningless)
-bonus2 bHPDrainValueRace,r,n;		Heals +n HP when attacking a monster of race r with normal attack.
-bonus2 bSPDrainValueRace,r,n;		Heals +n SP when attacking a monster of race r with normal attack.
-bonus bMagicSPGainValue,n;		Heals +n SP when killing an enemy with magic attack.
-bonus bMagicHPGainValue,n;		Heals +n HP when killing an enemy with magic attack.
-
-bonus3 bAddClassDropItem,s,x,n;		Adds an n/100% chance of dropping item s when killing monster class x.
-
-bonus2 bHPGainRaceAttack,x,n;		Heals n HP when attacking x Race on every hit
-bonus2 bSPGainRaceAttack,x,n;		Heals n SP when attacking x Race on every hit
-
-bonus2 bSkillUseSPrate,s,x;		Reduces SP consumption of skill s by x%. (supports skill names.)
-bonus2 bSkillUseSP,s,x;			Reduces SP consumption of skill s by x. (supports skill names.)
-bonus2 bSkillCooldown,s,x;		Increases cooldown of skill s by x milliseconds. (supports skill names.)
-
-bonus bFixedCastrate,x;			Increases fixed cast time of all skills by x%.
-bonus bVariableCastrate,x;		Increases variable cast time of all skills by x%.
-bonus bFixedCast,x;			Increases fixed cast time of all skills by x milliseconds;
-bonus bVariableCast,x;			Increases variable cast time of all skills by x milliseconds;
-bonus2 bSkillFixedCast,s,x;		Increases fixed cast time of skill s by x milliseconds. (supports skill names.)
-bonus2 bSkillVariableCast,s,x;		Increases variable cast time of skill s by x milliseconds. (supports skill names.)
-bonus2 bVariableCastrate,s,x;		Increases variable cast time of skill s by x%. (supports skill names.)
-bonus2 bFixedCastrate,s,x;		Increases fixed cast time of skill s by x%. (supports skill names.)
-bonus4 bSetDefRace,n,x,r,y;		Set DEF to y of an enemy of race n at x% for r milliseconds with normal attack.
-bonus4 bSetMDefRace,n,x,r,y;		Set MDEF to y of an enemy of race n at x% for r milliseconds with normal attack.
-
-
-bonus bIgnoreDefClass,n;		Disregard DEF against enemies of class n
-									n: 	Class_Normal, Class_Boss, Class_Guardian
-bonus bDefRatioAtkClass,n;		Does more damage depending on monster Defense against class n (defense disregard)
-			
-bonus2 bIgnoreDefRaceRate,n,x;	Disregard x% of the target's DEF if the target belongs to race n	
-									n: 	RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
-bonus2 bAddClass,n,x;			+x% physical damage against class n
-									n: 	Class_Normal, Class_Boss, Class_Guardian
-bonus2 bSubClass,n,x;			+x% damage reduction against class n
-									n: 	Class_Normal, Class_Boss, Class_Guardian
-bonus2 bMagicAddClass,n,x;		+x% magical damage against class n
-									n: 	Class_Normal, Class_Boss, Class_Guardian
-bonus2 bWeaponComaClass,n,y;	y/100% chance to cause Coma when attacking a monster of class x with a normal attack
-									n: 	Class_Normal, Class_Boss, Class_Guardian
-bonus2 bHpDrainValueClass,n,x;		Heals +x HP when attacking a monster of class n with normal attack.
-										n: 	Class_Normal, Class_Boss, Class_Guardian
-bonus2 bSpDrainValueClass,n,x;		Heals +x SP when attacking a monster of class n with normal attack.
-										n: 	Class_Normal, Class_Boss, Class_Guardian
-bonus2 bIgnoreMdefClassRate,n,x;	Disregard x% of the target's MDEF if the target belongs to class n
-										n: 	Class_Normal, Class_Boss, Class_Guardian
+bonus bUnbreakableWeapon,n; 		Weapon cannot be damaged/broken by any means (n is meaningless)
+bonus bUnbreakableArmor,n;  		Armor cannot be damaged/broken by any means (n is meaningless)
+bonus bUnbreakableHelm,n;   		Helm cannot be damaged/broken by any means (n is meaningless)
+bonus bUnbreakableShield,n; 		Shield cannot be damaged/broken by any means (n is meaningless)
+bonus bUnbreakableShoes,n;  		Shoes cannot be damaged/broken by any means (n is meaningless)
+bonus bUnbreakable,n;       		Reduces the break chance of all equipped equipment by n%
+
+bonus bBreakWeaponRate,n;		Adds a n/100% chance to break enemy's weapon while attacking (stacks with other break chances)
+bonus bBreakArmorRate,n; 		Adds a n/100% chance to break enemy's armor while attacking (stacks with other break chances)
+
+Monster drops
+-------------
+bonus3 bAddMonsterIdDropItem,s,mid,n;	Adds an n/100% chance of dropping item s when killing monster mid
+
+bonus2 bAddMonsterDropItem,iid,n;    	Adds a n/100% chance for item iid to be dropped when killing a monster
+bonus3 bAddMonsterDropItem,iid,r,n;  	Adds a n/100% chance for item iid to be dropped when killing a monster of race r
+bonus3 bAddClassDropItem,iid,c,n;   	Adds a n/100% chance for item iid to be dropped when killing a monster of class c
+bonus2 bAddMonsterDropItemGroup,ig,n;	Adds a n/100% chance to get an item of group type ig when killing a monster
+bonus3 bAddMonsterDropItemGroup,ig,r,n;	Adds a n/100% chance to get an item of group type ig when killing a monster of race r
+bonus3 bAddClassDropItemGroup,ig,c,n;	Adds a n/100% chance to get an item of group type ig when killing a monster of class c
+                                     	NOTE: If 'x' is negative value, then it's a part of formula:
+                                     	      chance = -n*(killed_mob_level/10)+1
+                                     	LIMIT: Only 10 of these bonuses can be set. Those which exceed 10 are ignored.
+
+bonus2 bGetZenyNum,x,n;   		Adds a n% chance of gaining 1~x zeny when killing a monster (only the highest among all is applied)
+bonus2 bAddGetZenyNum,x,n;		Adds a n% chance of gaining 1~x zeny when killing a monster
+                          		NOTE: If n < 0, the max zeny to gain is -x*monster level.
+
+Misc effects
+------------
+bonus bDoubleRate,n;      		Double Attack probability n% (works with all weapons | only the highest among all is applied)
+bonus bDoubleAddRate,n;   		Double Attack probability + n% (works with all weapons)
+bonus bSplashRange,n;     		Splash attack radius + n (only the highest among all is applied)
+bonus bSplashAddRange,n;  		Splash attack radius + n
+                          		NOTE: n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc.
+bonus2 bAddSkillBlow,sk,n;		Knock back the target by n cells when using skill sk
+bonus bNoKnockback,n;     		Character is no longer knocked back by enemy skills with such effect (n is meaningless)
+bonus bNoGemStone,n;      		Skills requiring Gemstones do no require them (n is meaningless)
+                          		NOTE: Hocus Pocus still requires 1 Yellow Gemstone, Ganbantein requirements not reduced
+bonus bIntravision,n;     		Always see Hiding and Cloaking players/mobs (n is meaningless)
+bonus bPerfectHide,n;     		Hidden/cloaked character is no longer detected by monsters with 'detector' mode (n is meaningless)
+bonus bRestartFullRecover,n;		When reviving, HP and SP are fully healed (n is meaningless)
+bonus bClassChange,n;     		Gives a n/100% chance to change the attacked monster's class with normal attack
+bonus bAddStealRate,n;    		Increases success rate of Steal skill by n/100%

+ 2 - 2
doc/item_db.txt

@@ -27,8 +27,8 @@ Type:
 	0	Healing item.
 	2	Usable item.
 	3	Etc item
-	4	Weapon
-	5	Armor/Garment/Boots/Headgear/Accessory
+	4	Armor/Garment/Boots/Headgear/Accessory
+	5	Weapon
 	6	Card
 	7	Pet egg
 	8	Pet equipment

+ 10 - 1
doc/script_commands.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20131118
+//= 20140111
 //===== Description: =========================================
 //= A reference manual for the rAthena scripting language.
 //= Commands are sorted depending on their functionality.
@@ -7532,6 +7532,15 @@ If parameter "HUNTING" is supplied:
 
 ---------------------------------------
 
+*isbegin_quest(<ID>)
+
+Return the state of the quest: 
+	0  = Quest not started (not in quest log)
+	1  = Quest has been given (state is either "inactive" or "active")
+	2  = Quest completed
+
+---------------------------------------
+
 *showevent <state>, <color>;
 
 Show a colored mark in the mini-map like "viewpoint" and an emotion on top of a NPC.

+ 25 - 7
install.sh

@@ -2,18 +2,36 @@
 #source var/function
 . ./function.sh
 
+#read -p "WARNING: This target is experimental. Press Ctrl+C to cancel or Enter to continue." readEnterKey
+
+# NOTE: This requires GNU getopt.  On Mac OS X and FreeBSD, you have to install this
+# separately; see below.
+TEMP=`getopt -o d: -l destdir: -- "$@"`
+if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
+# Note the quotes around `$TEMP': they are essential!
+eval set -- "$TEMP"
+
+eval set -- "$TEMP"
+while [ $# -gt 0 ]
+do
+    case "$1" in
+    (-d | --destdir) PKG_PATH="$2"; shift;;
+    esac
+    shift
+done
+
+echo "destdir = $PKG_PATH "
 check_inst_right
 check_files
-read -p "WARNING: This target dis experimental. Press Ctrl+C to cancel or Enter to continue." readEnterKey
 mkdir -p $PKG_PATH/bin/
-mkdir -p $PKG_PATH/etc/$PKG/
-mkdir -p $PKG_PATH/var/$PKG/
+mkdir -p $PKG_PATH/etc/$PKG/conf
+mkdir -p $PKG_PATH/var/$PKG/log
 
 #we copy all file into opt/ dir and treat dir like normal unix arborescence
-rsync -r --exclude .svn db/ $PKG_PATH/var/$PKG/db
-rsync -r --exclude .svn log/ $PKG_PATH/var/$PKG/log
-rsync -r --exclude .svn conf/ $PKG_PATH/etc/$PKG/conf
-rsync -r --exclude .svn npc/ $PKG_PATH/npc
+cp -r db/ $PKG_PATH/var/$PKG/db
+if [ -d log ]; then cp -r log/ $PKG_PATH/var/$PKG/log; fi
+cp -r conf/ $PKG_PATH/etc/$PKG/conf
+cp -r npc/ $PKG_PATH/npc
 cp athena-start $PKG_PATH/	
 mv *-server* $PKG_PATH/bin/
 

+ 4 - 3
npc/jobs/1-1e/ninja.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Legionaire, Kisuka
 //===== Current Version: ===================================== 
-//= 1.6
+//= 1.7
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -15,6 +15,7 @@
 //= 1.4 Fixed a minor bug [SinSloth]
 //= 1.5 Updated to match AEGIS script and Added Quest Log commands. [Kisuka]
 //= 1.6 Fixed AEGIS amatsu warp typo. [Kisuka]
+//= 1.7 Kagerou/Oboro support (Class -> BaseClass) [Euphy]
 //============================================================ 
 
 alberta,30,65,3	script	Akagi	730,{
@@ -351,7 +352,7 @@ que_ng,30,65,3	script	Cougar#nq	730,{
 			close;
 		}
 	} else {
-		if (Class == Job_Ninja) {
+		if (BaseClass == Job_Ninja) {
 			mes "[Cougar]";
 			mes "How have you been?";
 			mes "Train hard: you want";
@@ -565,7 +566,7 @@ einbroch,184,194,3	script	Suspicious Man#nq	 	881,{
 		mes "to beat him in a fair fight~";
 		close;
 	}
-	else if (NINJ_Q == 5 && Class == Job_Ninja) {
+	else if (NINJ_Q == 5 && BaseClass == Job_Ninja) {
 		mes "[Red Leopard Joe]";
 		mes "Oh, you're a Ninja~";
 		mes "I hope you continue to";

+ 2 - 0
npc/other/gm_npcs.txt

@@ -100,6 +100,8 @@ List of GM Management NPCs (incomplete)
 - sorcereryal
 - Button Girl#wl
 - Button Girl#sura
+- Battle Test Control#ko
+- Guide#ko_helper
 --------------------------
 - Soul Linker Var
 - 1st Job Quest Reset

+ 3 - 2
npc/quests/thana_quest.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Muad_Dib
 //===== Current Version: =====================================
-//= 1.0a
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -12,6 +12,7 @@
 //===== Additional Comments: =================================
 //= 1.0 Adapted from official release. [Euphy]
 //= 1.0a Added 'npcskill' command. [Euphy]
+//= 1.1 Kagerou/Oboro support (Class -> BaseClass) [Euphy]
 //============================================================
 
 hu_fild01,140,163,5	script	Tower Keeper	852,3,3,{
@@ -2291,7 +2292,7 @@ tha_t04,81,36,0	warp	to 5th Floor	1,1,tha_t05,62,8
 tha_t06,119,120,0	script	to 7th Floor	45,1,1,{
 	end;
 OnTouch:
-	if (eaclass()&(EAJL_2|EAJL_UPPER) || eaclass()&EAJL_THIRD || ((Class == Job_SuperNovice || Class == Job_Taekwon || Class == Job_Star_Gladiator || Class == Job_Soul_Linker || Class == Job_Ninja || Class == Job_Gunslinger) && BaseLevel > 94)) {
+	if (eaclass()&(EAJL_2|EAJL_UPPER) || eaclass()&EAJL_THIRD || ((Class == Job_SuperNovice || Class == Job_Taekwon || Class == Job_Star_Gladiator || Class == Job_Soul_Linker || BaseClass == Job_Ninja || Class == Job_Gunslinger) && BaseLevel > 94)) {
 		if (countitem(7425) > 0) {
 			mes "The shadow of a Black Key is gleaming in the center of the portal.";
 			mes "To pass this way, looks like I need something.";

+ 2874 - 0
npc/re/jobs/2e/kagerou_oboro.txt

@@ -0,0 +1,2874 @@
+//===== rAthena Script ======================================= 
+//= Kagerou/Oboro Job Quest
+//===== By: ================================================== 
+//= M45T3R, Dastgir Pojee, Euphy
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion] 
+//= Job change Quest from Ninja -> Kagerou/Oboro.
+//===== Additional Comments: ================================= 
+//= 1.0 First version. Uses official script structure and text
+//=     from iRO (ripped by M45T3R/Dastgir Pojee). [Euphy]
+//============================================================ 
+
+// Starting the Quest
+//============================================================
+que_ng,28,156,0	script	Start#ko	139,1,1,{
+	end;
+OnTouch:
+	if (BaseLevel >= 99 && JobLevel >= 70 && job_kagero == 0 && Class == Job_Ninja) {
+		mes "Secret Passage to ^25C18DNinja Guild^25C18D";
+		mes "You hear familiar voices talking to each other.";
+		next;
+		mes "[Unknown Voice A]";
+		mes "Long time, no see. How are you? How are the kids you've taken in?";
+		next;
+		mes "[Unknown Voice B]";
+		mes "I have to hand it to you. You've picked some competitive ones.";
+		next;
+		mes "[Unknown Voice A]";
+		mes "Sounds like music to my ears. Being sent to a foreign land with air pollution was bad enough, now haunted with memories of this place...";
+		next;
+		mes "[Unknown Voice A]";
+		mes "What do you think? Should we rotate now?";
+		next;
+		mes "[Unknown Voice B]";
+		mes "Haven't given up, have ya. Do you really think he'll approve?";
+		next;
+		mes "[Unknown Voice A]";
+		mes "No need to be bitter. Hey! Were any of the kids that come and go here the ones that found the ^BD0408place^BD0408?";
+		next;
+		mes "[Unknown Voice B]";
+		mes "Since finding the hidden place was also a part of the test.";
+		next;
+		mes "[Unknown Voice A]";
+		mes "You are as stubborn as the first time I met you. It's just a wall in some place...";
+		next;
+		mes "[Unknown Voice B]";
+		mes "Shssh! I think someone is eavesdropping. Hurry! Go back to the mission area.";
+		next;
+		mes "The conversation stopped abruptly. Hidden place? Wall? Part of a test? What is all this about?";
+		setquest 5131;
+		set job_kagero,1;
+		close;
+	} else if (BaseJob != Job_Ninja && job_kagero > 0) {
+		for (set .@i,5131; .@i<=5146; set .@i,.@i+1)
+			if (isbegin_quest(.@i)) erasequest .@i;
+		set job_kagero,0;
+	}
+	end;
+}
+
+que_ng,21,76,0	script	Wall with a Drawing#ko	844,{
+	if (Class == Job_Oboro || Class == Job_Kagerou) {
+		mes "You should no longer use this secret passage.";
+		close;
+	} else if (job_kagero == 1 && Class == Job_Ninja) {
+		mes "You found a location that resembles the hidden place.";
+		next;
+		mes "This wall was here ever since. How come I didn't notice it before?";
+		next;
+		mes "Now that I know it's a secret passage, what do I do to get in?";
+		next;
+		if(select("Tear the drawing down.:Touch the drawing with your hand.") == 1) {
+			mes "I can't rip it down because I don't own it.";
+			close;
+		}
+		mes "You touch the drawing with the tip of your hand and felt a sudden sensation of being pulled.";
+		close2;
+		warp "job_ko",26,111;
+		end;
+	} else if (job_kagero > 1 && Class == Job_Ninja) {
+		mes "Entrance to the ^25C18DNinja Guild^000000 hideout.";
+		next;
+		if(select("Enter.:Do not enter.") == 2)
+			close;
+		mes "When touching the drawing, you get the feeling of being pulled..."; //custom translation
+		close2;
+		warp "job_ko",26,111;
+		end;
+	} else {
+		mes "There is a wall with a great drawing on it.";
+		close;
+	}
+	end;
+}
+
+job_ko,25,115,4	script	Old Man#ko	588,{
+	if (MaxWeight - Weight < 1000 || checkweight(1201,1) == 0) {
+		mes "[Cougar]";
+		mes "You don't need to carry so many things."; //custom translation
+		close;
+	}
+	if (BaseJob != Job_Ninja) {
+		for (set .@i,5131; .@i<=5146; set .@i,.@i+1)
+			if (isbegin_quest(.@i)) erasequest .@i;
+		set job_kagero,0;
+		mes "[Cougar]";
+		mes "You are not in the Family of the Ninja.";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	if (job_kagero == 1) {
+		cutin "job_ko03",2;
+		mes "^1A95E6An old man looking hale and hearty is sitting and gazing vacantly.^1A95E6";
+		next;
+		if(select("Ignore.:Talk to him.") == 1) {
+			close2;
+			cutin "",255;
+			end;
+		}
+		mes "["+strcharinfo(0)+"]";
+		mes "Excuse me...";
+		next;
+		mes "^1A95E6You tried to talk to the old man but there is no response. Just when you are about to turn away...^1A95E6";
+		next;
+		mes "[Old Man]";
+		mes "At last, a customer! Hmm... and a live one, too!";
+		next;
+		select("Excuse me... where am I?");
+		mes "[Old Man]";
+		mes "^1A95E6He keeps talking and doesn't stop to answer your question.^1A95E6";
+		next;
+		mes "[Old Man]";
+		mes "There once was a quiet family living in ancient Amatsu times that is never mentioned in history books or stories.";
+		next;
+		mes "[Old Man]";
+		mes "They lived beneath shadows but always yearned for the bright sun, like a sunflower.";
+		next;
+		mes "[Old Man]";
+		mes "A family that was loyal to their lord who they served as their bright sun.";
+		next;
+		mes "[Old Man]";
+		mes "...a very trustworthy family...";
+		next;
+		mes "[Old Man]";
+		mes "....loyal to their core...";
+		next;
+		mes "[Old Man]";
+		mes "...a family of integrity...";
+		next;
+		select("What happened to them?");
+		mes "^1A95E6The old man looks at you with a melancholy face.^1A95E6";
+		next;
+		mes "[Old Man]";
+		mes "Why are you interested in a family that was abandoned by their lord and disappeared from history itself?";
+		next;
+		if(select("I'm a Ninja.:I'm bored.") == 2) {
+			mes "[Old Man]";
+			mes "Was nice to meet you.";
+			close2;
+			warp "amatsu",147,136;
+			end;
+		}
+		cutin "job_ko02",2;
+		mes "[Old Man]";
+		mes "Ninja! There was a time when the family was called ninjas, too.";
+		next;
+		erasequest 5131;
+		setquest 5132;
+		set job_kagero,2;
+		mes "[Old Man]";
+		mes "You'll have to lend me your ear for I have so much to tell you about the family story.";
+		close2;
+		cutin "",255;
+		end;
+	} else if (job_kagero == 2) {
+		cutin "job_ko01",2;
+		mes "^1A95E6The Old Man starts the story with a very soothing tone as if he is telling his grandchild a story.^1A95E6";
+		next;
+		mes "[Old Man]";
+		mes "This goes way back to ancient times and nobody in Amatsu remembers about it.";
+		next;
+		mes "[Old Man]";
+		mes "The family worked behind the scenes and basically lived their lives for their lord.";
+		next;
+		mes "[Old Man]";
+		mes "They were very loyal doing whatever deed their lord asked for.";
+		next;
+		mes "[Old Man]";
+		mes "Ninja, the family was known as the dark family but that doesn't mean they wanted to be hidden in the darkness.";
+		next;
+		mes "[Old Man]";
+		mes "They were loyal enough to be satisfied as the lord's servants but their loyalty became the problem.";
+		next;
+		select("Problem?");
+		mes "[Old Man]";
+		mes "They are a secret organization that even the lord didn't know much about.";
+		next;
+		mes "[Old Man]";
+		mes "The few that knew about the family's existence, tried to investigate them but nobody was able to reveal their true identity.";
+		next;
+		mes "[Old Man]";
+		mes "That is why this family has grown from loyal servants to a group feared for its secrets.";
+		next;
+		mes "[Old Man]";
+		mes "The lord shunned the family and didn't call them for their service any more but they never betrayed him.";
+		next;
+		select("They were really loyal people.");
+		cutin "job_ko03",2;
+		mes "[Old Man]";
+		mes "Yes, they were. Very loyal.";
+		next;
+		erasequest 5132;
+		setquest 5133;
+		set job_kagero,3;
+		mes "^1A95E6The old man looks even more forlorn.^1A95E6";
+		close2;
+		cutin "",255;
+		end;
+	} else if (job_kagero == 3) {
+		cutin "job_ko03",2;
+		mes "[Old Man]";
+		mes "The family has been living in hiding for so long since the old days. The current lord didn't even know of their existence.";
+		next;
+		select(".........");
+		cutin "job_ko01",2;
+		mes "[Old Man]";
+		mes "I'm Guide Gion, the last of the dark ninja family.";
+		next;
+		if(select("I think your time has ended.:I need your teaching.") == 1) {
+			cutin "job_ko04",2;
+			mes "[Guide Gion]";
+			mes "Are you an assassin to end this old man's life?";
+			next;
+			mes "[Guide Gion]";
+			mes "So that is why you've shown interest in my family. I won't give up easily.";
+			next;
+			percentheal -99,0;
+			mes "Pow!!";
+			mes "^1A95E6You lose conscience with the great impact.^000000";
+			close2;
+			warp "amatsu",147,136;
+			end;
+		}
+		cutin "job_ko02",2;
+		mes "[Guide Gion]";
+		mes "Teaching...";
+		mes "Been a long time since I last heard that word.";
+		next;
+		mes "[Guide Gion]";
+		mes "I guess this little visit was not by coincidence but a start of a connection.";
+		next;
+		mes "[Guide Gion]";
+		mes "Sorry I am not a teacher. But!";
+		next;
+		mes "[Guide Gion]";
+		mes "I can help you on the path you've chosen, the ^33CC71"+((Sex)?"Kagerou":"Oboro")+"^000000 path.";
+		next;
+		mes "^1A95E6You hear Guide Gion's voice faintly as you slip away.^1A95E6";
+		next;
+		erasequest 5133;
+		setquest 5134;
+		set job_kagero,4;
+		mes "[Guide Gion]";
+		mes "If you are prepared to follow me, Guide Gion, on the "+((Sex)?"Kagerou":"Oboro")+" path, we will meet again.";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	} else if (job_kagero == 4) {
+		cutin "job_ko02",2;
+		mes "[Guide Gion]";
+		mes "I thought you were afraid of the ^33CC71path of the "+((Sex)?"Kagerou":"Oboro")+"^33CC71 and wouldn't come back.";
+		next;
+		mes "[Guide Gion]";
+		mes "But from the look of your eyes, I guess I misjudged you.";
+		next;
+		mes "[Guide Gion]";
+		mes "You will have to train your mind and body to walk steadily in the unknown world and never fall into temptation to stay on the path.";
+		next;
+		mes "[Guide Gion]";
+		mes "Our ancestors had 4 tests to train our people.";
+		next;
+		select("4 tests?");
+		cutin "job_ko01",2;
+		mes "[Guide Gion]";
+		mes "Yes, there are 4 tests.";
+		mes "My ancestors trained my people with 4 tests that involve ^087FF8knowledge^000000, ^087FF8survival^000000, ^087FF8weapons^000000, and ^087FF8battle^000000.";
+		next;
+		mes "[Guide Gion]";
+		mes "I know you are curious what these tests are. Let me explain one by one.";
+		next;
+		while(1) {
+			set .@i, select("Test of Knowledge:Test of Survival:Test of Weaponry:Test of Battle");
+			set .@test, .@test | (1<<(.@i-1));
+			switch (.@i) {
+			case 1:
+				mes "[Guide Gion]";
+				mes "We need to be knowledgeable in order to assist the lord. This test is for this purpose.";
+				next;
+				mes "[Guide Gion]";
+				mes "You can pass the test if you successfully solve more than 9 out of 10 questions.";
+				next;
+				if (.@test != 15) {
+					mes "[Guide Gion]";
+					mes "The test will be easy to pass if you've been steady in your studies. Now what other test are you curious about?";
+					next;
+				}
+				break;
+			case 2:
+				mes "[Guide Gion]";
+				mes "Missions aren't always easy and safe. That is why survival instincts are vital to us.";
+				next;
+				mes "[Guide Gion]";
+				mes "My ancestors call this test the dice test. It is a test to advance forward depending on the dice results.";
+				next;
+				mes "[Guide Gion]";
+				mes "Think of it as the simple dice games people play.";
+				next;
+				mes "[Guide Gion]";
+				mes "But never let your guard down during the test because it isn't called the survival test for nothing.";
+				next;
+				mes "[Guide Gion]";
+				mes "There will be blocks that help you while there are blocks that will interrupt you.";
+				next;
+				if (.@test != 15) {
+					mes "[Guide Gion]";
+					mes "If you deal with various situations wisely, you will be able to pass the test. Now what other test are you curious about?";
+					next;
+				}
+				break;
+			case 3:
+				mes "[Guide Gion]";
+				mes "My family was famous for using unique weapons that we created.";
+				next;
+				mes "[Guide Gion]";
+				mes "You would be considered blessed if you created your own unique weapon.";
+				next;
+				mes "[Guide Gion]";
+				mes "Creating a weapon for yourself and refining it is the purpose of this test.";
+				next;
+				if (.@test != 15) {
+					mes "[Guide Gion]";
+					mes "I hope you will be blessed and find the best weapon for yourself. Now what other test are you curious about?";
+					next;
+				}
+				break;
+			case 4:
+				mes "[Guide Gion]";
+				mes "Missions are not always done alone. You will often work in teams of 2 or 3 for a common goal.";
+				next;
+				mes "[Guide Gion]";
+				mes "The battle test is only for those that pass that knowledge, survival and weapon tests. So! It is the very last test.";
+				next;
+				mes "[Guide Gion]";
+				mes "Unlike the other three tests that are done alone, you will have to compete with others in this final test.";
+				next;
+				mes "[Guide Gion]";
+				mes "There is only one target!!";
+				mes "And only the first to get to the target passes the test.";
+				next;
+				mes "[Guide Gion]";
+				mes "You'll be lucky if you have no competitors during your test.";
+				next;
+				if (.@test != 15) {
+					mes "[Guide Gion]";
+					mes "A challenge is better than explaining it a hundred times. It's the actual experience that makes you better.";
+					next;
+				}
+				break;
+			}
+			if (.@test == 15) break;
+		}
+		cutin "job_ko02",2;
+		mes "[Guide Gion]";
+		mes "Seeing is believing, so go on and take the challenge."; //custom translation
+		next;
+		erasequest 5134;
+		setquest 5135;
+		set job_kagero,5;
+		mes "[Guide Gion]";
+		mes "Let's start right away after you are done with preparations.";
+		close2;
+		cutin "",255;
+		end;
+	} else if (job_kagero == 5) {
+		set .@ko_test_01, isbegin_quest(5136);
+		set .@ko_test_02, isbegin_quest(5137);
+		set .@ko_test_03, isbegin_quest(5138);
+		set .@ko_test, .@ko_test_01 + .@ko_test_02 + .@ko_test_03;
+		if (.@ko_test == 0) {
+			cutin "job_ko03",2;
+			mes "[Guide Gion]";
+			mes "It's been a while.";
+			next;
+			mes "[Guide Gion]";
+			mes "Since I felt happy like this. I feel young and energetic seeing young people like you challenge themselves with a new path.";
+			next;
+			mes "[Guide Gion]";
+			mes "We're done with explaining about the tests, now should I tell you my family story?";
+			next;
+			cutin "job_ko01",2;
+			mes "[Guide Gion]";
+			mes "My family started from two warriors.";
+			next;
+			mes "[Guide Gion]";
+			mes "Kagerou, a warrior like the dancing flames of the sun.";
+			next;
+			mes "[Guide Gion]";
+			mes "Oboro, a warrior like the misty moonlight.";
+			next;
+			mes "[Guide Gion]";
+			mes "The Sun and the Moon.";
+			mes "The sunlight that lights up the world and the moonlight that lights up the night. Both were very similar but different warriors.";
+			next;
+			mes "[Guide Gion]";
+			mes "There was a time there was an enmity between both warriors.";
+			next;
+			mes "[Guide Gion]";
+			mes "But it didn't take long for them to become one as a family.";
+			next;
+			select("How did it go afterwards?");
+			cutin "job_ko02",2;
+			mes "[Guide Gion]";
+			mes "Ha ha ha. It is never fun to listen to the whole story all at once, no? Come back after passing a test and I'll continue my story.";
+			next;
+			mes "[Guide Gion]";
+			mes "Which test will you select as your first test?";
+			next;
+			callsub L_StartTest,select("Test of Knowledge:Test of Survival:Test of Weaponry"),1;
+			end;
+		} else if (.@ko_test == 2) {
+			cutin "job_ko01",2;
+			mes "[Guide Gion]";
+			if (.@ko_test_01 == 2) {
+				set .@menu$,":Test of Survival:Test of Weaponry";
+				mes "You've passed the Test of Knowledge.";
+				next;
+				mes "[Guide Gion]";
+				mes "My friend doesn't approve of others that easily but I guess he liked you.";
+				next;
+			} else if (.@ko_test_02 == 2) {
+				set .@menu$,"Test of Knowledge::Test of Weaponry";
+				mes "You've passed the Test of Survival.";
+				next;
+				mes "[Guide Gion]";
+				mes "Looks like you went through hell with this test.";
+				next;
+			} else if (.@ko_test_03 == 2) {
+				set .@menu$,"Test of Knowledge:Test of Survival:";
+				mes "You've passed the Test of Weaponry.";
+				next;
+				mes "[Guide Gion]";
+				mes "I wonder if Joe is satisfied with your performance.";
+				next;
+			}
+			select("Please continue with the family story.");
+			cutin "job_ko02",2;
+			mes "[Guide Gion]";
+			mes "Looks like you are pretty eager to hear more. Where did I leave off... Ah! I remember.";
+			next;
+			mes "[Guide Gion]";
+			mes "Kagerou, a warrior like the dancing flames of the sun.";
+			next;
+			mes "[Guide Gion]";
+			mes "Oboro, a warrior like the misty moonlight.";
+			next;
+			mes "[Guide Gion]";
+			mes "Both warriors weren't close at first, because personality and everything else was completely opposite of each other.";
+			next;
+			mes "[Guide Gion]";
+			mes "The first place they met was the battlefield. And you know how enemies greet each other on a battlefield.";
+			next;
+			mes "[Guide Gion]";
+			mes "They ended up injuring each other badly.";
+			next;
+			mes "[Guide Gion]";
+			mes "But what can you do? War is a war.";
+			next;
+			mes "[Guide Gion]";
+			mes "The friend you've laughed with yesterday is a foe that you have to fight with in a war today.";
+			next;
+			mes "[Guide Gion]";
+			mes "So nobody can get along with anyone during a war.";
+			next;
+			mes "[Guide Gion]";
+			mes "I'll continue the story after you pass another test.";
+			next;
+			mes "[Guide Gion]";
+			mes "Which test will you choose for the second test?";
+			next;
+			callsub L_StartTest,select(.@menu$),2;
+			end;
+		} else if (.@ko_test == 4) {
+			cutin "job_ko04",2;
+			mes "[Guide Gion]";
+			if (.@ko_test_01 == 2 && .@ko_test_02 == 2) {
+				set .@last_test,3;
+				mes "You've passed the ^339CCCTests of Knowledge and Survival^000000!";
+			} else if (.@ko_test_01 == 2 && .@ko_test_03 == 2) {
+				set .@last_test,2;
+				mes "You've passed the ^339CCCTests of Knowledge and Weaponry^000000!";
+			} else if (.@ko_test_02 == 2 && .@ko_test_03 == 2) {
+				set .@last_test,1;
+				mes "You've passed the ^339CCCTests of Survival and Weaponry^000000!";
+			}
+			next;
+			mes "[Guide Gion]";
+			mes "You are already done with two tests. Hope you've learned a lot from them.";
+			next;
+			cutin "job_ko01",2;
+			mes "[Guide Gion]";
+			mes "Shall we continue with the story?";
+			next;
+			mes "[Guide Gion]";
+			mes "Kagerou, a warrior like the dancing flames of the sun.";
+			next;
+			mes "[Guide Gion]";
+			mes "Oboro, a warrior like the misty moonlight.";
+			next;
+			mes "[Guide Gion]";
+			mes "I think I left off when the two warriors met at the battlefield as enemies.";
+			next;
+			mes "[Guide Gion]";
+			mes "The long war ended eventually but the wounds and pain of those that survived had just started.";
+			next;
+			mes "[Guide Gion]";
+			mes "So these two warriors started to embrace and heal the war wounds together and became one.";
+			next;
+			mes "[Guide Gion]";
+			mes "There is a backstory of a man appearing in front of them and winning the loyalty from both warriors.";
+			next;
+			select("Who is this man?");
+			mes "[Guide Gion]";
+			mes "There isn't much known about this man. Only a short mentioning of the two warriors pledging their allegiance.";
+			next;
+			mes "[Guide Gion]";
+			mes "Maybe current generations like me are the ancestors of the current Amatsu lord? But this is only an assumption.";
+			next;
+			mes "[Guide Gion]";
+			mes "I'm almost at the end of my family story. Come back after you've passed the third test and I will tell you the rest.";
+			next;
+			callsub L_StartTest,.@last_test,3;
+			end;
+		} else if (.@ko_test == 6) {
+			cutin "job_ko01",2;
+			mes "[Guide Gion]";
+			mes "You've gone through three tests leaving only one to pass.";
+			next;
+			mes "[Guide Gion]";
+			mes "As I've told you before, the last test is different because you have to compete against others.";
+			next;
+			select("Will you continue the story?");
+			cutin "job_ko02",2;
+			mes "[Guide Gion]";
+			mes "Ha ha ha. I will finish the story.";
+			next;
+			mes "[Guide Gion]";
+			mes "Kagerou, a warrior like the dancing flames of the sun.";
+			next;
+			mes "[Guide Gion]";
+			mes "Oboro, a warrior like the misty moonlight.";
+			next;
+			mes "[Guide Gion]";
+			mes "It is told that the man that earned the loyalty of the two warriors was a humorous person.";
+			next;
+			mes "[Guide Gion]";
+			mes "He like the jokes and conversations better than quarrels and he liked women over men.";
+			next;
+			mes "[Guide Gion]";
+			mes "Hmm... I don't know why this part of the story was kept alive all these years but this man wanted to bring these two warriors together.";
+			next;
+			mes "[Guide Gion]";
+			mes "Both warriors did travel together after the war but kept an awkward distance from each other.";
+			next;
+			mes "[Guide Gion]";
+			mes "They must have had their reasons but their lord would send them out to a difficult mission together, put them in a secret room together and all sorts of situations together.";
+			next;
+			select("Sounds like an odd person.");
+			mes "[Guide Gion]";
+			mes "Yes, he was. And his efforts didn't go in vain since the two warriors eventually got acquainted and married.";
+			next;
+			mes "[Guide Gion]";
+			mes "This is how the family started.";
+			next;
+			select("What happened after?");
+			mes "[Guide Gion]";
+			mes "Sadly, the next part of story was purposely discontinued.";
+			next;
+			mes "[Guide Gion]";
+			mes "I think it's because someone wanted us to let go of the past and move forward.";
+			next;
+			mes "[Guide Gion]";
+			mes "That's that. Now shouldn't you be preparing for the last test?";
+			next;
+			set job_kagero,6;
+			mes "[Guide Gion]";
+			mes "But you must be tired from all the tests so far. Take a rest.";
+			close2;
+			cutin "",255;
+			end;
+		} else if (.@ko_test == 1 || .@ko_test == 3 || .@ko_test == 5) {
+			cutin "job_ko04",2;
+			if (.@ko_test_01 == 1)
+				set .@test_ko$, "Knowledge";
+			else if (.@ko_test_02 == 1)
+				set .@test_ko$, "Survival";
+			else if (.@ko_test_03 == 1)
+				set .@test_ko$, "Weaponry";
+			mes "[Guide Gion]";
+			mes "Weren't you taking the Test of " + .@test_ko$ + " just now?"; //custom translation
+			next;
+			switch(select("I want to go back to test site.:Ah... no.")) {
+			case 1:
+				mes "[Guide Gion]";
+				mes "The Test of " + .@test_ko$ + " site is over here."; //custom translation(?)
+				close2;
+				if (.@ko_test_01 == 1)
+					warp "job_ko",72,128;
+				else if (.@ko_test_02 == 1)
+					warp "job_ko",62,16;
+				else if (.@ko_test_03 == 1)
+					warp "job_ko",121,129;
+				end;
+			case 2:
+				mes "[Guide Gion]";
+				mes "The village is over here.";
+				close2;
+				warp "amatsu",147,136;
+				end;
+			}
+		}
+	} else if (job_kagero == 6) {
+		cutin "job_ko01",2;
+		mes "[Guide Gion]";
+		mes "You've come back already? You could have rested more. Is there a reason to hurry?";
+		next;
+		input .@inputstr$;
+		cutin "job_ko03",2;
+		mes "[Guide Gion]";
+		mes "Because of ^B24E59" + .@inputstr$ + "^000000?";
+		next;
+		mes "[Guide Gion]";
+		mes "I have to admit, I don't understand you now.";
+		next;
+		mes "[Guide Gion]";
+		mes "But since you've gone through much, I'm sure you will do good with the final test.";
+		next;
+		cutin "job_ko01",2;
+		mes "[Guide Gion]";
+		mes "Now! No more small talk. I'll let you know what the target is for the Test of Battle.";
+		next;
+		mes "[Guide Gion]";
+		mes "The target is a monster called the ^FF0000Family Secret^000000.";
+		next;
+		mes "[Guide Gion]";
+		mes "You will have to be careful because there are many similiar shaped and named monsters in test site.";
+		next;
+		mes "[Guide Gion]";
+		mes "And if you are lucky, there will be others targeting the monster.";
+		next;
+		mes "[Guide Gion]";
+		mes "May the blessings of '" + ((Sex)?"Kagerou, dancing sun":"Oboro, misty moonlight") + "' be with you.";
+		next;
+		setquest 5146;
+		set job_kagero,7;
+		mes "[Guide Gion]";
+		mes "Then let's go to the battle test field.";
+		close2;
+		switch(rand(3)) {
+			case 0: warp "job_ko",142,20; break;
+			case 1: warp "job_ko",141,80; break;
+			case 2: warp "job_ko",107,60; break;
+		}
+		end;
+	} else if (job_kagero == 7 || job_kagero == 8) {
+		cutin "job_ko03",2;
+		mes "[Guide Gion]";
+		mes "I see you are in the middle of the ^339CCCTest of Battle^000000. Will you go back to the test site?";
+		next;
+		switch(select("Go back to the test site.:Visit the village.")) {
+		case 1:
+			mes "[Guide Gion]";
+			mes "The test site is over here."; //custom translation(?)
+			close2;
+			switch(rand(3)) {
+				case 0: warp "job_ko",142,20; break;
+				case 1: warp "job_ko",141,80; break;
+				case 2: warp "job_ko",107,60; break;
+			}
+			end;
+		case 2:
+			mes "[Guide Gion]";
+			mes "The village is over here.";
+			close2;
+			cutin "",255;
+			end;
+		}
+	} else {
+		cutin "job_ko03",2;
+		mes "[Guide Gion]";
+		mes "You should not be here. Leave!";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	end;
+
+//callsub L_StartTest,<1=Knowledge,2=Survival,3=Weaponry>,<test number [1..3]>;
+L_StartTest:
+	switch (getarg(1)) {
+		case 1: set .@str$,"You are starting with the ^339CCCTest of %s^000000? "; break;
+		case 2: set .@str$,"You are taking the ^339CCCTest of %s^000000 as the second test? "; break; //custom translation
+		case 3: set .@str$,"Your third test is the ^339CCCTest of %s^000000! "; break;
+	}
+	mes "[Guide Gion]";
+	switch (getarg(0)) {
+	case 1:
+		mes sprintf(.@str$ + "Then I will get to see a familiar face after so long...","Knowledge");
+		next;
+		select("Familiar face?");
+		setquest 5136;
+		mes "[Guide Gion]";
+		mes "Ha ha ha. You'll know when we get there. The Test of Knowledge is taken over here.";
+		close2;
+		warp "job_ko",72,128;
+		end;
+	case 2:
+		mes sprintf(.@str$ + "It's a lonesome test that you have to face alone.","Survival");
+		next;
+		setquest 5137;
+		mes "[Guide Gion]";
+		mes "But I believe you can handle it. The Test of Survival is taken over here.";
+		close2;
+		warp "job_ko",62,16;
+		end;
+	case 3:
+		mes sprintf(.@str$ + "I have something to give you before you go.","Weaponry");
+		next;
+		setquest 5138;
+		getitem 1002,5; //Iron_Ore
+		getitem 1010,1; //Phracon
+		mes "You receive 5 Iron Ore and 1 Phracon.";
+		next;
+		mes "[Guide Gion]";
+		mes "You will find these useful. The Test of Weaponry is taken over here.";
+		close2;
+		warp "job_ko",121,129;
+		end;
+	}
+}
+
+// Test of Knowledge
+//============================================================
+job_ko,81,124,4	script	Cougar#ko	730,{
+	if (BaseJob != Job_Ninja) {
+		for (set .@i,5131; .@i<=5146; set .@i,.@i+1)
+			if (isbegin_quest(.@i)) erasequest .@i;
+		set job_kagero,0;
+		mes "[Cougar]";
+		mes "Sorry, your family is not same as ours, is there something wrong?";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	if (job_kagero != 5) {
+		goto L_Kick;
+	}
+	if (MaxWeight - Weight < 1000 || checkweight(1201,1) == 0) {
+		mes "[Cougar]";
+		mes "This is a test of knowledge, so why did you bring so many things?"; //custom translation
+		close;
+	}
+	set .@ko_test_01, isbegin_quest(5136);
+	set .@ko_test_01_1, isbegin_quest(5139);
+	if (.@ko_test_01 == 1 && .@ko_test_01_1 == 0) {
+		mes "[Cougar]";
+		mes "It's been a while.";
+		next;
+		select("Aren't you...");
+		mes "[Cougar]";
+		mes "I remember you from before looking for the way of the ninja.";
+		next;
+		mes "[Cougar]";
+		mes "You've grown this strong already?";
+		next;
+		mes "[Cougar]";
+		mes "Ha ha ha-";
+		mes "A truly determined youth! I like that.";
+		next;
+		mes "[Cougar]";
+		mes "Good! The test you are about to take is the ^339CCCTest of Knowledge^000000.";
+		next;
+		mes "[Cougar]";
+		mes "I hope you haven't been lazy with your studies while focusing on getting stronger?";
+		next;
+		switch(select("Yes:No")) {
+		case 1:
+			setquest 5139;
+			mes "[Cougar]";
+			mes "That's a relief. Let me know when you are ready to start the test.";
+			close;
+		case 2:
+			setquest 5139;
+			mes "[Cougar]";
+			mes "So you were all talk? Well, let me know when you are ready then.";
+			close;
+		}
+	} else if (.@ko_test_01 == 1 && .@ko_test_01_1 == 1) {
+		mes "[Cougar]";
+		mes "I'm ready at my end. Are you ready for the test?";
+		next;
+		if(select("Yes:No") == 2) {
+			mes "[Cougar]";
+			mes "Well, what can I do but wait for you.";
+			close;
+		}
+		mes "[Cougar]";
+		mes "This isn't your first test, is it?";
+		next;
+		mes "[Cougar]";
+		mes "You only need to choose the correct answer to my questions.";
+		next;
+		mes "[Cougar]";
+		mes "Let's start.";
+		next;
+
+		set .@questions,10;  // number of questions to ask
+
+		// shuffle array an array of questions to be asked
+		freeloop(1);
+		setarray .@n[0],
+			1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
+			26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50;
+		for (set .@i,getarraysize(.@n)-1; .@i>0; set .@i,.@i-1) {
+			set .@rand, rand(.@i);
+			set .@tmp, .@n[.@i];
+			set .@n[.@i], .@n[.@rand];
+			set .@n[.@rand], .@tmp;
+		}
+		deletearray .@n[10],getarraysize(.@n) - .@questions;
+		freeloop(0);
+
+		set @job_ko_cougar,0;
+		for (set .@i,1; .@i<=.@questions; set .@i,.@i+1) {
+			mes "[Cougar]";
+			mes (.@i < .@questions)?"Question number "+.@i+":":"Last question:";
+			switch (.@n[.@i-1]) {
+				case 1: callsub L_Question,"What is the DEX + LUK total for a Job Master?",2,"8:10:12:14"; break;
+				case 2: callsub L_Question,"What is the highest job level for a ninja?",1,"70:50:99:100"; break;
+				case 3: callsub L_Question,"How many skill points do you need to master the Throw Coins skill?",3,"25:30:35:37"; break;
+				case 4: callsub L_Question,"Which of the following is the correct number of Evasion and effect duration for Mirror Image level 10?",4,"Up to 7 and 200 seconds:Up to 5 and 220 seconds:Up to 6 and 240 seconds:Up to 5 and 240 seconds"; break;
+				case 5: callsub L_Question,"How many skill points do you need to master the Cicada Skin Shed?",1,"5:3:1:4"; break;
+				case 6: callsub L_Question,"If Dagger Throwing Practice is at 7, how much ATK is added to Shuriken attacks?",2,"18:21:27:30"; break;
+				case 7: callsub L_Question,"What is the basic attack range for Throw Shuriken?",3,"7 blocks:8 blocks:9 blocks:10 blocks"; break;
+				case 8: callsub L_Question,"What is the maximum moving range of Shadow Leap?",4,"6 blocks:7 blocks:8 blocks:9 blocks"; break;
+				case 9: callsub L_Question,"How much money is used for Throw Coins level 6?",4,"2000-8000:1000-6000:3000-8000:3000-6000"; break;
+				case 10: callsub L_Question,"What is the most important aspect of increasing ATK for the Killing Strike skill?",2,"VIT:MAXHP:INT:MAXSP"; break;
+				case 11: callsub L_Question,"What is not the effect you get after reaching the STR status?",3,"Close range attack increase:Weight limit increase:Magic attack increase:Weapon attack increase"; break;
+				case 12: callsub L_Question,"What is not the effect you get after reaching the INT status?",4,"MAXSP increase:MATK increase:Magic damage increase:Staff attack increase"; break;
+				case 13: callsub L_Question,"What is not the effect you get after reaching the DEX status?",2,"Casting time decrease:Evasion increase:Accuracy increase:Long range attack increase"; break;
+				case 14: callsub L_Question,"What is not the effect you get after reaching the AGI status?",1,"Accuracy increase:Flee increase:Attack speed increase:Delay after attack decrease"; break;
+				case 15: callsub L_Question,"What is not the effect you get after reaching the VIT status?",4,"Weapon defense increase:MAXHP increase:Magic defense increase:Attack increase"; break;
+				case 16: callsub L_Question,"What is not the effect you get after reaching the LUK status?",3,"Accuracy increase:Complete evasion increase:Magic damage decrease:Critical rate increase"; break;
+				case 17: callsub L_Question,"You need to equip a card to your shoes to enhance Killing Strike attack. Which of the following is the appropriate card to equip?",2,"Gold Acidus Card:Matyr Card:Odium of Thantos Card:Eddga Card"; break;
+				case 18: callsub L_Question,"You need a catalyst to use ninja skills. Which of the following skills does not need a catalyst?",3,"Blaze Shield:Watery Evasion:Flaming Petals:Snow Flake Draft"; break;
+				case 19: callsub L_Question,"How much does STR/INT go up when Ninja Aura level 5 is used?",2,"4:5:6:7"; break;
+				case 20: callsub L_Question,"You are hunting the Orc Warrior. Which Kunai would you use? ",1,"Heat Wave Kunai:Icicle Kunai:Fell Poison Kunai:High Wind Kunai"; break;
+				case 21: callsub L_Question,"Which village is the Ninja Guild located in?",2,"Lutie:Amatsu:Dewata:Comodo"; break;
+				case 22: callsub L_Question,"How do Ninjas get promoted?",3,"By Val Kiwi:By Randgris:None:By Valkyrie"; break;
+				case 23: callsub L_Question,"What was next to me when you first met me?",4,"A cushion:A folding screen:A flowerpot:A brazier"; break;
+				case 24: callsub L_Question,"What is the level of Dagger Throwing Practice you have to reach to learn the Killing Strike skill?",1,"7:5:6:8"; break;
+				case 25: callsub L_Question,"How many hits does a Throw Kunai give to a monster?",2,"2:3:4:5"; break;
+				case 26: callsub L_Question,"When your First Wind is at level 4, what will go with the MATK and range?",3,"MATK400, 8 blocks:MATK500, 7 blocks:MATK500, 8 blocks:MATK400, 7 blocks"; break;
+				case 27: callsub L_Question,"Which of the following skills can't you learn at Dagger Throwing Practice level 7?",4,"Throw Kunai:Throw Huuma Shuriken:Killing Strike:Throw Coins"; break;
+				case 28: callsub L_Question,"What level do you have to be in Dagger Throwing Practice in order to learn the Throw Coins skill?",4,"4:6:8:10"; break;
+				case 29: callsub L_Question,"What is the attack range for the Exploding Dragon?",3,"3*3:4*4:5*5:6*6"; break;
+				case 30: callsub L_Question,"How long is the effect time for the Watery Evasion level 7 skill?",2,"40 seconds:45 seconds:50 seconds:55 seconds"; break;
+				case 31: callsub L_Question,"What is the attack effect for Haze Slasher level 4?",1,"140%:150%:160%:170%"; break;
+				case 32: callsub L_Question,"How much power is in the Huuma Blaze Shuriken weapon?",1,"Fireball 5 , DEX-2:Fireball 5 , DEX-3:Fireball 4 , DEX-2:Fireball 4 , DEX-3"; break;
+				case 33: callsub L_Question,"How much power is in the Murasame weapon?",2,"Human attack 10%:Human critical +10:Demon attack 10%:Demon critical +10"; break;
+				case 34: callsub L_Question,"What is the maximum hit number for Blaze Shield level 10?",3,"7:8:9:10"; break;
+				case 35: callsub L_Question,"What is the property of the Lightning Jolt?",4,"Fire:Water:Ground:Wind"; break;
+				case 36: callsub L_Question,"You are creating a weapon for small monsters. What is the best card to use?",4,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
+				case 37: callsub L_Question,"You are creating a weapon for mid-sized monsters. What is the best card to use?",3,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
+				case 38: callsub L_Question,"You are creating a weapon for huge monsters. What is the best card to use?",2,"Hydra Card:Minorous Card:Skel Woker Card:Desert Wolf Card"; break;
+				case 39: callsub L_Question,"Which NPC promotes you?",1,"Valkyrie:Val Kiwi:Balp Hiri:Elephant"; break;
+				case 40: callsub L_Question,"Which catalyst do you need to use the Blaze Shield skill?",2,"Ice Stone:Flame Stone:Wind Stone:Earth Stone"; break;
+				case 41: callsub L_Question,"Which of the following is not an effect of the Watery Evasion skill?",4,"Movement speed decrease:Waterball availability:Holy Water craftability:VIT decrease"; break;
+				case 42: callsub L_Question,"Which of the following matches are incorrect for skill and property?",3,"Flaming Petals-Fire:Snow Flake Draft-Water:Freezing Spear-Ground:Lightning Jolt-Wind"; break;
+				case 43: callsub L_Question,"Which of the following is the best skill to use when attacking a ground property enemy?",2,"First Wind:Exploding Dragon:Snow Flake Draft:Wind Blade"; break;
+				case 44: callsub L_Question,"Which Ninja Mastery skill level do you need to learn the Exploding Dragon skill?",1,"10:9:8:1"; break;
+				case 45: callsub L_Question,"What is the attack range when you master Flip Tatami?",3,"5:7:3:1"; break;
+				case 46: callsub L_Question,"What weapon cannot be made by the blacksmith Khaibara?",4,"Khukri:Murasame:Hakujin:Humma Wing Shuriken"; break;
+				case 47: callsub L_Question,"Which of the following correctly matches material needed to make a Icicle Kunai?",2,"4 Nimbus Shuriken, 2 Ice Stone:8 Nimbus Shuriken, 2 Ice Stone:2 Nimbus Shuriken, 1 Ice Stone:1 Nimbus Shuriken, 2 Ice Stone"; break;
+				case 48: callsub L_Question,"Which of the following Kunai will give the most damage to the ground property monster, Porcellio?",1,"Heat Wave Kunai:Icicle Kunai:Fell Poison Kunai:High Wind Kunai"; break;
+				case 49: callsub L_Question,"Which of the following blacksmiths do not create ninja items?",2,"Khaibara:Aiku:Tetsu:Toshu"; break;
+				case 50: callsub L_Question,"What is the name of the suspicious man you can meet during the Ninja job change quest?",3,"Red Leopard Jack:Black Leopard Jack:Red Leopard Joe:Black Leopard Joe"; break;
+				default:
+					mes "[Cougar]";
+					mes "An unknown error has occurred.";
+					mes "Please contact customer service.";
+					close;
+			}
+		}
+		mes "[Cougar]";
+		mes "You're through all 10 questions. Wasn't so bad! The important part starts now.";
+		next;
+		mes "[Cougar]";
+		mes "... ... ...";
+		next;
+		if (@job_ko_cougar < 90) {
+			mes "[Cougar]";
+			mes "You fool!!";
+			mes "You couldn't even solve these?";
+			next;
+			mes "[Cougar]";
+			mes "Can't believe someone who is taking a new path can be so pathetic.";
+			next;
+			mes "[Cougar]";
+			mes "I'll give you another chance.";
+			mes "You will take the test again with new questions. Better pass it this time.";
+		} else {
+			mes "[Cougar]";
+			mes "Hmm. " + (@job_ko_cougar) + "?";
+			next;
+			mes "[Cougar]";
+			mes "Well, looks like you weren't lazy with your studies.";
+			next;
+			mes "[Cougar]";
+			mes "What? Proud of yourself for solving these questions?";
+			next;
+			mes "[Cougar]";
+			mes "You still have a long way to go and this is only a small fraction of it.";
+			next;
+			mes "[Cougar]";
+			mes "Well... I'm curious how far your strong will can take you through other tests.";
+			next;
+			completequest 5136;
+			erasequest 5139;
+			mes "[Cougar]";
+			mes "I'll let you go now so go report back to Guide Gion with your results.";
+			close2;
+			warp "job_ko",16,113;
+			end;
+		}
+		set @job_ko_cougar,0;
+		close;
+	} else if (.@ko_test_01 == 2 && .@ko_test_01_1 == 0) {
+		mes "[Cougar]";
+		mes "I'll let you go now so go report back to Guide Gion with your results.";
+		close2;
+		warp "job_ko",16,113;
+		end;
+	} else {  //custom translation
+	L_Kick:
+		mes "[Cougar]";
+		mes "How did you get here?";
+		next;
+		mes "[Cougar]";
+		mes "It's my duty to get rid of you.";
+		mes "^000099(He's a short, silent man.)^000000";
+		mes "This will push you back!";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	end;
+
+//callsub L_Question,"<Question>",<correct answer choice>,"<Choice 1>:<Choice 2>:<Choice 3>:<Choice 4>";
+L_Question:
+	mes getarg(0);
+	next;
+	if(select(getarg(2)) == getarg(1))
+		set @job_ko_cougar, @job_ko_cougar + 10;
+	return;
+}
+
+// Test of Survival
+//============================================================
+
+// -----------------------------------------------------------
+//  Functions
+// -----------------------------------------------------------
+function	script	F_KO_Survival_mes	{
+	mes "[No. " + getarg(0) + "]";
+	mes "^1A95E6Other letters are too small to read. Let's look up close.^000000";
+	close;
+}
+
+function	script	F_KO_Survival_warp	{
+	close2;
+	switch (getarg(0)) {
+		case  0: warp "job_ko",63,16; break;
+		case  1: warp "job_ko",54,16; break;
+		case  2: warp "job_ko",46,16; break;
+		case  3: warp "job_ko",38,16; break;
+		case  4: warp "job_ko",30,16; break;
+		case  5: warp "job_ko",22,16; break;
+		case  6: warp "job_ko",17,19; break;
+		case  7: warp "job_ko",17,27; break;
+		case  8: warp "job_ko",17,35; break;
+		case  9: warp "job_ko",17,43; break;
+		case 10: warp "job_ko",17,51; break;
+		case 11: warp "job_ko",17,60; break;
+		case 12: warp "job_ko",25,60; break;
+		case 13: warp "job_ko",33,60; break;
+		case 14: warp "job_ko",41,60; break;
+		case 15: warp "job_ko",49,60; break;
+		case 16: warp "job_ko",57,60; break;
+		case 17: warp "job_ko",62,56; break;
+		case 18: warp "job_ko",62,48; break;
+		case 19: warp "job_ko",62,40; break;
+		case 20: warp "job_ko",62,32; break;
+		case 21: warp "job_ko",62,23; break;
+		case 22: warp "job_ko",54,23; break;
+		case 23: warp "job_ko",46,23; break;
+		case 24: warp "job_ko",38,23; break;
+		case 25: warp "job_ko",30,23; break;
+		case 26: warp "job_ko",25,27; break;
+		case 27: warp "job_ko",25,35; break;
+		case 28: warp "job_ko",25,43; break;
+		case 29: warp "job_ko",25,52; break;
+		case 30: warp "job_ko",33,52; break;
+		case 31: warp "job_ko",41,52; break;
+		case 32: warp "job_ko",49,52; break;
+		case 33: warp "job_ko",54,48; break;
+		case 34: warp "job_ko",54,40; break;
+		case 35: warp "job_ko",54,31; break;
+		case 36: warp "job_ko",46,31; break;
+		case 37: warp "job_ko",38,31; break;
+		case 38: warp "job_ko",33,35; break;
+		case 39: warp "job_ko",33,44; break;
+		case 40: warp "job_ko",41,44; break;
+	}
+	end;
+}
+
+//callfunc "F_KO_Survival_dice",<location>{,<LP (default:1)>{,<0:auto-warp (default), 1:do not warp>}}
+//Return: dice value [1..6] ONLY IF arg2 = 1
+function	script	F_KO_Survival_dice	{
+	mes "Location: " + getarg(0);
+	mes "Total LP: " + job_kagero_lp;
+	mes "To roll the dice, you need to consume " + getarg(1,1) + " ^FD0260LP^000000.";
+	next;
+	select("Roll the dice.");
+	if (job_kagero_lp < getarg(1,1)) {
+		mes "Due to insufficient ^FD0260LP^000000, you will be returned to starting position.";
+		callfunc "F_KO_Survival_warp",0;
+		end;
+	}
+	set job_kagero_lp, job_kagero_lp - getarg(1,1);
+	set .@dice, rand(1,6);
+	emotion 57 + .@dice,1;
+	mes "The dice came out as " + .@dice + ".";
+	if (getarg(2,0))
+		return .@dice;
+	else {
+		mes "Press Close to move forward " + .@dice + " blocks.";
+		callfunc "F_KO_Survival_warp", .@dice + getarg(0);
+		end;
+	}
+}
+
+//callfunc "F_KO_Survival_dice2",<location>{,<LP (default:2)>}
+function	script	F_KO_Survival_dice2	{
+	mes "Location: " + getarg(0);
+	mes "Total LP: " + job_kagero_lp;
+	mes "To roll the dice, you need to consume " + getarg(1,2) + " ^FD0260LP^000000.";
+	next;
+	select("Roll the first dice.");
+	if (job_kagero_lp < getarg(1,2)) {
+		mes "Due to insufficient ^FD0260LP^000000, you will be returned to starting position.";
+		callfunc "F_KO_Survival_warp",0;
+		end;
+	}
+	set job_kagero_lp, job_kagero_lp - getarg(1,2);
+	mes "< Used " + getarg(1,2) + " LP >";
+	next;
+	set @job_ko_dice1, rand(1,6);
+	emotion 57 + @job_ko_dice1,1;
+	mes "First dice result is " + @job_ko_dice1 + ". Do you want to roll the second dice?";
+	next;
+	select("Roll the second dice.");
+	set @job_ko_dice2, rand(1,6);
+	emotion 57 + @job_ko_dice2,1;
+	return;
+}
+
+//Return: 1:win, 0:draw, -1:lose
+function	script	F_KO_Survival_rps	{
+	setarray .@rps$[1], "Scissors", "Rock", "Paper";
+	setarray .@emote[1], e_scissors, e_rock, e_paper;  //might be iRO custom(?)
+
+	mes "Rock! Paper! Scissors!";
+	next;
+	set .@pc, select("Give scissors.:Give rock.:Give paper.");
+	set .@npc, rand(1,3);
+	emotion .@emote[.@pc],1;
+	emotion .@emote[.@npc];
+	mes "=Game Results=";
+	mes "Machine: " + .@rps$[.@npc] + ".";
+	mes "You: " + .@rps$[.@pc] + ".";
+	next;
+	if ((.@npc == 1 && .@pc == 2) || (.@npc == 2 && .@pc == 3) || (.@npc == 3 && .@pc == 1)) {
+		mes "You Win";
+		return 1;
+	} else if (.@pc == .@npc) {
+		mes "Draw";
+		return 0;
+	} else if ((.@npc == 1 && .@pc == 3) || (.@npc == 2 && .@pc == 1) || (.@npc == 3 && .@pc == 2)) {
+		mes "You Lose";
+		return -1;
+	} else {
+		mes "An unknown error has occurred.";
+		mes "Please contact customer service.";
+		close;
+	}
+}
+
+// -----------------------------------------------------------
+//  Templates
+// -----------------------------------------------------------
+-	script	Sight#ko_trap	-1,{
+	callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4));
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	switch (atoi(substr(strnpcinfo(2),3,4))) {
+		case  2: set .@id,0; break;
+		case  7: set .@id,5; break;
+		case 11: set .@id,9; break;
+		case 23: set .@id,18; break;
+		case 26: set .@id,20; break;
+		case 30: set .@id,9; break;
+		case 35: set .@id,29; break;
+	}
+	mes "This block has a trap.";
+	mes "Press Close to go back to block " + .@id + ".";
+	callfunc "F_KO_Survival_warp", .@id;
+	end;
+}
+
+-	script	Sight#ko_trap2	-1,{
+	callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4));
+	end;
+OnTouch:
+	set .@id, atoi(substr(strnpcinfo(2),3,4));
+	switch (.@id) {
+		case 10: set .@var$, "$20110808_vko01"; break;
+		case 28: set .@var$, "$20110808_vko03"; break;
+		//case 38: set .@var$, "$20110808_vko04"; break;
+	}
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "If you don't want to be caught, install a trap.";
+	next;
+	if (getd(.@var$) == 0) {
+		mes "There is currently no trap installed.";
+		next;
+		mes "Do you want to use 10 ^FD0260LP^000000 to install a trap?";
+		next;
+		if(select("Install a trap.:Roll the Dice.") == 1) {
+			if (job_kagero_lp > 9) {
+				mes "< Used 10 LP >";
+				set job_kagero_lp, job_kagero_lp - 10;
+				setd .@var$,1;
+				next;
+				mes "The trap is installed. Please roll the dice.";
+				next;
+			} else {
+				mes "< Did not use 10 LP >";
+				mes "^FD0260LP^000000 insufficient! Please roll the dice.";
+				next;
+			}
+		}
+	} else {
+		set job_kagero_lp,0;
+		setd .@var$,0;
+		mes "You are caught in the trap installed.";
+		mes "Press Close to go back to block 0.";
+		callfunc "F_KO_Survival_warp",0;
+		end;
+	}
+	callfunc "F_KO_Survival_dice",.@id;
+	end;
+}
+
+-	script	Sight#ko_heal	-1,{
+	callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4));
+	end;
+OnTouch:
+	set .@id, atoi(substr(strnpcinfo(2),3,4));
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "This block is blessed.";
+	mes "Life Point recovers 7 ^FD0260LP^000000.";
+	mes "Cannot exceed maximum 100 ^FD0260LP^000000.";
+	next;
+	mes "< Recovered " + ((job_kagero_lp + 7 > 100) ? "" : "7") + " LP >";
+	next;
+	set job_kagero_lp, ((job_kagero_lp + 7 > 100) ? 100 : job_kagero_lp + 7);
+	callfunc "F_KO_Survival_dice",.@id;
+	end;
+}
+
+-	script	Sight#ko_curse	-1,{
+	callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4));
+	end;
+OnTouch:
+	set .@id, atoi(substr(strnpcinfo(2),3,4));
+	set .@playtime, checkquest(5141,PLAYTIME);
+	if (.@playtime == -1) {
+		mes "There are tiny letters on the sign.";
+		next;
+		mes "If you do not pay 5 ^FD0260LP^000000, you will be cursed and immobilized for 2 minutes.";
+		next;
+		if(select("Use 5 LP:Do not pay.") == 1) {
+			if (job_kagero_lp > 4) {
+				set job_kagero_lp, job_kagero_lp - 5;
+				mes "<Used 5 LP>";
+				mes "You can roll the dice.";
+				next;
+				callfunc "F_KO_Survival_dice",.@id;
+				end;
+			} else {
+				mes "< Did not use 5 LP >";
+				mes "Could not withstand the curse.";  //custom translation
+				next;
+			}
+		}
+		setquest 5141;
+		mes "You are cursed and cannot move to any other block for 2 minutes.";
+		close;
+	} else if (.@playtime == 0 || .@playtime == 1) {
+		mes "You are cursed and cannot move to any other block for 2 minutes.";
+		close;
+	} else if (.@playtime == 2) {
+		mes "The immobilize curse lasted for 2 minutes and then was removed.";
+		next;
+		erasequest 5141;
+		callfunc "F_KO_Survival_dice",.@id;
+		end;
+	} else {
+		erasequest 5141;
+		mes "An unknown error has occurred.";
+		mes "Please contact customer service.";
+		close;
+	}
+}
+
+-	script	Sight#ko_gravity	-1,{
+	callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4));
+	end;
+OnTouch:
+	set .@id, atoi(substr(strnpcinfo(2),3,4));
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Area cursed with 10 times the normal gravity. You will need 10 ^FD0260LP^000000 to roll the dice.";
+	next;
+	callfunc "F_KO_Survival_dice",.@id,10;
+	end;
+}
+
+// -----------------------------------------------------------
+//  Blocks (00-40)
+// -----------------------------------------------------------
+
+job_ko,57,16,4	script	Sight#ko_00	858,1,1,{
+	callfunc "F_KO_Survival_mes",0;
+	end;
+OnTouch:
+	if (job_kagero != 5) {
+		mes "You should not be here.";  //custom translation
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	if (isbegin_quest(5137) == 1 && isbegin_quest(5140) == 0) {
+		mes "There are tiny letters on the sign.";
+		next;
+		callsub L_Description;
+		setquest 5140;
+		set job_kagero_lp,100;
+		mes "You've gained 100 Life Points (LP).";
+		next;
+	} else {
+		if (checkquest(5141,PLAYTIME) > -1)
+			erasequest 5141;
+		set job_kagero_lp,100;
+		mes "You've returned to the first block. Your LP is recovered.";
+		next;
+		callsub L_Description;
+	}
+	callfunc "F_KO_Survival_dice",0;
+	end;
+
+L_Description:
+	while (1) {
+		if(select("Read the description.:Start the test.") == 2)
+			break;
+		mes "The Test of Survival starts from here and you use ^FD0260100 Life Points (LP)^000000 and roll dice to advance forward through the test.";
+		next;
+		mes "The whole test starts from block 0 to block 40 and each block you get can either give or take your LP.";
+		next;
+		mes "You need to have some ^FD0260LP^000000 till you get to the arrival block at the end to pass the test.";
+		next;
+		mes "But! You still pass the test if your ^FD0260LP^000000 becomes 0 when you get to the arrival block.";
+		next;
+		mes "Game instructions end here. Good luck to you.";
+		next;
+	}
+	return;
+}
+
+job_ko,49,16,4	script	Sight#ko_01	858,1,1,{
+	callfunc "F_KO_Survival_mes",1;
+	end;
+OnTouch:
+	set .@life_p, job_kagero_lp;
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "You are really bad at rolling dice. How can you get a 1 from the start? You can move to block 9 if you pay up 10 LP in this block.";
+	next;
+	if(select("Use 10 LP:Roll the dice.") == 1) {
+		if (job_kagero_lp > 9) {
+			set .@reset_p, .@life_p - 10;
+			set job_kagero_lp, .@reset_p;
+			mes "< Used 10 LP >";
+			mes "Press Close to move to block 9.";
+			callfunc "F_KO_Survival_warp",9;
+			end;
+		} else {
+			mes "< Did not use 10 LP >";
+			mes "^FD0260LP^000000 insufficient!";
+			next;
+		}
+	}
+	mes "Roll the dice.";
+	next;
+	callfunc "F_KO_Survival_dice",1;
+	end;
+}
+
+job_ko,41,16,4	duplicate(Sight#ko_trap)	Sight#ko_02	858,1,1
+
+job_ko,33,16,4	script	Sight#ko_03	858,1,1,{
+	callfunc "F_KO_Survival_mes",3;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Used 5 LP so you will have to resist the curse passed down through generations before moving forward.";
+	next;
+	select("Use 5 LP");
+	if (job_kagero_lp > 4) {
+		mes "< Used 5 LP >";
+		set job_kagero_lp, job_kagero_lp - 5;
+		callfunc "F_KO_Survival_dice",3;
+	} else {
+		mes "< Did not use 5 LP >";
+		mes "^FD0260LP^000000 insufficient! Returning to start location.";
+		callfunc "F_KO_Survival_warp",0;
+	}
+	end;
+}
+
+job_ko,25,16,4	script	Sight#ko_04	858,1,1,{
+	callfunc "F_KO_Survival_mes",4;
+	end;
+OnTouch:
+	mes "There are tiny letters scribbled on the sign.";
+	next;
+	if ($20110808_sko01$ != "") {
+		mes "^0000FF" + $20110808_sko01$ +" was here.^000000";
+		next;
+	}
+	mes "Should I leave my name since taking the test is a special occasion?";
+	next;
+	if(select("Use 5 LP and leave your name.:Continue to roll the dice.") == 1) {
+		if (job_kagero_lp > 4) {
+			mes "< Used 5 LP >";
+			set job_kagero_lp, job_kagero_lp - 5;
+			next;
+			set $20110808_sko01$, strcharinfo(0);
+			mes strcharinfo(0)+" was here.";
+			mes "You left your name.";
+			next;
+		} else {
+			mes "< Did not use 5 LP >";
+			mes "^FD0260LP^000000 insufficient! You can roll the dice.";
+			next;
+		}
+	}
+	callfunc "F_KO_Survival_dice",4;
+	end;
+}
+
+job_ko,17,16,4	duplicate(Sight#ko_curse)	Sight#ko_05	858,1,1
+
+job_ko,17,24,4	duplicate(Sight#ko_heal)	Sight#ko_06	858,1,1
+
+job_ko,17,32,4	duplicate(Sight#ko_trap)	Sight#ko_07	858,1,1
+
+job_ko,17,40,4	script	Sight#ko_08	858,1,1,{
+	callfunc "F_KO_Survival_mes",8;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Rock-paper-scissors Machine:";
+	mes "If you win, move to block 15.";
+	mes "If it is a draw, roll the dice.";
+	mes "If you lose, move to block 0.";
+	next;
+	switch (callfunc("F_KO_Survival_rps")) {
+	case 1:
+		mes "Press Close to move to block 15.";
+		callfunc "F_KO_Survival_warp",15;
+		end;
+	case 0:
+		mes "A tie, so roll the dice!";
+		next;
+		callfunc "F_KO_Survival_dice",8;
+		end;
+	case -1:
+		mes "Press Close to move to block 0.";
+		callfunc "F_KO_Survival_warp",0;
+		end;
+	}
+}
+
+job_ko,17,48,4	script	Sight#ko_09	858,1,1,{
+	callfunc "F_KO_Survival_mes",9;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Please proceed.";
+	next;
+	callfunc "F_KO_Survival_dice",9;
+	end;
+}
+
+job_ko,17,56,4	duplicate(Sight#ko_trap2)	Sight#ko_10	858,1,1
+
+job_ko,22,60,4	duplicate(Sight#ko_trap)	Sight#ko_11	858,1,1
+
+job_ko,30,60,4	script	Sight#ko_12	858,1,1,{
+	callfunc "F_KO_Survival_mes",12;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Rock-paper-scissors Machine:";
+	mes "If you win, move to block 20.";
+	mes "If it is a draw, roll the dice.";
+	mes "If you lose, move to block 9.";
+	next;
+	switch (callfunc("F_KO_Survival_rps")) {
+	case 1:
+		mes "Press Close to move to block 20.";
+		callfunc "F_KO_Survival_warp",20;
+		end;
+	case 0:
+		mes "A tie, so roll the dice!";
+		next;
+		callfunc "F_KO_Survival_dice",12;
+		end;
+	case -1:
+		mes "Press Close to move to block 9.";
+		callfunc "F_KO_Survival_warp",9;
+		end;
+	}
+}
+
+job_ko,38,60,4	duplicate(Sight#ko_heal)	Sight#ko_13	858,1,1
+
+job_ko,46,60,4	duplicate(Sight#ko_curse)	Sight#ko_14	858,1,1
+
+job_ko,54,60,4	script	Sight#ko_15	858,1,1,{
+	callfunc "F_KO_Survival_mes",15;
+	end;
+OnTouch:
+	set .@playtime, checkquest(5141,PLAYTIME);
+	if (.@playtime == -1) {
+		mes "There are tiny letters on the sign.";
+		next;
+		mes "You will be cursed by a powerful gravity curse that immobilizes you for 2 minutes.";
+		setquest 5141;
+		close;
+	} else if (.@playtime == 0 || .@playtime == 1) {
+		mes "You are cursed and cannot move to any other block for 2 minutes.";
+		close;
+	} else if (.@playtime == 2) {
+		mes "The immobilize curse lasted for 2 minutes and then was removed.";
+		next;
+		erasequest 5141;
+		callfunc "F_KO_Survival_dice",15;
+		end;
+	} else {
+		erasequest 5141;
+		mes "An unknown error has occurred.";
+		mes "Please contact customer service.";
+		close;
+	}
+}
+
+job_ko,62,60,4	script	Sight#ko_16	858,1,1,{
+	callfunc "F_KO_Survival_mes",16;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Consume 2 ^FD0260LP^000000 and roll the dice twice.";
+	mes "If you get the same number then you can move to block 30, if the numbers are different, consume 2 LP to roll again... until you get the same numbers.";
+	next;
+	while (1) {
+		callfunc "F_KO_Survival_dice2",16;
+		if (@job_ko_dice1 == @job_ko_dice2) break;
+		else {
+			mes "Second dice result is " + @job_ko_dice2 + ", which is not the same number.";  //custom translation
+			next;
+		}
+	}
+	set @job_ko_dice1,0;
+	set @job_ko_dice2,0;
+	//mes "Second dice result is " + @job_ko_dice2 + ", which is the same number. Press Close to move block 30.";
+	mes "You got the same number. Press Close to move block 30.";
+	callfunc "F_KO_Survival_warp",30;
+	end;
+}
+
+job_ko,62,51,4	duplicate(Sight#ko_gravity)	Sight#ko_17	858,1,1
+
+job_ko,62,43,4	script	Sight#ko_18	858,1,1,{
+	callfunc "F_KO_Survival_mes",18;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Consume 2 ^FD0260LP^000000 and roll the dice twice.";
+	next;
+	mes "If the sum of the numbers from both dice is lower than 5, move to block 30, if it higher than 5, move to block 19.";
+	next;
+	callfunc "F_KO_Survival_dice2",18;
+	mes "Second dice result is " + @job_ko_dice2 + ".";
+	next;
+	set .@dice_sum, @job_ko_dice1 + @job_ko_dice2;
+	mes @job_ko_dice1 + " + " + @job_ko_dice2 + " = " + .@dice_sum;
+	set @job_ko_dice1,0;
+	set @job_ko_dice2,0;
+	if (.@dice_sum < 5) {
+		mes "You total is lower than 5. Press Close to move to block 30.";
+		callfunc "F_KO_Survival_warp",30;
+		end;
+	} else {
+		mes "You total is larger than 5. Press Close to move to block 19.";
+		callfunc "F_KO_Survival_warp",19;
+		end;
+	}
+}
+
+job_ko,62,35,4	script	Sight#ko_19	858,1,1,{
+	callfunc "F_KO_Survival_mes",19;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Move forward.";
+	next;
+	callfunc "F_KO_Survival_dice",19;
+	end;
+}
+
+job_ko,62,27,4	duplicate(Sight#ko_heal)	Sight#ko_20	858,1,1
+
+job_ko,57,23,4	duplicate(Sight#ko_gravity)	Sight#ko_21	858,1,1
+
+job_ko,49,23,4	script	Sight#ko_22	858,1,1,{
+	callfunc "F_KO_Survival_mes",22;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Leave all your remaining ^FD0260LP^000000 and go back to block 0, then the next person will be redeemed.";
+	next;
+	if ($20110808_vko02 == 0) {
+		mes "Do you want to leave your ^FD0260LP^000000?";
+		mes "If you leave your ^FD0260LP^000000 then the next person for test that arrives at the block will automatically pass the test.";
+		next;
+		if(select("Leave all your LP.:Continue to roll the dice.") == 1) {
+			set job_kagero_lp,0;
+			set $20110808_vko02,1;
+			mes "Leave all remaining ^FD0260LP^000000 here. Press Close and go back to block 0.";
+			callfunc "F_KO_Survival_warp",0;
+			end;
+		}
+	} else if ($20110808_vko02 == 1) {
+		set $20110808_vko02,0;
+		mes "Someone before you sacrificed all their ^FD0260LP^000000, so press Close and go to the last block."; //custom translation
+		callfunc "F_KO_Survival_warp",40;
+		end;
+	} else {
+		mes "An unknown error has occurred.";
+		mes "Please contact customer service.";
+		close;
+	}
+	callfunc "F_KO_Survival_dice",22;
+	end;
+}
+
+job_ko,41,23,4	duplicate(Sight#ko_trap)	Sight#ko_23	858,1,1
+
+job_ko,33,23,4	script	Sight#ko_24	858,1,1,{
+	callfunc "F_KO_Survival_mes",24;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Consume 2 ^FD0260LP^000000 and roll the dice twice.";
+	next;
+	mes "If the sum of the numbers from both dice is larger than 8, then you can move to any block between 25 to 30. But! If the sum is below 8, you must move back to block 19.";
+	next;
+	callfunc "F_KO_Survival_dice2",24;
+	mes "Second dice result is " + @job_ko_dice2 + ".";
+	next;
+	set .@dice_sum, @job_ko_dice1 + @job_ko_dice2;
+	if (.@dice_sum > 8) {
+		mes @job_ko_dice1 + " + " + @job_ko_dice2 + " = " + .@dice_sum;
+		set @job_ko_dice1,0;
+		set @job_ko_dice2,0;
+		mes "You total is larger than 8. Please choose a block to move between blocks 25 through 30.";
+		callfunc "F_KO_Survival_warp", select("Move to block 25:Move to block 26:Move to block 27:Move to block 28:Move to block 29:Move to block 30") + 24;
+		end;
+	} else {
+		set @job_ko_dice1,0;
+		set @job_ko_dice2,0;
+		mes "You total is lower than 8. Press Close to move to block 19.";
+		callfunc "F_KO_Survival_warp",19;
+		end;
+	}
+}
+
+job_ko,25,23,4	script	Sight#ko_25	858,1,1,{
+	callfunc "F_KO_Survival_mes",25;
+	end;
+OnTouch:
+	set .@playtime, checkquest(5141,PLAYTIME);
+	if (.@playtime == -1) {
+		mes "There are tiny letters on the sign.";
+		next;
+		mes "This is lame.";
+		mes "Cannot read the writing. There should be a way to read it.";
+		next;
+		switch(select("Try something.:Do nothing.")) {
+		case 1:
+			specialeffect2 EF_TALK_FROSTJOKE;
+			mes "Tried a recent Prontera joke to do something.";
+			next;
+			setquest 5141;
+			mes "Got cursed and became immobilized for 2 minutes.";
+			close;
+		case 2:
+			if (rand(1,10) == 4) {
+				mes "Its a wise decision to do nothing.";
+				next;
+			} else {
+				mes "Nothing happened. Still need to do something.";
+				close;
+			}
+			break;
+		}
+	} else if (.@playtime == 0 || .@playtime == 1) {
+		mes "Cannot move because you are cursed.";
+		close;
+	} else if (.@playtime == 2) {
+		mes "The immobilize curse lasted for 2 minutes and then was removed.";
+		next;
+		erasequest 5141;
+	} else {
+		erasequest 5141;
+		mes "An unknown error has occurred.";
+		mes "Please contact customer service.";
+		close;
+	}
+	callfunc "F_KO_Survival_dice",25;
+	end;
+}
+
+job_ko,25,32,4	duplicate(Sight#ko_trap)	Sight#ko_26	858,1,1
+
+job_ko,25,40,4	duplicate(Sight#ko_heal)	Sight#ko_27	858,1,1
+
+job_ko,25,48,4	duplicate(Sight#ko_trap2)	Sight#ko_28	858,1,1
+
+job_ko,30,52,4	script	Sight#ko_29	858,1,1,{
+	callfunc "F_KO_Survival_mes",29;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Go forth.";
+	next;
+	callfunc "F_KO_Survival_dice",29;
+	end;
+}
+
+job_ko,38,52,4	duplicate(Sight#ko_trap)	Sight#ko_30	858,1,1
+
+job_ko,46,52,4	duplicate(Sight#ko_curse)	Sight#ko_31	858,1,1
+
+job_ko,54,52,4	script	Sight#ko_32	858,1,1,{
+	callfunc "F_KO_Survival_mes",32;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Rock-paper-scissors Machine:";
+	mes "If you win, you get to move to any block between 33 to 38; if you lose or is a draw, you have to move to block 0.";
+	next;
+	switch (callfunc("F_KO_Survival_rps")) {
+	case 1:
+		mes "Please choose a block to move between blocks 33 through 38.";
+		next;
+		callfunc "F_KO_Survival_warp", select("Move to block 33:Move to block 34:Move to block 35:Move to block 36:Move to block 37:Move to block 38") + 32;
+		end;
+	case 0:
+	case -1:
+		mes "Press Close to move to block 0.";
+		callfunc "F_KO_Survival_warp",0;
+		end;
+	}
+}
+
+job_ko,54,43,4	script	Sight#ko_33	858,1,1,{
+	callfunc "F_KO_Survival_mes",33;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "You can move to block 39 if you pay all points except for the last 1 ^FD0260LP^000000 to roll the dice one last time.";
+	next;
+	switch(select("Pay LP.:Move forward a little bit at a time.")) {
+	case 1:
+		set .@sell_p, job_kagero_lp - 1;
+		set job_kagero_lp,1;
+		mes "< Used " + .@sell_p + " LP >";
+		next;
+		mes "Press Close to move to block 39.";
+		callfunc "F_KO_Survival_warp",39;
+		end;
+	case 2:
+		mes "Please roll the dice.";
+		next;
+		break;
+	}
+	callfunc "F_KO_Survival_dice",33;
+	end;
+}
+
+job_ko,54,35,4	duplicate(Sight#ko_heal)	Sight#ko_34	858,1,1
+
+job_ko,49,31,4	duplicate(Sight#ko_trap)	Sight#ko_35	858,1,1
+
+job_ko,41,31,4	script	Sight#ko_36	858,1,1,{
+	callfunc "F_KO_Survival_mes",36;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "There are only 4 blocks left till the last block.";
+	next;
+	mes "Rule 1 (Normal Dice Roll)"; //iRO custom dialogue(?)
+	mes "You get to pass if you get 4 or above but nobody knows what will come from a dice roll.";
+	next;
+	mes "Rule 2"; //iRO custom dialogue(?)
+	mes "If you get 1, 2, or 3 you move right to the arrival point; if you get 4, 5, or 6 you get to choose to move to block 29.";
+	next;
+	switch(select("Try it the other way.:Go by the rules.")) {
+	case 1:
+		//mes "The Other Way (2nd Rule)"; //iRO custom dialogue(?)
+		set .@dodoripo,0;
+		break;
+	case 2:
+		set .@dodoripo,1;
+		break;
+	}
+	set .@dice, callfunc("F_KO_Survival_dice",36,1,1);
+	if (.@dodoripo == 0) {
+		if (.@dice <= 3) {
+			mes "Press Close to move to the end.";
+			callfunc "F_KO_Survival_warp",40;
+			end;
+		} else {
+			mes "Press Close to move to block 29.";
+			callfunc "F_KO_Survival_warp",29;
+			end;
+		}
+	} else {
+		mes "Press Close to move to forward " + .@dice + " blocks.";
+		callfunc "F_KO_Survival_warp", ((.@dice <= 3) ? .@dice + 36 : 40);
+		end;
+	}
+}
+
+job_ko,33,31,4	script	Sight#ko_37	858,1,1,{
+	callfunc "F_KO_Survival_mes",37;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "There are only 3 blocks left to the finish line but you can't you go so easily.";
+	next;
+	mes "If you get 1, 3, or 5, move to the arrival point; if you get 2, 4, or 6, go back to the starting point.";
+	next;
+	set .@dice, callfunc("F_KO_Survival_dice",37,1,1);
+	if (.@dice % 2) {
+		mes "Press Close to move to the last block.";
+		callfunc "F_KO_Survival_warp",40;
+		end;
+	} else {
+		mes "Press Close to move to the starting point.";
+		callfunc "F_KO_Survival_warp",0;
+		end;
+	}
+}
+
+job_ko,33,40,4	script	Sight#ko_38	858,1,1,{
+	callfunc "F_KO_Survival_mes",38;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Leave 1 LP and invest the remaining LP to install the trap to bring down other players!";
+	next;
+	if ($20110808_vko04 == 0) {
+		mes "There is currently no trap installed. Do you want to install a trap?";
+		next;
+		switch(select("Install a trap.:Do not install.")) {
+		case 1:
+			set .@reset_p, job_kagero_lp - 1;
+			set job_kagero_lp,1;
+			set $20110808_vko04,1;
+			mes "< Used " + .@reset_p + " LP >";
+			next;
+			mes "The trap is installed. Please roll the dice.";
+			next;
+			break;
+		case 2:
+			mes "Did not set a trap. Please roll the dice.";
+			next;
+			break;
+		}
+	} else {
+		set $20110808_vko04,0;
+		set job_kagero_lp,0;
+		mes "You are caught in the trap installed. Press Close to go back to block 0.";
+		callfunc "F_KO_Survival_warp",0;
+		end;
+	}
+	set .@dice, callfunc("F_KO_Survival_dice",38,1,1);
+	mes "Press Close to move forward " + .@dice + " blocks.";
+	callfunc "F_KO_Survival_warp", ((.@dice == 1) ? .@dice + 38 : 40);
+	end;
+}
+
+job_ko,38,44,4	script	Sight#ko_39	858,1,1,{
+	callfunc "F_KO_Survival_mes",39;
+	end;
+OnTouch:
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "Now there is only 1 block left till the end. Congratulations on all you've been through to get here.";
+	next;
+	mes "But you cannot go so easily. If you get a 3, you will go back to block 3.";
+	next;
+	set .@dice, callfunc("F_KO_Survival_dice",39,1,1);
+	if (.@dice == 3) {
+		mes "Press Close to move to the 3rd block.";
+		callfunc "F_KO_Survival_warp",3;
+		end;
+	} else {
+		mes "Press Close to move to the arrival point.";
+		callfunc "F_KO_Survival_warp",40;
+		end;
+	}
+}
+
+job_ko,46,41,4	script	Sight#ko_40	858,1,1,{
+	callfunc "F_KO_Survival_mes",40;
+	end;
+OnTouch:
+	if (job_kagero != 5) {
+		mes "You should not be here.";  //custom translation
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	if (isbegin_quest(5137) != 1 || isbegin_quest(5140) != 1) {
+		mes "You must be here by mistake.";  //custom translation
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	mes "There are tiny letters on the sign.";
+	next;
+	mes "To those you are preparing for a new turn...";
+	mes "Well begun is half done. However always remember it is not the end.";
+	next;
+	completequest 5137;
+	erasequest 5140;
+	if (isbegin_quest(5141)) erasequest 5141;
+	set job_kagero_lp,0;
+	mes "Let's read all the writing on the sign.";
+	mes "You feel like you are moved to another place.";
+	close2;
+	warp "job_ko",35,113;
+	end;
+}
+
+// Test of Weaponry
+//============================================================
+job_ko,127,125,4	script	Red Leopard Joe#ko	730,{
+	if (MaxWeight - Weight < 1000 || checkweight(1201,1) == 0) {
+		mes "[Red Leopard Joe]";
+		mes "Go reduce your weight! This test will be too difficult otherwise...";  //custom translation
+		close;
+	}
+	if (BaseJob != Job_Ninja) {
+		for (set .@i,5131; .@i<=5146; set .@i,.@i+1)
+			if (isbegin_quest(.@i)) erasequest .@i;
+		set job_kagero,0;
+		mes "[Red Leopard Joe]";
+		mes "Sorry, your family is not the same as ours, is there something wrong?";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	if (job_kagero != 5) {  //custom translation
+		mes "[Red Leopard Joe]";
+		mes "You are not supposed to be here...";
+		mes "It's my duty to get rid of you,";
+		mes "so I'll send you back now!";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	set .@ko_test_03_1, isbegin_quest(5138);
+	set .@ko_test_03_2, isbegin_quest(5142);
+	set .@ko_test_03_3, isbegin_quest(5143);
+	set .@ko_test_03_4, isbegin_quest(5144);
+	set .@ko_test_03_5, isbegin_quest(5145);
+	if (.@ko_test_03_1 == 1 && .@ko_test_03_2 == 0 && .@ko_test_03_3 == 0 && .@ko_test_03_4 == 0 && .@ko_test_03_5 == 0) {
+		mes "[Red Leopard Joe]";
+		mes "It's been a while!";
+		next;
+		select("Long time indeed, Joe.");
+		mes "[Red Leopard Joe]";
+		mes "You aren't surprised I'm here. Did you meet ^0237FDCougar^000000 before coming here?";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Don't like it that I'm not the first one you visited but that is not important.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Alright, " + strcharinfo(0) + "!";
+		mes "Welcome to the workshop where weapons are created for the family.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Our family has been creating and using unique weapons to serve our secret missions since ancient times.";
+		next;
+		select("Really? At Einbroch?");
+		mes "[Red Leopard Joe]";
+		mes "Hmm? You are not as slow as I thought you were!";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Yes. Einbroch is known as an industrial city, the city of great blacksmiths create new technology.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "My mission is to analyze their technology and report back to the family.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "I spoke more than I intended to.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Did you bring enough ^6848B7Iron Ore, Iron, Steel, Phracon, Emveretaron, Rough Oridecon, and Rough Elunium^000000?";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Let's now create a new prototype weapon.";
+		next;
+		specialeffect EF_GUIDEDATTACK,AREA,"Crafting Tools#ko_01";
+		mes "[Red Leopard Joe]";
+		mes "Feel free to use tools from here, and...";
+		next;
+		specialeffect EF_GUIDEDATTACK,AREA,"Crafting Tools#ko_02";
+		mes "[Red Leopard Joe]";
+		mes "...there...";
+		next;
+		specialeffect EF_GUIDEDATTACK,AREA,"Crafting Tools#ko_03";
+		setquest 5142;
+		mes "[Red Leopard Joe]";
+		mes "...and everywhere else. Now let's begin!!";
+		close;
+	} else if (.@ko_test_03_1 == 1 && .@ko_test_03_2 == 1 && .@ko_test_03_3 == 0 && .@ko_test_03_4 == 0 && .@ko_test_03_5 == 0) {
+		callsub L_Weapon,":";
+		end;
+	} else if (.@ko_test_03_1 == 1 && .@ko_test_03_2 == 0 && (.@ko_test_03_3 == 1 || .@ko_test_03_4 == 1) && .@ko_test_03_5 == 0) {
+		callsub L_Weapon,":Yes, I'm done.";
+		if (countitem(13074)) {
+			mes "[Red Leopard Joe]";
+			mes "Hmm... Interesting... Is it a dagger in a shape of a Kunai?";
+			next;
+			mes "[Red Leopard Joe]";
+		} else if (countitem(13312)) {
+			mes "[Red Leopard Joe]";
+			mes "Hmm... Is this an Ordinary Huuma?";
+			next;
+			mes "[Red Leopard Joe]";
+			mes "Ahh, Its not an Ordinary Huuma.";
+		} else {
+			mes "[Red Leopard Joe]";
+			mes "Ahh, how is it possible? You don't have weapons? Maybe you equipped it?";
+			close;
+		}
+		mes "Very creative. I do see room for improvement but the weapon itself may come out useful after smoothing it out a bit.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Good. I think you are ready.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Now it's time to upgrade?";
+		mes "There are refinement tools on both sides of me. Use those to refine a weapon and come back.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "I created the refinement tools myself with great effort so you won't have any trouble using them.";
+		next;
+		setquest 5145;
+		mes "[Red Leopard Joe]";
+		mes "Ah... But just in case,";
+		mes "^FF0000be careful not to cause trouble by showing these to blacksmiths outside of here.^000000";
+		close;
+	} else if (.@ko_test_03_1 == 1 && .@ko_test_03_2 == 0 && (.@ko_test_03_3 == 1 || .@ko_test_03_4 == 1) && .@ko_test_03_5 == 1) {
+		disable_items;
+		mes "[Red Leopard Joe]";
+		mes "Did you get a successful result?";
+		next;
+		switch(select("Not yet.:Here it is.:Actually...")) {
+		case 1:
+			mes "[Red Leopard Joe]";
+			mes "It isn't easy to get a satisfactory result at first.";
+			close;
+		case 2:
+			break;
+		case 3:
+			mes "[Red Leopard Joe]";
+			mes "You've lost the weapon even with my warning.";
+			next;
+			mes "[Red Leopard Joe]";
+			mes "Nothing else we can do. Wait!";
+			next;
+			mes "Red Leopard Joe mumbles something and suddenly all weapons are unequipped.";
+			next;
+			nude;
+			if (countitem(13074) || countitem(13312)) {
+				mes "[Red Leopard Joe]";
+				mes "What is this? You still have the prototype. Stop playing around.";
+				close;
+			}
+			mes "[Red Leopard Joe]";
+			mes "Oh! You really lost it.";
+			next;
+			setquest 5142;
+			if (isbegin_quest(5143)) erasequest 5143;
+			if (isbegin_quest(5144)) erasequest 5144;
+			erasequest 5145;
+			mes "[Red Leopard Joe]";
+			mes "Well! Lets try to make it again!";
+			close;
+		}
+		mes "[Red Leopard Joe]";
+		mes "Looks like you've got some results.";
+		next;
+		set .@part, EQI_HAND_R;
+		if (!getequipisequiped(.@part)) {
+			mes "[Red Leopard Joe]";
+			mes "Ahh! You have not equipped any weapons!";
+			close;
+		} else {
+			set .@equip_id, getequipid(.@part);
+			if (.@equip_id == 13074 || .@equip_id == 13312) {
+				mes "[Red Leopard Joe]";
+				mes "Is that weapon yours? Let me have a look.";
+				next;
+			} else {  //custom translation
+				mes "[Red Leopard Joe]";
+				mes "Are you certain it's that weapon?";
+				next;
+				mes "[Red Leopard Joe]";
+				mes "You plan to trick me with that? Again!!";
+				close;
+			}
+		}
+		mes "Joe took a thorough look at the seal.";
+		next;
+		set .@equip_refine, getequiprefinerycnt(.@part);
+		if (.@equip_refine < 7) {
+			mes "[Red Leopard Joe]";
+			mes "Are you that low?";
+			mes "I must have misjudged you. You might have been satisfied yourself but I'm not. Do it again!!";
+			close;
+		} else if (.@equip_refine > 6 && .@equip_refine < 9) {
+			mes "[Red Leopard Joe]";
+			mes "Hmm... Is this your limit?";
+			mes "You've just made it that close to passing. I will ask one more time, are you satisfied?";
+			next;
+			if(select("Yes:No") == 2) {
+				mes "[Red Leopard Joe]";
+				mes "You're still here. Why?";
+				close;
+			}
+			mes "[Red Leopard Joe]";
+			mes "Your competence is enough.";
+			next;
+		} else if (.@equip_refine > 8 && .@equip_refine < 13) {  //custom translation(?)
+			mes "[Red Leopard Joe]";
+			mes "Ah, as I expected.";
+			mes "I still believe that you will not stop here.";
+			next;
+			if(select("I want to stop.:I want to continue.") == 2) {
+				mes "[Red Leopard Joe]";
+				mes "I will look forward for your result.";
+				close;
+			}
+			mes "[Red Leopard Joe]";
+			mes "Your competence is enough.";
+			next;
+		} else {  //custom translation(?)
+			mes "[Red Leopard Joe]";
+			mes "Better than expected.";
+			next;
+			mes "[Red Leopard Joe]";
+			mes "For beginners, quite good. This test may not be significant to you, but your competence is enough.";
+			next;
+		}
+		mes "[Red Leopard Joe]";
+		mes "I can feel it.";
+		mes "I will take this weapon to give it some finishing touches.";
+		next;
+		delequip .@part;
+		erasequest 5145;
+		completequest 5138;
+		if (isbegin_quest(5143) == 1) completequest 5143;
+		if (isbegin_quest(5144) == 1) completequest 5144;
+		mes "[Red Leopard Joe]";
+		mes "'" + strcharinfo(0) + "'";
+		mes "Passed the weapon test!!";
+		close2;
+		enable_items;
+		end;
+	} else if (.@ko_test_03_1 == 2 && .@ko_test_03_2 == 0 && (.@ko_test_03_3 == 2 || .@ko_test_03_4 == 2) && .@ko_test_03_5 == 0) {
+		mes "[Red Leopard Joe]";
+		mes "Oh, I almost forgot.";
+		mes "Go report the test results to Gion!";
+		close2;
+		warp "job_ko",26,104;
+		end;
+	} else {  //custom translation
+		mes "[Red Leopard Joe]";
+		mes "You should not have come here...";
+		mes "It's my duty to get rid of you.";
+		mes "This will push you back!";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	end;
+
+L_Weapon:
+	mes "[Red Leopard Joe]";
+	mes "Are you done making the prototype of the new weapons?";
+	next;
+	switch(select("Crafting tools?:I don't have enough materials.:How do you expect me to make a weapon?" + getarg(0))) {
+	case 1:
+		specialeffect EF_GUIDEDATTACK,AREA,"Crafting Tools#ko_01";
+		mes "[Red Leopard Joe]";
+		mes "Feel free to use tools from here, and...";
+		next;
+		specialeffect EF_GUIDEDATTACK,AREA,"Crafting Tools#ko_02";
+		mes "[Red Leopard Joe]";
+		mes "...there...";
+		next;
+		specialeffect EF_GUIDEDATTACK,AREA,"Crafting Tools#ko_03";
+		mes "[Red Leopard Joe]";
+		mes "...and everywhere else.";
+		close;
+	case 2:
+		mes "[Red Leopard Joe]";
+		mes "You haven't brought enough materials?";
+		next;
+		specialeffect EF_GUIDEDATTACK,AREA,"Drawer#ko";
+		mes "[Red Leopard Joe]";
+		mes "Then we'll have to pay a visit to the village. Try the ^FF0000drawer^000000 over there. It'll take you to the village.";
+		close;
+	case 3:
+		mes "[Red Leopard Joe]";
+		mes "Hmm... Guess I expected too much? Let me explain.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "You first have to melt the ore to use for the weapon. And the best way to get high purity metal is to melt materials that are of the same kind.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "For example, Iron Ore, Iron, and Steel are of similar property so you can get a high purity metal out of them.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Once you've melted a high purity metal, pour it in a mold to get the shape of the weapon and then make it firm through grinding and tempering.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "By the way, you will get the best results by thoroughly rotating, grinding and tempering.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "I think this is enough to get you started, don't you think? Now go and work on that prototype!!";
+		close;
+	case 4:
+		return;
+	}
+}
+
+job_ko,117,128,0	script	Drawer#ko	844,{
+	mes "There is some kind of device on the drawer.";
+	next;
+	if(select("Stop.:Try to operate it.") == 2) {
+		mes "Clank clunk clink";
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+	close;
+}
+
+job_ko,131,124,0	script	Crafting Tools#ko_01	844,{
+	if (MaxWeight - Weight < 1000 || checkweight(1201,1) == 0) {
+		mes "Too heavy! Please reduce your weight.";  //custom translation
+		close;
+	}
+	if (isbegin_quest(5138) == 1 && isbegin_quest(5142) == 1 && isbegin_quest(5143) == 0 && isbegin_quest(5144) == 0 && isbegin_quest(5145) == 0) {
+		// fall through
+	} else {
+		mes "A crafting tool.";
+		mes "Don't really need it now.";
+		close;
+	}
+	mes "Tool to create weapons.";
+	next;
+
+	// Part 1: Melting Metal
+	// Input similar materials to proceed to next step.
+	mes "First need to melt metals like iron and iron ore to use to create a weapon.";
+	next;
+	callsub L_CheckMaterials;
+	while(1) {
+		switch(select("Melt Iron Ore.:Melt Iron.:Melt Steel.:Melt Phracon.:Melt Emveretarcon.:Melt Rough Oridecon.:Melt Rough Elunium.:Stop.")) {
+			case 1: set .@item,1002; set .@val1,1; break;  //Iron_Ore
+			case 2: set .@item, 998; set .@val1,2; break;  //Iron
+			case 3: set .@item, 999; set .@val1,3; break;  //Steel
+			case 4: set .@item,1010; set .@val2,1; break;  //Phracon
+			case 5: set .@item,1011; set .@val2,2; break;  //Emveretarcon
+			case 6: set .@item, 756; set .@val2,3; break;  //Oridecon_Stone
+			case 7: set .@item, 757; set .@val3,5; break;  //Elunium_Stone
+			case 8: close;
+		}
+		if (countitem(.@item)) {
+			delitem .@item,1;
+			if (.@val1) {         //Iron Ore, Iron, Steel
+				set .@ston_t01, .@ston_t01 + .@val1;
+				if (.@ston_t02 > 0)
+					set .@ston_t02, .@ston_t02 - .@val1;
+			} else if (.@val2) {  //Phracon, Emveretarcon, Rough Oridecon
+				set .@ston_t02, .@ston_t02 + .@val2;
+				if (.@ston_t01 > 0)
+					set .@ston_t01, .@ston_t01 - .@val2;
+			} else if (.@val3) {  //Rouch Elunium
+				if (.@ston_t01 > 0)
+					set .@ston_t01, .@ston_t01 - .@val3;
+				if (.@ston_t02 > 0)
+					set .@ston_t02, .@ston_t02 - .@val3;
+			}
+			specialeffect EF_DEMONSTRATION;
+			mes "Melted " + getitemname(.@item) + " in high temperature.";
+			next;
+			if (.@ston_t01 > 49 || .@ston_t02 > 49)
+				break;
+		} else {
+			mes "Don't have " + getitemname(.@item) + ".";
+			next;
+		}
+		callsub L_CheckMaterials;
+		mes "Which metal will be melted next?";
+		next;
+	}
+	set .@boll_01, ((.@ston_t01 > 49) ? .@ston_t01 : .@ston_t02);
+
+	// Part 2: Forging
+	// Grind and temper a weapon.
+	mes "Now the metal is melted to use for creating weapons.";
+	next;
+	mes "Next is to make the melted metal firm by pouring it into a mold. Which mold shape will you use?";
+	next;
+	switch(select("Dagger Mold:Shuriken Mold")) {
+	case 1:
+		set .@weapon_who,0;
+		mes "Poured the melted metal into the dagger mold.";
+		break;
+	case 2:
+		set .@weapon_who,1;
+		mes "Poured the melted metal into the shuriken mold.";
+		break;
+	}
+	next;
+	progressbar "ffff00",3;
+	mes "Looks like the metal is taking shape. Now what next?";
+	next;
+	set @job_ko_forge,0;
+	set @job_ko_lastaction,0;
+	callsub L_ForgeWeapon,":";
+	while(1) {
+		mes "Now what next?";
+		next;
+		if (callsub(L_ForgeWeapon,":Final Touches") == 0)
+			break;
+	}
+	set .@boll_02, @job_ko_forge;
+	set @job_ko_forge,0;
+	set @job_ko_lastaction,0;
+
+	// Part 3: Create the Weapon
+	// Success rate based on previous two parts.
+	set .@boll_00, .@boll_01 + .@boll_02;
+	mes "Start to sharpen the tool using a whetstone for finishing touches.";
+	next;
+	progressbar "ffff00",3;
+	set .@success_pp, rand(1,100);
+	if (.@boll_00 < 100) {
+		if (.@success_pp == 77) set .@success,1;
+	} else {
+		if (.@success_pp != 44) set .@success,1;
+	}
+	if (.@success) {
+		specialeffect2 EF_PERFECTION;
+		erasequest 5142;
+		if (.@weapon_who == 0) {
+			setquest 5143;
+			getitem 13074,1; //Ninja_Cutter
+		} else {
+			setquest 5144;
+			getitem 13312,1; //Huuma_Job_Test
+		}
+		mes "The weapon was created successfully.";
+		next;
+		mes "Let's take it to Red Leopard Joe.";
+		close;
+	} else {
+		specialeffect2 EF_SUI_EXPLOSION;
+		mes "The weapon was destroyed while doing the finishing touches to it.";
+		next;
+		mes "There must have been something missed while creating the weapon. Very sad this happened but you'll have to start all over again.";
+		close;
+	}
+	end;
+
+L_CheckMaterials:
+	if (!countitem(1002) && !countitem(998) && !countitem(999) && !countitem(1010) && !countitem(1011) && !countitem(756) && !countitem(757)) {
+		mes "But you do not have any more metal to melt. Let's try again after getting more metal.";
+		close;
+	}
+	return;
+
+L_ForgeWeapon:
+	set .@i, select("Grind the weapon:Temper the weapon" + getarg(0));
+	switch (.@i) {
+	case 1:
+		specialeffect2 EF_DETOXICATION;
+		mes "Ground the weapon.";
+		break;
+	case 2:
+		specialeffect2 EF_REPAIRWEAPON;
+		mes "Tempered the weapon.";
+		break;
+	case 3:
+		return 0;
+	}
+	next;
+	if (@job_ko_lastaction == .@i)
+		set @job_ko_forge, @job_ko_forge + 1;
+	else
+		set @job_ko_forge, @job_ko_forge + 2;
+	set @job_ko_lastaction, .@i;
+	return 1;
+}
+job_ko,129,129,0	duplicate(Crafting Tools#ko_01)	Crafting Tools#ko_02	844
+job_ko,116,124,0	duplicate(Crafting Tools#ko_01)	Crafting Tools#ko_03	844
+
+job_ko,121,121,0	script	Refinement Tools#ko_01	844,{
+	if (isbegin_quest(5138) == 1 && isbegin_quest(5142) == 0 && (isbegin_quest(5143) == 1 || isbegin_quest(5144) == 1) && isbegin_quest(5145) == 1) {
+		disable_items;
+	} else {
+		mes "This tool helps you refine your weapons automatically. However, you won't need this just now.";
+		close;
+	}
+	mes "You turn on the refinement tool.";
+	mes "The equipment starts up with a pleasant vibration.";
+	next;
+	mes "Looks like you can use the tool right away for refinement because it holds a good deal of Elunium and Oridecon within it.";
+	next;
+	if(select("Start refining.:Do not start refining.") == 2) {
+		mes "You turned off the tool.";
+		close;
+	}
+	set .@part, EQI_HAND_R;
+	if (!getequipisequiped(.@part)) {
+		mes "Bzzzt";
+		mes "A warning beep comes from the tool.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "This equipment does not work without an equipped item to refine.";
+		close;
+	} else {
+		set .@equip_id, getequipid(.@part);
+		if (.@equip_id == 13074 || .@equip_id == 13312) {
+			mes "Analyzing the weapon.";
+			next;
+		} else {
+			mes "[Red Leopard Joe]";
+			mes "Wait... this weapon is not a customized one.";
+			next;
+			mes "[Red Leopard Joe]";
+			mes "Why don't you refine this with those hot-headed blacksmiths out there?";
+			close;
+		}
+	}
+	if (!getequipisenableref(.@part)) {
+		mes "Bzzzt";
+		mes "A warning beep comes from the tool.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "That weapon cannot be refined. Where did you get it?";  //custom translation
+		close;
+	}
+	set .@equip_refine, getequiprefinerycnt(.@part);
+	if (.@equip_refine >= 20) {
+		mes "Bzzzt";
+		mes "A warning beep comes from the tool.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "This equipment is perfectly refined. Keep it for yourself!";  //custom translation
+		close;
+	}
+	if (getequippercentrefinery(.@part) < 100) {
+		mes "This is very well refined equipment. Do you want to continue? Refine skill decreases by 1 if refinement fails.";
+		next;
+		if(select("Continue.:Stop.") == 2) {
+			mes "You turned off the tool.";
+			close;
+		}
+	} else {
+		mes "Starting to refine.";  //custom translation
+		next;
+	}
+	progressbar "ffff00",1;
+	set .@rand, rand(1,100);
+	if (.@equip_refine < 5) {          // 0>5 100%
+		set .@wlevel_up,1;
+	} else if (.@equip_refine == 5) {  // 5>6  40%
+		if (.@rand < 41) set .@wlevel_up,1;
+	} else if (.@equip_refine == 6) {  // 6>7  30%
+		if (.@rand < 31) set .@wlevel_up,1;
+	} else if (.@equip_refine == 7) {  // 7>8  20%
+		if (.@rand < 21) set .@wlevel_up,1;
+	} else if (.@equip_refine == 8) {  // 8>9  10%
+		if (.@rand < 11) set .@wlevel_up,1;
+	} else if (.@equip_refine == 9) {  // 9>10  5%
+		if (.@rand < 6) set .@wlevel_up,1;
+	} else {                           // 10>20 2%
+		if (.@rand < 3) set .@wlevel_up,1;
+	}
+	if (.@wlevel_up) {
+		successrefitem .@part;
+		mes "Succeeded in refining.";
+		mes "Turned off the refining tool.";
+		close;
+	} else {
+		downrefitem .@part;
+		mes "Failed in refining.";
+		mes "Your weapon refinement skill dropped by 1.";
+		mes "Turned off the refining tool.";
+		close;
+	}
+	end;
+}
+job_ko,127,121,0	duplicate(Refinement Tools#ko_01)	Refinement Tools#ko_02	844
+
+// Test of Battle
+//============================================================
+job_ko,148,46,4	script	Guide Gion#ko2	588,{
+	if (MaxWeight - Weight < 2000 || checkweight(1201,1) == 0) {
+		mes "[Guide Gion]";
+		mes "You don't need so many things now!"; //custom translation
+		close;
+	}
+	if (job_kagero == 7) {
+		cutin "job_ko01",2;
+		mes "[Guide Gion]";
+		mes "Looks like you haven't taken care of the target yet.";
+		next;
+		mes "[Guide Gion]";
+		mes "I'll tell you once more. The target is the ^FF0000Family Secret^000000.";
+		next;
+		mes "[Guide Gion]";
+		mes "Of course the path will be difficult, so continue searching!"; //custom translation
+		close2;
+		cutin "",255;
+		end;
+	} else if (job_kagero == 8) {
+		cutin "job_ko02",2;
+		mes "[Guide Gion]";
+		mes "Looks like you've taken care of the target. Hmm.";
+		next;
+
+		//custom translations
+		if (ismounting()) {
+			mes "[Guide Gion]";
+			mes "But please get down from your frog. Otherwise I can't continue!";
+			close2;
+			cutin "",255;
+			end;
+		}
+		if (BaseLevel < 99 || JobLevel < 70) {
+			mes "[Guide Gion]";
+			mes "How did you get weaker? Come back once you've regained your previous levels.";
+			close2;
+			cutin "",255;
+			end;
+		}
+		if (SkillPoint != 0) {
+			mes "[Guide Gion]";
+			mes "Please come back after using all your Skill Points.";
+			close2;
+			cutin "",255;
+			end;
+		}
+
+		mapannounce "job_ko","[Gion] Interrupting the Test of Battle.",bc_map;
+		cutin "job_ko04",2;
+		mes "[Guide Gion]";
+		mes "The Test of Battle will be put off for a while. Don't worry because this does not have affect to other tests.";
+		next;
+		mapannounce "job_ko","[Gion] My Friend " + strcharinfo(0) + " made it to " + ((Sex)?"Kagerou":"Oboro") + " Path. Congratulations!!",bc_map;
+		mes "[Guide Gion]";
+		mes "My friend " + strcharinfo(0) + " made it to " + ((Sex)?"Kagerou":"Oboro") + " Path. Congratulations!!";
+		next;
+		cutin "job_ko02",2;
+		mes "[Guide Gion]";
+		mes "It is pleasant to meet a youth that is walking through a new path.";
+		next;
+		mes "[Someone's Voice]";
+		mes "Wait for a while, Gion.";
+		next;
+		donpcevent "Cougar#ko2::OnEnable";
+		donpcevent "Red Leopard Joe#ko2::OnEnable";
+		cutin "job_ko04",2;
+		mes "[Guide Gion]";
+		mes "I'm sorry I almost forgot about you two. Do you have anything to share with " + strcharinfo(0) + "?";
+		next;
+		cutin "",255;
+		mes "[Cougar]";
+		mes "Hmm... Embarrassing... to speak so suddenly...";
+		next;
+		mes "[Cougar]";
+		mes strcharinfo(0) + ", you are now a proud member of our family. Always hold your head high and...";
+		next;
+		mes "[Cougar]";
+		mes "^777777(Gai's voice fades out.)^000000.";
+		mes "I'm sorry I strangled you when we first met.";
+		next;
+		donpcevent "Cougar#ko2::OnDisable";
+		mes "[Red Leopard Joe]";
+		mes "Puhahaha! Gai is all talk. I know I was know valuable to you than that Gai.";
+		next;
+		if (isbegin_quest(5143) == 2) {
+			set .@item,13075; //Kurenai
+			set .@weapon$,"dagger";
+		} else {
+			set .@item,13311; //Huuma_Shadow
+			set .@weapon$,"shuriken";
+		}
+		mes "[Red Leopard Joe]";
+		mes "I did some work on the prototype " + .@weapon$ + " you made.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes getitemname(.@item) + " now shines beautifully with a scarlet glow after I did the finishing touches.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "I named your weapons on my own but I know you'll like the name.";
+		next;
+		mes "[Red Leopard Joe]";
+		mes "Guide Gion, please continue.";
+		next;
+		cutin "job_ko01",2;
+		donpcevent "Red Leopard Joe#ko2::OnDisable";
+		mes "[Guide Gion]";
+		mes "I don't have much to add because Gai and Joe said it all.";
+		next;
+		mes "[Guide Gion]";
+		mes "I'm just sorry that the environment of all these tests could have been better for our later generation.";
+		next;
+		mes "[Guide Gion]";
+		mes "You only need to look forward and never turn back.";
+		next;
+		for (set .@i,5131; .@i<=5146; set .@i,.@i+1)
+			if (isbegin_quest(.@i)) erasequest .@i;
+		set job_kagero,9;
+		getnameditem .@item,strcharinfo(0);
+		jobchange (Sex)?Job_Kagerou:Job_Oboro;
+		donpcevent "Summon Target#ko::OnEnable";
+		mes "[Guide Gion]";
+		mes "I hope the blessings of Kagerou, dancing sun and Oboro, misty moonlight will be with you on your journey ahead.";
+		close2;
+		warp "que_ng",21,71;
+		end;
+	} else if (job_kagero == 9) {
+		cutin "job_ko01",2;
+		mes "[Guide Gion]";
+		mes "I hope the blessings of Kagerou, dancing sun and Oboro, misty moonlight will be with you on your journey ahead.";
+		close2;
+		warp "que_ng",21,71;
+		end;
+	} else {
+		cutin "job_ko01",2;
+		mes "[Guide Gion]";
+		mes "You should not be here. Please leave!"; //custom translation
+		close2;
+		warp "amatsu",147,136;
+		end;
+	}
+}
+
+job_ko,151,47,4	script	Cougar#ko2	730,{
+	mes "[Cougar]";
+	mes "Congratulation for choosing the road of development!";
+	close;
+OnInit:
+OnDisable:
+	disablenpc "Cougar#ko2";
+	end;
+OnEnable:
+	enablenpc "Cougar#ko2";
+	end;
+}
+
+job_ko,145,47,6	script	Red Leopard Joe#ko2	730,{
+	mes "[Red Leopard Joe]";
+	mes "You have not found the target? Continue searching it.";
+	close;
+OnInit:
+OnDisable:
+	disablenpc "Red Leopard Joe#ko2";
+	end;
+OnEnable:
+	enablenpc "Red Leopard Joe#ko2";
+	end;
+}
+
+job_ko,1,1,4	script	Summon Target#ko	844,{
+	end;
+OnInit:
+OnTimer180000:
+	donpcevent "Summon Target#ko::OnEnable";
+	end;
+OnEnable:
+	stopnpctimer;
+	switch (rand(1,7)) {
+		case 1: set .@mob,1002; break;
+		case 2: set .@mob,1031; break;
+		case 3: set .@mob,1113; break;
+		case 4: set .@mob,1063; break;
+		case 5: set .@mob,1010; break;
+		case 6: set .@mob,1049; break;
+		case 7: set .@mob,1050; break;
+	}
+	areamonster "job_ko",120,30,160,70,"Family Secret",.@mob,1,"Summon Target#ko::OnMyMobDead";
+	end;
+OnDisable:
+	initnpctimer;
+	end;
+OnMyMobDead:
+	if (mobcount("job_ko","Summon Target#ko::OnMyMobDead") < 1) {
+		if (job_kagero == 7) {
+			donpcevent "Summon Target#ko::OnDisable";
+			set job_kagero,8;
+		} else
+			donpcevent "Summon Target#ko::OnEnable";
+	}
+	end;
+}
+
+job_ko,1,2,4	script	Summon Fake#ko	844,{
+	end;
+OnInit:
+	donpcevent "Summon Fake#ko::OnEnable";
+	end;
+OnEnable:
+	areamonster "job_ko",120,30,160,70,"Family's Legacy",1002,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Kagerou's Memory",1002,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Oboro's Memory",1002,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Family's Mistake",1031,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Oboro's Mistake",1031,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Kagerou's Mistake",1031,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Family's Memory",1113,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Oboro's Past",1113,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Kagerou's Past",1113,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Family's Legacy",1063,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Oboro's Legacy",1063,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Kagerou's Legacy",1063,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Family's Mistake",1010,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Oboro's Memory",1010,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Kagerou's Memory",1010,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Family's Past",1049,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Oboro's Mistake",1049,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Kagerou's Mistake",1049,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Family's Memory",1050,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Oboro's Past",1050,5,"Summon Fake#ko::OnMyMobDead";
+	areamonster "job_ko",120,30,160,70,"Kagerou's Past",1050,5,"Summon Fake#ko::OnMyMobDead";
+	end;
+OnDisable:
+	killmonster "job_ko","Summon Fake#ko::OnMyMobDead";
+	end;
+OnMyMobDead:
+	if (mobcount("job_ko","Summon Fake#ko::OnMyMobDead") < 100) {
+		donpcevent "Summon Fake#ko::OnDisable";
+		donpcevent "Summon Fake#ko::OnEnable";
+		warp "job_ko",16,113;
+	}
+	end;
+}
+
+// GM Control Panel (custom translations)
+//============================================================
+job_ko,3,1,4	script	Battle Test Control#ko	588,{
+	callfunc "F_GM_NPC";
+	if (callfunc("F_GM_NPC",1854,0) == 1) {
+		mes "This is the Battle Test Control NPC.";
+		next;
+	} else {
+		mes "Incorrect password.";
+		close;
+	}
+	switch(select("Summon Target:Summon Target Disable:Summon Fake:Summon Fake Disable")) {
+	case 1:
+		donpcevent "Summon Target#ko::OnEnable";
+		mes "Summon Target activated.";
+		break;
+	case 2:
+		donpcevent "Summon Target#ko::OnDisable";
+		mes "Summon Target disabled.";
+		break;
+	case 3:
+		donpcevent "Summon Fake#ko::OnEnable";
+		mes "Summon Fake activated.";
+		break;
+	case 4:
+		donpcevent "Summon Fake#ko::OnDisable";
+		mes "Summon Fake disabled.";
+		break;
+	}
+	next;
+	mes "Control has completed.";
+	close;
+}
+
+job_ko,4,1,4	script	Guide#ko_helper	588,{
+	callfunc "F_GM_NPC";
+	if (callfunc("F_GM_NPC",1854,0) == 1) {
+		mes "This is the Kagerou and Oboro Job Change assistant NPC.";
+		next;
+	} else {
+		mes "Incorrect password.";
+		close;
+	}
+	mes "I can solve any problems in the job change quest.";
+	next;
+	switch(select("Current Status:Test Set:Pre-Transfer:Initialize")) {
+	case 1:
+		mes "Variable states (current/maximum)";
+		mes "job_kagero (" + job_kagero + "/9)";
+		mes "job_kagero_lp (" + job_kagero_lp + "/100)";
+		next;
+		mes "Quest states (current/maximum)";
+		mes "5131 (" + isbegin_quest(5131) + "/1)";
+		mes "5132 (" + isbegin_quest(5132) + "/1)";
+		mes "5133 (" + isbegin_quest(5133) + "/1)";
+		mes "5134 (" + isbegin_quest(5134) + "/1)";
+		mes "5135 (" + isbegin_quest(5135) + "/1)";
+		mes "5136 (" + isbegin_quest(5136) + "/2)";
+		mes "5139 (" + isbegin_quest(5139) + "/1)";
+		mes "5137 (" + isbegin_quest(5137) + "/2)";
+		mes "5140 (" + isbegin_quest(5140) + "/1)";
+		mes "5141 (" + checkquest(5141,PLAYTIME) + "/1)";
+		mes "5138 (" + isbegin_quest(5138) + "/2)";
+		mes "5142 (" + isbegin_quest(5142) + "/1)";
+		mes "5143 (" + isbegin_quest(5143) + "/2)";
+		mes "5144 (" + isbegin_quest(5144) + "/2)";
+		mes "5145 (" + isbegin_quest(5145) + "/1)";
+		mes "5146 (" + isbegin_quest(5146) + "/1)";
+		close;
+	case 2:
+		mes "Which test do you want to set as completed?";
+		mes "Three tests must be completed before changing jobs. If you wish to reach a job change state, please select [Pre-Transfer] directly from the previous menu!";
+		next;
+		switch(select("Complete Test of Knowledge:Complete Test of Survival:Complete Test of Weaponry")) {
+		case 1:
+			set job_kagero,5;
+			setquest 5136;
+			completequest 5136;
+			mes "The Test of Knowledge has been set as complete. I hope you have finished your initialization.";
+			break;
+		case 2:
+			set job_kagero,5;
+			set job_kagero_lp,0;
+			setquest 5137;
+			completequest 5137;
+			mes "The Test of Survival has been set as complete. I hope you have finished your initialization.";
+			break;
+		case 3:
+			set job_kagero,5;
+			setquest 5138;
+			completequest 5138;
+			mes "The Test of Weaponry has been set as complete. I hope you have finished your initialization.";
+			break;
+		}
+		close;
+	case 3:
+		mes "I will change your quest status to Pre-Transfer, but before that...";
+		next;
+		mes "Please select a weapon.";
+		next;
+		switch(select("Dagger:Shuriken")) {
+			case 1: set .@quest,5143; break;
+			case 2: set .@quest,5144; break;
+		}
+		setquest 5136;
+		completequest 5136;
+		setquest 5137;
+		completequest 5137;
+		setquest 5138;
+		completequest 5138;
+		setquest .@quest;
+		completequest .@quest;
+		setquest 5146;
+		set job_kagero,8;
+		mes "I've set the Pre-Transfer status. Good luck!!";
+		close;
+	case 4:
+		set job_kagero,0;
+		set job_kagero_lp,0;
+		for (set .@i,5131; .@i<=5146; set .@i,.@i+1)
+			if (isbegin_quest(.@i)) erasequest .@i;
+		mes "The task of initialization is complete. You can confirm this through the [Current Status] option!";
+		close;
+	}
+	end;
+}

+ 5 - 4
npc/re/quests/eden/eden_quests.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= L0ne_W0lf
 //===== Current Version: =====================================
-//= 1.5
+//= 1.6
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -19,6 +19,7 @@
 //= 1.4a Added 'npcskill' command. [Euphy]
 //= 1.4b Added 'disable_items' command. [Euphy]
 //= 1.5 Added GM management function. [Euphy]
+//= 1.6 Kagerou/Oboro support (Class -> BaseClass) [Euphy]
 //============================================================
 
 moc_para01,25,35,4	script	Instructor Boya#para01	469,{
@@ -3079,7 +3080,7 @@ moc_para01,112,96,5	script	Administrator Michael	967,{
 					mes "I hope they're useful to you.";
 					close;
 				}
-				if (Class == Job_Novice || Class == Job_Novice_High || Class == Job_SuperNovice || Class == Job_Soul_Linker || Class == Job_Ninja) {
+				if (Class == Job_Novice || Class == Job_Novice_High || Class == Job_SuperNovice || Class == Job_Soul_Linker || BaseClass == Job_Ninja) {
 					mes "[Michael]";
 					mes "We only have 1 weapon for you.";
 					next;
@@ -4538,7 +4539,7 @@ moc_para01,111,83,3	script	Toren	813,{
 					1658,"Staff","One-handed, 60 Atk, 170 Matk, 4 Int", //P.Staff III
 					13066,"Dagger","One-handed, 165 Atk, 80 Matk"; //P.Dagger III
 			}
-			else if (Class == Job_Ninja) {
+			else if (BaseClass == Job_Ninja) {
 				mes "Ninja Class gets a choice of weapons, would you like to have a huuma suriken or a dagger?";
 				callsub L_Select,
 					13310,"Huuma Suriken","Two-handed, 170 Atk, 50 Matk", //P.Huuma Suriken I
@@ -4854,7 +4855,7 @@ moc_para01,112,79,3	script	Weapons Expert	851,{
 						1658,"Staff","One-handed, 60 Atk, 170 Matk, 4 Int", //P.Staff III
 						13066,"Dagger","One-handed, 165 Atk, 80 Matk"; //P.Dagger III
 				}
-				else if (Class == Job_Ninja) {
+				else if (BaseClass == Job_Ninja) {
 					mes "Ninja Class gets a choice of weapons, would you like to have a huuma suriken or a dagger?";
 					callsub L_Select,
 						13310,"Huuma Suriken","Two-handed, 170 Atk, 50 Matk", //P.Huuma Suriken I

+ 2 - 0
npc/re/scripts_jobs.conf

@@ -10,6 +10,8 @@ npc: npc/re/jobs/1-1/mage.txt
 npc: npc/re/jobs/1-1/merchant.txt
 npc: npc/re/jobs/1-1/swordman.txt
 npc: npc/re/jobs/1-1/thief.txt
+// - 2e
+npc: npc/re/jobs/2e/kagerou_oboro.txt
 // - 3-1
 npc: npc/re/jobs/3-1/archbishop.txt
 npc: npc/re/jobs/3-1/mechanic.txt

+ 3 - 0
npc/re/scripts_main.conf

@@ -41,6 +41,9 @@ import: npc/re/scripts_mapflags.conf
 import: npc/re/scripts_monsters.conf
 import: npc/re/scripts_warps.conf
 
+// Test for regressions and such
+//import: npc/scripts_test.conf
+
 // ------------------- Custom Script Files ----------------------
 // - Your NPCs go in this file!
 import: npc/scripts_custom.conf

+ 1 - 0
npc/scripts_test.conf

@@ -0,0 +1 @@
+npc: npc/test/OnInterInit.txt

+ 8 - 0
npc/test/OnInterInit.txt

@@ -0,0 +1,8 @@
+-	script	OnInterChk	-1,{
+	OnInterIfInit:
+	debugmes "Loaded OnInterIfInit <-------";
+	end;
+	OnInterIfInitOnce:
+	debugmes "Loaded OnInterIfInitOnce <-------";
+	end;
+}

+ 174 - 174
sql-files/item_db.sql

@@ -511,7 +511,7 @@ REPLACE INTO `item_db` VALUES (1126,'Saber','Saber',5,49000,NULL,1000,115,NULL,1
 REPLACE INTO `item_db` VALUES (1127,'Saber_','Saber',5,49000,NULL,1000,115,NULL,1,3,0x000654E2,7,2,2,3,27,1,2,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1128,'Hae_Dong_Gum_','Haedonggum',5,50000,NULL,900,120,NULL,1,2,0x000654E2,7,2,2,3,27,1,2,'bonus bInt,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1129,'Flamberge','Flamberge',5,60000,NULL,1500,150,NULL,1,0,0x00004080,7,2,2,3,27,1,2,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (1130,'Nagan','Nagan',5,20,NULL,500,120,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1130,'Nagan','Nagan',5,20,NULL,500,120,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1131,'Ice_Falchon','Ice Falchion',5,20,NULL,600,100,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1132,'Edge','Edge',5,20,NULL,700,115,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaClass,Class_Normal,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1133,'Fire_Brand','Fireblend',5,20,NULL,500,100,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100;',NULL,NULL);
@@ -550,25 +550,25 @@ REPLACE INTO `item_db` VALUES (1165,'Masamune','Masamune',5,20,NULL,1000,200,NUL
 REPLACE INTO `item_db` VALUES (1166,'Dragon_Slayer','Dragon Slayer',5,20,NULL,1300,150,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1167,'Schweizersabel','Schweizersabel',5,20,NULL,1600,160,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1168,'Zweihander','Zweihander',5,20,NULL,2200,200,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1169,'Executioner_','Executioner',5,20,NULL,2200,155,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1169,'Executioner_','Executioner',5,20,NULL,2200,155,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1170,'Katzbalger','Katzbalger',5,20,NULL,2000,175,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bVit,5; bonus bDef,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1171,'Zweihander_','Zweihander',5,20,NULL,2200,200,NULL,1,2,0x00004082,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1172,'Claymore_','Claymore',5,74000,NULL,2500,180,NULL,1,2,0x00004080,7,2,34,3,33,1,3,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1173,'Muramasa_C','Muramasa',5,1,NULL,0,204,NULL,1,0,0x00004082,7,2,34,4,1,0,3,'bonus bCritical,30; bonus bAspdRate,8;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1174,'Executioner_C','Executioner',5,2,NULL,0,190,NULL,1,0,0x00004082,7,2,34,4,0,0,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1174,'Executioner_C','Executioner',5,2,NULL,0,190,NULL,1,0,0x00004082,7,2,34,4,0,0,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1175,'Altas_Weapon','Atlas Weapon',5,20,NULL,3500,200,NULL,1,1,0x00004082,2,2,34,4,55,1,3,'bonus bCritical,10; if(readparam(bStr)>=80) bonus bBreakArmorRate,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1176,'Muscle_Cutter','Muscle Cutter',5,20,NULL,2200,160,NULL,1,2,0x00004082,2,2,34,4,55,1,3,'bonus2 bAddEff,Eff_Bleeding,800; bonus3 bAutoSpell,"AL_DECAGI",1,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1177,'Muramash','Muramash',5,20,NULL,0,120,NULL,1,0,0x00004082,7,2,34,1,0,0,3,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1178,'Schweizersabel_','Schweizersabel',5,20,NULL,1600,160,NULL,1,2,0x00004082,7,2,34,4,48,1,3,'bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1179,'Executioner__','Executioner',5,20,NULL,2200,155,NULL,1,1,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1179,'Executioner__','Executioner',5,20,NULL,2200,155,NULL,1,1,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1180,'Dragon_Slayer_','Dragon Slayer',5,20,NULL,1300,150,NULL,1,2,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1181,'Tae_Goo_Lyeon','Tae Goo Lyeon',5,20,NULL,2000,250,NULL,1,2,0x00004082,2,2,34,4,90,1,3,'bonus bFlee2,10; if(JobLevel>=70) autobonus "{ bonus bBaseAtk,50; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; if(getrefine()>8) { bonus bCastrate,-20; bonus bDelayRate,-20; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1182,'Bloody_Eater','Bloody Eater',5,20,NULL,1200,200,NULL,1,2,0x00004082,2,2,34,4,50,1,3,'bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1183,'BF_Two_Handed_Sword1','Brave Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1184,'BF_Two_Handed_Sword2','Valorous Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1183,'BF_Two_Handed_Sword1','Brave Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1184,'BF_Two_Handed_Sword2','Valorous Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1185,'Violet_Fear','Violet Fear',5,20,NULL,2200,275,NULL,1,2,0x00004082,2,2,34,4,80,1,3,'bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1186,'Death_Guidance','Death Guidance',5,20,NULL,2000,200,NULL,1,2,0x00004082,2,2,34,4,70,1,3,'bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; if( getrefine()>8 ) bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",2,20; else bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",1,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1187,'Krieger_Twohand_Sword1','Glorious Claymore',5,20,NULL,0,220,NULL,1,0,0x00004082,7,2,34,4,80,1,3,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?getskilllv("LK_AURABLADE"):1,30; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1187,'Krieger_Twohand_Sword1','Glorious Claymore',5,20,NULL,0,220,NULL,1,0,0x00004082,7,2,34,4,80,1,3,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?getskilllv("LK_AURABLADE"):1,30; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1188,'Veteran_Sword','Veteran Sword',5,10000,NULL,2000,180,NULL,1,1,0x00004082,7,2,34,4,80,1,3,'if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1189,'Krasnaya','Krasnaya',5,20,NULL,3800,200,NULL,2,3,0x00004082,2,2,34,2,50,1,3,'if(readparam(bStr)>=95) { bonus bBaseAtk,20; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1190,'Claymore_C','Claymore',5,0,NULL,0,220,NULL,1,0,0x00004080,7,2,34,3,1,0,3,'bonus2 bAddSize,Size_All,40;',NULL,NULL);
@@ -600,12 +600,12 @@ REPLACE INTO `item_db` VALUES (1224,'Sword_Breaker','Swordbreaker',5,20,NULL,100
 REPLACE INTO `item_db` VALUES (1225,'Mail_Breaker','Mailbreaker',5,20,NULL,1000,70,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bBreakArmorRate,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1226,'Damascus_','Damascus',5,49000,NULL,800,118,NULL,1,2,0x028F5EEE,7,2,2,3,24,1,1,'bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1227,'Weeder_Knife','Weeder Knife',5,20,NULL,400,80,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1228,'Combat_Knife','Combat Knife',5,20,NULL,400,80,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1228,'Combat_Knife','Combat Knife',5,20,NULL,400,80,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1229,'Mama\'s_Knife','Kitchen Knife',5,20,NULL,500,75,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1230,'House_Auger','Ice Pick',5,20,NULL,600,80,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bDefRatioAtkClass,Class_All;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1231,'Bazerald','Bazerald',5,20,NULL,500,70,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus bMatkRate,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1232,'Assasin_Dagger','Assassin Dagger',5,20,NULL,600,140,NULL,1,0,0x00001000,7,2,2,4,36,1,1,'bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1233,'Exercise','Exorciser',5,20,NULL,700,90,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1233,'Exercise','Exorciser',5,20,NULL,700,90,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1234,'Moonlight_Sword','Moonlight Dagger',5,20,NULL,700,50,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bMaxSPrate,10; bonus bSPDrainValue,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1235,'Azoth','Azoth',5,20,NULL,700,110,NULL,1,0,0x00040000,7,2,2,4,36,1,1,'bonus bClassChange,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1236,'Sucsamad','Sucsamad',5,20,NULL,800,140,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
@@ -634,28 +634,28 @@ REPLACE INTO `item_db` VALUES (1257,'Katar_Of_Thornbush','Katar of Quaking',5,45
 REPLACE INTO `item_db` VALUES (1258,'Katar_Of_Raging_Blaze','Katar of Raging Blaze',5,45000,NULL,1200,105,NULL,1,0,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1259,'Katar_Of_Piercing_Wind','Katar of Piercing Wind',5,45000,NULL,1200,105,NULL,1,0,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1260,'Ghoul_Leg','Sharpened Legbone of Ghoul',5,52500,NULL,1700,150,NULL,1,0,0x00001000,7,2,34,3,65,1,16,'bonus bAtkEle,Ele_Undead;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1261,'Infiltrator','Infiltrator',5,57000,NULL,1500,140,NULL,1,0,0x00001000,7,2,34,4,75,1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1261,'Infiltrator','Infiltrator',5,57000,NULL,1500,140,NULL,1,0,0x00001000,7,2,34,4,75,1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1262,'Nail_Of_Loki','Loki\'s Nail',5,20,NULL,1200,115,NULL,1,0,0x00001000,7,2,34,3,55,1,16,'bonus2 bAddEff,Eff_Bleeding,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1263,'Unholy_Touch','Unholy Touch',5,20,NULL,1250,151,NULL,1,0,0x00001000,7,2,34,4,70,1,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1264,'Various_Jur','Specialty Jur',5,20,NULL,800,90,NULL,1,4,0x00001000,7,2,34,1,1,1,16,'bonus2 bAddEff2,Eff_Bleeding,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1265,'Bloody_Roar','Bloody Roar',5,20,NULL,1000,120,NULL,1,0,0x00001000,7,2,34,4,75,1,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1266,'Infiltrator_','Infiltrator',5,57000,NULL,1500,140,NULL,1,1,0x00001000,7,2,34,4,75,1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1267,'Infiltrator_C','Infiltrator',5,1,NULL,0,189,NULL,1,0,0x00001000,7,2,34,4,1,0,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1265,'Bloody_Roar','Bloody Roar',5,20,NULL,1000,120,NULL,1,0,0x00001000,7,2,34,4,75,1,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1266,'Infiltrator_','Infiltrator',5,57000,NULL,1500,140,NULL,1,1,0x00001000,7,2,34,4,75,1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1267,'Infiltrator_C','Infiltrator',5,1,NULL,0,189,NULL,1,0,0x00001000,7,2,34,4,1,0,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1268,'Wild_Beast_Claw','Wild Beast Claw',5,20,NULL,1450,160,NULL,1,1,0x00001000,2,2,34,4,55,1,16,'if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_CRITICALWOUND",2,100; } else bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1269,'Inverse_Scale','Inverse Scale',5,20,NULL,1500,140,NULL,1,0,0x00001000,2,2,34,4,55,1,16,'bonus bAtkEle,Ele_Holy; bonus3 bAutoSpell,"NPC_DRAGONFEAR",1,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1270,'Drill_Katar','Drill Katar',5,20,NULL,1400,110,NULL,1,1,0x00001000,2,2,34,4,55,1,16,'bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1271,'Blood_Tears','Blood Tears',5,20,NULL,1700,120,NULL,1,2,0x00001000,2,2,34,4,55,1,16,'if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1272,'Scratcher','Scratcher',5,20,NULL,0,120,NULL,1,0,0x00001000,7,2,34,1,0,0,16,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1273,'Bloody_Roar_C','Refined Bloody Roar',5,1,NULL,0,148,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1273,'Bloody_Roar_C','Refined Bloody Roar',5,1,NULL,0,148,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1274,'Unholy_Touch_C','Refined Unholy Touch',5,1,NULL,0,179,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1275,'Katar_Of_Cold_Icicle_','Katar of Frozen Icicle',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1276,'Katar_Of_Thornbush_','Katar of Quaking',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1277,'Katar_Of_Raging_Blaze_','Katar of Raging Blaze',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1278,'Katar_Of_Piercing_Wind_','Katar of Piercing Wind',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1279,'BF_Katar1','Brave Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1280,'BF_Katar2','Valorous Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1281,'Krieger_Katar1','Glorious Bloody Roar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1282,'Krieger_Katar2','Glorious Jamadhar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1279,'BF_Katar1','Brave Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1280,'BF_Katar2','Valorous Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1281,'Krieger_Katar1','Glorious Bloody Roar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1282,'Krieger_Katar2','Glorious Jamadhar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1283,'Katar_Of_Speed','Katar Of Speed',5,20,NULL,0,175,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1284,'Krishna','Krishna',5,20,NULL,1200,120,NULL,1,2,0x00001000,2,2,34,3,50,1,16,'bonus2 bSkillAtk,"AS_GRIMTOOTH",10; if(getskilllv("AS_SONICBLOW")) { bonus3 bAutoSpell,"AS_SONICBLOW",getskilllv("AS_SONICBLOW"),5; }else{ bonus3 bAutoSpell,"AS_SONICBLOW",1,5; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1285,'Cakram','Chakram',5,20,NULL,1000,130,NULL,1,2,0x00001000,2,2,34,3,50,1,16,'if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20;',NULL,NULL);
@@ -665,12 +665,12 @@ REPLACE INTO `item_db` VALUES (1301,'Axe','Axe',5,500,NULL,800,38,NULL,1,3,0x000
 REPLACE INTO `item_db` VALUES (1302,'Axe_','Axe',5,500,NULL,800,38,NULL,1,4,0x000654E3,7,2,2,1,3,1,6,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1303,'Axe__','Axe',5,500,NULL,800,38,NULL,1,0,0x000654E3,7,2,2,1,3,1,6,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1304,'Orcish_Axe','Orcish Axe',5,20,NULL,1500,75,NULL,1,0,0x000654E3,7,2,2,3,3,1,6,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (1305,'Cleaver','Cleaver',5,20,NULL,1200,140,NULL,1,0,0x000444A2,7,2,2,4,44,1,6,'bonus2 bSubRace,RC_DemiHuman,5; bonus3 bAddMonsterDropItem,517,RC_Brute,3000;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1305,'Cleaver','Cleaver',5,20,NULL,1200,140,NULL,1,0,0x000444A2,7,2,2,4,44,1,6,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus3 bAddMonsterDropItem,517,RC_Brute,3000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1306,'War_Axe','War Axe',5,20,NULL,4200,140,NULL,1,1,0x00040400,7,2,2,3,76,1,6,'bonus bDex,2; bonus bLuk,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1307,'Windhawk','Windhawk',5,18000,NULL,1500,115,NULL,1,0,0x000654E2,7,2,2,2,14,1,6,'bonus bAtkEle,Ele_Wind; bonus bAspdRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1308,'Golden_Axe','Golden Axe',5,20,NULL,3000,170,NULL,1,0,0x00000001,7,2,2,4,45,1,6,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1309,'Orcish_Axe_','Orcish Axe',5,20,NULL,1500,75,NULL,1,4,0x000654E3,7,2,2,3,3,1,6,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (1310,'Krieger_Onehand_Axe1','Glorious Cleaver',5,20,NULL,0,130,NULL,1,0,0x000444A2,7,2,2,4,80,1,6,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1310,'Krieger_Onehand_Axe1','Glorious Cleaver',5,20,NULL,0,130,NULL,1,0,0x000444A2,7,2,2,4,80,1,6,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1311,'Vecer_Axe','Vecer Axe',5,20,NULL,1500,140,NULL,1,2,0x000444A2,2,2,2,3,50,1,6,'if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90||readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1312,'Orcish_Axe_C','Orcish Axe',5,0,NULL,0,110,NULL,1,0,0x000654E3,7,2,2,3,1,0,6,'bonus2 bAddSize,Size_All,70;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1313,'Tourist_Axe','Tourist Axe',5,0,NULL,500,77,NULL,1,0,0x000654E3,7,2,2,1,1,0,6,'bonus bStr,2;',NULL,NULL);
@@ -695,7 +695,7 @@ REPLACE INTO `item_db` VALUES (1365,'Sabbath','Sabbath',5,20,NULL,2300,120,NULL,
 REPLACE INTO `item_db` VALUES (1366,'Right_Epsilon','Light Epsilon',5,20,NULL,2300,180,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1367,'Slaughter','Slaughter',5,20,NULL,2500,120,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Earth; bonus bIgnoreDefRace,RC_Brute; bonus2 bWeaponComaRace,RC_Brute,40;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1368,'Tomahawk','Tomahawk',5,20,NULL,2500,165,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus bAtkEle,Ele_Wind; skill "ITM_TOMAHAWK",1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1369,'Guillotine','Guillotine',5,20,NULL,3000,215,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRace,RC_DemiHuman,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1369,'Guillotine','Guillotine',5,20,NULL,3000,215,NULL,1,0,0x000444A2,7,2,34,4,44,1,7,'bonus2 bWeaponComaRace,RC_DemiHuman,30; bonus2 bWeaponComaRace,RC_Player,30; bonus2 bSPGainRaceAttack,RC_DemiHuman,2; bonus2 bSPGainRaceAttack,RC_Player,2; bonus2 bSPGainRace,RC_DemiHuman,20; bonus2 bSPGainRace,RC_Player,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1370,'Doom_Slayer','Doom Slayer',5,20,NULL,6000,10,NULL,1,0,0x000444A2,7,2,34,4,80,1,7,'bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1371,'Doom_Slayer_','Doom Slayer',5,20,NULL,6000,10,NULL,1,1,0x000444A2,7,2,34,4,80,1,7,'bonus bAspdRate,-40; bonus bUseSPrate,100; if(readparam(bStr)>=95){ bonus bBaseAtk,340; bonus2 bAddEff,Eff_Stun,3000; bonus bBreakArmorRate,500; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1372,'Right_Epsilon_C','Light Epsilon',5,1,NULL,0,229,NULL,1,0,0x000444A2,7,2,34,4,1,0,7,'bonus bAtkEle,Ele_Holy; skill "AL_HEAL",3; bonus2 bAddRace,RC_Demon,3; bonus bStr,10; bonus bSpeedRate,25;',NULL,NULL);
@@ -705,10 +705,10 @@ REPLACE INTO `item_db` VALUES (1375,'Berdysz','Berdysz',5,20,NULL,2500,200,NULL,
 REPLACE INTO `item_db` VALUES (1376,'Heart_Breaker','Heart Breaker',5,20,NULL,2000,175,NULL,1,1,0x000444A2,2,2,34,4,70,1,7,'bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1377,'Hurricane_Fury','Hurricane\'s Fury',5,20,NULL,3500,332,NULL,1,1,0x000444A2,2,2,34,4,80,1,7,'bonus2 bSubSize,Size_Medium,10+getrefine(); bonus bAspdRate,getrefine(); bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1378,'Great_Axe_C','Refined Great Axe',5,1,NULL,0,215,NULL,1,0,0x000444A2,7,2,34,4,0,0,7,'bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1379,'BF_Two_Handed_Axe1','Valorous Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1379,'BF_Two_Handed_Axe1','Valorous Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1381,'N_Battle_Axe','Novice Battle Axe',5,0,NULL,0,100,NULL,1,3,0x000444A2,7,2,34,1,3,0,7,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',5,20,NULL,0,220,NULL,1,0,0x000444A2,7,2,34,4,80,1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',5,20,NULL,0,220,NULL,1,0,0x000444A2,7,2,34,4,80,1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1383,'Holy_Celestial_Axe','Celestial Axe',5,20,NULL,1500,200,NULL,1,0,0x000444A2,7,2,34,4,60,1,7,'bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1384,'Veteran_Axe','Veteran Axe',5,10000,NULL,3000,250,NULL,1,2,0x000444A2,7,2,34,3,80,1,7,'if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1385,'Bradium_Stonehammer','Bradium Stone Hammer',5,20,NULL,2700,210,NULL,1,0,0x000444A2,2,2,34,4,75,1,7,'bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine());',NULL,NULL);
@@ -738,12 +738,12 @@ REPLACE INTO `item_db` VALUES (1417,'Pole_Axe','Pole Axe',5,20,NULL,3800,160,NUL
 REPLACE INTO `item_db` VALUES (1418,'Gungnir_','Gungnir',5,20,NULL,500,120,NULL,3,2,0x00004082,7,2,2,4,4,1,4,'bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1419,'Pole_Axe_C','Pole Axe',5,1,NULL,4800,159,NULL,3,0,0x00004082,7,2,2,3,1,0,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1420,'Long_Horn','Long Horn',5,20,NULL,1000,150,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1421,'Battle_Hook','Battle Hook',5,20,NULL,900,140,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; skill "KN_PIERCE",3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1421,'Battle_Hook','Battle Hook',5,20,NULL,900,140,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1422,'Hunting_Spear','Hunting Spear',5,20,NULL,4200,180,NULL,3,1,0x00004082,2,2,2,4,60,1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1423,'Pole_XO','Pole XO',5,20,NULL,0,120,NULL,3,0,0x00004082,7,2,2,1,0,0,4,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1424,'Skewer_C','Refined Brocca',5,1,NULL,0,149,NULL,3,0,0x00004082,7,2,2,4,0,0,4,'bonus bIgnoreDefClass,Class_Normal; bonus2 bAddSize,Size_Medium,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1425,'BF_Spear1','Assaulter Spear',5,20,NULL,0,60,NULL,3,0,0x00004082,7,2,2,3,80,1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',5,20,NULL,0,130,NULL,3,0,0x00004082,7,2,2,4,80,1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1425,'BF_Spear1','Assaulter Spear',5,20,NULL,0,60,NULL,3,0,0x00004082,7,2,2,3,80,1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',5,20,NULL,0,130,NULL,3,0,0x00004082,7,2,2,4,80,1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1427,'Spear_Of_Excellent','Spear Of Excellent',5,20,NULL,0,160,NULL,3,0,0x00004082,7,2,2,3,0,0,4,'bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1428,'Long_Horn_M','Long Horn',5,20,NULL,1000,150,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1429,'Hunting_Spear_M','Hunting Spear',5,20,NULL,4200,180,NULL,3,1,0x00004082,2,2,2,4,60,1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500;',NULL,NULL);
@@ -767,9 +767,9 @@ REPLACE INTO `item_db` VALUES (1463,'Halberd','Halberd',5,54000,NULL,2500,165,NU
 REPLACE INTO `item_db` VALUES (1464,'Halberd_','Halberd',5,54000,NULL,2500,165,NULL,3,2,0x00004082,7,2,34,3,33,1,5,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1465,'Halberd__','Halberd',5,54000,NULL,2500,165,NULL,3,0,0x00004082,7,2,34,3,33,1,5,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1466,'Crescent_Scythe','Crescent Scythe',5,20,NULL,2500,180,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus bCritical,30; bonus bHit,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1467,'Bill_Guisarme','Bill Guisarme',5,20,NULL,1000,183,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1467,'Bill_Guisarme','Bill Guisarme',5,20,NULL,1000,183,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1468,'Zephyrus','Zephyrus',5,20,NULL,2000,170,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1469,'Longinus\'s_Spear','Longinus\'s Spear',5,20,NULL,2500,180,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus bAtkEle,Ele_Dark; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Angel,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1469,'Longinus\'s_Spear','Longinus\'s Spear',5,20,NULL,2500,180,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus bAtkEle,Ele_Dark; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddRace,RC_Angel,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1470,'Brionac','Brionac',5,20,NULL,3000,190,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus bAtkEle,Ele_Holy; skill "AL_HEAL",5; bonus3 bAutoSpell,"MG_SOULSTRIKE",3,100; bonus2 bAddClass,Class_Boss,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1471,'Hell_Fire','Hellfire',5,20,NULL,3500,200,NULL,3,0,0x00004082,7,2,34,4,48,1,5,'bonus bAtkEle,Ele_Fire; bonus3 bAutoSpell,"MG_FIREBALL",3,100; bonus bStr,3;',NULL,NULL);
 # 2-Handed Staffs
@@ -780,17 +780,17 @@ REPLACE INTO `item_db` VALUES (1474,'Gae_Bolg','Gae Bolg',5,20,NULL,2000,160,NUL
 REPLACE INTO `item_db` VALUES (1475,'Horseback_Lance','Equestrian\'s Spear',5,20,NULL,3700,200,NULL,4,0,0x00004082,7,2,34,4,75,1,5,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1476,'Crescent_Scythe_','Crescent Scythe',5,20,NULL,2500,180,NULL,3,1,0x00004082,7,2,34,4,48,1,5,'bonus bCritical,30; bonus bHit,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1477,'Spectral_Spear','Spectral Spear',5,20,NULL,2000,170,NULL,3,0,0x00004082,7,2,34,4,75,1,5,'bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1478,'Ahlspiess','Ahlspiess',5,20,NULL,1000,120,NULL,3,0,0x00004080,7,2,34,4,65,1,5,'bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1478,'Ahlspiess','Ahlspiess',5,20,NULL,1000,120,NULL,3,0,0x00004080,7,2,34,4,65,1,5,'bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1479,'Spectral_Spear_','Spectral Spear',5,20,NULL,2000,170,NULL,3,1,0x00004082,7,2,34,4,75,1,5,'bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1480,'Gae_Bolg_','Gae Bolg',5,20,NULL,2000,160,NULL,3,2,0x00004082,7,2,34,4,60,1,5,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1481,'Zephyrus_','Zephyrus',5,20,NULL,2000,170,NULL,3,3,0x00004082,7,2,34,4,48,1,5,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1482,'BF_Lance1','Assaulter Lance',5,NULL,NULL,0,160,NULL,3,0,0x00004082,7,2,34,3,80,1,5,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1482,'BF_Lance1','Assaulter Lance',5,NULL,NULL,0,160,NULL,3,0,0x00004082,7,2,34,3,80,1,5,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1483,'Ivory_Lance','Ivory Lance',5,20,NULL,1000,160,NULL,3,1,0x00004082,2,2,34,3,50,1,5,'bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"LK_JOINTBEAT",1,100; skill "KN_SPEARSTAB",5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1484,'Cardo','Cardo',5,20,NULL,5600,150,NULL,3,1,0x00000080,2,2,34,4,70,1,5,'bonus bAspdRate,-10; bonus bDef,getrefine()/2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1485,'Battle_Fork','Battle Fork',5,20,NULL,700,112,NULL,3,4,0x00004082,2,2,34,2,50,1,5,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (1486,'Krieger_Twohand_Spear1','Glorious Lance',5,20,NULL,0,220,NULL,3,0,0x00004082,7,2,34,4,80,1,5,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1486,'Krieger_Twohand_Spear1','Glorious Lance',5,20,NULL,0,220,NULL,3,0,0x00004082,7,2,34,4,80,1,5,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1487,'Lance_C','Lance',5,0,NULL,0,220,NULL,3,0,0x00004082,7,2,34,3,1,0,5,'bonus2 bAddSize,Size_All,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1488,'Ahlspiess_C','Ahlspiess',5,20,NULL,0,135,NULL,3,0,0x00004080,7,2,34,4,1,1,5,'bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1488,'Ahlspiess_C','Ahlspiess',5,20,NULL,0,135,NULL,3,0,0x00004080,7,2,34,4,1,1,5,'bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30;',NULL,NULL);
 # Maces
 REPLACE INTO `item_db` VALUES (1501,'Club','Club',5,120,NULL,700,23,NULL,1,3,0x0004C5B3,7,2,2,1,2,1,8,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1502,'Club_','Club',5,120,NULL,700,23,NULL,1,4,0x0004C5B3,7,2,2,1,2,1,8,NULL,NULL,NULL);
@@ -818,7 +818,7 @@ REPLACE INTO `item_db` VALUES (1523,'Spike','Spike',5,20,NULL,700,85,NULL,1,0,0x
 REPLACE INTO `item_db` VALUES (1524,'Golden_Mace','Golden Mace',5,20,NULL,800,110,NULL,1,1,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1525,'Long_Mace','Long Mace',5,20,NULL,800,135,NULL,3,0,0x00008110,7,2,2,4,40,1,8,'bonus bLongAtkDef,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1526,'Slash','Slash',5,20,NULL,1000,145,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,15; bonus2 bWeaponComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1527,'Quadrille','Quadrille',5,20,NULL,900,165,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddEle,Ele_Earth,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1527,'Quadrille','Quadrille',5,20,NULL,900,165,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1528,'Grand_Cross','Grand Cross',5,20,NULL,1500,140,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1529,'Iron_Driver','Iron Driver',5,20,NULL,3000,155,NULL,2,0,0x00008100,7,2,2,3,78,1,8,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1530,'Mjolnir','Mjolnir',5,20,NULL,6000,250,NULL,1,0,0x000444A2,7,2,2,4,95,0,8,'bonus bAtkEle,Ele_Wind; bonus bDex,40; bonus bStr,15; bonus bAspdRate,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
@@ -828,16 +828,16 @@ REPLACE INTO `item_db` VALUES (1533,'Warrior_Balmung','Warrior\'s Balmung',5,20,
 REPLACE INTO `item_db` VALUES (1534,'Spanner_C','Wrench',5,2,NULL,0,150,NULL,1,0,0x00008110,7,2,2,3,0,0,8,'bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stun,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1535,'Hollgrehenn_Hammer','Hollgrehenn\'s Hammer',5,4444,NULL,44,4,NULL,1,1,0x0004C5B2,7,2,2,4,44,1,8,'bonus bBreakArmorRate,100; bonus bBreakWeaponRate,100; if(readparam(bStr)>=44) { bonus bBaseAtk,44; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1536,'Good_Morning_Star','Good Morning Star',5,20,NULL,0,120,NULL,1,0,0x0004C5B2,7,2,2,1,0,0,8,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1537,'Quadrille_C','Refined Quadrille',5,1,NULL,0,193,NULL,1,0,0x00008110,7,2,2,4,0,0,8,'bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1537,'Quadrille_C','Refined Quadrille',5,1,NULL,0,193,NULL,1,0,0x00008110,7,2,2,4,0,0,8,'bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1538,'Spike_','Spike',5,20,NULL,700,85,NULL,1,2,0x00008110,7,2,2,4,40,1,8,'bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1539,'Golden_Mace_','Golden Mace',5,20,NULL,800,110,NULL,1,2,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1540,'Grand_Cross_','Grand Cross',5,20,NULL,1500,140,NULL,1,1,0x00008110,7,2,2,4,40,1,8,'bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1541,'Nemesis','Nemesis',5,20,NULL,900,120,NULL,1,0,0x00008110,7,2,2,4,60,1,8,'bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus3 bAutoSpell,"AL_CRUCIS",1+getrefine(),100; autobonus "{ bonus bBaseAtk,50; }",10,20000,BF_WEAPON,"{ specialeffect2 EF_BLOODDRAIN; }";',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1542,'BF_Morning_Star1','Valorous Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1543,'BF_Morning_Star2','Brave Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1542,'BF_Morning_Star1','Valorous Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1543,'BF_Morning_Star2','Brave Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1544,'Lunakaligo','Lunakaligo',5,20,NULL,700,110,NULL,1,3,0x00008110,2,2,2,3,50,1,8,'if(readparam(bStr)>=77) { bonus bAspdRate,4; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAddMonsterDropItem,12065,RC_Plant,500; bonus3 bAddMonsterDropItem,12043,RC_Brute,500; bonus3 bAddMonsterDropItem,12069,RC_Fish,500; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1545,'N_Mace','Novice Mace',5,0,NULL,0,57,NULL,1,3,0x0004C5B3,7,2,2,1,2,0,8,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (1546,'Krieger_Onehand_Mace1','Glorious Morning Star',5,20,NULL,0,130,NULL,1,0,0x0004C5B3,7,2,2,4,80,1,8,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1546,'Krieger_Onehand_Mace1','Glorious Morning Star',5,20,NULL,0,130,NULL,1,0,0x0004C5B3,7,2,2,4,80,1,8,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1547,'Mace_Of_Madness','Mace Of Madness',5,20,NULL,0,150,NULL,1,0,0x0004C5B2,7,2,2,3,0,0,8,'bonus2 bSkillAtk,"MC_CARTREVOLUTION",25; bonus bStr,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1548,'Veteran_Hammer','Veteran Hammer',5,10000,NULL,1800,160,NULL,1,2,0x00008110,7,2,2,3,80,1,8,'bonus bHealPower,getskilllv("AL_DP"); bonus bCritical,getskilllv("PR_MACEMASTERY")*2; bonus bInt,1; bonus bLuk,1;',NULL,NULL);
 # Books
@@ -856,7 +856,7 @@ REPLACE INTO `item_db` VALUES (1561,'Hardback','Hardcover Book',5,20,NULL,1500,1
 REPLACE INTO `item_db` VALUES (1562,'Bible_Of_Battlefield','Battlefield Textbook',5,20,NULL,700,110,NULL,1,1,0x00410100,7,2,2,4,80,0,15,'bonus bInt,3; bonus3 bAutoSpell,"AL_BLESSING",3+(getskilllv("AL_BLESSING")>3)*(getskilllv("AL_BLESSING")-3),20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1563,'Diary_Of_Great_Sage_C','Sage\'s Diary',5,1,NULL,0,135,NULL,1,2,0x00410100,7,2,2,3,1,0,15,'bonus bMatkRate,20; bonus bAspdRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1564,'Encyclopedia','Encyclopedia',5,20,NULL,2000,110,NULL,1,2,0x00410100,7,2,2,3,70,1,15,'bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10);',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1565,'Death_Note','Ledger of Death',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1565,'Death_Note','Ledger of Death',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1566,'Diary_Of_Great_Basil','Diary Of Great Basil',5,20,NULL,0,120,NULL,1,0,0x00410100,7,2,2,1,0,0,15,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1567,'Hardback_C','Refined Hardcover Book',5,1,NULL,0,168,NULL,1,0,0x00410100,7,2,2,4,0,0,15,'bonus bStr,5; bonus bDex,2; bonus bMatkRate,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1568,'Book_Of_Billows_','Book of Billows',5,35000,NULL,750,90,NULL,1,3,0x00410100,7,2,2,3,27,1,15,'bonus bAtkEle,Ele_Water;',NULL,NULL);
@@ -865,12 +865,12 @@ REPLACE INTO `item_db` VALUES (1570,'Book_Of_Blazing_Sun_','Book of Blazing Sun'
 REPLACE INTO `item_db` VALUES (1571,'Book_Of_Gust_Of_Wind_','Book of Gust of Wind',5,35000,NULL,750,90,NULL,1,3,0x00410100,7,2,2,3,27,1,15,'bonus bAtkEle,Ele_Wind;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1572,'Principles_Of_Magic','Principles of Magic',5,20,NULL,300,60,NULL,1,2,0x00410100,7,2,2,3,60,1,15,'bonus bMatkRate,20; bonus bInt,3; bonus bSPrecovRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1573,'Ancient_Magic','Ancient Magic',5,20,NULL,700,30,NULL,1,2,0x00410100,7,2,2,3,70,1,15,'bonus bMatkRate,15;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1574,'BF_Book1','Brave Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiHuman,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1574,'BF_Book1','Brave Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus2 bIgnoreDefRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1578,'Book_Of_Prayer','Book Of Prayer',5,20,NULL,0,140,NULL,1,0,0x00410100,7,2,2,3,0,0,15,'bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus2 bWeaponComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1580,'Encyclopedia_C','Giant Encyclopedia',5,0,NULL,0,145,NULL,1,0,0x00410100,7,2,2,3,0,0,15,'bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1581,'F_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,135,NULL,1,2,0x00410100,7,2,2,3,1,0,15,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (1582,'E_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,135,NULL,1,2,0x00410100,7,2,2,3,1,0,15,NULL,NULL,NULL);
@@ -908,16 +908,16 @@ REPLACE INTO `item_db` VALUES (1628,'Survival_Rod_C','Refined Survivor\'s Rod',5
 REPLACE INTO `item_db` VALUES (1629,'Walking_Stick','Gentleman\'s Staff',5,20,NULL,500,40,NULL,1,1,0x00818314,7,2,2,4,50,1,10,'bonus bMatkRate,15; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1630,'Release_Of_Wish','Release of Wish',5,20,NULL,500,30,NULL,1,0,0x00810204,7,2,2,3,50,1,10,'bonus bMatkRate,15; bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }";',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1631,'Holy_Stick','Holy Stick',5,20,NULL,500,50,NULL,1,1,0x00008100,7,2,2,4,70,1,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bCastrate,"AL_HOLYLIGHT",-25; bonus2 bCastrate,"PR_TURNUNDEAD",-25; bonus2 bCastrate,"PR_MAGNUS",-25;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1632,'BF_Staff1','Warlock\'s Magic Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1633,'BF_Staff2','Warlock\'s Battle Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1632,'BF_Staff1','Warlock\'s Magic Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1633,'BF_Staff2','Warlock\'s Battle Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1634,'BF_Staff3','Strong Recovery Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1635,'BF_Staff4','Speedy Recovery Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1636,'Thorn_Staff','Thorn Staff of Darkness',5,20,NULL,700,60,NULL,1,0,0x00018314,2,2,2,4,75,1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,20; bonus2 bIgnoreMdefClassRate,Class_Normal,getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,getrefine(); bonus bDelayRate,-(getrefine()*3/2);',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1637,'Eraser','Eraser',5,20,NULL,500,80,NULL,1,0,0x00018314,2,2,2,4,70,1,10,'bonus bMatkRate,20; bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; if( getrefine()>9 ) bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",3,5,BF_MAGIC,0; else bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",1,5,BF_MAGIC,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1638,'Healing_Staff_C','Staff Of Healing',5,20,NULL,0,10,NULL,1,0,0x00008110,7,2,2,3,1,0,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2);',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1639,'N_Rod','Novice Rod',5,0,NULL,0,15,NULL,1,3,0x00818315,7,2,2,1,1,0,10,'bonus bMatkRate,16;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1640,'Krieger_Onehand_Staff1','Glorious Arc Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1641,'Krieger_Onehand_Staff2','Glorious Cure Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1640,'Krieger_Onehand_Staff1','Glorious Arc Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1641,'Krieger_Onehand_Staff2','Glorious Cure Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1642,'Staff_Of_Darkness','Staff Of Darkness',5,20,NULL,0,100,NULL,1,0,0x00818314,7,2,2,2,0,0,10,'bonus bCastrate,-5; bonus bMatkRate,15; bonus bInt,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1643,'Dead_Tree_Cane','Dead Tree Cane',5,20,NULL,100,100,NULL,1,0,0x00818314,7,2,2,4,70,1,10,'bonus bMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1644,'Piercing_Staff_M','Staff of Piercing',5,20,NULL,500,80,NULL,1,0,0x00018314,2,2,2,3,70,1,10,'bonus bInt,4; bonus bMatkRate,15; bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine();',NULL,NULL);
@@ -962,12 +962,12 @@ REPLACE INTO `item_db` VALUES (1734,'Orc_Archer_Bow','Orc Archer Bow',5,20,NULL,
 REPLACE INTO `item_db` VALUES (1735,'Kkakkung','Kkakkung',5,20,NULL,0,120,NULL,5,0,0x000A0848,7,2,34,1,1,0,11,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1736,'Double_Bound','Double Bound',5,20,NULL,900,70,NULL,5,3,0x00000800,2,2,34,3,70,1,11,'bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1737,'Ixion_Wing','Ixion Wings',5,20,NULL,300,135,NULL,5,1,0x00000800,2,2,34,4,70,1,11,'autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1738,'BF_Bow1','Valorous Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1739,'BF_Bow2','Brave Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1738,'BF_Bow1','Valorous Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1739,'BF_Bow2','Brave Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1740,'Nepenthes_Bow','Nepenthes Bow',5,20,NULL,1000,105,NULL,5,2,0x00000800,2,2,34,4,60,1,11,'bonus4 bAutoSpellOnSkill,"AC_DOUBLE","AC_CHARGEARROW",1,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1741,'Cursed_Lyre','Cursed Lyre',5,20,NULL,1250,125,NULL,5,1,0x00080808,2,2,34,4,80,1,11,'bonus bLuk,-2; bonus2 bAddEff,Eff_Curse,400;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1742,'N_Composite_Bow','Novice Composite Bow',5,1,NULL,0,49,NULL,5,3,0x000A0848,7,2,34,1,4,0,11,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (1743,'Krieger_Bow1','Glorious Hunter Bow',5,0,NULL,0,100,NULL,5,0,0x001A0848,7,2,34,4,80,1,11,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1743,'Krieger_Bow1','Glorious Hunter Bow',5,0,NULL,0,100,NULL,5,0,0x001A0848,7,2,34,4,80,1,11,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1744,'Bow_Of_Evil','Bow Of Evil',5,0,NULL,0,170,NULL,5,0,0x000A0848,7,2,34,4,1,0,11,'bonus2 bSkillAtk,"AC_DOUBLE",25; bonus bDex,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1745,'Falken_Blitz','Falken Blitz',5,0,NULL,1000,100,NULL,5,2,0x00080808,2,2,34,3,50,1,11,'bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; bonus2 bSkillAtk,"AC_DOUBLE",10; bonus2 bSkillAtk,"AC_CHARGEARROW",10;',NULL,NULL);
 # Arrows
@@ -1017,11 +1017,11 @@ REPLACE INTO `item_db` VALUES (1819,'Icicle_Fist','Icicle Fist',5,20,NULL,650,80
 REPLACE INTO `item_db` VALUES (1820,'Electric_Fist','Electric Fist',5,20,NULL,650,80,NULL,1,3,0x00008100,7,2,2,3,75,1,12,'bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",5,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1821,'Seismic_Fist','Seismic Fist',5,20,NULL,650,80,NULL,1,3,0x00008100,7,2,2,3,75,1,12,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",5,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1822,'Combo_Battle_Glove','Combo Battle Glove',5,20,NULL,500,30,NULL,1,4,0x00008100,7,2,2,3,60,1,12,'bonus2 bSkillAtk,"MO_TRIPLEATTACK",15; bonus2 bSkillAtk,"MO_CHAINCOMBO",15; bonus2 bSkillAtk,"MO_COMBOFINISH",20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1823,'BF_Knuckle1','Valorous Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1824,'BF_Knuckle2','Brave Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\\\"MO_EXTREMITYFIST\\\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1823,'BF_Knuckle1','Valorous Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1824,'BF_Knuckle2','Brave Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\\\"MO_EXTREMITYFIST\\\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1825,'Horn_Of_Hilthrion','Horn of Hillslion',5,20,NULL,600,95,NULL,1,3,0x00008000,2,2,2,3,60,1,12,'bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"CH_PALMSTRIKE","MO_INVESTIGATE",1,100; bonus3 bAutoSpell,"MO_CALLSPIRITS",5,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1826,'Krieger_Knuckle1','Glorious Claw',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1827,'Krieger_Knuckle2','Glorious Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1826,'Krieger_Knuckle1','Glorious Claw',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1827,'Krieger_Knuckle2','Glorious Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1828,'Monk_Knuckle','Monk Knuckle',5,20,NULL,0,150,NULL,1,0,0x00008100,7,2,2,4,0,0,12,'bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1829,'Fist_C','Fist',5,0,NULL,0,150,NULL,1,0,0x00008100,7,2,2,3,1,0,12,'bonus2 bAddSize,Size_All,40;',NULL,NULL);
 # Instruments
@@ -1047,11 +1047,11 @@ REPLACE INTO `item_db` VALUES (1919,'Base_Guitar','Bass Guitar',5,20,NULL,1500,1
 REPLACE INTO `item_db` VALUES (1920,'Berserk_Guitar','Berserk Guitar',5,20,NULL,1800,10,NULL,1,0,0x00080000,2,1,2,4,70,1,13,'bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex);',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1921,'Guh_Moon_Gom','Gun Moon Gom',5,20,NULL,0,120,NULL,1,0,0x00080000,7,1,2,1,0,0,13,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1922,'Oriental_Lute_','Oriental Lute',5,20,NULL,1200,150,NULL,1,2,0x00080000,7,1,2,4,65,1,13,'bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1923,'BF_Instrument1','Valorous Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1924,'BF_Instrument2','Brave Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1923,'BF_Instrument1','Valorous Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1924,'BF_Instrument2','Brave Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1925,'Cello','Cello',5,20,NULL,700,110,NULL,1,3,0x00080000,2,1,2,3,70,1,13,'bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"BA_MUSICALSTRIKE",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1926,'Harp_Of_Nepenthes','Harp of Nepenthes',5,20,NULL,1000,120,NULL,1,2,0x00080000,2,1,2,4,60,1,13,'bonus bInt,2; if( getrefine()>9 ) { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,2000; } else { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,1000; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1927,'Krieger_Instrument1','Glorious Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,4,80,1,13,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1927,'Krieger_Instrument1','Glorious Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,4,80,1,13,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1928,'Berserk_Guitar_I','Spirited Guitar',5,0,NULL,0,40,NULL,1,0,0x00080000,2,1,2,4,0,0,13,'bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex);',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1929,'Guitar_C','Guitar',5,0,NULL,0,177,NULL,1,0,0x00080000,7,1,2,3,1,0,13,'bonus2 bAddSize,Size_All,40;',NULL,NULL);
 # Whips
@@ -1082,17 +1082,17 @@ REPLACE INTO `item_db` VALUES (1973,'Sea_Witch_Foot','Sea Witch\'s Foot',5,20,NU
 REPLACE INTO `item_db` VALUES (1974,'Carrot_Whip','Carrot Whip',5,20,NULL,1300,185,NULL,2,0,0x00080000,2,0,2,4,70,1,14,'if(getrefine()>0) bonus3 bAutoSpell,"AL_INCAGI",getrefine(),10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1975,'Queen_Is_Whip','Queen Is Whip',5,20,NULL,0,120,NULL,2,0,0x00080000,7,0,2,1,0,0,14,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1976,'Queen\'s_Whip_','Queen\'s Whip',5,20,NULL,1100,150,NULL,2,2,0x00080000,7,0,2,4,65,1,14,'bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1977,'BF_Whip1','Valorous Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1978,'BF_Whip2','Brave Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1977,'BF_Whip1','Valorous Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1978,'BF_Whip2','Brave Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1979,'Stem_Of_Nepenthes','Stem of Nepenthes',5,20,NULL,1000,120,NULL,2,2,0x00080000,2,0,2,4,60,1,14,'bonus bInt,2; if( getrefine()>=9 ) { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,2000; } else { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,1000; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1980,'Whip_Of_Balance','Whip of Balance',5,20,NULL,700,110,NULL,2,3,0x00080000,2,0,2,3,70,1,14,'bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (1981,'Krieger_Whip1','Glorious Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,4,80,1,14,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (1981,'Krieger_Whip1','Glorious Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,4,80,1,14,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1982,'Phenomena_Whip','Phenomena Whip',5,20,NULL,0,160,NULL,2,0,0x00080000,7,0,2,4,0,0,14,'bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (1983,'Rante_C','Rante Whip',5,0,NULL,0,170,NULL,2,0,0x00080000,7,0,2,3,1,0,14,'bonus2 bAddSize,Size_All,40;',NULL,NULL);
 # Additional 2-Handed Staffs
 REPLACE INTO `item_db` VALUES (2000,'Destruction_Rod','Staff of Destruction',5,20,NULL,2500,130,NULL,1,1,0x00000200,2,2,34,4,80,1,23,'bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2001,'Divine_Cross','Divine Cross',5,20,NULL,1500,120,NULL,1,0,0x00008100,7,2,34,4,70,1,23,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2002,'Krieger_Twohand_Staff1','Glorious Destruction Staff',5,20,NULL,0,70,NULL,1,0,0x00018314,7,2,34,4,80,1,23,'bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2002,'Krieger_Twohand_Staff1','Glorious Destruction Staff',5,20,NULL,0,70,NULL,1,0,0x00018314,7,2,34,4,80,1,23,'bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bMagicAddRace,RC_Player,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2003,'Destruction_Rod_M','Staff of Destruction',5,20,NULL,2500,130,NULL,1,1,0x00000200,2,2,34,4,80,1,23,'bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2004,'Kronos','Kronos',5,20,NULL,1000,30,NULL,1,0,0x00010204,2,2,34,4,50,1,23,'bonus bMatkRate,20; bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2005,'Dea_Staff','Dea Staff',5,20,NULL,1000,30,NULL,1,1,0x00008110,2,2,34,3,50,1,23,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15+getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }";',NULL,NULL);
@@ -1138,7 +1138,7 @@ REPLACE INTO `item_db` VALUES (2136,'Cracked_Buckler','Cracked Buckler',4,0,NULL
 REPLACE INTO `item_db` VALUES (2137,'Valkyrja\'s_Shield_C','Neo Valkyrja\'s Shield',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFE,2,2,32,NULL,95,0,4,'bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Undead,20; bonus bMdef,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2138,'Bradium_Shield','Bradium Shield',4,20,NULL,1800,NULL,5,NULL,1,0x00CFFF80,2,2,32,NULL,65,1,3,'bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",60; bonus bAgi,-1; bonus bMaxHP,500;',NULL,NULL);
 # GM Shield
-REPLACE INTO `item_db` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',4,1,NULL,10,NULL,100,NULL,0,0xFFFFFFFF,7,2,32,NULL,1,1,0,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone,0; bonus bSpeedRate,25;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;');
+REPLACE INTO `item_db` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',4,1,NULL,10,NULL,100,NULL,0,0xFFFFFFFF,7,2,32,NULL,1,1,0,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone,0; bonus bSpeedRate,25;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;');
 # Headgears
 #===================================================================
 REPLACE INTO `item_db` VALUES (2201,'Sunglasses','Sunglasses',4,5000,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,12,'bonus2 bResEff,Eff_Blind,500;',NULL,NULL);
@@ -1229,9 +1229,9 @@ REPLACE INTO `item_db` VALUES (2285,'Apple_Of_Archer','Apple of Archer',4,20,NUL
 REPLACE INTO `item_db` VALUES (2286,'Elven_Ears','Elven Ears',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFE,7,2,512,NULL,70,0,73,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (2287,'Pirate_Bandana','Pirate Bandana',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,74,'bonus bStr,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2288,'Mr_Scream','Mr. Scream',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,7,2,513,NULL,0,0,75,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (2289,'Poo_Poo_Hat','Poo Poo Hat',4,20,NULL,700,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,76,'bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2289,'Poo_Poo_Hat','Poo Poo Hat',4,20,NULL,700,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,76,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2290,'Funeral_Costume','Funeral Hat',4,3000,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,77,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (2291,'Masquerade','Masquerade',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFE,7,2,512,NULL,0,0,78,'bonus2 bAddRace,RC_DemiHuman,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2291,'Masquerade','Masquerade',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFE,7,2,512,NULL,0,0,78,'bonus2 bAddRace,RC_DemiHuman,3; bonus2 bAddRace,RC_Player,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2292,'Welding_Mask','Welding Mask',4,20,NULL,300,NULL,2,NULL,0,0x00040420,7,2,513,NULL,50,0,79,'bonus2 bSubEle,Ele_Fire,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2293,'Pretend_Murdered','Pretend Murdered',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,80,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (2294,'Star_Dust','Stellar',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,81,NULL,NULL,NULL);
@@ -1310,20 +1310,20 @@ REPLACE INTO `item_db` VALUES (2365,'Orleans_Gown','Orleans\'s Gown',4,20,NULL,3
 REPLACE INTO `item_db` VALUES (2366,'Divine_Cloth','Divine Cloth',4,20,NULL,1500,NULL,6,NULL,1,0xFFFFFFFE,2,2,16,NULL,55,1,0,'bonus2 bResEff,Eff_Curse,500; bonus2 bResEff,Eff_Silence,500; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; bonus2 bResEff,Eff_Sleep,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2367,'Sniping_Suit','Sniping Suit',4,20,NULL,750,NULL,5,NULL,1,0x00000800,2,2,16,NULL,50,1,0,'bonus bMdef,5; bonus bCritical,6+(readparam(bLuk)/10); bonus bDelayRate,-23;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2368,'Golden_Armor','Golden Armor',4,20,NULL,2000,NULL,4,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bMdef,4;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2369,'Freyja_Overcoat','Freyja Overcoat',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,7,2,16,NULL,0,0,0,'bonus bUnbreakableArmor,0; bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2369,'Freyja_Overcoat','Freyja Overcoat',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,7,2,16,NULL,0,0,0,'bonus bUnbreakableArmor,0; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2370,'Used_Mage_Coat','Used Mage Coat',4,0,NULL,0,NULL,15,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bMaxHP,300; bonus bMaxSP,30; bonus bBaseAtk,10; bonus bAGI,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2371,'G_Strings_','Pantie',4,1000,NULL,100,NULL,4,NULL,1,0xFFFFFFFF,7,2,16,NULL,0,1,0,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (2372,'Mage_Coat_','Mage Coat',4,20,NULL,600,NULL,5,NULL,1,0x00810204,7,2,16,NULL,50,1,0,'bonus bMdef,5; bonus bInt,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2373,'Holy_Robe_','Holy Robe',4,20,NULL,1700,NULL,7,NULL,1,0x00008110,7,2,16,NULL,60,1,0,'bonus bMdef,5; bonus2 bSubRace,RC_Demon,15; bonus2 bSubEle,Ele_Dark,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2374,'Diabolus_Robe','Diabolus Robe',4,20,NULL,300,NULL,6,NULL,1,0x00098B1C,2,2,16,NULL,55,1,0,'bonus bMaxSP,150; bonus bMdef,5; bonus bHealPower,6; bonus bDelayRate,-10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2375,'Diabolus_Armor','Diabolus Armor',4,20,NULL,600,NULL,7,NULL,1,0x000654E2,2,2,16,NULL,55,1,0,'bonus bStr,2; bonus bDex,1; bonus bMaxHP,150; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2376,'Assaulter_Plate','Assaulter Plate',4,10,NULL,0,NULL,7,NULL,1,0x006444A2,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2377,'Elite_Engineer_Armor','Elite Engineer Armor',4,10,NULL,0,NULL,7,NULL,1,0x00040420,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2378,'Assassin_Robe','Assassin Robe',4,10,NULL,0,NULL,7,NULL,1,0x02021040,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2379,'Warlock_Battle_Robe','Warlock\'s Battle Robe',4,10,NULL,0,NULL,3,NULL,1,0x00810204,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2380,'Medic_Robe','Medic\'s Robe',4,10,NULL,0,NULL,3,NULL,1,0x00008110,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2381,'Elite_Archer_Suit','Elite Archer Suit',4,10,NULL,0,NULL,3,NULL,1,0x00080808,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2382,'Elite_Shooter_Suit','Elite Shooter Suit',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2376,'Assaulter_Plate','Assaulter Plate',4,10,NULL,0,NULL,7,NULL,1,0x006444A2,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2377,'Elite_Engineer_Armor','Elite Engineer Armor',4,10,NULL,0,NULL,7,NULL,1,0x00040420,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2378,'Assassin_Robe','Assassin Robe',4,10,NULL,0,NULL,7,NULL,1,0x02021040,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2379,'Warlock_Battle_Robe','Warlock\'s Battle Robe',4,10,NULL,0,NULL,3,NULL,1,0x00810204,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2380,'Medic_Robe','Medic\'s Robe',4,10,NULL,0,NULL,3,NULL,1,0x00008110,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2381,'Elite_Archer_Suit','Elite Archer Suit',4,10,NULL,0,NULL,3,NULL,1,0x00080808,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2382,'Elite_Shooter_Suit','Elite Shooter Suit',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2383,'Brynhild','Brynhild',4,20,NULL,400,NULL,10,NULL,0,0xFFFFFFFF,7,2,16,NULL,94,0,0,'bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor,0; bonus bNoKnockback,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2384,'Spritual_Tunic','Spiritual Tunic',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2385,'Recuperative_Armor','Recuperative Armor',4,20,NULL,0,NULL,12,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6;',NULL,'heal 0,-100;');
@@ -1335,7 +1335,7 @@ REPLACE INTO `item_db` VALUES (2390,'Improved_Tights','Improved Tights',4,20,NUL
 REPLACE INTO `item_db` VALUES (2391,'Life_Link','Life Link',4,20,NULL,3500,NULL,9,NULL,1,0x00004082,2,2,16,NULL,82,1,0,'bonus bVit,2; bonus bMdef,5; bonus bHPrecovRate,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2392,'Old_Pant','Old Green Pantie',4,0,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bStr,2; bonus bVit,2; bonus bMaxHP,200; bonus3 bAutoSpellWhenHit,"MO_CALLSPIRITS",5,20; bonus bMdef,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2393,'N_Adventurer\'s_Suit','Novice Adventurer\'s Suit',4,0,NULL,0,NULL,8,NULL,1,0xFFFFFFFF,7,2,16,NULL,0,0,0,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (2394,'Krieger_Suit1','Glorious Suit',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,16,NULL,81,1,0,'bonus bMaxHPRate,20; bonus2 bSubRace,RC_DemiHuman,7;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2394,'Krieger_Suit1','Glorious Suit',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,16,NULL,81,1,0,'bonus bMaxHPRate,20; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2395,'Krieger_Suit2','Glorious Popularized Suit',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,16,NULL,61,1,0,'bonus bMaxHP,600; bonus bSPrecovRate,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2396,'Krieger_Suit3','Glorious Mass-Production Suit',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,16,NULL,0,1,0,'bonus bMaxHP,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2397,'Incredible_Coat','Incredible Event Resignation Coat',4,10,NULL,900,NULL,2,NULL,0,0xFFFFFFFE,7,2,16,NULL,0,1,0,NULL,NULL,NULL);
@@ -1370,23 +1370,23 @@ REPLACE INTO `item_db` VALUES (2424,'Tidal_Shoes','Tidal Shoes',4,20,NULL,300,NU
 REPLACE INTO `item_db` VALUES (2425,'Black_Leather_Boots','Black Leather Boots',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFE,2,2,64,NULL,55,1,0,'bonus bAgi,1; if(getrefine()>=9) bonus bAgi,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2426,'Shadow_Walk','Shadow Walk',4,20,NULL,2000,NULL,0,NULL,0,0xFFFFFFFE,2,2,64,NULL,75,1,0,'bonus bMdef,10; if(getskilllv("AS_CLOAKING")<2){ bonus5 bAutoSpellWhenHit,"AS_CLOAKING",2,100,BF_MAGIC,0; } else bonus5 bAutoSpellWhenHit,"AS_CLOAKING",getskilllv("AS_CLOAKING"),100,BF_MAGIC,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2427,'Golden_Shoes','Golden Shoes',4,20,NULL,300,NULL,4,NULL,0,0xFFFFFFFF,7,2,64,NULL,0,0,0,'bonus bMdef,4;',NULL,NULL);
-#REPLACE INTO `item_db` VALUES (2428,'Freyja_Boots','Freyja Boots',4,0,NULL,300,NULL,10,NULL,0,0xFFFFFFFE,7,2,64,NULL,0,0,0,'bonus2 bSubRace,RC_DemiHuman,5;',NULL,NULL);
+#REPLACE INTO `item_db` VALUES (2428,'Freyja_Boots','Freyja Boots',4,0,NULL,300,NULL,10,NULL,0,0xFFFFFFFE,7,2,64,NULL,0,0,0,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2429,'Iron_Boots01','Iron Boots',4,0,NULL,1500,NULL,5,NULL,0,0x000E5CEA,7,2,64,NULL,0,1,0,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (2430,'Iron_Boots02','Iron Boots',4,0,NULL,800,NULL,5,NULL,0,0xFFFFFFFF,7,2,64,NULL,0,1,0,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (2431,'Valley_Shoes','Valley Shoes',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,64,NULL,0,0,0,'bonus bMaxHPRate,7; bonus bMaxSPRate,7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2432,'Spiky_Heel_','High Heels',4,8500,NULL,600,NULL,2,NULL,1,0xFFFFFFFE,7,2,64,NULL,0,1,0,'bonus bMdef,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2433,'Diabolus_Boots','Diabolus Boots',4,20,NULL,250,NULL,4,NULL,1,0x00CFFF80,2,2,64,NULL,0,1,0,'bonus bMaxHP,(BaseLevel*10);',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2434,'Black_Leather_Boots_','Black Leather Boots',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,2,2,64,NULL,55,1,0,'bonus bAgi,1; if(getrefine()>=9) bonus bAgi,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2435,'Battle_Greave','Battle Greaves',4,10,NULL,0,NULL,4,NULL,1,0x026654E2,7,2,64,NULL,80,1,0,'bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2436,'Combat_Boots','Combat Boots',4,10,NULL,0,NULL,3,NULL,1,0x00898B1C,7,2,64,NULL,80,1,0,'bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2437,'Battle_Boots','Battle Boots',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,64,NULL,80,1,0,'bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2435,'Battle_Greave','Battle Greaves',4,10,NULL,0,NULL,4,NULL,1,0x026654E2,7,2,64,NULL,80,1,0,'bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2436,'Combat_Boots','Combat Boots',4,10,NULL,0,NULL,3,NULL,1,0x00898B1C,7,2,64,NULL,80,1,0,'bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2437,'Battle_Boots','Battle Boots',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,64,NULL,80,1,0,'bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2438,'Paw_Of_Cat','Paw Of Cat',4,10,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,7,2,64,NULL,80,1,0,'bonus bFlee,5; bonus bAgi,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2439,'Refresh_Shoes','Refresh Shoes',4,20,NULL,0,NULL,9,NULL,0,0xFFFFFFFF,7,2,64,NULL,0,0,0,'bonus bMaxHPRate,17; bonus bMaxSPRate,8; bonus2 bHPRegenRate,20,10000; bonus2 bSPRegenRate,3,10000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2440,'Sprint_Shoes','Sprint Shoes',4,20,NULL,300,NULL,2,NULL,1,0x00CFFF80,2,2,64,NULL,70,1,0,'bonus bAgi,1; bonus bSPrecovRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2441,'Beach_Sandal','Beach Sandals',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,7,2,64,NULL,0,1,0,'bonus bStr,1; bonus bInt,1; bonus bAgi,1; bonus2 bSubEle,Ele_Fire,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2442,'Boots_Perforated','Red Stocking Boots',4,0,NULL,0,NULL,7,NULL,0,0xFFFFFFFF,7,2,64,NULL,0,0,0,'bonus bLuk,2; bonus bHPrecovRate,10; bonus bSPrecovRate,10; bonus3 bAutoSpellWhenHit,"WZ_QUAGMIRE",3,20; bonus bMdef,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2443,'Fish_Shoes','Fisher\'s Boots',4,10,NULL,250,NULL,0,NULL,0,0xFFFFFFFF,7,2,64,NULL,0,0,0,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (2444,'Krieger_Shoes1','Glorious Shoes',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,64,NULL,81,1,0,'bonus bMaxHPRate,10; bonus2 bSubRace,RC_DemiHuman,4; bonus3 bAutoSpellWhenHit,"AL_INCAGI",1,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2444,'Krieger_Shoes1','Glorious Shoes',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,64,NULL,81,1,0,'bonus bMaxHPRate,10; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; bonus3 bAutoSpellWhenHit,"AL_INCAGI",1,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2445,'Krieger_Shoes2','Glorious Popularized Shoes',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,64,NULL,61,1,0,'bonus bMaxHPRate,5; bonus bMaxSPRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2446,'Krieger_Shoes3','Glorious Mass-Production Shoes',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,64,NULL,0,1,0,'bonus bMaxHPRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2447,'Military_Boots','Army Boots',4,0,NULL,1000,NULL,5,NULL,0,0xFFFFFFFE,7,2,64,NULL,0,1,0,NULL,NULL,NULL);
@@ -1427,14 +1427,14 @@ REPLACE INTO `item_db` VALUES (2529,'Rider_Insignia','Rider Insignia',4,20,NULL,
 REPLACE INTO `item_db` VALUES (2530,'Rider_Insignia_','Rider Insignia',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,2,2,4,NULL,55,1,0,'bonus bAgi,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2531,'Ulfhedinn','Ulfhedinn',4,20,NULL,700,NULL,3,NULL,1,0x000654E2,2,2,4,NULL,70,1,0,'bonus3 bAutoSpellWhenHit,"NPC_STONESKIN",1,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2532,'Mithril_Magic_Cape','Mithril Magic Cape',4,20,NULL,400,NULL,3,NULL,1,0x00098B1C,2,2,4,NULL,70,1,0,'bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",1,200,BF_MAGIC,0;',NULL,NULL);
-#REPLACE INTO `item_db` VALUES (2533,'Freyja_Cape','Freyja Cape',4,0,NULL,200,NULL,10,NULL,0,0xFFFFFFFE,7,2,4,NULL,0,0,0,'bonus2 bSubRace,RC_DemiHuman,15;',NULL,NULL);
+#REPLACE INTO `item_db` VALUES (2533,'Freyja_Cape','Freyja Cape',4,0,NULL,200,NULL,10,NULL,0,0xFFFFFFFE,7,2,4,NULL,0,0,0,'bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2534,'Ruffler','Ruffler',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,4,NULL,0,0,0,'bonus2 bSubEle,Ele_Neutral,17; bonus bFlee,17;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2535,'Cloak_Of_Survival_C','Cloak Of Survival',4,1,NULL,0,NULL,5,NULL,0,0x00810204,7,2,4,NULL,0,0,0,'bonus bVit,10; bonus bMdef,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2536,'Skin_Of_Ventus','Skin of Ventus',4,20,NULL,250,NULL,2,NULL,1,0xFFFFFFFE,7,2,4,NULL,60,1,0,'bonus bMdef,2; bonus bMaxHP,200; bonus bFlee,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2537,'Diabolus_Manteau','Diabolus Manteau',4,20,NULL,250,NULL,5,NULL,1,0x00CFFF80,2,2,4,NULL,0,1,0,'bonus2 bSubEle,Ele_Neutral,5; bonus bMaxHP,100; bonus2 bAddDamageClass,1916,10; bonus2 bAddDamageClass,1917,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2538,'Commander_Manteau','Captain\'s Manteau',4,10,NULL,0,NULL,4,NULL,1,0x026654E2,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2539,'Commander_Manteau_','Commander\'s Manteau',4,10,NULL,0,NULL,3,NULL,1,0x00898B1C,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2540,'Sheriff_Manteau','Sheriff\'s Manteau',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2538,'Commander_Manteau','Captain\'s Manteau',4,10,NULL,0,NULL,4,NULL,1,0x026654E2,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2539,'Commander_Manteau_','Commander\'s Manteau',4,10,NULL,0,NULL,3,NULL,1,0x00898B1C,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2540,'Sheriff_Manteau','Sheriff\'s Manteau',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2541,'Asprika','Asprika',4,20,NULL,400,NULL,5,NULL,0,0xFFFFFFFF,7,2,4,NULL,94,0,0,'bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2542,'Flame_Manteau','Flame Manteau of Naght Sieger',4,20,NULL,70,NULL,4,NULL,1,0xFFFFFFFE,2,2,4,NULL,70,1,0,'bonus bMaxHPRate,5; bonus bMdef,2; bonus bMatkRate,1; bonus2 bAddEle,Ele_Fire,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2543,'Sylphid_Manteau','Sylphid Manteau',4,20,NULL,0,NULL,9,NULL,0,0xFFFFFFFF,7,2,4,NULL,0,0,0,'bonus bFlee,13; bonus2 bSubEle,Ele_Neutral,13; bonus bFlee2,1;',NULL,NULL);
@@ -1442,8 +1442,8 @@ REPLACE INTO `item_db` VALUES (2544,'Leather_Of_Tendrilion','Leather of Tendrili
 REPLACE INTO `item_db` VALUES (2545,'Musika','Musika',4,20,NULL,500,NULL,2,NULL,1,0x00008100,2,2,4,NULL,70,1,0,'bonus bMdef,3; bonus3 bAutoSpellwhenhit,"AL_HEAL",getskilllv("AL_HEAL")?getskilllv("AL_HEAL"):1,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2546,'Beach_Manteau','Beach Manteau',4,20,NULL,600,NULL,0,NULL,1,0xFFFFFFFF,7,2,4,NULL,0,1,0,'bonus bStr,1; bonus bInt,1; bonus2 bSubEle,Ele_Fire,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2547,'Cheap_Running_Shirts','Cheap Undershirt',4,0,NULL,0,NULL,8,NULL,0,0xFFFFFFFF,7,2,4,NULL,0,1,0,'bonus bDex,2; bonus bFlee,10; bonus2 bSubEle,Ele_Neutral,10; bonus bMdef,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2548,'Muffler_C','Neo Muffler',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFE,2,2,4,NULL,95,0,0,'bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,10; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2549,'Krieger_Muffler1','Glorious Muffler',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,4,NULL,81,1,0,'bonus bMaxHPRate,5; bonus2 bSubRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2548,'Muffler_C','Neo Muffler',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFE,2,2,4,NULL,95,0,0,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,10; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2549,'Krieger_Muffler1','Glorious Muffler',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,4,NULL,81,1,0,'bonus bMaxHPRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2550,'Fisher\'s_Muffler','Fisher\'s Muffler',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,7,2,4,NULL,0,1,0,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (2551,'Rider_Insignia_M','Crest of the Rider',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,2,2,4,NULL,55,1,0,'bonus bAgi,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2552,'Mithril_Magic_Cape_M','Mithril Magic Manteau',4,20,NULL,400,NULL,3,NULL,1,0x00098B1C,2,2,4,NULL,70,1,0,'bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",1,200,BF_MAGIC,0;',NULL,NULL);
@@ -1609,7 +1609,7 @@ REPLACE INTO `item_db` VALUES (2756,'Chemical_Ring','Chemical Ring',4,0,NULL,0,N
 REPLACE INTO `item_db` VALUES (2757,'Insecticide_Ring','Insecticide Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Insect,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2758,'Fisher_Ring','Fischer Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Fish,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2759,'Decussate_Ring','Decussate Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Demon,15;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2760,'Bloody_Ring','Bloody Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_DemiHuman,15;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2760,'Bloody_Ring','Bloody Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_DemiHuman,15; bonus2 bExpAddRace,RC_Player,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2761,'Satanic_Ring','Satanic Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Angel,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2762,'Dragoon_Ring','Dragon Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Dragon,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2763,'Skul_Ring_C','Neo Skull Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,2,2,136,NULL,95,0,0,'bonus bAtkRate,5; bonus bMatkrate,5; bonus bMaxHPrate,5; bonus2 bSkillHeal,"AL_HEAL",5; skill "MG_SIGHT",1;',NULL,NULL);
@@ -1645,8 +1645,8 @@ REPLACE INTO `item_db` VALUES (2791,'Just_Got_Fish','Fresh Fish',4,20,NULL,500,N
 #REPLACE INTO `item_db` VALUES (2793,'Ring_Of_Resonance_I','Ring of Resonance',4,0,NULL,0,NULL,2,NULL,0,0x00CFFF80,2,2,136,NULL,0,0,0,'bonus bAgi,2; bonus bVit,1; bonus bMdef,2; bonus4 bAutoSpellWhenHit,"WZ_QUAGMIRE",1,50,0; bonus3 bAutoSpellWhenHit,"AS_SPLASHER",10,20; bonus3 bAutoSpellWhenHit,"AL_HEAL",10,30; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,20; bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",5,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2794,'Magic_Stone_Ring','Magic Stone Ring',4,0,NULL,0,NULL,0,NULL,1,0x00004082,7,2,136,NULL,99,0,0,'bonus bStr,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2795,'Green_Apple_Ring','Green Apple Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,136,NULL,99,0,0,'bonus bAllStats,6; if(JobLevel <30) { bonus bAllStats,(JobLevel/5); }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2796,'Magical_Stone','Rocks',4,0,NULL,200,NULL,0,NULL,0,0x00810204,7,2,136,NULL,99,0,0,'bonus2 bAddDamageClass,2047,10; bonus2 bAddDefMonster,2048,-10; bonus3 bAddClassDropItem,6152,2047,70;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (2797,'Magical_Stone_','Rocks',4,0,NULL,200,NULL,0,NULL,0,0x00810204,7,2,136,NULL,99,0,0,'bonus2 bAddDamageClass,2049,10; bonus2 bAddDefMonster,2050,-10; bonus3 bAddClassDropItem,6151,2049,70;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2796,'Magical_Stone','Rocks',4,0,NULL,200,NULL,0,NULL,0,0x00810204,7,2,136,NULL,99,0,0,'bonus2 bAddDamageClass,2047,10; bonus2 bAddDefMonster,2048,-10; bonus3 bAddMonsterIdDropItem,6152,2047,70;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (2797,'Magical_Stone_','Rocks',4,0,NULL,200,NULL,0,NULL,0,0x00810204,7,2,136,NULL,99,0,0,'bonus2 bAddDamageClass,2049,10; bonus2 bAddDefMonster,2050,-10; bonus3 bAddMonsterIdDropItem,6151,2049,70;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2798,'Will_Of_Exhausted_Angel','Will Of Exhausted Angel',4,0,NULL,200,NULL,0,NULL,0,0x00008100,7,2,136,NULL,99,0,0,'if(strcharinfo(3)=="job3_arch02") { bonus2 bAddDefMonster,1761,50; bonus2 bAddDefMonster,1762,50; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2799,'Kuirpenring','Kuirpenring',4,0,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus bMdef,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2819,'Swordman_Manual','Swordsman Manual',4,0,NULL,100,NULL,0,NULL,0,0x00000001,7,2,136,NULL,1,0,0,'bonus bMaxSP,100; skill "SM_BASH",1; skill "SM_PROVOKE",1; skill "SM_MAGNUM",1;',NULL,NULL);
@@ -1691,7 +1691,7 @@ REPLACE INTO `item_db` VALUES (4031,'Pecopeco_Card','Peco Peco Card',6,20,NULL,1
 REPLACE INTO `item_db` VALUES (4032,'Ambernite_Card','Ambernite Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bDef,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4033,'Poporing_Card','Poporing Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'skill "TF_DETOXIFY",1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4034,'Worm_Tail_Card','Wormtail Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bDex,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4035,'Hydra_Card','Hydra Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_DemiHuman,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4035,'Hydra_Card','Hydra Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4036,'Muka_Card','Muka Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bHPrecovRate,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4037,'Snake_Card','Snake Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEff,Eff_Poison,500; bonus bBaseAtk,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4038,'Zombie_Card','Zombie Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bHPrecovRate,20;',NULL,NULL);
@@ -1714,7 +1714,7 @@ REPLACE INTO `item_db` VALUES (4054,'Angeling_Card','Angeling Card',6,20,NULL,10
 REPLACE INTO `item_db` VALUES (4055,'Marina_Card','Marina Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEff,Eff_Freeze,500; bonus bBaseAtk,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4056,'Dustiness_Card','Dustiness Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Wind,30; bonus bFlee,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4057,'Metaller_Card','Metaller Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEff,Eff_Silence,500; bonus bBaseAtk,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4058,'Thara_Frog_Card','Thara Frog Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,30;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4058,'Thara_Frog_Card','Thara Frog Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4059,'Soldier_Andre_Card','Soldier Andre Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Plant,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4060,'Goblin_Card','Goblin Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Brute,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4061,'Cornutus_Card','Cornutus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bUnbreakableArmor,0; bonus bDef,1;',NULL,NULL);
@@ -1781,7 +1781,7 @@ REPLACE INTO `item_db` VALUES (4121,'Phreeoni_Card','Phreeoni Card',6,20,NULL,10
 REPLACE INTO `item_db` VALUES (4122,'Deviruchi_Card','Deviruchi Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bStr,1; bonus2 bResEff,Eff_Blind,10000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4123,'Eddga_Card','Eddga Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMaxHPrate,-25;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;');
 REPLACE INTO `item_db` VALUES (4124,'Medusa_Card','Medusa Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Demon,15; bonus2 bResEff,Eff_Stone,10000;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4125,'Deviace_Card','Deviace Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Brute,7; bonus2 bAddRace,RC_Plant,7; bonus2 bAddRace,RC_Insect,7;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4125,'Deviace_Card','Deviace Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bAddRace,RC_Brute,7; bonus2 bAddRace,RC_Plant,7; bonus2 bAddRace,RC_Insect,7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4126,'Minorous_Card','Minorous Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddSize,Size_Large,15; bonus bBaseAtk,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4127,'Nightmare_Card','Nightmare Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bResEff,Eff_Sleep,10000; bonus bAgi,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4128,'Golden_Bug_Card','Golden Thief Bug Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bNoMagicDamage,100; bonus bUseSPrate,100;',NULL,NULL);
@@ -1810,7 +1810,7 @@ REPLACE INTO `item_db` VALUES (4150,'Goat_Card','Goat Card',6,20,NULL,10,NULL,NU
 REPLACE INTO `item_db` VALUES (4151,'Gajomart_Card','Gajomart Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Plant,-20; bonus2 bExpAddRace,RC_Plant,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4152,'Galapago_Card','Galapago Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemHealRate,IG_Juice,50; bonus3 bAddMonsterDropItem,531,RC_Insect,300; bonus3 bAddMonsterDropItem,532,RC_Insect,300; bonus3 bAddMonsterDropItem,534,RC_Insect,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4153,'Crab_Card','Crab Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1266,30;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4154,'Rice_Cake_Boy_Card','Dumpling Child Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4154,'Rice_Cake_Boy_Card','Dumpling Child Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,529,RC_Player,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,530,RC_Player,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4155,'Goblin_Leader_Card','Goblin Leader Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace2,1,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4156,'Steam_Goblin_Card','Goblin Steamrider Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Formless,7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4157,'Goblin_Archer_Card','Goblin Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Undead,7;',NULL,NULL);
@@ -1901,8 +1901,8 @@ REPLACE INTO `item_db` VALUES (4241,'Archangeling_Card','Arc Angeling Card',6,20
 REPLACE INTO `item_db` VALUES (4242,'Apocalips_Card','Apocalipse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,2; if(getrefine()>8) bonus bMaxHP,800;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4243,'Antonio_Card','Antonio Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_TELEPORT",1,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4244,'Alarm_Card','Alarm Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,200; bonus bMaxHP,300; bonus bVit,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4245,'Am_Mut_Card','Am Mut Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bExpAddRace,RC_DemiHuman,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4246,'Assulter_Card','Assaulter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4245,'Am_Mut_Card','Am Mut Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; bonus2 bExpAddRace,RC_Player,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4246,'Assulter_Card','Assaulter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7; bonus2 bCriticalAddRace,RC_Player,7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4247,'Aster_Card','Aster Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1074,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4248,'Ancient_Mummy_Card','Ancient Mummy Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_CRUCIS",5,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4249,'Ancient_Worm_Card','Ancient Worm Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Demon,-20; bonus2 bExpAddRace,RC_Demon,10;',NULL,NULL);
@@ -1912,7 +1912,7 @@ REPLACE INTO `item_db` VALUES (4252,'Alligator_Card','Alligator Card',6,20,NULL,
 REPLACE INTO `item_db` VALUES (4253,'Alice_Card','Alice Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubClass,Class_Boss,40; bonus2 bSubClass,Class_Normal,-40;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4254,'Tirfing_Card','Ogretooth Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubSize,Size_Medium,25; bonus bDef,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4255,'Orc_Lady_Card','Orc Lady Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace2,3,30;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4256,'Orc_Archer_Card','Orc Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4256,'Orc_Archer_Card','Orc Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,12034,RC_Player,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4257,'Wild_Rose_Card','Wild Rose Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAgi,1; if(BaseClass==Job_Thief) bonus bFlee2,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4258,'Wicked_Nymph_Card','Evil Nymph Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMaxSP,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4259,'Wooden_Golem_Card','Wooden Golem Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus bHPrecovRate,30;',NULL,NULL);
@@ -1985,7 +1985,7 @@ REPLACE INTO `item_db` VALUES (4325,'Harpy_Card','Harpy Card',6,20,NULL,10,NULL,
 REPLACE INTO `item_db` VALUES (4326,'See_Otter_Card','Sea-Otter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemHealRate,IG_Fish,50; bonus3 bAddMonsterDropItem,551,RC_Fish,300; bonus3 bAddMonsterDropItem,544,RC_Fish,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4327,'Blood_Butterfly_Card','Bloody Butterfly Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bCastrate,30; bonus bNoCastCancel,0; bonus2 bSkillAtk,"MG_FIREWALL",5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4328,'Hyegun_Card','Yao Jun Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bFlee,15; bonus bCritical,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4329,'Phendark_Card','Phendark Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_DemiHuman,5;',NULL,'heal 0,-5;');
+REPLACE INTO `item_db` VALUES (4329,'Phendark_Card','Phendark Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_DemiHuman,5; bonus2 bSPGainRace,RC_Player,5;',NULL,'heal 0,-5;');
 REPLACE INTO `item_db` VALUES (4330,'Dark_Snake_Lord_Card','Evil Snake Lord Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bInt,3; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Curse,10000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4331,'Heater_Card','Heater Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bCritical,3; if(BaseClass==Job_Swordman) bonus bFlee2,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4332,'Waste_Stove_Card','Waste Stove Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus bInt,1;',NULL,NULL);
@@ -2016,7 +2016,7 @@ REPLACE INTO `item_db` VALUES (4356,'Beholder_Card','Beholder Card',6,20,NULL,10
 REPLACE INTO `item_db` VALUES (4357,'B_Seyren_Card','Lord Knight Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'skill "LK_BERSERK",1; bonus bMaxHPrate,-50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4358,'Seyren_Card','Seyren Windsor Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bStr,getrefine()-6;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4359,'B_Eremes_Card','Assassin Cross Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'skill "AS_CLOAKING",3;',NULL,'sc_end SC_CLOAKING;');
-REPLACE INTO `item_db` VALUES (4360,'Eremes_Card','Eremes Guile Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bCriticalAddRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4360,'Eremes_Card','Eremes Guile Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bCriticalAddRace,RC_DemiHuman,10; bonus2 bCriticalAddRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4361,'B_Harword_Card','MasterSmith Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBreakWeaponRate,1000; bonus bBreakArmorRate,700;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4362,'Harword_Card','Howard Alt-Eisen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bAspdRate,-5; bonus bHit,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4363,'B_Magaleta_Card','High Priest Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus5 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,50,BF_WEAPON|BF_MAGIC,0;',NULL,NULL);
@@ -2091,13 +2091,13 @@ REPLACE INTO `item_db` VALUES (4431,'Kasa_Card','Kasa Card',6,20,NULL,10,NULL,NU
 REPLACE INTO `item_db` VALUES (4432,'Magmaring_Card','Magmaring Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddEle,Ele_Earth,10; bonus2 bCriticalAddRace,RC_Brute,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4433,'Imp_Card','Imp Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bSkillAtk,"MG_FIREBOLT",25; bonus2 bCastrate,"MG_FIREBOLT",-25;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4434,'Knocker_Card','Knocker Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Formless,5; bonus3 bAddMonsterDropItem,756,RC_Formless,10; bonus3 bAddMonsterDropItem,757,RC_Formless,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4435,'Zombie_Slaughter_Card','Zombie Slaughter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus bHPGainValue,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4436,'Ragged_Zombie_Card','Ragged Zombie Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus2 bAddEff2,Eff_Bleeding,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4435,'Zombie_Slaughter_Card','Zombie Slaughter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_Player,1; bonus bHPGainValue,50;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4436,'Ragged_Zombie_Card','Ragged Zombie Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1; bonus2 bMagicAddRace,RC_DemiHuman,1; bonus2 bMagicAddRace,RC_Player,1; bonus2 bAddEff2,Eff_Bleeding,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4437,'Hell_Poodle_Card','Hell Poodle Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bHit,1; bonus2 bAddItemHealRate,517,100; bonus3 bAddEff,Eff_Bleeding,50,ATF_SHORT;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4438,'Banshee_Card','Banshee Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'if(BaseClass==Job_Mage){ bonus bMaxSP,100; bonus bMaxHP,-100; bonus2 bSkillAtk,"MG_NAPALMBEAT",20; bonus2 bSkillAtk,"MG_SOULSTRIKE",20; bonus2 bSkillAtk,"HW_NAPALMVULCAN",20; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4439,'Flame_Skull_Card','Flame Skull Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bResEff,Eff_Blind,3000; bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Curse,3000; bonus2 bResEff,Eff_Stone,3000; bonus2 bAddEffWhenHit,Eff_Blind,500; bonus2 bAddEffWhenHit,Eff_Stun,500; bonus2 bAddEffWhenHit,Eff_Curse,500; bonus2 bAddEffWhenHit,Eff_Stone,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4440,'Necromancer_Card','Necromancer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { bonus bInt,1; bonus2 bIgnoreMdefClassRate,Class_Normal,2; bonus2 bIgnoreMdefClassRate,Class_Boss,2; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4441,'Fallen_Bishop_Card','Fallen Bishop Hibram Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiHuman,50;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4441,'Fallen_Bishop_Card','Fallen Bishop Hibram Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiHuman,50; bonus2 bMagicAddRace,RC_Player,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4442,'Tatacho_Card','Tatacho Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,20; bonus2 bAddEle,Ele_Neutral,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4443,'Aqua_Elemental_Card','Aqua Elemental Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Water,20; bonus2 bAddEle,Ele_Water,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4444,'Draco_Card','Draco Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Earth,20; bonus2 bAddEle,Ele_Earth,5;',NULL,NULL);
@@ -2319,7 +2319,7 @@ REPLACE INTO `item_db` VALUES (5117,'Mistic_Rose','Mystic Rose',4,20,NULL,100,NU
 REPLACE INTO `item_db` VALUES (5118,'Ear_Of_Puppy','Puppy Headband',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,199,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5119,'Super_Novice_Hat_','Super Novice Hat',4,8500,NULL,400,NULL,4,NULL,1,0x00000001,7,2,256,NULL,40,1,193,'bonus bAllStats,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5120,'Fedora_','Bucket Hat',4,6000,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,195,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5121,'Zherlthsh_Mask','Zealotus Mask',4,20,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,7,2,768,NULL,70,1,200,'bonus2 bAddRace,RC_DemiHuman,5; bonus2 bSubRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5121,'Zherlthsh_Mask','Zealotus Mask',4,20,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,7,2,768,NULL,70,1,200,'bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5122,'Magni_Cap','Magni\'s Cap',4,30000,NULL,1000,NULL,5,NULL,0,0xFFFFFFFE,7,2,256,NULL,65,1,250,'bonus bStr,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5123,'Ulle_Cap','Ulle\'s Cap',4,30000,NULL,500,NULL,3,NULL,1,0xFFFFFFFE,7,2,256,NULL,65,1,254,'bonus bDex,2; bonus bAgi,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5124,'Fricca_Circlet','Fricca\'s Circlet',4,30000,NULL,300,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,65,1,251,'bonus bMdef,10; bonus bInt,2; bonus bMaxSP,50;',NULL,NULL);
@@ -2330,17 +2330,17 @@ REPLACE INTO `item_db` VALUES (5128,'Goibne\'s_Helmet','Goibne\'s Helm',4,30000,
 REPLACE INTO `item_db` VALUES (5129,'Bird_Nest','Bird Nest',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,0,201,'bonus bAgi,2; bonus2 bSubRace,RC_Brute,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5130,'Lion_Mask','Lion Mask',4,20,NULL,700,NULL,0,NULL,0,0x00CFDF80,7,2,768,NULL,75,1,202,'bonus2 bAddEffWhenHit,Eff_Silence,500; bonus bMdef,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5131,'Close_Helmet','Close Helmet',4,20,NULL,1200,NULL,8,NULL,0,0x00004082,7,2,769,NULL,75,1,203,'bonus bVit,3; bonus bMaxHPrate,3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5132,'Angeling_Hat','Angeling Hat',4,20,NULL,700,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,204,'bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5132,'Angeling_Hat','Angeling Hat',4,20,NULL,700,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,204,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5133,'Sheep_Hat','Sheep Hat',4,20,NULL,150,NULL,1,NULL,0,0x00008110,7,2,256,NULL,0,0,205,'bonus bShortWeaponDamageReturn,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5134,'Pumpkin_Hat','Pumpkin-Head',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,206,'bonus2 bSubRace,RC_Demon,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5135,'Cyclops_Visor','Cyclop\'s Eye',4,0,NULL,200,NULL,0,NULL,0,0xFFFFFFFE,7,2,512,NULL,75,0,207,'bonus bMaxSP,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5136,'Santa\'s_Hat_','Antonio\'s Santa Hat',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,20,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5137,'Alice_Doll','Alice Doll',4,20,NULL,500,NULL,0,NULL,1,0xFFFFFFFE,7,2,256,NULL,30,0,208,'bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddEff2,Eff_Sleep,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5137,'Alice_Doll','Alice Doll',4,20,NULL,500,NULL,0,NULL,1,0xFFFFFFFE,7,2,256,NULL,30,0,208,'bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEff2,Eff_Sleep,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5138,'Magic_Eyes','Magic Eyes',4,20,NULL,300,NULL,1,NULL,0,0x00810204,7,2,256,NULL,30,1,209,'bonus bMdef,5; bonus bCastrate,-10; bonus bUseSPrate,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5139,'Hibiscus','Hibiscus',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,0,210,'bonus bDex,1; bonus bInt,1; bonus bMdef,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5140,'Charming_Ribbon','Charming Ribbon',4,20,NULL,400,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,10,1,211,'bonus2 bSubRace,RC_Undead,5; bonus2 bSubRace,RC_Demon,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5141,'Marionette_Doll','Marionette Doll',4,20,NULL,400,NULL,0,NULL,1,0xFFFFFFFE,7,2,256,NULL,30,1,212,'bonus bStr,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5142,'Crescent_Helm','Crescent Helm',4,20,NULL,3000,NULL,8,NULL,0,0x000444A2,7,2,768,NULL,50,1,213,'bonus bVit,1; bonus2 bSubRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5142,'Crescent_Helm','Crescent Helm',4,20,NULL,3000,NULL,8,NULL,0,0x000444A2,7,2,768,NULL,50,1,213,'bonus bVit,1; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5143,'Kabuki_Mask','Kabuki Mask',4,20,NULL,1000,NULL,5,NULL,1,0xFFFFFFFE,7,1,769,NULL,30,1,214,'bonus2 bResEff,Eff_Silence,3000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5144,'Gambler_Hat','Gambler Hat',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,16,'bonus bLuk,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5145,'Carnival_Joker_Jester','Carnival Joker Jester',4,10,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,89,NULL,NULL,NULL);
@@ -2368,9 +2368,9 @@ REPLACE INTO `item_db` VALUES (5166,'Spinx_Helm_','Sphinx Hat',4,20,NULL,3000,NU
 REPLACE INTO `item_db` VALUES (5167,'Munak_Turban_','Munak Hat',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,7,2,769,NULL,0,0,51,'bonus2 bSubRace,RC_Undead,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5168,'Bongun_Hat_','Bongun Hat',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,7,2,769,NULL,0,0,139,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5169,'Bride_Mask','Bride Mask',4,30000,NULL,500,NULL,4,NULL,1,0xFFFFFFFF,7,2,768,NULL,40,1,223,'if(BaseClass==Job_Taekwon){ bonus bLuk,2; bonus bCritical,5; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5170,'Feather_Beret','Feather Beret',4,30000,NULL,600,NULL,1,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,224,'bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5170,'Feather_Beret','Feather Beret',4,30000,NULL,600,NULL,1,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,224,'bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5171,'Valkyrie_Helm','Valkyrie Helm',4,100000,NULL,1000,NULL,5,NULL,1,0xFFFFFFFE,2,2,256,NULL,0,1,225,'bonus bMdef,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5172,'Beret','Beret',4,30000,NULL,700,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,226,'bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5172,'Beret','Beret',4,30000,NULL,700,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,226,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5173,'Satto_Hat','Magistrate Hat',4,30000,NULL,400,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,1,227,'if(BaseClass==Job_Taekwon){ bonus bAgi,1; bonus bHPrecovRate,3; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5174,'Ayam','Ayam',4,30000,NULL,400,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,1,228,'if(BaseClass==Job_Taekwon){ bonus bInt,1; bonus bSPrecovRate,3; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5175,'Censor_Bar','Censor Bar',4,30000,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,229,'bonus2 bResEff,Eff_Curse,500; bonus bMdef,1; bonus bHit,-5;',NULL,NULL);
@@ -2464,7 +2464,7 @@ REPLACE INTO `item_db` VALUES (5262,'Gold_Tiara_','Golden Tiara',4,20,NULL,500,N
 REPLACE INTO `item_db` VALUES (5263,'Ati_Atihan_Hat','Pagdayaw',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,7,2,769,NULL,20,1,303,'bonus2 bSubEle,Ele_Water,1; bonus2 bSubEle,Ele_Earth,1; bonus2 bSubEle,Ele_Fire,1; bonus2 bSubEle,Ele_Wind,1; bonus2 bAddEff,Eff_Curse,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5264,'Aussie_Flag_Hat','Australian Flag Hat',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,304,'bonus bAllStats,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5265,'Apple_Of_Archer_C','Apple of Archer',4,1,NULL,0,NULL,7,NULL,0,0xFFFFFFFE,7,2,256,NULL,1,0,72,'bonus bDex,4;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5266,'Bunny_Band_C','Bunny Band',4,1,NULL,0,NULL,9,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,0,15,'bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5266,'Bunny_Band_C','Bunny Band',4,1,NULL,0,NULL,9,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,0,15,'bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5267,'Sahkkat_C','Sakkat',4,1,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,67,'bonus bAgi,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5268,'Lord_Circlet_C','Grand Circlet',4,1,NULL,0,NULL,10,NULL,0,0xFFFFFFFE,7,2,256,NULL,1,0,93,'bonus bStr,3; bonus bInt,3; bonus bLuk,3; bonus bMdef,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5269,'Flying_Angel_','Flapping Angel Wing',4,20,NULL,300,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,264,'bonus bInt,1; bonus bAgi,1; bonus bAspdRate,3; bonus bSpeedRate,25;',NULL,NULL);
@@ -2481,7 +2481,7 @@ REPLACE INTO `item_db` VALUES (5279,'Drooping_Kitty_C','Refined Drooping Cat',4,
 REPLACE INTO `item_db` VALUES (5280,'Magestic_Goat_C','Baphomet Horns',4,2,NULL,0,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,41,'bonus bStr,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5281,'Deviruchi_Cap_C','Refined Deviruchi Hat',4,2,NULL,0,NULL,2,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,0,123,'bonus bStr,1; bonus bInt,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5282,'euRO_Baseball_Cap','Europe Baseball Cap',4,0,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,216,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5283,'Chick_Hat','Chick Hat',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,0,311,'bonus bLuk,2; bonus bMaxHP,50; bonus bMaxSP,50; skill "TF_DOUBLE",2; bonus bDoubleRate,10; bonus2 bSubRace,RC_DemiHuman,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5283,'Chick_Hat','Chick Hat',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,0,311,'bonus bLuk,2; bonus bMaxHP,50; bonus bMaxSP,50; skill "TF_DOUBLE",2; bonus bDoubleRate,10; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5284,'Water_Lily_Crown','Water Lily Crown',4,20,NULL,200,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,0,312,'bonus bDex,1; bonus bAgi,1; bonus bHPrecovRate,5; bonus bSPrecovRate,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5285,'Vane_Hairpin','Vane Hairpin',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,0,313,'bonus bAgi,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5286,'Pecopeco_Hairband','Pecopeco Hairband',4,20,NULL,0,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,0,314,'bonus bSpeedRate,25; bonus bAspdRate,-10; bonus bCastrate,25;',NULL,NULL);
@@ -2504,15 +2504,15 @@ REPLACE INTO `item_db` VALUES (5302,'Lotus_Flower_Hat','Flower Lily',4,0,NULL,10
 REPLACE INTO `item_db` VALUES (5303,'Flower_Coronet','Flower Crown',4,20,NULL,300,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,325,'bonus bMdef,3; bonus bMaxHP,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5304,'Cap_Of_Blindness','Cap Of Blindness',4,20,NULL,800,NULL,4,NULL,1,0xFFFFFFFF,7,2,769,NULL,50,1,326,'bonus2 bResEff,Eff_Curse,700; bonus2 bResEff,Eff_Blind,10000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5305,'Pirate_Dagger','Pirate Dagger',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,0,327,'bonus bBaseAtk,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5306,'Freyja_Crown','Freya\'s Crown',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,0,328,'bonus2 bSubRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5306,'Freyja_Crown','Freya\'s Crown',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,0,328,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5307,'Carmen_Miranda\'s_Hat','Carmen Miranda\'s Hat',4,20,NULL,400,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,329,'bonus bMdef,3; bonus3 bAutoSpellWhenHit,"DC_WINKCHARM",1,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5308,'Brazilian_Flag_Hat','Brazil National Flag Hat',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,330,'bonus bSpeedAddRate,25;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5309,'Mahican','Wool Mask',4,20,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,7,2,769,NULL,0,1,331,'skill "RG_GRAFFITI",1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5310,'Bulb_Hairband','Shining Electric Bulb Hairband',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,332,'bonus2 bSubEle,Ele_Dark,10; skill "MG_SIGHT",1;',NULL,'sc_end SC_SIGHT;');
 REPLACE INTO `item_db` VALUES (5311,'Large_Hibiscus','Large Hisbiscus',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,333,'bonus bMdef,15;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5312,'Ayothaya_Hat','Ayothaya King\'s Hat',4,20,NULL,100,NULL,5,NULL,1,0x000654E2,7,2,256,NULL,0,1,334,'bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5312,'Ayothaya_Hat','Ayothaya King\'s Hat',4,20,NULL,100,NULL,5,NULL,1,0x000654E2,7,2,256,NULL,0,1,334,'bonus bStr,1; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5313,'Diadem','Diadem',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,7,2,768,NULL,0,1,335,'bonus bInt,1; bonus bMatkRate,3; bonus bCastrate,-3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5314,'Hockey_Mask','Hockey Mask',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,50,0,336,'bonus2 bAddRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5314,'Hockey_Mask','Hockey Mask',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,50,0,336,'bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5315,'Observer','Observer',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,35,0,337,'skill "WZ_ESTIMATION",1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5316,'Umbrella_Hat','Umbrella Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,1,338,'bonus2 bSubEle,Ele_Water,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5317,'Fisherman_Hat','Fisherman\'s Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,1,339,'bonus3 bAutoSpell,"WZ_WATERBALL",3,50;',NULL,NULL);
@@ -2524,7 +2524,7 @@ REPLACE INTO `item_db` VALUES (5322,'Scarf','Kerchief',4,20,NULL,100,NULL,2,NULL
 REPLACE INTO `item_db` VALUES (5323,'Misstrance_Crown','Misstrance Crown',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,165,'bonus bAllStats,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5324,'Little_Angel_Doll','Little Angel Doll',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,344,'bonus bDex,3; bonus4 bAutoSpellWhenHit,"CR_GRANDCROSS",3,30,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5325,'Robo_Eye','Robo Eye',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,10,0,345,'bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; bonus bDex,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5326,'Masquerade_C','Masquerade C',4,1,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,78,'bonus2 bAddRace,RC_DemiHuman,7;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5326,'Masquerade_C','Masquerade C',4,1,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,78,'bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5327,'Orc_Hero_Helm_C','Refined Helmet of Orc Hero',4,1,NULL,0,NULL,10,NULL,0,0xFFFFFFFE,7,2,768,NULL,0,0,178,'bonus bStr,5; bonus bVit,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5328,'Evil_Wing_Ears_C','Evil Wing Ears C',4,1,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,152,'bonus bStr,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5329,'Dark_Blindfold_C','Dark Blindfold C',4,1,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,187,'bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Stun,500;',NULL,NULL);
@@ -2538,12 +2538,12 @@ REPLACE INTO `item_db` VALUES (5336,'Guildsman_Recruiter','Guildsman Recruiter H
 REPLACE INTO `item_db` VALUES (5337,'Party_Recruiter_Hat','Party Recruiter Hat',4,0,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,351,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5338,'Bf_Recruiter_Hat','Bf Recruiter Hat',4,0,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,352,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5339,'Friend_Recruiter_Hat','Friend Recruiter Hat',4,0,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,353,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5340,'Deprotai_Doll_Hat','Defolty Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,354,'bonus2 bSubRace,RC_DemiHuman,5; bonus bStr,2; bonus3 bAutoSpellWhenHit,"AL_ANGELUS",10,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5341,'Claris_Doll_Hat','Glaris Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,355,'bonus2 bSubRace,RC_DemiHuman,5; bonus bInt,2; bonus bMagicHPGainValue,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5342,'Sorin_Doll_Hat','Sorin Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,356,'bonus2 bSubRace,RC_DemiHuman,5; bonus bDex,2; autobonus "{ bonus bBaseAtk,50; }",20,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5343,'Tayelin_Doll_Hat','Telling Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,357,'bonus2 bSubRace,RC_DemiHuman,5; bonus bAgi,2; bonus2 bAddItemHealRate,504,10; bonus2 bAddItemHealRate,547,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5344,'Binit_Doll_Hat','Bennit Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,358,'bonus2 bSubRace,RC_DemiHuman,5; bonus bVit,2; autobonus "{ bonus bAspdRate,5; }",20,30000,0,"{ specialeffect2 EF_HASTEUP; }";',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5345,'Debril_Doll_Hat','W Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,359,'bonus2 bSubRace,RC_DemiHuman,5; bonus bLuk,2; bonus2 bAddRace,RC_Undead,5; bonus2 bMagicAddRace,RC_Undead,5; bonus2 bSubRace,RC_Undead,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5340,'Deprotai_Doll_Hat','Defolty Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,354,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bStr,2; bonus3 bAutoSpellWhenHit,"AL_ANGELUS",10,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5341,'Claris_Doll_Hat','Glaris Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,355,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bInt,2; bonus bMagicHPGainValue,50;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5342,'Sorin_Doll_Hat','Sorin Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,356,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bDex,2; autobonus "{ bonus bBaseAtk,50; }",20,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5343,'Tayelin_Doll_Hat','Telling Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,357,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bAgi,2; bonus2 bAddItemHealRate,504,10; bonus2 bAddItemHealRate,547,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5344,'Binit_Doll_Hat','Bennit Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,358,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bVit,2; autobonus "{ bonus bAspdRate,5; }",20,30000,0,"{ specialeffect2 EF_HASTEUP; }";',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5345,'Debril_Doll_Hat','W Doll Hat',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,0,359,'bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bLuk,2; bonus2 bAddRace,RC_Undead,5; bonus2 bMagicAddRace,RC_Undead,5; bonus2 bSubRace,RC_Undead,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5346,'Gf_Recruiter_Hat','Gf Recruiter Hat',4,0,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,360,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5347,'Ph.D_Hat_','Ph.D Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,7,2,256,NULL,0,1,98,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5348,'Big_Sis\'_Ribbon_','Big Ribbon',4,15000,NULL,200,NULL,2,NULL,1,0xFFFFFFFE,7,2,256,NULL,0,1,28,'bonus bMdef,3;',NULL,NULL);
@@ -2561,7 +2561,7 @@ REPLACE INTO `item_db` VALUES (5359,'J_Captain_Hat','Ship Captain Hat',4,20,NULL
 REPLACE INTO `item_db` VALUES (5360,'Whikebain_Ears','Hyuke\'s Black Cat Ears',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,45,1,368,'bonus bFlee,10; bonus bCritical,3; bonus bCritAtkRate,10; bonus bDefRate,-50; bonus bDef2Rate,-50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5361,'Gang_Scarf','Gangster Scarf',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,60,0,369,'bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5362,'Ninja_Scroll','Ninja Scroll',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,60,0,370,'bonus bMatkRate,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5363,'Helm_Of_Abyss','Helm Of Abyss',4,20,NULL,1000,NULL,2,NULL,1,0x000654E2,7,2,256,NULL,70,1,371,'bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubClass,Class_Boss,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5363,'Helm_Of_Abyss','Helm Of Abyss',4,20,NULL,1000,NULL,2,NULL,1,0x000654E2,7,2,256,NULL,70,1,371,'bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus2 bSubClass,Class_Boss,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5364,'Dark_Snake_Lord_Hat','Evil Snake Lord Hat',4,20,NULL,500,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,1,372,'bonus bStr,1; bonus bInt,1; bonus bAgi,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5365,'Fried_Egg','Magnolia Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,0,373,'bonus2 bResEff,Eff_Stun,500; skill "HT_FLASHER",1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5366,'Hat_0f_King','Love Dad Bandana',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,374,'bonus bAllStats,5;',NULL,NULL);
@@ -2572,16 +2572,16 @@ REPLACE INTO `item_db` VALUES (5370,'Orchid_Hairband','Orchid Hairband',4,20,NUL
 REPLACE INTO `item_db` VALUES (5371,'Hat_Of_Judge','Judge Hat',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,7,2,768,NULL,0,1,377,'bonus bLuk,1; bonus bMaxSP,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5372,'Drooping_White_Kitty','Koneko Hat',4,20,NULL,500,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,378,'bonus bInt,1; bonus bDelayRate,-3; bonus bMatkRate,3; bonus bMaxSPrate,3; bonus bMdef,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5373,'Darkness_Helm','Dark Randgris Helm',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFF,7,2,768,NULL,0,1,379,'bonus bDex,3; bonus bMdef,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5374,'L_Magestic_Goat','Gigantic Majestic Goat',4,20,NULL,800,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,380,'bonus2 bAddRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5374,'L_Magestic_Goat','Gigantic Majestic Goat',4,20,NULL,800,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,380,'bonus2 bAddRace,RC_DemiHuman,12; bonus2 bAddRace,RC_Player,12; bonus bBaseAtk,(JobLevel*2)/7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5375,'L_Orc_Hero_Helm','Orc Hero Headdress',4,20,NULL,900,NULL,5,NULL,1,0xFFFFFFFF,7,2,768,NULL,0,1,381,'bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",3,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5376,'Satanic_Chain_P','Flying Evil Wing',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,382,'bonus bMaxSP,120; bonus2 bAddEff2,Eff_Curse,300;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5377,'Antique_Pipe','Gentleman\'s Pipe',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,0,383,'bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5377,'Antique_Pipe','Gentleman\'s Pipe',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,0,383,'bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5378,'Rabbit_Ear_Hat','Bunny Top Hat',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,384,'bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5379,'Balloon_Hat','Tam',4,0,NULL,800,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,50,1,385,'bonus bMdef,2; bonus bMatkRate,2+(getrefine()/2);',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5380,'Fish_Head_Hat','Fish Head Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,386,'bonus3 bAutoSpell,"SA_FROSTWEAPON",1,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5381,'Santa_Poring_Hat','Santa Poring Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,0,387,'bonus bMdef,2; bonus2 bAddEle,Ele_Dark,3; bonus2 bSubEle,Ele_Dark,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5382,'Bell_Ribbon','Bell Ribbon',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,388,'bonus bVit,1; skill "AL_ANGELUS",1;',NULL,'sc_end SC_ANGELUS;');
-REPLACE INTO `item_db` VALUES (5383,'Hunting_Cap','Hunter\'s Cap',4,20,NULL,250,NULL,3,NULL,1,0xFFFFFFFE,7,2,256,NULL,50,1,389,'bonus bLuk,1; bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5383,'Hunting_Cap','Hunter\'s Cap',4,20,NULL,250,NULL,3,NULL,1,0xFFFFFFFE,7,2,256,NULL,50,1,389,'bonus bLuk,1; bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5384,'Santa_Hat_1','Twin Pompom By JB',4,20,NULL,200,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,20,1,390,'bonus bLuk,3; skill "WZ_ESTIMATION",1; bonus3 bAutoSpell,"AL_INCAGI",1,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5385,'Yoyo_Hat','Yoyo Hat',4,20,NULL,300,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,20,1,391,'skill "TF_HIDING", 1;',NULL,'sc_end SC_HIDING;');
 REPLACE INTO `item_db` VALUES (5386,'Ayam_','Ayam',4,0,NULL,70,NULL,7,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,0,228,'bonus bMdef,7; bonus bFlee,7; bonus2 bAddMonsterDropItem,12198,200;',NULL,NULL);
@@ -2608,7 +2608,7 @@ REPLACE INTO `item_db` VALUES (5406,'Academy_Freshman_Hat','Academy Freshman Hat
 REPLACE INTO `item_db` VALUES (5407,'Academy_Graduating_Cap','Academy Completion Hat',4,0,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,410,'bonus bMaxSP,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5408,'Old_Bandanna','Old Bandana',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,6,'bonus bInt,2; bonus bMaxSP,50; bonus bCastrate,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5409,'New_Cowboy_Hat','Purple Cowboy Hat',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,411,'bonus bInt,2; bonus bVit,2; bonus bMaxSP,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5410,'Bread_Bag2','Brown Paperbag Hat',4,20,NULL,200,NULL,6,NULL,0,0xFFFFFFFF,7,2,769,NULL,0,0,412,'bonus bMaxHP,100; bonus2 bResEff, Eff_Stun, 400; bonus2 bSubRace,RC_DemiHuman,4;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5410,'Bread_Bag2','Brown Paperbag Hat',4,20,NULL,200,NULL,6,NULL,0,0xFFFFFFFF,7,2,769,NULL,0,0,412,'bonus bMaxHP,100; bonus2 bResEff, Eff_Stun, 400; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5411,'White_Snake_Hat','White Snake Hat',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,413,'bonus bDex,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5412,'Sweet_Candy','Sweet Candy',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,0,414,'bonus bUnbreakableHelm, 0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5413,'Popcorn_Hat','Pop Corn Hat',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,415,'bonus2 bSubEle,Ele_Wind, 10;',NULL,NULL);
@@ -2621,12 +2621,12 @@ REPLACE INTO `item_db` VALUES (5419,'Evolved_Leaf','Leaves Of Grass',4,20,NULL,1
 REPLACE INTO `item_db` VALUES (5420,'Mask_Of_Ifrit','Mask Of Ifrit',4,NULL,NULL,0,NULL,8,NULL,0,0xFFFFFFFE,7,2,769,NULL,70,0,421,'bonus bStr,1; bonus bInt,1; bonus bMdef,5; bonus2 bSubEle,Ele_Fire,10; bonus2 bSubEle,Ele_Water,-10; skill "MG_SIGHT",1; bonus3 bAutoSpellWhenHit,"WZ_METEOR",3,50; bonus3 bAutoSpell,"MG_FIREBOLT",3,50;',NULL,'sc_end SC_SIGHT;');
 REPLACE INTO `item_db` VALUES (5421,'Ifrit\'s_Ear','Ears Of Ifrit',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,512,NULL,70,0,422,'bonus bStr,1; bonus bMdef,3; bonus2 bSkillAtk,"MG_FIREBOLT",2; bonus2 bSkillAtk,"WZ_FIREPILLAR",2; bonus2 bSkillAtk,"WZ_METEOR",2; bonus2 bSkillAtk,"SM_BASH",2; bonus2 bSkillAtk,"SM_MAGNUM",2; bonus2 bSkillAtk,"KN_PIERCE",2; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,-5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5422,'Linguistic_Book_Cap','Linguistic Book Hat',4,20,NULL,70,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,423,'bonus bInt,1; bonus bMdef,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5423,'Lovecap_China','I Love China',4,20,NULL,250,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,424,'bonus bDex,3; bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5423,'Lovecap_China','I Love China',4,20,NULL,250,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,424,'bonus bDex,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5424,'Fanta_Orange_Can','Fanta Orange Can Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,425,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5425,'Fanta_Grape_Can','Fanta Grape Can Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,426,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5426,'Karada_Meguri_Tea_Hat','Karada Meguricha Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,427,'bonus bLuk,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5427,'Royal_Milk_Tea_Hat','Black Tea Kochakaden Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,428,'bonus bAgi,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5428,'Bread_Bag1','RWC Anniversary Bread Envelope',4,NULL,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,769,NULL,0,1,429,'bonus2 bSubRace,RC_DemiHuman,12;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5428,'Bread_Bag1','RWC Anniversary Bread Envelope',4,NULL,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,769,NULL,0,1,429,'bonus2 bSubRace,RC_DemiHuman,12; bonus2 bSubRace,RC_Player,12;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5429,'Bogy_Cap','Bogy Cap',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,430,'bonus bHPrecovRate, 5; bonus bSPrecovRate, 5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5430,'Sacred_Torch_Coronet','Torch Cap',4,20,NULL,0,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,431,'bonus2 bSubEle,Ele_Fire,20; skill "MG_FIREBOLT",5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5431,'Chicken_Hat','Chicken Hat',4,20,NULL,1000,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,1,432,'bonus3 bAutoSpell,"MC_LOUD",1,30; bonus bAspdRate,5;',NULL,NULL);
@@ -2649,9 +2649,9 @@ REPLACE INTO `item_db` VALUES (5447,'Frog_Cap','Frog Hat',4,20,NULL,500,NULL,3,N
 REPLACE INTO `item_db` VALUES (5448,'Solo_Play_Box1','Soloplay Box1',4,NULL,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,7,2,769,NULL,0,1,449,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5449,'Solo_Play_Box2','Soloplay Box2',4,NULL,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,7,2,769,NULL,0,1,450,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5450,'Sun_Cap','Solar Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFE,7,2,256,NULL,20,1,451,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5451,'Dragonhelm_Gold','RWC 2008 Dragon Helm Gold',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,0,452,'bonus bAspdRate,10; bonus bAllStats,3; bonus2 bAddRace,RC_DemiHuman,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5452,'Dragonhelm_Silver','RWC 2008 Dragon Helm Silver',4,20,NULL,2500,NULL,5,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,0,453,'bonus bAspdRate,7; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5453,'Dragonhelm_Copper','RWC 2008 Dragon Helm Copper',4,20,NULL,2500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,0,454,'bonus bAspdRate,5; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5451,'Dragonhelm_Gold','RWC 2008 Dragon Helm Gold',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,0,452,'bonus bAspdRate,10; bonus bAllStats,3; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5452,'Dragonhelm_Silver','RWC 2008 Dragon Helm Silver',4,20,NULL,2500,NULL,5,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,0,453,'bonus bAspdRate,7; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,3; bonus2 bAddRace,RC_Player,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5453,'Dragonhelm_Copper','RWC 2008 Dragon Helm Copper',4,20,NULL,2500,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,0,454,'bonus bAspdRate,5; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5454,'Dog_Cap_','Puppy Hat',4,20,NULL,500,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,234,'bonus bStr,1; bonus bInt,1; autobonus "{ bonus bCritical,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus2 bIgnoreMdefClassRate,Class_Normal,100; bonus2 bIgnoreMdefClassRate,Class_Boss,100; }",10,3000,BF_MAGIC,"{ specialeffect2 EF_MAGICALATTHIT; }";',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5455,'Geographer_Band_','Decorative Geographer',4,20,NULL,500,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,238,'bonus bInt,1; bonus3 bAutoSpell,"AL_HEAL",5,50; bonus3 bAutoSpellWhenHit,"AL_HEAL",5,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5456,'Vacation_Hat_','Summer Hat',4,20,NULL,200,NULL,0,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,315,'bonus bVit,5; bonus bHPrecovRate,20; bonus bSPrecovRate,15;',NULL,NULL);
@@ -2660,7 +2660,7 @@ REPLACE INTO `item_db` VALUES (5458,'Pinwheel_Cap','Pinwheel Hat',4,20,NULL,200,
 REPLACE INTO `item_db` VALUES (5459,'Drooping_Bunny_Chusuk','Drooping Bunny',4,0,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,249,'bonus bDex,1; bonus bFlee,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5460,'Adv_Dragon_Skull','Evolved Dragon Skull Hat',4,20,NULL,1000,NULL,7,NULL,0,0xFFFFFFFF,7,2,256,NULL,60,1,457,'bonus bAllStats, 2; bonus bMaxHPrate, 3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5461,'Adv_Whisper_Mask','Evolved Whisper Mask',4,20,NULL,300,NULL,1,NULL,0,0xFFFFFFFF,7,2,769,NULL,50,1,458,'bonus bDex,3; bonus2 bSubEle,Ele_Ghost, 20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5462,'Spiked_Scarf','Spiked Scarf',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,1,NULL,90,0,459,'bonus bVit,1; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5462,'Spiked_Scarf','Spiked Scarf',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,1,NULL,90,0,459,'bonus bVit,1; bonus2 bAddRace,RC_DemiHuman,1; bonus2 bAddRace,RC_Player,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5463,'Rainbow_Scarf','Rainbow Scarf',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,1,NULL,90,0,460,'bonus bInt,1; bonus bMdef,2; bonus bMatkRate,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5464,'Zaha_Doll_Hat','Zaha Doll Hat',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,461,'bonus bInt,2; skill "PR_MAGNIFICAT", 3;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5465,'Celestial_Hat','Hat Of Fortune',4,20,NULL,500,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,40,1,462,'bonus bLuk,2; bonus bMdef,5; if(getrefine()>4) bonus bLuk,getrefine()-4;',NULL,NULL);
@@ -2670,7 +2670,7 @@ REPLACE INTO `item_db` VALUES (5464,'Zaha_Doll_Hat','Zaha Doll Hat',4,20,NULL,0,
 #REPLACE INTO `item_db` VALUES (5469,'Noble_Hat','Musketeer Hat',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,1,466,'bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_ADRENALINE",1,7;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5470,'Eyes_Of_Darkness','Eye Of Darkness',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,50,0,467,'bonus bDex,1; bonus2 bResEff,Eff_Blind,10000;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5471,'Hairband_Of_Reginleif','Hairband Of Reginleif',4,20,NULL,800,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,50,0,468,'bonus2 bSubEle,Ele_Water,3; bonus2 bSubEle,Ele_Fire,3; bonus2 bSubEle,Ele_Undead,3; bonus2 bSubEle,Ele_Ghost,3;',NULL,NULL);
-#REPLACE INTO `item_db` VALUES (5472,'Red_White_Hat','Red Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,469,'bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3;',NULL,NULL);
+#REPLACE INTO `item_db` VALUES (5472,'Red_White_Hat','Red Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,469,'bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3; bonus3 bAddMonsterDropItem,550,RC_Player,3;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5473,'Forceps_Hairpin','Nipper Crab Hairpin',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,1,470,'bonus3 bAutoSpellWhenHit,"MG_COLDBOLT",1,100; bonus3 bAddMonsterDropItem,991,RC_Fish,3;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5474,'Notice_Board','AFK Hat',4,20,NULL,700,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,0,471,NULL,NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5475,'Cube_Mask','Mask Cube',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,0,0,472,NULL,NULL,NULL);
@@ -2681,7 +2681,7 @@ REPLACE INTO `item_db` VALUES (5479,'Shaman\'s_Hair_Ornament','Shaman\'s Hair De
 REPLACE INTO `item_db` VALUES (5480,'Bizofnil_Wing_Deco','Bijofnil Wings',4,20,NULL,1000,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,1,477,'bonus bAllStats,2; bonus3 bAutoSpell,"PR_IMPOSITIO",3,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5481,'Hermose_Cap','Hermode Cap',4,20,NULL,1000,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,478,'bonus bAspdRate,10; bonus bBaseAtk,-20; bonus bMatkRate,-10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5482,'Dark_Knight_Mask','Dark Knight Mask',4,NULL,NULL,3000,NULL,5,NULL,0,0xFFFFFFFF,7,2,769,NULL,80,1,479,'bonus bStr,3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5483,'Odin_Mask','Odin Mask',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,50,0,480,'bonus bHit,-10; bonus2 bAddRace,RC_Demihuman,6;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5483,'Odin_Mask','Odin Mask',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,50,0,480,'bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,6; bonus2 bAddRace,RC_Player,6;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5484,'Taiwan_Flag_Hat','Holidays Hat',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,482,'bonus bAllStats,5; bonus2 bResEff,Eff_Stun,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5485,'Tiger_Face','Tiger Face',4,20,NULL,1000,NULL,3,NULL,0,0xFFFFFFFF,7,2,769,NULL,60,1,483,'bonus2 bSubRace,RC_Brute,5; bonus2 bAddRace,RC_Brute,5; bonus2 bMagicAddRace,RC_Brute,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5486,'J_Anniversary_Hat','Anniversary Hat',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,395,'bonus bAllStats, 2;',NULL,NULL);
@@ -2690,7 +2690,7 @@ REPLACE INTO `item_db` VALUES (5488,'J_Twin_Santahat','Twin Santa Hat',4,20,NULL
 REPLACE INTO `item_db` VALUES (5489,'Love_Daddy','Love Daddy Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,484,'bonus bDex,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5490,'Anubis_Helm','Anubis Helm',4,20,NULL,0,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,0,485,'bonus bMdef,5; bonus2 bSubClass,Class_Boss,10; bonus bHealpower2,10; bonus bAddItemHealRate,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5491,'Hat_Of_Outlaw','Bandit Hat',4,20,NULL,800,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,486,'bonus bStr,2; bonus2 bSubEle,Ele_Fire, 10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5492,'Boy\'s_Cap_I','Student Cap',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,0,102,'bonus bMdef,3; bonus2 bAddRace,RC_DemiHuman,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5492,'Boy\'s_Cap_I','Student Cap',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,0,102,'bonus bMdef,3; bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5493,'Ulle_Cap_I','Ulle\'s Cap',4,0,NULL,0,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,0,254,'bonus bDex,2; bonus bAgi,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5494,'Spinx_Helm_I','Sphinx Hat',4,0,NULL,0,NULL,5,NULL,0,0x00004082,7,2,257,NULL,0,0,137,'bonus bStr,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5495,'Power_Of_Thor','Power Of Thor',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,7,2,256,NULL,75,1,493,'bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5;',NULL,NULL);
@@ -2716,7 +2716,7 @@ REPLACE INTO `item_db` VALUES (5514,'Pisces_Diadem','Pisces Diadem',4,20,NULL,30
 REPLACE INTO `item_db` VALUES (5515,'Pisces_Crown','Pisces Crown',4,20,NULL,300,NULL,6,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,1,512,'bonus bInt,2; bonus bMdef,5; bonus2 bSubEle,Ele_Water, 5; if(getrefine()>6) { bonus bDef, 1; bonus bMatkRate,2; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5516,'Hawk_Eyes01','hawk Eyes',4,10,NULL,100,NULL,0,NULL,0,0x00000800,2,2,512,NULL,60,0,23,'bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5517,'Hawk_Eyes02','Hawk Eyes',4,10,NULL,100,NULL,0,NULL,0,0x00080808,7,2,512,NULL,60,0,23,'bonus bDex,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5518,'L_Magestic_Goat2','Gigantic Majestic Goat',4,20,NULL,800,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,1,513,'bonus2 bSubRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5518,'L_Magestic_Goat2','Gigantic Majestic Goat',4,20,NULL,800,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,1,513,'bonus2 bSubRace,RC_DemiHuman,12; bonus2 bSubRace,RC_Player,12; bonus bBaseAtk,(JobLevel*2)/7;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5519,'Peacock_Feather','Peacock Feather',4,20,NULL,800,NULL,4,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,514,'bonus bInt,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5520,'Rabbit_Earplug','Rabbit Earplugs',4,NULL,NULL,400,NULL,0,NULL,1,0xFFFFFFFF,7,2,768,NULL,1,1,515,'bonus2 bAddClass,Class_All,4; bonus bMatkRate,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5521,'Angry_Mouth_C','Angry Mouth',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,0,194,'bonus bDelayRate,-3;',NULL,NULL);
@@ -2733,7 +2733,7 @@ REPLACE INTO `item_db` VALUES (5530,'Raven_Cap','Raven Cap',4,20,NULL,100,NULL,6
 REPLACE INTO `item_db` VALUES (5532,'Pirate_Dagger_J','Pirate Dagger',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,1,327,'bonus bShortWeaponDamageReturn,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5533,'Emperor_Wreath_J','Emperor Wreath',4,20,NULL,800,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,80,1,261,'bonus bAllStats,1;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5534,'Fox_Hat_J','Fox Hat',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,70,0,403,'bonus bAgi,1; bonus bFlee2,2;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5535,'Side_Cap','Side Cap',4,0,NULL,500,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,529,'bonus bVit,1; bonus bDex,1; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bAddRace,RC_DemiHuman,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5535,'Side_Cap','Side Cap',4,0,NULL,500,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,529,'bonus bVit,1; bonus bDex,1; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddRace,RC_DemiHuman,3; bonus2 bAddRace,RC_Player,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5536,'Spare_Card','Spare Card',4,20,NULL,10,NULL,1,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,526,'bonus2 bAddMonsterDropItem,6187,1000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5537,'Quati_Hat','Kwati Hat',4,20,NULL,700,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,45,0,527,'bonus bAgi,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5538,'Tucan_Hat','Tucan Hat',4,20,NULL,600,NULL,2,NULL,1,0xFFFFFFFF,7,2,768,NULL,45,0,528,'bonus bDex,3;',NULL,NULL);
@@ -2751,7 +2751,7 @@ REPLACE INTO `item_db` VALUES (5549,'Taurus_Diadem','Taurus Diadem',4,20,NULL,30
 REPLACE INTO `item_db` VALUES (5550,'Taurus_Crown','Taurus Crown',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,1,536,'bonus bDex,2; bonus bDelayRate,-2; bonus2 bSubEle,Ele_earth,5; if(getrefine()>6) { bonus bDex,1; bonus bMatkRate,1; }',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5551,'Holy_Egg_Hat','Holy Egg Hat',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,537,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5552,'Fest_Lord_Circlet','Festival Grand Circlet',4,0,NULL,0,NULL,8,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,93,'bonus bStr,3; bonus bInt,3; bonus bMdef,3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5553,'Fest_Bunny_Band','Festival Bunny Band',4,0,NULL,0,NULL,7,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,15,'bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5553,'Fest_Bunny_Band','Festival Bunny Band',4,0,NULL,0,NULL,7,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,15,'bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9; bonus2 bSubRace,RC_Player,9;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5554,'Octopus_Hat','Octopus Hat',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,20,1,538,'bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5555,'Leaf_Cat_Hat','Leaf Cat Hat',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,539,'bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",3,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5556,'Fur_Seal_Hat','Seal Hat',4,20,NULL,500,NULL,3,NULL,0,0xFFFFFFFF,7,2,769,NULL,55,1,540,'bonus bInt,1; bonus3 bAutoSpell,"WZ_FROSTNOVA",1,30;',NULL,NULL);
@@ -2763,8 +2763,8 @@ REPLACE INTO `item_db` VALUES (5561,'Rabbit_Magic_Hat_J','Magic Rabbit Hat',4,0,
 REPLACE INTO `item_db` VALUES (5562,'Good_Wedding_Veil_J','Luxurious Wedding Veil',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,768,NULL,45,0,489,'bonus bMdef,10; bonus bCastRate,-3; bonus bUseSPrate,-5;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5563,'Dolor_Hat','Dolor Hat',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,0,547,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5564,'Crown_Of_Deceit','Crown of Deceit',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,7,2,768,NULL,85,1,544,'bonus bInt,4; bonus bCastRate,-10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5565,'Dragon_Arhat_Mask','Dragon Arhat Mask',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFF,7,2,513,NULL,1,0,545,'bonus2 bAddRace,RC_DemiHuman,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5566,'Tiger_Arhat_Mask','Tiger Arhat Mask',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,1,0,546,'bonus2 bAddRace,RC_DemiHuman,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5565,'Dragon_Arhat_Mask','Dragon Arhat Mask',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFF,7,2,513,NULL,1,0,545,'bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5566,'Tiger_Arhat_Mask','Tiger Arhat Mask',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,1,0,546,'bonus2 bAddRace,RC_DemiHuman,2; bonus2 bAddRace,RC_Player,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5567,'Bright_Fury','Bright Fury',4,20,NULL,300,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,548,'bonus bStr,1; bonus2 bAddClass,Class_All,2; bonus bAspdRate,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5568,'Rabbit_Bonnet','Rabbit Bonnet',4,20,NULL,1000,NULL,1,NULL,1,0xFFFFFFFF,7,2,768,NULL,0,1,549,'bonus bInt,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5569,'Gemini_Diadem','Gemini Diadem',4,20,NULL,300,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,1,550,'bonus bAgi,2; bonus bMatkRate,2; if(getrefine()>6) { bonus bMdef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; }',NULL,NULL);
@@ -2997,8 +2997,8 @@ REPLACE INTO `item_db` VALUES (5796,'Cheer_Scarf','Cheer Scarf',4,0,NULL,0,NULL,
 REPLACE INTO `item_db` VALUES (5797,'Cheer_Scarf2','Cheer Scarf2',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,369,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5798,'Cheer_Scarf3','Cheer Scarf3',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,369,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5799,'Cheer_Scarf4','Cheer Scarf4',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,369,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5800,'Blush_Of_Groom','Blush of Groom',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,125,'bonus2 bSubRace,RC_DemiHuman,3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5801,'Ribbon_Of_Bride','Red Tailed Ribbon',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,167,'bonus bAllStats,2; bonus2 bSubRace,RC_DemiHuman,10; if(getskilllv("AL_HEAL")==10) { bonus3 bAutoSpellWhenHit,"AL_HEAL",10,20; } else { bonus3 bAutoSpellWhenHit,"AL_HEAL",5,20; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5800,'Blush_Of_Groom','Blush of Groom',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,125,'bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5801,'Ribbon_Of_Bride','Red Tailed Ribbon',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,167,'bonus bAllStats,2; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(getskilllv("AL_HEAL")==10) { bonus3 bAutoSpellWhenHit,"AL_HEAL",10,20; } else { bonus3 bAutoSpellWhenHit,"AL_HEAL",5,20; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5802,'Upgrade_Elephant_Hat','Upgraded Elephant Hat',4,0,NULL,500,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,215,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5803,'Flower_Love_Hat','Love Flower Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,5,'bonus2 bAddMonsterDropItem,608,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5804,'Pirate_Eyepatch','Pirate Eye Bandage',4,1000,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,13,NULL,NULL,NULL);
@@ -3019,7 +3019,7 @@ REPLACE INTO `item_db` VALUES (5818,'Carnival_Hat','Carnival Hat',4,0,NULL,0,NUL
 REPLACE INTO `item_db` VALUES (5819,'Carnival_Circlet','Carnival Circlet',4,0,NULL,0,NULL,6,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,506,'bonus bAllStats, 3;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5820,'Black_Elven_Ears','Black Elven Ears',4,10,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,498,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5821,'Gold_Tulip_Hairpin','Gold Tulip Hairpin',4,10,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,499,'bonus2 bExpAddClass,Class_All,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5822,'Love_Chick_Hat','Love Chick Hat',4,10000,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,500,'bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Undead,7;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5822,'Love_Chick_Hat','Love Chick Hat',4,10000,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,500,'bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; bonus2 bSubRace,RC_Undead,7;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5823,'Love_Arrow','Love Arrow',4,5000,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus bDex,5; bonus bAgi,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5824,'Fools_Day_Hat','Fools Day Hat',4,20,NULL,300,NULL,6,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,1,265,NULL,NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5825,'Badge_Of_Order_Grace','Badge Of Order Grace',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus bMdef,1;',NULL,NULL);
@@ -4960,7 +4960,7 @@ REPLACE INTO `item_db` VALUES (12379,'Pope\'s_Cookie','Pope Cookie',2,10,NULL,10
 REPLACE INTO `item_db` VALUES (12380,'Desert_Wolf_Babe_Scroll','Job Change Flute',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'mercenary_create 2034,1800000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12381,'ValkyrieA_Scroll','Ancient Languages Scroll',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(strcharinfo(3)=="job3_arch02") { mercenary_create 2037,1800000; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12382,'ValkyrieB_Scroll','Ancient Languages Scroll',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(strcharinfo(3)=="job3_arch02") { mercenary_create 2038,1800000; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12383,'Vulcan_Bullet_Magazine','Vulcan Bullet Magazine',2,11000,NULL,500,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (12383,'Vulcan_Bullet_Magazine','Vulcan Bullet Magazine',2,11000,NULL,500,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6145,1000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12384,'Rainbow_Ruby_Water','Rainbow Ruby',11,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_war02") { itemskill "WL_FROSTMISTY",5; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12385,'Rainbow_Ruby_Fire','Rainbow Ruby',11,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_war02") { itemskill "WL_CRIMSONROCK",5; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12386,'Rainbow_Ruby_Wind','Rainbow Ruby',11,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_war02") { itemskill "WL_CHAINLIGHTNING",5; } */',NULL,NULL);
@@ -4969,9 +4969,9 @@ REPLACE INTO `item_db` VALUES (12388,'Runstone_Crush','Rhydo Runestone For Appre
 REPLACE INTO `item_db` VALUES (12389,'Runstone_Storm','Pertz Runestone For Apprentice',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_STORMBLAST",1; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12390,'Runstone_Millennium','Verkana Runestone For Apprentice',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_MILLENNIUMSHIELD",1; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12391,'Lucky_Egg_C','Lucky Egg',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12392,'Repair_A','Repair A',0,220,NULL,70,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'/* madoheal rand(200,300),0; */',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12393,'Repair_B','Repair B',0,500,NULL,70,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'/* madoheal rand(300,400),0; */',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12394,'Repair_C','Repair C',0,1100,NULL,70,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'/* madoheal rand(400,500),0; */',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12392,'Repair_A','Repair A',0,220,NULL,100,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(200,300),0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12393,'Repair_B','Repair B',0,500,NULL,140,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(300,400),0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12394,'Repair_C','Repair C',0,1100,NULL,180,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(400,500),0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12395,'Tantanmen','Tantan Noodle',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1519;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12396,'Fools_Day_Box','Gift Box?',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(rand(1,10)==1) itemskill "AL_TELEPORT",1; else if(rand(1,10)==2) itemskill "AL_TELEPORT",3; else if(rand(1,10)==3) percentheal 50,0; else if(rand(1,10)==4) percentheal 0,50; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 512,1; else if(rand(1,10)==7) itemskill "ALL_REVERSEORCISH",1; else if(rand(1,10)==8) specialeffect2 247; else if(rand(1,10)==9) specialeffect2 338; else specialeffect2 10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12397,'Fools_Day_Box2','Gift Box?',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(rand(1,10)==1) itemskill "TF_DETOXIFY",1; else if(rand(1,10)==2) itemskill "TF_PICKSTONE",1; else if(rand(1,10)==3) itemskill "BA_FROSTJOKER",1; else if(rand(1,10)==4) itemskill "DC_SCREAM",1; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 909,1; else if(rand(1,10)==7) itemskill "AL_RUWACH",1; else if(rand(1,10)==8) specialeffect2 328; else if(rand(1,10)==9) specialeffect2 68; else specialeffect2 196;',NULL,NULL);
@@ -4994,11 +4994,11 @@ REPLACE INTO `item_db` VALUES (12413,'PCBang_Coupon_Box2','PCBang Coupon Box2',2
 REPLACE INTO `item_db` VALUES (12414,'Guarana_Candy','Guarana Candy',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ASPDPOTION0,1800000,0; sc_start SC_INCREASEAGI,140000,5; skilleffect "AL_INCAGI",0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12415,'Siege_Teleport_Scroll2','Siege Teleport Scroll Silver',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12416,'Lucky_Egg_C3','Lucky Egg C3',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12417,'Boost500','Boost500',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12418,'Full_SwingK','Full SwingK',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12419,'Mana_Plus','Mana Plus',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12420,'Stamina_Up_M','Stamina Up M',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12421,'Falmons_F','Falmons F',3,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (12417,'Boost500','Boost500',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_BOOST500,500000,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12418,'Full_SwingK','Full SwingK',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FULL_SWING_K,500000,50;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12419,'Mana_Plus','Mana Plus',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MANA_PLUS,500000,50;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12420,'Stamina_Up_M','Stamina Up M',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MUSTLE_M,500000,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12421,'Falmons_F','Falmons F',3,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_LIFE_FORCE_F,500000,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12422,'HP_Increase_Potion_(Small)','HP Increase Potion (Small)',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCMHP,500000,(500+(BaseLevel*10/3)); percentheal 1,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12423,'HP_Increase_Potion_(Medium)','HP Increase Potion (Medium)',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCMHP,500000,(1500+(BaseLevel*10/3)); percentheal 2,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12424,'HP_Increase_Potion_(Large)','HP Increase Potion (Large)',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCMHP,500000,(2500+(BaseLevel*10/3)); percentheal 5,0;',NULL,NULL);
@@ -5353,8 +5353,8 @@ REPLACE INTO `item_db` VALUES (13008,'Jitte_','Jitte',5,20000,NULL,400,70,NULL,1
 REPLACE INTO `item_db` VALUES (13009,'Kamaitachi','Kamaitachi',5,48000,NULL,900,125,NULL,2,0,0x02000000,7,2,2,4,70,1,1,'bonus bAtkEle,Ele_Wind; bonus bCritical,3; bonus bAspdRate,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13010,'Asura','Asura',5,3000,NULL,600,50,NULL,1,2,0x02000000,7,2,2,1,12,1,1,'bonus bMatkRate,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13011,'Asura_','Asura',5,3000,NULL,600,50,NULL,1,3,0x02000000,7,2,2,1,12,1,1,'bonus bMatkRate,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13012,'Murasame','Murasame',5,20,NULL,700,95,NULL,1,1,0x02000000,7,2,2,2,24,1,1,'bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13013,'Murasame_','Murasame',5,20,NULL,700,95,NULL,1,2,0x02000000,7,2,2,2,24,1,1,'bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13012,'Murasame','Murasame',5,20,NULL,700,95,NULL,1,1,0x02000000,7,2,2,2,24,1,1,'bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10; bonus2 bCriticalAddRace,RC_Player,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13013,'Murasame_','Murasame',5,20,NULL,700,95,NULL,1,2,0x02000000,7,2,2,2,24,1,1,'bonus bAtkEle,Ele_Water; bonus2 bCriticalAddRace,RC_DemiHuman,10; bonus2 bCriticalAddRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13014,'Hakujin','Hakujin',5,20,NULL,800,120,NULL,1,0,0x02000000,7,2,2,3,42,1,1,'bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13015,'Hakujin_','Hakujin',5,20,NULL,800,120,NULL,1,1,0x02000000,7,2,2,3,42,1,1,'bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13016,'Poison_Knife_','Poison Knife',5,20,NULL,800,64,NULL,1,2,0x028F5EEE,7,2,2,3,65,1,1,'bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000;',NULL,NULL);
@@ -5362,7 +5362,7 @@ REPLACE INTO `item_db` VALUES (13017,'House_Auger_','Ice Pick',5,20,NULL,600,70,
 REPLACE INTO `item_db` VALUES (13018,'Sucsamad_','Sucsamad',5,20,NULL,800,140,NULL,1,1,0x028F5EEE,7,2,2,4,36,1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13019,'Ginnungagap_','Ginnungagap',5,20,NULL,700,148,NULL,1,1,0xFE9F7EEF,7,2,2,4,70,1,1,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13020,'Warrior_Balmung_','Warrior\'s Balmung',5,20,NULL,1000,170,NULL,1,0,0xFFFFFFFF,7,2,2,4,48,1,1,'bonus bAllStats,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13021,'Combat_Knife_C','Combat Knife',5,1,NULL,0,129,NULL,1,0,0x028F5EEE,7,2,2,4,1,0,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13021,'Combat_Knife_C','Combat Knife',5,1,NULL,0,129,NULL,1,0,0x028F5EEE,7,2,2,4,1,0,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13022,'Counter_Dagger_C','Dagger of Counter',5,1,NULL,0,209,NULL,1,0,0x00810204,7,2,2,4,1,0,1,'bonus bCritical,90;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13023,'Asura_C','Ashura',5,1,NULL,0,120,NULL,1,0,0x02000000,7,2,2,1,1,0,1,'bonus bMatkRate,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13024,'Sword_Breaker_C','Refined Swordbreaker',5,2,NULL,0,105,NULL,1,0,0x028F5EEE,7,2,2,4,0,0,1,'bonus bBreakWeaponRate,500;',NULL,NULL);
@@ -5377,13 +5377,13 @@ REPLACE INTO `item_db` VALUES (13032,'Mail_Breaker_','Mailbreaker',5,20,NULL,100
 REPLACE INTO `item_db` VALUES (13033,'Assasin_Dagger_','Assassin Dagger',5,20,NULL,600,140,NULL,1,1,0x00001000,7,2,2,4,36,1,1,'bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13034,'Twilight_Desert','Desert Twilight',5,20,NULL,600,130,NULL,1,2,0x00001000,2,2,2,2,70,1,1,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (13035,'Sandstorm','Sandstorm',5,20,NULL,600,50,NULL,1,4,0x00001000,2,2,2,2,70,1,1,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (13036,'BF_Dagger1','Brave Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13037,'BF_Dagger2','Valorous Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13036,'BF_Dagger1','Brave Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13037,'BF_Dagger2','Valorous Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13038,'Dagger_Of_Hunter','Dagger of Hunter',5,20,NULL,700,120,NULL,1,3,0x00020000,2,2,2,3,70,1,1,'bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13039,'Ivory_Knife','Ivory Knife',5,20,NULL,700,130,NULL,1,2,0x028F5EEE,2,2,2,3,50,1,1,'bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13040,'N_Cutter','Novice Cutter',5,0,NULL,0,50,NULL,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (13041,'N_Main_Gauche','Novice Main Gauche',5,0,NULL,0,63,NULL,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (13042,'Krieger_Dagger1','Glorious Gladius',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13042,'Krieger_Dagger1','Glorious Gladius',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13043,'Fortune_Sword_I','Fortune Sword',5,0,NULL,0,120,NULL,1,0,0x028F5EEE,7,2,2,4,0,0,1,'bonus bLuk,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13044,'House_Auger_I','Ice Pick',5,0,NULL,0,105,NULL,1,0,0x028F5EEE,7,2,2,4,0,0,1,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (13045,'Kamaitachi_I','Kamaitachi',5,0,NULL,0,155,NULL,2,0,0x02000000,7,2,2,4,0,0,1,NULL,NULL,NULL);
@@ -5399,9 +5399,9 @@ REPLACE INTO `item_db` VALUES (13104,'The_Garrison','Garrison',5,48000,NULL,500,
 REPLACE INTO `item_db` VALUES (13105,'The_Garrison_','Garrison',5,48000,NULL,500,70,NULL,7,2,0x41000000,7,2,34,2,55,1,17,'bonus bHit,-10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13106,'Gold_Lux','Gold Lux',5,100000,NULL,500,20,NULL,7,0,0x41000000,7,2,34,3,12,1,17,'bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13107,'Wasteland_Outlaw','Wasteland\'s Outlaw',5,20,NULL,580,68,NULL,7,2,0x41000000,7,2,34,3,70,1,17,'bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13108,'BF_Pistol1','Soldier Revolver',5,0,NULL,0,70,NULL,7,0,0x41000000,7,2,34,3,80,1,17,'bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13108,'BF_Pistol1','Soldier Revolver',5,0,NULL,0,70,NULL,7,0,0x41000000,7,2,34,3,80,1,17,'bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13109,'Wasteland_Outlaw_C','Wasteland Outlaw',5,20,NULL,0,100,NULL,7,0,0x41000000,7,2,34,3,0,0,17,'bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13110,'Krieger_Pistol1','Glorious Pistol',5,0,NULL,0,80,NULL,7,0,0x41000000,7,2,34,4,80,1,17,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13110,'Krieger_Pistol1','Glorious Pistol',5,0,NULL,0,80,NULL,7,0,0x41000000,7,2,34,4,80,1,17,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bAddRace,RC_Player,pow(getrefine()-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; }',NULL,NULL);
 #13111,Sharpshooter_Revolver
 REPLACE INTO `item_db` VALUES (13112,'P_Revolver1','Eden Revlover I',5,0,NULL,0,4,NULL,7,0,0x41000000,7,2,34,1,26,0,17,'bonus bHit,-5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13113,'P_Revolver2','Eden Revlover II',5,0,NULL,0,60,NULL,7,0,0x41000000,7,2,34,1,40,0,17,'bonus bHit,-5;',NULL,NULL);
@@ -5427,15 +5427,15 @@ REPLACE INTO `item_db` VALUES (13167,'Gate_KeeperDD','Gate Keeper-DD',5,72000,NU
 REPLACE INTO `item_db` VALUES (13168,'Thunder_P','Thunder P',5,76000,NULL,700,80,NULL,9,1,0x41000000,7,2,34,3,70,1,20,'bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13169,'Thunder_P_','Thunder P',5,76000,NULL,700,80,NULL,9,2,0x41000000,7,2,34,3,70,1,20,'bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13170,'Lever_Action_Rifle','Lever Action Rifle',5,20,NULL,770,138,NULL,9,2,0x41000000,7,2,34,3,70,1,18,'bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13171,'BF_Rifle1','Soldier Rifle',5,0,NULL,0,50,NULL,9,0,0x41000000,7,2,34,3,80,1,18,'bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13172,'BF_Gatling_Gun1','Soldier Gatling Gun',5,0,NULL,0,80,NULL,9,0,0x41000000,7,2,34,3,80,1,19,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13173,'BF_Shotgun1','Soldier Shotgun',5,0,NULL,0,100,NULL,9,0,0x41000000,7,2,34,3,80,1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13174,'BF_Launcher1','Soldier Grenade Launcher',5,0,NULL,0,300,NULL,9,0,0x41000000,7,2,34,3,80,1,21,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13171,'BF_Rifle1','Soldier Rifle',5,0,NULL,0,50,NULL,9,0,0x41000000,7,2,34,3,80,1,18,'bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13172,'BF_Gatling_Gun1','Soldier Gatling Gun',5,0,NULL,0,80,NULL,9,0,0x41000000,7,2,34,3,80,1,19,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13173,'BF_Shotgun1','Soldier Shotgun',5,0,NULL,0,100,NULL,9,0,0x41000000,7,2,34,3,80,1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13174,'BF_Launcher1','Soldier Grenade Launcher',5,0,NULL,0,300,NULL,9,0,0x41000000,7,2,34,3,80,1,21,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13175,'Lever_Action_Rifle_C','Lever Action Rifle',5,20,NULL,0,170,NULL,9,0,0x41000000,7,2,34,3,0,0,18,'bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13176,'Krieger_Rifle1','Glorious Rifle',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,18,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13177,'Krieger_Gatling1','Glorious Gatling Gun',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,19,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13178,'Krieger_Shotgun1','Glorious Shotgun',5,0,NULL,0,110,NULL,9,0,0x41000000,7,2,34,4,80,1,20,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13179,'Krieger_Launcher1','Glorious Grenade Launcher',5,0,NULL,0,330,NULL,9,0,0x41000000,7,2,34,4,80,1,21,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13176,'Krieger_Rifle1','Glorious Rifle',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,18,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13177,'Krieger_Gatling1','Glorious Gatling Gun',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,19,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13178,'Krieger_Shotgun1','Glorious Shotgun',5,0,NULL,0,110,NULL,9,0,0x41000000,7,2,34,4,80,1,20,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13179,'Krieger_Launcher1','Glorious Grenade Launcher',5,0,NULL,0,330,NULL,9,0,0x41000000,7,2,34,4,80,1,21,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL);
 # Bullets
 REPLACE INTO `item_db` VALUES (13200,'Bullet','Bullet',10,1,NULL,2,10,NULL,NULL,NULL,0x41000000,7,2,32768,NULL,1,NULL,3,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (13201,'Silver_Bullet','Silver Bullet',10,15,NULL,2,15,NULL,NULL,NULL,0x41000000,7,2,32768,NULL,1,NULL,3,'bonus bAtkEle,Ele_Holy;',NULL,NULL);
@@ -5494,9 +5494,9 @@ REPLACE INTO `item_db` VALUES (13301,'Huuma_Giant_Wheel','Huuma Giant Wheel Shur
 REPLACE INTO `item_db` VALUES (13302,'Huuma_Giant_Wheel_','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,50,NULL,1,4,0x02000000,7,2,34,4,42,1,22,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13303,'Huuma_Blaze','Huuma Blaze Shuriken',5,78000,NULL,1500,185,NULL,1,0,0x02000000,7,2,34,4,55,1,22,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13304,'Huuma_Calm_Mind','Huuma Calm Mind',5,20,NULL,1550,112,NULL,1,2,0x02000000,7,2,34,3,70,1,22,'bonus bUnbreakableWeapon,0; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13305,'BF_Huuma_Shuriken1','Brave Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13306,'BF_Huuma_Shuriken2','Valorous Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13307,'Krieger_Huuma_Shuriken1','Glorious Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,4,80,1,22,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13305,'BF_Huuma_Shuriken1','Brave Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13306,'BF_Huuma_Shuriken2','Valorous Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13307,'Krieger_Huuma_Shuriken1','Glorious Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,4,80,1,22,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13308,'Huuma_Blaze_I','Huuma Blaze Shuriken',5,0,NULL,0,230,NULL,1,0,0x02000000,7,2,34,4,0,0,22,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13309,'Huuma_Giant_Wheel_C','Huuma Giant Wheel Shuriken',5,0,NULL,0,99,NULL,1,0,0x02000000,7,2,34,4,1,0,22,'bonus2 bAddSize,Size_All,80;',NULL,NULL);
 # More 1-Handed Swords
@@ -5507,16 +5507,16 @@ REPLACE INTO `item_db` VALUES (13403,'Solar_Sword_C','Solar Sword',5,2,NULL,0,12
 REPLACE INTO `item_db` VALUES (13404,'Platinum_Shotel','Platinum Shotel',5,20,NULL,1500,130,NULL,1,1,0x000654E2,7,2,2,4,55,1,2,'bonus bCritical,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13405,'Curved_Sword','Curved Sword',5,20,NULL,800,125,NULL,1,2,0x000654E2,7,2,2,4,55,1,2,'bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13406,'Edger','Edger',5,20,NULL,0,120,NULL,1,0,0x000654E2,7,2,2,1,0,0,2,'bonus2 bAddClass,Class_All,50;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13407,'Nagan_C','Refined Nagan',5,1,NULL,0,148,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13407,'Nagan_C','Refined Nagan',5,1,NULL,0,148,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13408,'Fire_Brand_C','Refined Fireblend',5,1,NULL,0,120,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13409,'Immaterial_Sword_C','Refined Immaterial Sword',5,1,NULL,0,160,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13410,'BF_Sword1','Valorous Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13411,'BF_Sword2','Brave Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13410,'BF_Sword1','Valorous Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13411,'BF_Sword2','Brave Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13412,'Twin_Edge_B','Twin Edge of Naght Sieger',5,20,NULL,1500,150,NULL,1,3,0x000654E2,2,2,2,4,75,1,2,'bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13413,'Twin_Edge_R','Twin Edge of Naght Sieger',5,20,NULL,1500,160,NULL,1,3,0x000654E2,2,2,2,4,75,1,2,'bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13414,'Elemental_Sword','Elemental Sword',5,20,NULL,1200,105,NULL,1,3,0x000654E2,2,2,2,3,70,1,2,'bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus bMatkRate,5; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,10000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,10000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13415,'N_Falchion','Novice Falchion',5,0,NULL,0,59,NULL,1,3,0x000654E3,7,2,2,1,2,0,2,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (13416,'Krieger_Onehand_Sword1','Glorious Flamberge',5,20,NULL,0,130,NULL,1,0,0x000654E3,7,2,2,4,80,1,2,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13416,'Krieger_Onehand_Sword1','Glorious Flamberge',5,20,NULL,0,130,NULL,1,0,0x000654E3,7,2,2,4,80,1,2,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bIgnoreDefRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus2 bIgnoreDefRate,RC_Player,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13417,'Krieger_Onehand_Sword2','Glorious Rapier',5,20,NULL,0,130,NULL,1,0,0x000654E3,7,2,2,4,80,1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13418,'Krieger_Onehand_Sword3','Glorious Holy Avenger',5,20,NULL,0,130,NULL,1,0,0x000444A2,7,2,2,4,80,1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXDIVINA",1,1000; if(getrefine()>9) bonus bInt,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13419,'Holy_Saber','Holy saber',5,20,NULL,0,160,NULL,1,0,0x000654E2,7,2,2,3,0,0,2,NULL,NULL,NULL);
@@ -6456,7 +6456,7 @@ REPLACE INTO `item_db` VALUES (14607,'Luxurious_Dinner_W','Luxurious Western Foo
 REPLACE INTO `item_db` VALUES (14608,'Luxurious_Dinner_E','Manchu-Han Imperial Feast',2,20000,NULL,1200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCALLSTATUS,3600000,6;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14609,'Spoiled_Cuisine','Spoiled Cuisine',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 10,10;',NULL,NULL);
 # More Armors
-REPLACE INTO `item_db` VALUES (15000,'Bone_Plate','Bone Plate',4,20,NULL,1000,NULL,7,NULL,1,0x000654E2,2,2,16,NULL,85,1,0,'bonus bStr,1; bonus bMdef,3; bonus2 bIgnoreDefRate,RC_DemiHuman,10; bonus2 bIgnoreDefRate,RC_Brute,10; bonus3 bAutoSpellWhenHit,"NPC_WIDEBLEEDING",1,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (15000,'Bone_Plate','Bone Plate',4,20,NULL,1000,NULL,7,NULL,1,0x000654E2,2,2,16,NULL,85,1,0,'bonus bStr,1; bonus bMdef,3; bonus2 bIgnoreDefRate,RC_DemiHuman,10; bonus2 bIgnoreDefRate,RC_Player,10; bonus2 bIgnoreDefRate,RC_Brute,10; bonus3 bAutoSpellWhenHit,"NPC_WIDEBLEEDING",1,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (15001,'Odin\'s_Blessing_I','Odin\'s Blessing',4,0,NULL,0,NULL,10,NULL,0,0xFFFFFFFE,7,2,16,NULL,0,0,0,NULL,NULL,NULL);
 # More Maces
 REPLACE INTO `item_db` VALUES (16000,'Erde','Erde',5,20,NULL,500,130,NULL,1,2,0x0004C5B2,2,2,2,4,50,1,8,'bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus bMaxSP,50; bonus bHealPower,10;',NULL,NULL);
@@ -6578,7 +6578,7 @@ REPLACE INTO `item_db` VALUES (18595,'Horn_Of_Ancient','Horn of Ancient',4,40,NU
 REPLACE INTO `item_db` VALUES (18596,'Sprout_Hat','Sprout Hat',4,20,NULL,200,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,1,758,'skill "WZ_HEAVENDRIVE",3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18597,'Mercury_Riser','Mercury Riser',4,40,NULL,200,NULL,10,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,NULL,759,'bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }',NULL,NULL);
 #
-REPLACE INTO `item_db` VALUES (18600,'Cat_Ear_Beret','Cat Ear Beret',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,761,'bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bSubRace,RC_DemiHuman,7; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (18600,'Cat_Ear_Beret','Cat Ear Beret',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,761,'bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; }',NULL,NULL);
 #
 REPLACE INTO `item_db` VALUES (18612,'White_Musang_Hat','White Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,770,'bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18613,'Black_Musang_Hat','Black Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,771,'bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,0;',NULL,NULL);

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 167 - 167
sql-files/item_db_re.sql


+ 245 - 6
src/char/char.c

@@ -112,6 +112,7 @@ int char_del_option = 2; // Character deletion type, email = 1, birthdate = 2 (d
 
 int log_char = 1;	// loggin char or not [devil]
 int log_inter = 1;	// loggin inter or not [devil]
+int char_check_db = 1;	///cheking sql-table at begining ?
 
 // Advanced subnet check [LuzZza]
 struct s_subnet {
@@ -4530,7 +4531,7 @@ int parse_char(int fd)
 				strcmp("a@a.com", sd->email) || //it is not default email, or
 				(strcmp("a@a.com", email) && strcmp("", email)) //email sent does not matches default
 			))
-				|| !char_del_option&1
+				|| !(char_del_option&1)
 			) {	//Fail
 				WFIFOHEAD(fd,3);
 				WFIFOW(fd,0) = 0x70;
@@ -4765,7 +4766,7 @@ int parse_char(int fd)
 			if( RFIFOREST(fd) < 6 )
 				return 0;
 			if( pincode_enabled && RFIFOL(fd,2) == sd->account_id ){
-				if( strlen( sd->pincode ) <= 0 ){
+				if( sd->pincode[0] == '\0' ){
 					pincode_sendstate( fd, sd, PINCODE_NEW );
 				}else{
 					pincode_sendstate( fd, sd, PINCODE_ASK );
@@ -4842,7 +4843,7 @@ int parse_console(const char* buf)
 
 	if( n == 2 && strcmpi("server", type) == 0 ){
 		if( strcmpi("shutdown", command) == 0 || strcmpi("exit", command) == 0 || strcmpi("quit", command) == 0 ){
-			runflag = 0;
+			runflag = CHARSERVER_ST_SHUTDOWN;
 		}
 		else if( strcmpi("alive", command) == 0 || strcmpi("status", command) == 0 )
 			ShowInfo(CL_CYAN"Console: "CL_BOLD"I'm Alive."CL_RESET"\n");
@@ -5350,7 +5351,7 @@ int char_lan_config_read(const char *lancfgName)
 		if ((line[0] == '/' && line[1] == '/') || line[0] == '\n' || line[1] == '\n')
 			continue;
 
-		if(sscanf(line,"%[^:]: %[^:]:%[^:]:%[^\r\n]", w1, w2, w3, w4) != 4) {
+		if(sscanf(line,"%63[^:]: %63[^:]:%63[^:]:%63[^\r\n]", w1, w2, w3, w4) != 4) {
 
 			ShowWarning("Error syntax of configuration file %s in line %d.\n", lancfgName, line_num);
 			continue;
@@ -5384,6 +5385,235 @@ int char_lan_config_read(const char *lancfgName)
 	return 0;
 }
 
+/**
+ * Check if our table are all ok in sqlserver
+ * Char tables to check
+ * @return 0:fail, 1:success
+ */
+bool char_checkdb(void){
+	int i;
+	const char* sqltable[] = {
+		char_db, hotkey_db, scdata_db, cart_db, inventory_db, charlog_db, storage_db, reg_db, skill_db, interlog_db, memo_db,
+		guild_db, guild_alliance_db, guild_castle_db, guild_expulsion_db, guild_member_db, guild_skill_db, guild_position_db, guild_storage_db,
+		party_db, pet_db, friend_db, mail_db, auction_db, quest_db, homunculus_db, skill_homunculus_db, mercenary_db, mercenary_owner_db,
+		elemental_db, ragsrvinfo_db, skillcooldown_db, bonus_script_db
+	};
+	ShowInfo("Start checking DB integrity\n");
+	for (i=0; i<ARRAYLENGTH(sqltable); i++){ //check if they all exist and we can acces them in sql-server
+		if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  * from `%s`;", sqltable[i]) )
+			return false;
+	}
+	//checking char_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `char_id`,`account_id`,`char_num`,`name`,`class`,"
+		"`base_level`,`job_level`,`base_exp`,`job_exp`,`zeny`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,"
+		"`max_hp`,`hp`,`max_sp`,`sp`,`status_point`,`skill_point`,`option`,`karma`,`manner`,`party_id`,"
+		"`guild_id`,`pet_id`,`homun_id`,`elemental_id`,`hair`,`hair_color`,`clothes_color`,`weapon`,"
+		"`shield`,`head_top`,`head_mid`,`head_bottom`,`robe`,`last_map`,`last_x`,`last_y`,`save_map`,"
+		"`save_x`,`save_y`,`partner_id`,`online`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,`moves`"
+		" from `%s`;", char_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking charlog_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `time`,`char_msg`,`account_id`,`char_num`,`name`,"
+			 "`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`"
+		" from `%s`;", charlog_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking reg_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `char_id`,`str`,`value`,`type`,`account_id` from `%s`;", reg_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking hotkey_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `char_id`,`hotkey`,`type`,`itemskill_id`,`skill_lvl`"
+		" from `%s`;", hotkey_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking scdata_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `account_id`,`char_id`,`type`,`tick`,`val1`,`val2`,`val3`,`val4`"
+		" from `%s`;", scdata_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking skill_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `char_id`,`id`,`lv`,`flag` from `%s`;", skill_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking interlog_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `time`,`log` from `%s`;", interlog_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking memo_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `memo_id`,`char_id`,`map`,`x`,`y` from `%s`;", memo_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `guild_id`,`name`,`char_id`,`master`,`guild_lv`,"
+			"`connect_member`,`max_member`,`average_lv`,`exp`,`next_exp`,`skill_point`,`mes1`,`mes2`,"
+			"`emblem_len`,`emblem_id`,`emblem_data`"
+			" from `%s`;", guild_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_alliance_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `guild_id`,`opposition`,`alliance_id`,`name` from `%s`;", guild_alliance_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_castle_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `castle_id`,`guild_id`,`economy`,`defense`,`triggerE`,"
+			"`triggerD`,`nextTime`,`payTime`,`createTime`,`visibleC`,`visibleG0`,`visibleG1`,`visibleG2`,"
+			"`visibleG3`,`visibleG4`,`visibleG5`,`visibleG6`,`visibleG7` "
+			" from `%s`;", guild_castle_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_expulsion_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `guild_id`,`account_id`,`name`,`mes` from `%s`;", guild_expulsion_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_member_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `guild_id`,`account_id`,`char_id`,`hair`,"
+			"`hair_color`,`gender`,`class`,`lv`,`exp`,`exp_payper`,`online`,`position`,`name`"
+			" from `%s`;", guild_member_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_skill_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `guild_id`,`id`,`lv` from `%s`;", guild_skill_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_position_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `guild_id`,`position`,`name`,`mode`,`exp_mode` from `%s`;", guild_position_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking party_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `party_id`,`name`,`exp`,`item`,`leader_id`,`leader_char` from `%s`;", party_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking pet_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `pet_id`,`class`,`name`,`account_id`,`char_id`,`level`,"
+			"`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incuvate`"
+			" from `%s`;", pet_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking friend_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `char_id`,`friend_account`,`friend_id` from `%s`;", friend_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking mail_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`send_name`,`send_id`,`dest_name`,`dest_id`,"
+			"`title`,`message`,`time`,`status`,`zeny`,`nameid`,`amount`,`refine`,`attribute`,`identify`,"
+			"`card0`,`card1`,`card2`,`card3`,`unique_id`"
+			" from `%s`;", mail_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking auction_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
+			"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`card0`,`card1`,"
+			"`card2`,`card3`,`unique_id` "
+			"from `%s`;", auction_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking quest_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `char_id`,`quest_id`,`state`,`time`,`count1`,`count2`,`count3` from `%s`;", quest_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking homunculus_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `homun_id`,`char_id`,`class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`,"
+			"`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hp`,`max_hp`,`sp`,`max_sp`,`skill_point`,`alive`,`rename_flag`,`vaporize` "
+			" from `%s`;", homunculus_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking skill_homunculus_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `homun_id`,`id`,`lv` from `%s`;", skill_homunculus_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking mercenary_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `mer_id`,`char_id`,`class`,`hp`,`sp`,`kill_counter`,`life_time` from `%s`;", mercenary_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking mercenary_owner_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `char_id`,`merc_id`,`arch_calls`,`arch_faith`,"
+			"`spear_calls`,`spear_faith`,`sword_calls`,`sword_faith`"
+			" from `%s`;", mercenary_owner_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking elemental_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `ele_id`,`char_id`,`class`,`mode`,`hp`,`sp`,`max_hp`,`max_sp`,"
+			"`atk1`,`atk2`,`matk`,`aspd`,`def`,`mdef`,`flee`,`hit`,`life_time` "
+			" from `%s`;", elemental_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking ragsrvinfo_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `index`,`name`,`exp`,`jexp`,`drop` from `%s`;", ragsrvinfo_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking skillcooldown_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `account_id`,`char_id`,`skill`,`tick` from `%s`;", skillcooldown_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking bonus_script_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `char_id`,`script`,`tick`,`flag`,`type`,`icon` from `%s`;", bonus_script_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	
+	//checking cart_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
+			"`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`,`bound`,`unique_id`"
+		" from `%s`;", cart_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking inventory_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
+			"`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`,`favorite`,`bound`,`unique_id`"
+		" from `%s`;", inventory_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking storage_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`account_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
+			"`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`,`bound`,`unique_id`"
+		" from `%s`;", storage_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	//checking guild_storage_db
+	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`guild_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
+			"`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`,`bound`,`unique_id`"
+		" from `%s`;", guild_storage_db) ){
+		Sql_ShowDebug(sql_handle);
+		return false;
+	}
+	
+	ShowInfo("DB integrity check finished with success\n");
+	return true;
+}
+
 void sql_config_read(const char* cfgName)
 {
 	char line[1024], w1[1024], w2[1024];
@@ -5398,7 +5628,7 @@ void sql_config_read(const char* cfgName)
 		if(line[0] == '/' && line[1] == '/')
 			continue;
 
-		if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2)
+		if (sscanf(line, "%1023[^:]: %1023[^\r\n]", w1, w2) != 2)
 			continue;
 
 		if(!strcmpi(w1,"char_db"))
@@ -5487,7 +5717,7 @@ int char_config_read(const char* cfgName)
 		if (line[0] == '/' && line[1] == '/')
 			continue;
 
-		if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2)
+		if (sscanf(line, "%1023[^:]: %1023[^\r\n]", w1, w2) != 2)
 			continue;
 
 		remove_control_chars(w1);
@@ -5653,6 +5883,8 @@ int char_config_read(const char* cfgName)
 			char_movetoused = config_switch(w2);
 		} else if (strcmpi(w1, "char_moves_unlimited") == 0) {
 			char_moves_unlimited = config_switch(w2);
+		} else if (strcmpi(w1, "char_checkdb") == 0) {
+			char_check_db = config_switch(w2);
 		} else if (strcmpi(w1, "import") == 0) {
 			char_config_read(w2);
 		}
@@ -5732,6 +5964,7 @@ void do_shutdown(void)
 int do_init(int argc, char **argv)
 {
 	//Read map indexes
+	runflag = CHARSERVER_ST_STARTING;
 	mapindex_init();
 	start_point.map = mapindex_name2id("new_zone01");
 
@@ -5793,6 +6026,11 @@ int do_init(int argc, char **argv)
 	add_timer_func_list(online_data_cleanup, "online_data_cleanup");
 	add_timer_interval(gettick() + 1000, online_data_cleanup, 0, 0, 600 * 1000);
 
+	//chek db tables
+	if(char_check_db && char_checkdb() == 0){
+		ShowFatalError("char : A tables is missing in sql-server, please fix it, see (sql-files main.sql for structure) \n");
+		exit(EXIT_FAILURE);
+	}
 	//Cleaning the tables for NULL entrys @ startup [Sirius]
 	//Chardb clean
 	if( SQL_ERROR == Sql_Query(sql_handle, "DELETE FROM `%s` WHERE `account_id` = '0'", char_db) )
@@ -5807,6 +6045,7 @@ int do_init(int argc, char **argv)
 		Sql_ShowDebug(sql_handle);
 
 	set_defaultparse(parse_char);
+	
 
 	if( (char_fd = make_listen_bind(bind_ip,char_port)) == -1 ) {
 		ShowFatalError("Failed to bind to port '"CL_WHITE"%d"CL_RESET"'\n",char_port);

+ 1 - 0
src/char/char.h

@@ -11,6 +11,7 @@
 enum E_CHARSERVER_ST
 {
 	CHARSERVER_ST_RUNNING = CORE_ST_LAST,
+	CHARSERVER_ST_STARTING,
 	CHARSERVER_ST_SHUTDOWN,
 	CHARSERVER_ST_LAST
 };

+ 1 - 3
src/char/int_guild.c

@@ -227,12 +227,10 @@ int inter_guild_tosql(struct guild *g,int flag)
 
 	if (flag&GS_MEMBER)
 	{
-		struct guild_member *m;
-
 		strcat(t_info, " members");
 		// Update only needed players
 		for(i=0;i<g->max_member;i++){
-			m = &g->member[i];
+			struct guild_member *m = &g->member[i];
 			if (!m->modified)
 				continue;
 			if(m->account_id) {

+ 5 - 7
src/common/core.c

@@ -268,7 +268,7 @@ const char *get_git_hash (void) {
 		char line[64];
 		char *rev = malloc(sizeof(char) * 50);
 
-		if( fgets(line, sizeof(line), fp) && sscanf(line, "%s", rev) )
+		if( fgets(line, sizeof(line), fp) && sscanf(line, "%40s", rev) )
 			snprintf(GitHash, sizeof(GitHash), "%s", rev);
 
 		free(rev);
@@ -370,12 +370,10 @@ int main (int argc, char **argv)
 
 	do_init(argc,argv);
 
-	{// Main runtime cycle
-		int next;
-		while (runflag != CORE_ST_STOP) {
-			next = do_timer(gettick_nocache());
-			do_sockets(next);
-		}
+	// Main runtime cycle
+	while (runflag != CORE_ST_STOP) { 
+		int next = do_timer(gettick_nocache());
+		do_sockets(next);
 	}
 
 	do_final();

+ 2 - 2
src/common/grfio.c

@@ -640,7 +640,7 @@ static bool grfio_parse_restable_row(const char* row)
 	char local[256];
 	FILELIST* entry;
 
-	if( sscanf(row, "%[^#\r\n]#%[^#\r\n]#", w1, w2) != 2 )
+	if( sscanf(row, "%255[^#\r\n]#%255[^#\r\n]#", w1, w2) != 2 )
 		return false;
 
 	if( strstr(w2, ".gat") == NULL && strstr(w2, ".rsw") == NULL )
@@ -790,7 +790,7 @@ void grfio_init(const char* fname)
 			if( line[0] == '/' && line[1] == '/' )
 				continue; // skip comments
 
-			if( sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2 )
+			if( sscanf(line, "%1023[^:]: %1023[^\r\n]", w1, w2) != 2 )
 				continue; // skip unrecognized lines
 
 			// Entry table reading

+ 1 - 3
src/common/malloc.c

@@ -115,8 +115,6 @@ void aFree_(void *p, const char *file, int line, const char *func)
 	// ShowMessage("%s:%d: in func %s: aFree %p\n",file,line,func,p);
 	if (p)
 		FREE(p, file, line, func);
-
-	p = NULL;
 }
 
 
@@ -447,13 +445,13 @@ void _mfree(void *ptr, const char *file, int line, const char *func )
 /* Allocating blocks */
 static struct block* block_malloc(unsigned short hash)
 {
-	int i;
 	struct block *p;
 	if(hash_unfill[0] != NULL) {
 		/* Space for the block has already been secured */
 		p = hash_unfill[0];
 		hash_unfill[0] = hash_unfill[0]->unfill_next;
 	} else {
+		int i;
 		/* Newly allocated space for the block */
 		p = (struct block*)MALLOC(sizeof(struct block) * (BLOCK_ALLOC), __FILE__, __LINE__, __func__ );
 		if(p == NULL) {

+ 0 - 10
src/common/showmsg.c

@@ -52,7 +52,6 @@
 int stdout_with_ansisequence = 0;
 
 int msg_silent = 0; //Specifies how silent the console is.
-
 int console_msg_log = 0;//[Ind] msg error logging
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -664,15 +663,6 @@ int	FPRINTF(FILE *file, const char *fmt, ...)
 
 #endif// not _WIN32
 
-
-
-
-
-
-
-
-
-
 char timestamp_format[20] = ""; //For displaying Timestamps
 
 int _vShowMessage(enum msg_type flag, const char *string, va_list ap)

+ 6 - 8
src/common/socket.c

@@ -1089,9 +1089,9 @@ int access_ipmask(const char* str, AccessControl* acc)
 		unsigned int a[4];
 		unsigned int m[4];
 		int n;
-		if( ((n=sscanf(str,"%u.%u.%u.%u/%u.%u.%u.%u",a,a+1,a+2,a+3,m,m+1,m+2,m+3)) != 8 && // not an ip + standard mask
-				(n=sscanf(str,"%u.%u.%u.%u/%u",a,a+1,a+2,a+3,m)) != 5 && // not an ip + bit mask
-				(n=sscanf(str,"%u.%u.%u.%u",a,a+1,a+2,a+3)) != 4 ) || // not an ip
+		if( ((n=sscanf(str,"%3u.%3u.%3u.%3u/%3u.%3u.%3u.%3u",a,a+1,a+2,a+3,m,m+1,m+2,m+3)) != 8 && // not an ip + standard mask
+				(n=sscanf(str,"%3u.%3u.%3u.%3u/%3u",a,a+1,a+2,a+3,m)) != 5 && // not an ip + bit mask
+				(n=sscanf(str,"%3u.%3u.%3u.%3u",a,a+1,a+2,a+3)) != 4 ) || // not an ip
 				a[0] > 255 || a[1] > 255 || a[2] > 255 || a[3] > 255 || // invalid ip
 				(n == 8 && (m[0] > 255 || m[1] > 255 || m[2] > 255 || m[3] > 255)) || // invalid standard mask
 				(n == 5 && m[0] > 32) ){ // invalid bit mask
@@ -1139,7 +1139,7 @@ int socket_config_read(const char* cfgName)
 	{
 		if(line[0] == '/' && line[1] == '/')
 			continue;
-		if(sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2)
+		if(sscanf(line, "%1023[^:]: %1023[^\r\n]", w1, w2) != 2)
 			continue;
 
 		if (!strcmpi(w1, "stall_time")) {
@@ -1297,12 +1297,10 @@ int socket_getips(uint32* ips, int max)
 		else
 		{
 			int pos;
-			struct ifreq* ir;
-			struct sockaddr_in* a;
 			for( pos=0; pos < ic.ifc_len && num < max; )
 			{
-				ir = (struct ifreq*)(buf+pos);
-				a = (struct sockaddr_in*) &(ir->ifr_addr);
+				struct ifreq* ir = (struct ifreq*)(buf+pos);
+				struct sockaddr_in*a = (struct sockaddr_in*) &(ir->ifr_addr);
 				if( a->sin_family == AF_INET ){
 					ad = ntohl(a->sin_addr.s_addr);
 					if( ad != INADDR_LOOPBACK && ad != INADDR_ANY )

+ 1 - 2
src/common/timer.c

@@ -457,7 +457,6 @@ void split_time(int timein, int* year, int* month, int* day, int* hour, int* min
  */
 double solve_time(char* modif_p) {
 	double totaltime = 0;
-	int value = 0;
 	struct tm then_tm;
 	time_t now = time(NULL);
 	time_t then = now;
@@ -466,7 +465,7 @@ double solve_time(char* modif_p) {
 	nullpo_retr(0,modif_p);
 
 	while (modif_p[0] != '\0') {
-		value = atoi(modif_p);
+		int value = atoi(modif_p);
 		if (value == 0)
 			modif_p++;
 		else {

+ 8 - 10
src/login/login.c

@@ -345,7 +345,7 @@ int login_lan_config_read(const char *lancfgName)
 		if ((line[0] == '/' && line[1] == '/') || line[0] == '\n' || line[1] == '\n')
 			continue;
 
-		if(sscanf(line,"%[^:]: %[^:]:%[^:]:%[^\r\n]", w1, w2, w3, w4) != 4)
+		if(sscanf(line,"%63[^:]: %63[^:]:%63[^:]:%63[^\r\n]", w1, w2, w3, w4) != 4)
 		{
 			ShowWarning("Error syntax of configuration file %s in line %d.\n", lancfgName, line_num);
 			continue;
@@ -922,21 +922,18 @@ int parse_fromchar(int fd){
 			if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2))
 				return 0;
 			else{
-				struct online_login_data *p;
-				int aid;
 				uint32 i, users;
 				online_db->foreach(online_db, online_db_setoffline, id); //Set all chars from this char-server offline first
 				users = RFIFOW(fd,4);
 				for (i = 0; i < users; i++) {
-					aid = RFIFOL(fd,6+i*4);
-					p = idb_ensure(online_db, aid, create_online_user);
+					int aid = RFIFOL(fd,6+i*4);
+					struct online_login_data *p = idb_ensure(online_db, aid, create_online_user);
 					p->char_server = id;
 					if (p->waiting_disconnect != INVALID_TIMER){
 						delete_timer(p->waiting_disconnect, waiting_disconnect_timer);
 						p->waiting_disconnect = INVALID_TIMER;
 					}
 				}
-
 				RFIFOSKIP(fd,RFIFOW(fd,2));
 			}
 		break;
@@ -1773,7 +1770,7 @@ int login_config_read(const char* cfgName)
 		if (line[0] == '/' && line[1] == '/')
 			continue;
 
-		if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) < 2)
+		if (sscanf(line, "%1023[^:]: %1023[^\r\n]", w1, w2) < 2)
 			continue;
 
 		if(!strcmpi(w1,"timestamp_format"))
@@ -1835,7 +1832,7 @@ int login_config_read(const char* cfgName)
 		else if(!strcmpi(w1, "client_hash")) {
 			int group = 0;
 			char md5[33];
-			if (sscanf(w2, "%d, %32s", &group, md5) == 2) {
+			if (sscanf(w2, "%3d, %32s", &group, md5) == 2) {
 				struct client_hash_node *nnode;
 				int i;
 				CREATE(nnode, struct client_hash_node, 1);
@@ -1844,7 +1841,7 @@ int login_config_read(const char* cfgName)
 					unsigned int byte;
 					memcpy(buf, &md5[i], 2);
 					buf[2] = 0;
-					sscanf(buf, "%x", &byte);
+					sscanf(buf, "%2x", &byte);
 					nnode->hash[i / 2] = (uint8)(byte & 0xFF);
 				}
 				nnode->group_id = group;
@@ -2001,7 +1998,8 @@ void do_shutdown(void)
 int do_init(int argc, char** argv)
 {
 	int i;
-
+	
+	runflag = LOGINSERVER_ST_STARTING;
 	// intialize engines (to accept config settings)
 	for( i = 0; account_engines[i].constructor; ++i )
 		account_engines[i].db = account_engines[i].constructor();

+ 1 - 0
src/login/login.h

@@ -11,6 +11,7 @@
 enum E_LOGINSERVER_ST
 {
 	LOGINSERVER_ST_RUNNING = CORE_ST_LAST,
+	LOGINSERVER_ST_STARTING,
 	LOGINSERVER_ST_SHUTDOWN,
 	LOGINSERVER_ST_LAST
 };

+ 4 - 4
src/map/atcommand.c

@@ -433,7 +433,7 @@ ACMD_FUNC(where)
 	nullpo_retr(-1, sd);
 	memset(atcmd_player_name, '\0', sizeof atcmd_player_name);
 
-	if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
+	if (!message || !*message || sscanf(message, "%23s[^\n]", atcmd_player_name) < 1) {
 		clif_displaymessage(fd, msg_txt(sd,910)); // Please enter a player name (usage: @where <char name>).
 		return -1;
 	}
@@ -4373,12 +4373,12 @@ ACMD_FUNC(loadnpc)
 ACMD_FUNC(unloadnpc)
 {
 	struct npc_data *nd;
-	char NPCname[NAME_LENGTH+1];
+	char NPCname[NAME_LENGTH];
 	nullpo_retr(-1, sd);
 
 	memset(NPCname, '\0', sizeof(NPCname));
 
-	if (!message || !*message || sscanf(message, "%24[^\n]", NPCname) < 1) {
+	if (!message || !*message || sscanf(message, "%23[^\n]", NPCname) < 1) {
 		clif_displaymessage(fd, msg_txt(sd,1133)); // Please enter a NPC name (usage: @unloadnpc <NPC_name>).
 		return -1;
 	}
@@ -7942,7 +7942,7 @@ ACMD_FUNC(duel)
 	}
 
 	if( message[0] ) {
-		if(sscanf(message, "%ui", &maxpl) >= 1) {
+		if(sscanf(message, "%u", &maxpl) >= 1) {
 			if(maxpl < 2 || maxpl > 65535) {
 				clif_displaymessage(fd, msg_txt(sd,357)); // "Duel: Invalid value."
 				return 0;

+ 176 - 160
src/map/battle.c

@@ -1156,29 +1156,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 			if (hd && (rnd()%100<50) ) hom_addspiritball(hd, 10); // According to WarpPortal, this is a flat 50% chance
 		}
 
-		if( sc->data[SC__DEADLYINFECT] && damage > 0 && rnd()%100 < 65 + 5 * sc->data[SC__DEADLYINFECT]->val1 )
+		if( sc->data[SC__DEADLYINFECT] && damage > 0 && rnd()%100 < 30 + 10 * sc->data[SC__DEADLYINFECT]->val1 )
 			status_change_spread(bl, src); // Deadly infect attacked side
 
-		if( sc && sc->data[SC__SHADOWFORM] ) {
-			struct block_list *s_bl = map_id2bl(sc->data[SC__SHADOWFORM]->val2);
-			if( !s_bl || s_bl->m != bl->m ) { // If the shadow form target is not present remove the sc.
-				status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
-			} else if( status_isdead(s_bl) || !battle_check_target(src,s_bl,BCT_ENEMY)) { // If the shadow form target is dead or not your enemy remove the sc in both.
-				status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
-				if( s_bl->type == BL_PC )
-					((TBL_PC*)s_bl)->shadowform_id = 0;
-			} else {
-				if( (--sc->data[SC__SHADOWFORM]->val3) < 0 ) { // If you have exceded max hits supported, remove the sc in both.
-					status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
-					if( s_bl->type == BL_PC )
-						((TBL_PC*)s_bl)->shadowform_id = 0;
-				} else {
-					status_damage(bl, s_bl, damage, 0, clif_damage(s_bl, s_bl, gettick(), 500, 500, damage, -1, 0, 0), 0);
-					return ATK_NONE;
-				}
-			}
-		}
-
 	} //End of target SC_ check
 
 	//SC effects from caster side.
@@ -1217,7 +1197,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 			&& ((flag&BF_WEAPON) && (!skill_id || skill_id == GC_VENOMPRESSURE)) //chk skill type poison_smoke is a unit
 			&& (damage > 0 && rnd()%100 < sc->data[SC_POISONINGWEAPON]->val3 )) //did some dammage and chance ok (why no additional effect ??
 			sc_start(src,bl,(enum sc_type)sc->data[SC_POISONINGWEAPON]->val2,100,sc->data[SC_POISONINGWEAPON]->val1,skill_get_time2(GC_POISONINGWEAPON, 1));
-		if( sc->data[SC__DEADLYINFECT] && damage > 0 && rnd()%100 < 65 + 5 * sc->data[SC__DEADLYINFECT]->val1 )
+		if( sc->data[SC__DEADLYINFECT] && damage > 0 && rnd()%100 < 30 + 10 * sc->data[SC__DEADLYINFECT]->val1 )
 			status_change_spread(src, bl);
 		if (sc->data[SC_STYLE_CHANGE] && sc->data[SC_STYLE_CHANGE]->val1 == MH_MD_FIGHTING) {
 			TBL_HOM *hd = BL_CAST(BL_HOM,src); //when attacking
@@ -1422,7 +1402,7 @@ int64 battle_addmastery(struct map_session_data *sd,struct block_list *target,in
 	if( (skill = pc_checkskill(sd,NC_RESEARCHFE)) > 0 && (status->def_ele == ELE_FIRE || status->def_ele == ELE_EARTH) )
 		damage += (skill * 10);
 	if( pc_ismadogear(sd) )
-		damage += 20 + 20 * pc_checkskill(sd, NC_MADOLICENCE);
+		damage += 15 + pc_checkskill(sd, NC_MADOLICENCE);
 
 	if((skill = pc_checkskill(sd,HT_BEASTBANE)) > 0 && (status->race==RC_BRUTE || status->race==RC_INSECT) ) {
 		damage += (skill * 4);
@@ -2035,9 +2015,9 @@ static int is_attack_piercing(struct Damage wd, struct block_list *src, struct b
 			&& skill_id != PA_SHIELDCHAIN && !is_attack_critical(wd, src, target, skill_id, skill_lv, false) )
 #endif
 		{ //Elemental/Racial adjustments
-			if( sd && (sd->right_weapon.def_ratio_atk_ele & (1<<tstatus->def_ele) ||
-				sd->right_weapon.def_ratio_atk_race & (1<<tstatus->race) ||
-				sd->right_weapon.def_ratio_atk_class & (1<<tstatus->class_))
+			if( sd && (sd->right_weapon.def_ratio_atk_ele & (1<<tstatus->def_ele) || sd->right_weapon.def_ratio_atk_ele & (1<<ELE_ALL) ||
+				sd->right_weapon.def_ratio_atk_race & (1<<tstatus->race) || sd->right_weapon.def_ratio_atk_race & (1<<RC_ALL) ||
+				sd->right_weapon.def_ratio_atk_class & (1<<tstatus->class_) || sd->right_weapon.def_ratio_atk_class & (1<<CLASS_ALL))
 			)
 				if (weapon_position == EQI_HAND_R)
 					return 1;
@@ -3128,7 +3108,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			break;
 		case GS_BULLSEYE:
 			//Only works well against brute/demihumans non bosses.
-			if((tstatus->race == RC_BRUTE || tstatus->race == RC_DEMIHUMAN)
+			if((tstatus->race == RC_BRUTE || tstatus->race == RC_DEMIHUMAN || tstatus->race == RC_PLAYER)
 				&& !(tstatus->mode&MD_BOSS))
 				skillratio += 400;
 			break;
@@ -3240,7 +3220,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			}
 			break;
 		case RK_STORMBLAST:
-			skillratio = ((sd ? pc_checkskill(sd,RK_RUNEMASTERY) : 1) + (sstatus->int_ / 8)) * 100; // ATK = [{Rune Mastery Skill Level + (Caster's INT / 8)} x 100] %
+			skillratio = (((sd) ? pc_checkskill(sd,RK_RUNEMASTERY) : skill_get_max(RK_RUNEMASTERY)) + (status_get_int(src) / 8)) * 100; // ATK = [{Rune Mastery Skill Level + (Caster's INT / 8)} x 100] %
 			break;
 		case RK_PHANTOMTHRUST: // ATK = [{(Skill Level x 50) + (Spear Master Level x 10)} x Caster's Base Level / 150] %
 			skillratio = 50 * skill_lv + 10 * (sd ? pc_checkskill(sd,KN_SPEARMASTERY) : 5);
@@ -3260,7 +3240,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			//ATK [{(Skill Level x 100) + 300} x Caster's Base Level / 120]% + ATK [(AGI x 2) + (Caster's Job Level x 4)]%
 			skillratio += 200 + (100 * skill_lv);
 			RE_LVL_DMOD(120);
-			skillratio += sstatus->agi + (sd?sd->status.job_level:0) * 4;
+			skillratio += status_get_agi(src) * 2 + (sd?sd->status.job_level:0) * 4;
 			break;
 		case GC_ROLLINGCUTTER:
 			skillratio += -50 + 50 * skill_lv;
@@ -3270,7 +3250,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			skillratio += 300 + 80 * skill_lv;
 			RE_LVL_DMOD(100);
 			if( sc && sc->data[SC_ROLLINGCUTTER] )
-				skillratio += sc->data[SC_ROLLINGCUTTER]->val1 * sstatus->agi;
+				skillratio += sc->data[SC_ROLLINGCUTTER]->val1 * status_get_agi(src);
 			break;
 		/**
 		 * Arch Bishop
@@ -3309,29 +3289,29 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 		 * Mechanic
 		 **/
 		case NC_BOOSTKNUCKLE:
-			skillratio += 100 + 100 * skill_lv + sstatus->dex;
-			RE_LVL_DMOD(100);
+			skillratio += 100 + 100 * skill_lv + status_get_dex(src);
+			RE_LVL_DMOD(120);
 			break;
 		case NC_PILEBUNKER:
-			skillratio += 200 + 100 * skill_lv + sstatus->str;
+			skillratio += 200 + 100 * skill_lv + status_get_str(src);
 			RE_LVL_DMOD(100);
 			break;
 		case NC_VULCANARM:
-			skillratio = 70 * skill_lv + sstatus->dex;
-			RE_LVL_DMOD(100);
+			skillratio = 70 * skill_lv + status_get_dex(src);
+			RE_LVL_DMOD(120);
 			break;
 		case NC_FLAMELAUNCHER:
 		case NC_COLDSLOWER:
 			skillratio += 200 + 300 * skill_lv;
-			RE_LVL_DMOD(100);
+			RE_LVL_DMOD(150);
 			break;
 		case NC_ARMSCANNON:
 			switch( tstatus->size ) {
-				case SZ_SMALL: skillratio += 100 + 500 * skill_lv; break;// Small
-				case SZ_MEDIUM: skillratio += 100 + 400 * skill_lv; break;// Medium
-				case SZ_BIG: skillratio += 100 + 300 * skill_lv; break;// Large
+				case SZ_SMALL: skillratio += 200 + 400 * skill_lv; break;// Small
+				case SZ_MEDIUM: skillratio += 200 + 350 * skill_lv; break;// Medium
+				case SZ_BIG: skillratio += 200 + 300 * skill_lv; break;// Large
 			}
-			RE_LVL_DMOD(100);
+			RE_LVL_DMOD(120);
 			//NOTE: Their's some other factors that affects damage, but not sure how exactly. Will recheck one day. [Rytech]
 			break;
 		case NC_AXEBOOMERANG:
@@ -3344,60 +3324,63 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			RE_LVL_DMOD(100);
 			break;
 		case NC_POWERSWING: // According to current sources, only the str + dex gets modified by level [Akinari]
-			skillratio = sstatus->str + sstatus->dex;
+			skillratio = status_get_str(src) + status_get_dex(src);
 			RE_LVL_DMOD(100);
 			skillratio += 200 + 100 * skill_lv;
 			break;
 		case NC_AXETORNADO:
-			skillratio += 100 + 100 * skill_lv + sstatus->vit;
+			skillratio += 100 + 100 * skill_lv + status_get_vit(src);
 			RE_LVL_DMOD(100);
 			break;
 		case SC_FATALMENACE:
 			skillratio += 100 * skill_lv;
 			break;
 		case SC_TRIANGLESHOT:
-			skillratio += ((skill_lv - 1) * (sstatus->agi / 2)) + 200;
+			skillratio += ((skill_lv - 1) * (status_get_agi(src) / 2)) + 200;
 			RE_LVL_DMOD(120);
 			break;
 		case SC_FEINTBOMB:
-			skillratio = (skill_lv + 1) * (sstatus->dex / 2) * (sd?(sd->status.job_level / 10):5);
+			skillratio = (skill_lv + 1) * (status_get_dex(src) / 2) * (sd?(sd->status.job_level / 10):5);
 			RE_LVL_DMOD(120);
 			break;
-		case LG_CANNONSPEAR:// Stimated formula. Still need confirm it.
-			skillratio += -100 + (50  + sstatus->str) * skill_lv;
+		case LG_CANNONSPEAR:
+			skillratio = (50 * skill_lv) + (status_get_str(src) * skill_lv);
 			RE_LVL_DMOD(100);
 			break;
 		case LG_BANISHINGPOINT:
-			skillratio += -100 + ((50 * skill_lv) + (30 * ((sd)?pc_checkskill(sd,SM_BASH):1)));
+			skillratio = (50 * skill_lv) + (30 * ((sd) ? pc_checkskill(sd,SM_BASH) : skill_get_max(SM_BASH)));
 			RE_LVL_DMOD(100);
 			break;
 		case LG_SHIELDPRESS:
-			skillratio = 150 * skill_lv + sstatus->str;
+			skillratio = 150 * skill_lv + status_get_str(src);
 			if( sd ) {
 				short index = sd->equip_index[EQI_HAND_L];
 				if( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR ) {
 					skillratio += sd->inventory_data[index]->weight / 10;
 					RE_LVL_DMOD(100);
-					skillratio += sstatus->vit * sd->status.inventory[index].refine;
+					skillratio += status_get_vit(src) * sd->status.inventory[index].refine;
 				}
 			} else {
 				RE_LVL_DMOD(100);
 			}
 			break;
 		case LG_PINPOINTATTACK:
-			skillratio = ((100 * skill_lv) + (10 * status_get_agi(src)) );
-			RE_LVL_DMOD(100);
+			skillratio = (100 * skill_lv) + (5 * status_get_agi(src));
+			RE_LVL_DMOD(120);
 			break;
 		case LG_RAGEBURST:
 			if( sd && sd->spiritball_old )
-				skillratio += -100 + (sd->spiritball_old * 200);
+				skillratio = sd->spiritball_old * 200 + (status_get_max_hp(src) - status_get_hp(src)) / 100;
 			else
-				skillratio += -100 + 15 * 200;
+				skillratio = 15 * 200;
 			RE_LVL_DMOD(100);
 			break;
 		case LG_SHIELDSPELL:// [(Casters Base Level x 4) + (Shield DEF x 10) + (Casters VIT x 2)] %
 			if( sd ) {
-				struct item_data *shield_data = sd->inventory_data[sd->equip_index[EQI_HAND_L]];
+				int index = sd->equip_index[EQI_HAND_L];
+				struct item_data *shield_data = NULL;
+				if( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR )
+					shield_data = sd->inventory_data[index];
 				skillratio = status_get_lv(src) * 4 + status_get_vit(src) * 2;
 				if( shield_data )
 					skillratio += shield_data->def * 10;
@@ -3405,15 +3388,15 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 				skillratio = 0; // Prevent damage since level 2 is MATK. [Aleos]
 			break;
 		case LG_MOONSLASHER:
-			skillratio += -100 + (120 * skill_lv + ((sd) ? pc_checkskill(sd,LG_OVERBRAND) : 5) * 80);
+			skillratio = 120 * skill_lv + ((sd) ? pc_checkskill(sd,LG_OVERBRAND) : skill_get_max(LG_OVERBRAND)) * 80;
 			RE_LVL_DMOD(100);
 			break;
 		case LG_OVERBRAND:
-			skillratio = 200 * skill_lv + (pc_checkskill(sd,CR_SPEARQUICKEN) * 50);
+			skillratio = 200 * skill_lv + ((sd) ? pc_checkskill(sd,CR_SPEARQUICKEN) : skill_get_max(CR_SPEARQUICKEN)) * 50;
 			RE_LVL_DMOD(100);
 			break;
 		case LG_OVERBRAND_BRANDISH:
-			skillratio = 100 * skill_lv + (sstatus->str + sstatus->dex);
+			skillratio = 100 * skill_lv + (status_get_str(src) + status_get_dex(src));
 			RE_LVL_DMOD(100);
 			break;
 		case LG_OVERBRAND_PLUSATK: // Only Piercing and Swing damage get RE_LVL_DMOD bonus damage
@@ -3424,11 +3407,26 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			RE_LVL_DMOD(100);
 			break;
 		case LG_EARTHDRIVE:
-			skillratio = (skillratio + 100) * skill_lv;
-			RE_LVL_DMOD(100);
-			break;
+			{
+				int16 sh_w = 0;
+				if (sd && sd->equip_index[EQI_HAND_L] >= 0) {
+					int16 idx = sd->equip_index[EQI_HAND_L];
+					if (sd->inventory_data[idx] && sd->inventory_data[idx]->type == IT_ARMOR)
+						sh_w = sd->inventory_data[idx]->weight/10;
+				}
+				skillratio += -100 + (skill_lv+1) * max(sh_w,1);
+				RE_LVL_DMOD(100);
+				break;
+			}
 		case LG_HESPERUSLIT:
-			skillratio += 120 * skill_lv - 100;
+			skillratio = 120 * skill_lv;
+			if( sc && sc->data[SC_BANDING] )
+				skillratio += 200 * sc->data[SC_BANDING]->val2;
+			if( sc && sc->data[SC_BANDING] && sc->data[SC_BANDING]->val2 > 5 )
+				skillratio = skillratio * 150 / 100;
+			if( sc && sc->data[SC_INSPIRATION] )
+				skillratio += 600;
+			RE_LVL_DMOD(100);
 			break;
 		case SR_DRAGONCOMBO:
 			skillratio += 40 * skill_lv;
@@ -3436,9 +3434,9 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			break;
 		case SR_SKYNETBLOW:
 			//ATK [{(Skill Level x 80) + (Caster AGI)} x Caster Base Level / 100] %
-			skillratio = 80 * skill_lv + sstatus->agi;
+			skillratio = 80 * skill_lv + status_get_agi(src);
 			if( sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == SR_DRAGONCOMBO )//ATK [{(Skill Level x 100) + (Caster AGI) + 150} x Caster Base Level / 100] %
-				skillratio = 100 * skill_lv + sstatus->agi + 150;
+				skillratio = 100 * skill_lv + status_get_agi(src) + 150;
 			RE_LVL_DMOD(100);
 			break;
 		case SR_EARTHSHAKER:
@@ -3446,11 +3444,11 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 				tsc->data[SC_CHASEWALK] || tsc->data[SC_CLOAKINGEXCEED] || tsc->data[SC__INVISIBILITY]) ){
 				skillratio = 150 * skill_lv;
 				RE_LVL_DMOD(100);
-				skillratio += sstatus->int_ * 3;
+				skillratio += status_get_int(src) * 3;
 			}else{ //[(Skill Level x 50) x (Caster Base Level / 100) + (Caster INT x 2)] %
-				skillratio += 50 * (skill_lv-2);
+				skillratio = 50 * skill_lv;
 				RE_LVL_DMOD(100);
-				skillratio += sstatus->int_ * 2;
+				skillratio += status_get_int(src) * 2;
 			}
 			break;
 		case SR_FALLENEMPIRE:// ATK [(Skill Level x 150 + 100) x Caster Base Level / 150] %
@@ -3459,8 +3457,8 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
  			break;
 		case SR_TIGERCANNON:// ATK [((Caster consumed HP + SP) / 4) x Caster Base Level / 100] %
 			{
-				int hp = (int64)sstatus->max_hp * (10 + 2 * skill_lv) / 100,
-					sp = (int64)sstatus->max_sp * (6 + skill_lv) / 100;
+				int hp = (int64)status_get_max_hp(src) * (10 + 2 * skill_lv) / 100,
+					sp = (int64)status_get_max_sp(src) * (6 + skill_lv) / 100;
 				skillratio = ((int64)hp+sp) / 4;
 				if( sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == SR_FALLENEMPIRE ) // ATK [((Caster consumed HP + SP) / 2) x Caster Base Level / 100] %
 					skillratio = (int64)hp+sp / 2;
@@ -3468,7 +3466,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			}
 			break;
 		case SR_RAMPAGEBLASTER:
-			skillratio += 20 * skill_lv * (sd?sd->spiritball_old:5) - 100;
+			skillratio = 20 * skill_lv * (sd?sd->spiritball_old:5);
 			if( sc && sc->data[SC_EXPLOSIONSPIRITS] ){
 				skillratio += sc->data[SC_EXPLOSIONSPIRITS]->val1 * 20;
 				RE_LVL_DMOD(120);
@@ -3477,74 +3475,75 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			break;
 		case SR_KNUCKLEARROW:
 			if( wd.miscflag&4 ){  // ATK [(Skill Level x 150) + (1000 x Target current weight / Maximum weight) + (Target Base Level x 5) x (Caster Base Level / 150)] %
-				skillratio = 150 * skill_lv + status_get_lv(target) * 5 * (status_get_lv(src) / 100) ;
+				skillratio = 150 * skill_lv + status_get_lv(target) * 5;
 				if( tsd && tsd->weight )
 					skillratio += 100 * (tsd->weight / tsd->max_weight);
-			}else // ATK [(Skill Level x 100 + 500) x Caster Base Level / 100] %
+				RE_LVL_DMOD(150);
+			} else { // ATK [(Skill Level x 100 + 500) x Caster Base Level / 100] %
 				skillratio += 400 + (100 * skill_lv);
-			RE_LVL_DMOD(100);
+				RE_LVL_DMOD(100);
+			}
 			break;
 		case SR_WINDMILL: // ATK [(Caster Base Level + Caster DEX) x Caster Base Level / 100] %
-			skillratio = status_get_lv(src) + sstatus->dex;
+			skillratio = status_get_lv(src) + status_get_dex(src);
 			RE_LVL_DMOD(100);
 			break;
 		case SR_GATEOFHELL:
 			if( sc && sc->data[SC_COMBO]
 				&& sc->data[SC_COMBO]->val1 == SR_FALLENEMPIRE )
-				skillratio += 800 * skill_lv -100;
+				skillratio += 700 * skill_lv;
 			else
-				skillratio += 500 * skill_lv -100;
+				skillratio += 400 * skill_lv;
 			RE_LVL_DMOD(100);
 			break;
 		case SR_GENTLETOUCH_QUIET:
-			skillratio += 100 * skill_lv - 100 + sstatus->dex;
+			skillratio = 100 * skill_lv + status_get_dex(src);
 			RE_LVL_DMOD(100);
 			break;
 		case SR_HOWLINGOFLION:
-			skillratio += 300 * skill_lv - 100;
+			skillratio += 200 * skill_lv;
 			RE_LVL_DMOD(150);
 			break;
 		case SR_RIDEINLIGHTNING: // ATK [{(Skill Level x 200) + Additional Damage} x Caster Base Level / 100] %
 			if( (sstatus->rhw.ele) == ELE_WIND || (sstatus->lhw.ele) == ELE_WIND )
-				skillratio += skill_lv * 50;
-			skillratio += -100 + 200 * skill_lv;
+				skillratio = skill_lv * 50;
+			skillratio = 200 * skill_lv;
 			RE_LVL_DMOD(100);
 			break;
 		case WM_REVERBERATION_MELEE:
 			// ATK [{(Skill Level x 100) + 300} x Caster Base Level / 100]
-			skillratio += 200 + 100 * pc_checkskill(sd, WM_REVERBERATION);
+			skillratio += 200 + 100 * ((sd) ? pc_checkskill(sd, WM_REVERBERATION) : skill_get_max(WM_REVERBERATION));
 			RE_LVL_DMOD(100);
 			break;
 		case WM_SEVERE_RAINSTORM_MELEE:
 			//ATK [{(Caster DEX + AGI) x (Skill Level / 5)} x Caster Base Level / 100] %
-			skillratio = (sstatus->dex + sstatus->agi) * (skill_lv * 2);
+			skillratio = (status_get_dex(src) + status_get_agi(src)) * (skill_lv / 5);
 			RE_LVL_DMOD(100);
-			skillratio /= 10;
 			break;
 		case WM_GREAT_ECHO:
-			skillratio += 800 + 100 * skill_lv;
-			if( sd ) {	// Still need official value [pakpil]
+			skillratio += 300 + 200 * skill_lv;
+			if( sd ) {
 				uint16 lv = skill_lv;
 				skillratio += 100 * skill_check_pc_partner(sd,skill_id,&lv,skill_get_splash(skill_id,skill_lv),0);
 			}
 			break;
 		case WM_SOUND_OF_DESTRUCTION:
-			skillratio += 400;
+			skillratio = (1000 * skill_lv) + (((sd) ? pc_checkskill(sd, WM_LESSON) : skill_get_max(WM_LESSON)) * status_get_int(src));
 			break;
 		case GN_CART_TORNADO: { // ATK [( Skill Level x 50 ) + ( Cart Weight / ( 150 - Caster Base STR ))] + ( Cart Remodeling Skill Level x 50 )] %
-			int str = status_get_base_status(src)->str; //only using base str
-			skillratio += -100 + 50 * skill_lv;
+			skillratio = 50 * skill_lv;
 			if( sd && sd->cart_weight)
-				skillratio += sd->cart_weight/10 / (150-str) + pc_checkskill(sd, GN_REMODELING_CART) * 50;
+				skillratio += sd->cart_weight/10 / max((150-status_get_base_status(src)->str),1) + pc_checkskill(sd, GN_REMODELING_CART) * 50;
 			}
 			break;
 		case GN_CARTCANNON:
 			// ATK [{( Cart Remodeling Skill Level x 50 ) x ( INT / 40 )} + ( Cart Cannon Skill Level x 60 )] %
 			skillratio = 60 * skill_lv;
-			if( sd ) skillratio += pc_checkskill(sd, GN_REMODELING_CART) * 50 * (sstatus->int_ / 40);
+			if( sd ) skillratio += (pc_checkskill(sd, GN_REMODELING_CART) * 50) * (status_get_int(src) / 40);
 			break;
 		case GN_SPORE_EXPLOSION:
-			skillratio += 200 + 100 * skill_lv;
+			skillratio = (100 * skill_lv) + (200 + status_get_int(src));
+			RE_LVL_DMOD(100);
 			break;
 		case GN_CRAZYWEED_ATK:
 			skillratio += 400 + 100 * skill_lv;
@@ -3552,24 +3551,32 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 		case GN_SLINGITEM_RANGEMELEEATK:
 			if( sd ) {
 				switch( sd->itemid ) {
-					case 13260: // Apple Bomob
-					case 13261: // Coconut Bomb
-					case 13262: // Melon Bomb
-					case 13263: // Pinapple Bomb
-						skillratio += 400;	// Unconfirded
+					case ITEMID_APPLE_BOMB:
+						skillratio = status_get_str(src) + status_get_dex(src) + 300;
 						break;
-					case 13264: // Banana Bomb 2000%
-						skillratio += 1900;
+					case ITEMID_MELON_BOMB:
+						skillratio = status_get_str(src) + status_get_dex(src) + 500;
+					case ITEMID_COCONUT_BOMB:
+					case ITEMID_PINEAPPLE_BOMB:
+					case ITEMID_BANANA_BOMB:
+						skillratio = status_get_str(src) + status_get_dex(src) + 800;
 						break;
-					case 13265: skillratio -= 75; break; // Black Lump 25%
-					case 13266: skillratio -= 25; break; // Hard Black Lump 75%
-					case 13267: skillratio += 100; break; // Extremely Hard Black Lump 200%
+					case ITEMID_BLACK_LUMP:
+						skillratio = (status_get_str(src) + status_get_agi(src) + status_get_dex(src)) / 3;
+					break;
+					case ITEMID_BLACK_HARD_LUMP:
+						skillratio = (status_get_str(src) + status_get_agi(src) + status_get_dex(src)) / 2;
+					break;
+					case ITEMID_VERY_HARD_LUMP:
+						skillratio = status_get_str(src) + status_get_agi(src) + status_get_dex(src);
+					break;
 				}
 			} else
 				skillratio += 300;	// Bombs
 			break;
 		case SO_VARETYR_SPEAR://ATK [{( Striking Level x 50 ) + ( Varetyr Spear Skill Level x 50 )} x Caster Base Level / 100 ] %
-			skillratio =  50 * skill_lv + ( sd ? pc_checkskill(sd, SO_STRIKING) * 50 : 0 );
+			skillratio = 50 * skill_lv + ((sd) ? pc_checkskill(sd, SO_STRIKING) * 50 : skill_get_max(SO_STRIKING));
+			RE_LVL_DMOD(100);
 			if( sc && sc->data[SC_BLAST_OPTION] )
 				skillratio += sd ? sd->status.job_level * 5 : 0;
 			break;
@@ -3713,7 +3720,17 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
 	struct status_change *tsc = status_get_sc(target);
 	struct status_data *sstatus = status_get_status_data(src);
 	struct status_data *tstatus = status_get_status_data(target);
-	int atk = 0;
+	int atk = 0, chorusbonus = 0;
+
+	// Minstrel/Wanderer number check for chorus skills.
+	// Bonus remains 0 unless 3 or more Minstrels/Wanderers are in the party.
+	if( sd && sd->status.party_id ) {
+		chorusbonus = party_foreachsamemap(party_sub_count_class, sd, MAPID_THIRDMASK, MAPID_MINSTRELWANDERER);
+		if( chorusbonus > 7 )
+			chorusbonus = 5; // Maximum effect possible from 7 or more Minstrels/Wanderers
+		else if( chorusbonus > 2 )
+			chorusbonus = chorusbonus - 2; // Effect bonus from additional Minstrels/Wanderers if not above the max possible.
+	}
 
 	//Constant/misc additions from skills
 	switch (skill_id) {
@@ -3750,13 +3767,15 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
 		case RA_WUGBITE:
 			if(sd)
 				atk = (30*pc_checkskill(sd, RA_TOOTHOFWUG));
+			if( sc && sc->data[SC_DANCEWITHWUG] )
+				atk += skill_lv * 10 * chorusbonus; // Dance With Wug Bonus. ATK = [(Skill Level x 10) x Number of Maestro/Wanderer in party(Maximum of 7)] %
 			break;
 		case SR_GATEOFHELL:
-			atk = (sstatus->max_hp - status_get_hp(src));
+			atk = (status_get_max_hp(src) - status_get_hp(src));
 			if(sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == SR_FALLENEMPIRE) {
-				atk +=  ( ((int64)sstatus->max_sp * (1 + skill_lv * 2 / 10)) + 40 * status_get_lv(src) );
+				atk +=  ( ((int64)status_get_max_sp(src) * (1 + skill_lv * 2 / 10)) + 40 * status_get_lv(src) );
 			} else {
-				atk +=  ( ((int64)sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src) );
+				atk +=  ( ((int64)status_get_sp(src) * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src) );
 			}
 			break;
 		case SR_TIGERCANNON: // (Tiger Cannon skill level x 240) + (Target Base Level x 40)
@@ -3766,11 +3785,11 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
 					atk = ( skill_lv * 500 + status_get_lv(target) * 40 );
 			break;
 		case SR_FALLENEMPIRE:// [(Target Size value + Skill Level - 1) x Caster STR] + [(Target current weight x Caster DEX / 120)]
-			atk = ( ((tstatus->size+1)*2 + skill_lv - 1) * sstatus->str);
+			atk = ( ((tstatus->size+1)*2 + skill_lv - 1) * status_get_str(src));
 			if( tsd && tsd->weight ){
-				atk = ( (tsd->weight/10) * sstatus->dex / 120 );
+				atk += ( (tsd->weight/10) * status_get_dex(src) / 120 );
 			}else{
-				atk = ( status_get_lv(target) * 50 ); //mobs
+				atk += ( status_get_lv(target) * 50 ); //mobs
 			}
 			break;
 		case KO_SETSUDAN:
@@ -3922,7 +3941,6 @@ struct Damage battle_calc_defense_reduction(struct Damage wd, struct block_list
 	struct status_change *tsc = status_get_sc(target);
 	struct status_data *sstatus = status_get_status_data(src);
 	struct status_data *tstatus = status_get_status_data(target);
-	int i;
 
 	//Defense reduction
 	short vit_def;
@@ -3932,11 +3950,9 @@ struct Damage battle_calc_defense_reduction(struct Damage wd, struct block_list
 	if( tsc && tsc->data[SC_ASSUMPTIO] )
 		def1 <<= 1; // only eDEF is doubled
 #endif
-	if( sd )
-	{
-		i = sd->ignore_def_by_race[tstatus->race] + sd->ignore_def_by_race[RC_ALL];
-		if( i )
-		{
+	if( sd ) {
+		int i = sd->ignore_def_by_race[tstatus->race] + sd->ignore_def_by_race[RC_ALL];
+		if( i ) {
 			if( i > 100 ) i = 100;
 			def1 -= def1 * i / 100;
 			def2 -= def2 * i / 100;
@@ -4116,7 +4132,7 @@ struct Damage battle_calc_attack_post_defense(struct Damage wd, struct block_lis
 
 		case NC_AXETORNADO:
 			if( (sstatus->rhw.ele) == ELE_WIND || (sstatus->lhw.ele) == ELE_WIND )
-				ATK_ADDRATE(wd.damage, wd.damage2, 50);
+				ATK_ADDRATE(wd.damage, wd.damage2, 25);
 			break;
 	}
 
@@ -4380,6 +4396,7 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
 {
 	struct status_data *sstatus = status_get_status_data(src);
 	struct status_data *tstatus = status_get_status_data(target);
+	struct status_change *sc = status_get_sc(src);
 	struct map_session_data *sd = BL_CAST(BL_PC, src);
 	struct Damage wd;
 
@@ -4449,6 +4466,13 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
 			case LK_SPIRALPIERCE:
 				if (!sd) wd.flag=(wd.flag&~(BF_RANGEMASK|BF_WEAPONMASK))|BF_LONG|BF_MISC;
 				break;
+
+			// The number of hits is set to 3 by default for use in Inspiration status.
+			// When in Banding, the number of hits is equal to the number of Royal Guards in Banding.
+			case LG_HESPERUSLIT:
+				if( sc && sc->data[SC_BANDING] && sc->data[SC_BANDING]->val2 > 3 )
+					wd.div_ = sc->data[SC_BANDING]->val2;
+				break;
 		}
 	} else {
 		wd.flag |= is_skill_using_arrow(src, skill_id)?BF_LONG:BF_SHORT;
@@ -4509,14 +4533,6 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
 					if (ssc && ssc->data[SC_DEVOTION] && (d_bl = map_id2bl(ssc->data[SC_DEVOTION]->val1)))
 						isDevotRdamage = true;
 				}
-				//if(tsc->data[SC__SHADOWFORM]) {
-				//	struct block_list *s_bl = map_id2bl(tsc->data[SC__SHADOWFORM]->val2);
-				//	if(s_bl)
-				//		status_damage(src, s_bl, rdamage, 0, clif_damage(src, s_bl, gettick(), 500, 500, rdamage, -1, 0, 0), 0);
-				//	wd->damage = wd->damage2 = 0;
-				//	wd->dmg_lv = ATK_BLOCK;
-				//}
-
 				if(attack_type == BF_WEAPON && tsc->data[SC_REFLECTDAMAGE] ) // Don't reflect your own damage (Grand Cross)
 					map_foreachinshootrange(battle_damage_area,target,skill_get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd->amotion,sstatus->dmotion,rdamage,tstatus->race);
 				else if(attack_type == BF_WEAPON || attack_type == BF_MISC) {
@@ -4971,7 +4987,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					case MG_COLDBOLT:
 					case MG_LIGHTNINGBOLT:
 						if ( sc && sc->data[SC_SPELLFIST] && mflag&BF_SHORT )  {
-							skillratio += (sc->data[SC_SPELLFIST]->val4 * 100) + (sc->data[SC_SPELLFIST]->val2 * 100) - 100;// val4 = used bolt level, val2 = used spellfist level. [Rytech]
+							skillratio += (sc->data[SC_SPELLFIST]->val4 * 100) + (sc->data[SC_SPELLFIST]->val2 * 50) - 100;// val4 = used bolt level, val2 = used spellfist level. [Rytech]
 							ad.div_ = 1;// ad mods, to make it work similar to regular hits [Xazax]
 							ad.flag = BF_WEAPON|BF_SHORT;
 							ad.type = 0;
@@ -5091,7 +5107,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					 * Warlock
 					 **/
 					case WL_SOULEXPANSION:
-						skillratio += 300 + 100 * skill_lv + sstatus->int_;
+						skillratio += 300 + 100 * skill_lv + status_get_int(src);
 						RE_LVL_DMOD(100);
 						break;
 					case WL_FROSTMISTY:
@@ -5108,7 +5124,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						}
 						break;
 					case WL_DRAINLIFE:
-						skillratio = 200 * skill_lv + sstatus->int_;
+						skillratio = 200 * skill_lv + status_get_int(src);
 						RE_LVL_DMOD(100);
 						break;
 					case WL_CRIMSONROCK:
@@ -5152,8 +5168,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						}
 					break;
 					case WL_CHAINLIGHTNING_ATK:
-						skillratio += 100 + 300 * skill_lv;
+						skillratio += 400 + 100 * skill_lv;
 						RE_LVL_DMOD(100);
+						if (mflag > 0)
+							skillratio += 100 * mflag;
 						break;
 					case WL_EARTHSTRAIN:
 						skillratio += 1900 + 100 * skill_lv;
@@ -5188,51 +5206,46 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 							skillratio += 1900;	//2000%
 						break;
 					case WM_METALICSOUND:
-						skillratio += 120 * skill_lv + 60 * ( sd? pc_checkskill(sd, WM_LESSON) : 10 ) - 100;
-						break;
-					/*case WM_SEVERE_RAINSTORM:
-						skillratio += 50 * skill_lv;
+						skillratio = 120 * skill_lv + 60 * ((sd) ? pc_checkskill(sd, WM_LESSON) : skill_get_max(WM_LESSON));
+						RE_LVL_DMOD(100);
 						break;
-
-						WM_SEVERE_RAINSTORM just set a unit place,
-						refer to WM_SEVERE_RAINSTORM_MELEE to set the formula.
-					*/
 					case WM_REVERBERATION_MAGIC:
 						// MATK [{(Skill Level x 100) + 100} x Casters Base Level / 100] %
-						skillratio += 100 * (sd ? pc_checkskill(sd, WM_REVERBERATION) : 1);
+						skillratio += 100 * ((sd) ? pc_checkskill(sd, WM_REVERBERATION) : skill_get_max(WM_REVERBERATION));
 						RE_LVL_DMOD(100);
 						break;
 					case SO_FIREWALK:
-						skillratio = 300;
+						skillratio = 60 * skill_lv;
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_HEATER_OPTION] )
 							skillratio += sc->data[SC_HEATER_OPTION]->val3;
 						break;
 					case SO_ELECTRICWALK:
-						skillratio = 300;
+						skillratio = 60 * skill_lv;
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_BLAST_OPTION] )
 							skillratio += sd ? sd->status.job_level / 2 : 0;
 						break;
 					case SO_EARTHGRAVE:
-						skillratio = ( 200 * ( sd ? pc_checkskill(sd, SA_SEISMICWEAPON) : 10 ) + sstatus->int_ * skill_lv );
+						skillratio = ( 200 * ((sd) ? pc_checkskill(sd, SA_SEISMICWEAPON) : skill_get_max(SA_SEISMICWEAPON)) + sstatus->int_ * skill_lv );
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
 							skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
 						break;
 					case SO_DIAMONDDUST:
-						skillratio = ( 200 * ( sd ? pc_checkskill(sd, SA_FROSTWEAPON) : 10 ) + sstatus->int_ * skill_lv );
+						skillratio = ( 200 * ((sd) ? pc_checkskill(sd, SA_FROSTWEAPON) : skill_get_max(SA_FROSTWEAPON)) + sstatus->int_ * skill_lv );
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_COOLER_OPTION] )
 							skillratio += sc->data[SC_COOLER_OPTION]->val3;
 						break;
 					case SO_POISON_BUSTER:
-						skillratio += 1100 + 300 * skill_lv;
+						skillratio += 900 + 300 * skill_lv;
+						RE_LVL_DMOD(120);
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
 							skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
 						break;
 					case SO_PSYCHIC_WAVE:
-						skillratio += -100 + skill_lv * 70 + (sstatus->int_ * 3);
+						skillratio = skill_lv * 70 + (sstatus->int_ * 3);
 						RE_LVL_DMOD(100);
 						if( sc ){
 							if( sc->data[SC_HEATER_OPTION] )
@@ -5246,26 +5259,22 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						}
 						break;
 					case SO_VARETYR_SPEAR: //MATK [{( Endow Tornado skill level x 50 ) + ( Caster INT x Varetyr Spear Skill level )} x Caster Base Level / 100 ] %
-						skillratio = status_get_int(src) * skill_lv + ( sd ? pc_checkskill(sd, SA_LIGHTNINGLOADER) * 50 : 0 );
+						skillratio = status_get_int(src) * skill_lv + ((sd) ? pc_checkskill(sd, SA_LIGHTNINGLOADER) * 50 : skill_get_max(SA_LIGHTNINGLOADER));
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_BLAST_OPTION] )
 							skillratio += sd ? sd->status.job_level * 5 : 0;
 						break;
 					case SO_CLOUD_KILL:
-						skillratio += -100 + skill_lv * 40;
+						skillratio = skill_lv * 40;
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
 							skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
 						break;
 					case GN_DEMONIC_FIRE:
-						if( skill_lv > 20)
-						{	// Fire expansion Lv.2
+						if( skill_lv > 20)	// Fire expansion Lv.2
 							skillratio += 110 + 20 * (skill_lv - 20) + status_get_int(src) * 3;	// Need official INT bonus. [LimitLine]
-						}
-						else if( skill_lv > 10 )
-						{	// Fire expansion Lv.1
+						else if( skill_lv > 10 )	// Fire expansion Lv.1
 							skillratio += 110 + 20 * (skill_lv - 10) / 2;
-						}
 						else
 							skillratio += 110 + 20 * skill_lv;
 						break;
@@ -5467,7 +5476,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
  */
 struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv,int mflag)
 {
-	int skill;
 #ifdef ADJUST_SKILL_DAMAGE
 	int skill_damage;
 #endif
@@ -5525,7 +5533,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 	case HT_CLAYMORETRAP:
 		md.damage = skill_lv * sstatus->dex * (3+status_get_lv(src)/100) * (1+sstatus->int_/35);
 		md.damage += md.damage * (rnd()%20-10) / 100;
-		md.damage += 40 * (sd?pc_checkskill(sd,RA_RESEARCHTRAP):0);
+		md.damage += 40 * ((sd) ? pc_checkskill(sd,RA_RESEARCHTRAP) : skill_get_max(RA_RESEARCHTRAP));
 		break;
 #else
 	case HT_LANDMINE:
@@ -5541,6 +5549,8 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 #endif
 	case HT_BLITZBEAT:
 	case SN_FALCONASSAULT:
+	{
+		uint8 skill;
 		//Blitz-beat Damage.
 		if(!sd || (skill = pc_checkskill(sd,HT_STEELCROW)) <= 0)
 			skill=0;
@@ -5550,12 +5560,12 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 
 		if (skill_id == SN_FALCONASSAULT) {
 			//Div fix of Blitzbeat
-			md.div_ = skill_get_num(HT_BLITZBEAT, 5);
-			damage_div_fix(md.damage, md.div_);
+			damage_div_fix2(md.damage, skill_get_num(HT_BLITZBEAT, 5));
 
 			//Falcon Assault Modifier
 			md.damage=(int64)md.damage*(150+70*skill_lv)/100;
 		}
+	}
 		break;
 	case TF_THROWSTONE:
 		md.damage=50;
@@ -5692,7 +5702,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 	case RA_CLUSTERBOMB:
 	case RA_FIRINGTRAP:
  	case RA_ICEBOUNDTRAP:
-		md.damage = skill_lv * sstatus->dex + sstatus->int_ * 5 ;
+		md.damage = skill_lv * status_get_dex(src) + status_get_int(src) * 5 ;
 		RE_LVL_TMDMOD();
 		if(sd)
 		{
@@ -5707,18 +5717,18 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 		break;
 	case NC_SELFDESTRUCTION:
 		{
-			short totaldef = tstatus->def2 + (short)status_get_def(target);
-			md.damage = ( (sd?pc_checkskill(sd,NC_MAINFRAME):10) + 8 ) * ( skill_lv + 1 ) * ( status_get_sp(src) + sstatus->vit );
+			short totaldef = status_get_def2(target) + (short)status_get_def(target);
+			md.damage = ( ((sd) ? pc_checkskill(sd,NC_MAINFRAME) : skill_get_max(NC_MAINFRAME)) + 8 ) * ( skill_lv + 1 ) * ( status_get_sp(src) + status_get_vit(src) );
 			RE_LVL_MDMOD(100);
 			md.damage += status_get_hp(src) - totaldef;
 		}
 		break;
 	case GN_THORNS_TRAP:
-		md.damage = 100 + 200 * skill_lv + sstatus->int_;
+		md.damage = 100 + 200 * skill_lv + status_get_int(src);
 		break;
 	case GN_HELLS_PLANT_ATK:
 		//[{( Hell Plant Skill Level x Casters Base Level ) x 10 } + {( Casters INT x 7 ) / 2 } x { 18 + ( Casters Job Level / 4 )] x ( 5 / ( 10 - Summon Flora Skill Level ))
-		md.damage = ( skill_lv * status_get_lv(src) * 10 ) + ( sstatus->int_ * 7 / 2 ) * ( 18 + (sd?sd->status.job_level:0) / 4 ) * ( 5 / (10 - (sd?pc_checkskill(sd,AM_CANNIBALIZE):0)) );
+		md.damage = ( skill_lv * status_get_lv(src) * 10 ) + ( status_get_int(src) * 7 / 2 ) * ( 18 + (sd?sd->status.job_level:0) / 4 ) * ( 5 / (10 - ((sd) ? pc_checkskill(sd,AM_CANNIBALIZE) : skill_get_max(AM_CANNIBALIZE))) );
 		break;
 	case KO_HAPPOKUNAI:
 		{
@@ -6310,7 +6320,13 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 	}
 	map_freeblock_lock();
 
-	battle_delay_damage(tick, wd.amotion, src, target, wd.flag, 0, 0, damage, wd.dmg_lv, wd.dmotion, true);
+	if( skill_check_shadowform(target, damage, wd.div_) ) {
+		if( !status_isdead(target) )
+			skill_additional_effect(src, target, 0, 0, wd.flag, wd.dmg_lv, tick);
+		if( wd.dmg_lv > ATK_BLOCK )
+			skill_counter_additional_effect(src, target, 0, 0, wd.flag, tick);
+	} else
+		battle_delay_damage(tick, wd.amotion, src, target, wd.flag, 0, 0, damage, wd.dmg_lv, wd.dmotion, true);
 	if( tsc ) {
 		if( tsc->data[SC_DEVOTION] ) {
 			struct status_change_entry *sce = tsc->data[SC_DEVOTION];

+ 7 - 10
src/map/channel.c

@@ -117,14 +117,13 @@ int channel_delete(struct Channel *channel) {
  * -3 : sd banned
  */
 int channel_join(struct Channel *channel, struct map_session_data *sd) {
-	char output[128];
-
 	if(!channel || !sd)
 		return -1;
 	if(channel_haspc(channel,sd)==1)
 		return -2;
 
 	if(channel_haspcbanned(channel,sd)==1){
+		char output[128];
 		sprintf(output, msg_txt(sd,1438),channel->name); //You're currently banned from the '%s' channel.
 		clif_displaymessage(sd->fd, output);
 		return -3;
@@ -211,10 +210,8 @@ int channel_ajoin(struct guild *g){
 int channel_gjoin(struct map_session_data *sd, int flag){
 	struct Channel *channel;
 	struct guild *g;
-	int i;
 
 	if(!sd) return -1;
-
 	g = sd->guild;
 	if(!g) return -2;
 
@@ -228,6 +225,7 @@ int channel_gjoin(struct map_session_data *sd, int flag){
 		channel_join(channel,sd);	//join our guild chat
 	}
 	if(flag&2){
+		int i;
 		for (i = 0; i < MAX_GUILDALLIANCE; i++){
 			struct guild *ag; //allied guld
 			struct guild_alliance *ga = &g->alliance[i]; //guild alliance
@@ -305,8 +303,8 @@ int channel_pcquit(struct map_session_data *sd, int type){
 			channel_clean(g->channel,sd,0); //leave guild chan
 		}
 		if(type&2){
-			struct guild *ag; //allied guild
 			for (i = 0; i < MAX_GUILDALLIANCE; i++) { //leave all alliance chan
+				struct guild *ag; //allied guild
 				if( g->alliance[i].guild_id && (ag = guild_search(g->alliance[i].guild_id) ) ) {
 					if(channel_haspc(ag->channel,sd) == 1)
 						channel_clean(ag->channel,sd,0);
@@ -538,7 +536,6 @@ int channel_display_list(struct map_session_data *sd, char *options){
  *  -1 : fail
  */
 int channel_pccreate(struct map_session_data *sd, char *chname, char *chpass){
-	struct Channel *channel;
 	char output[128];
 	int8 res;
 
@@ -547,7 +544,7 @@ int channel_pccreate(struct map_session_data *sd, char *chname, char *chpass){
 
 	res = channel_chk(chname,chpass,7);
 	if(res==0){ //success
-		channel = channel_create(chname + 1,chpass,0,CHAN_TYPE_PRIVATE,sd->status.char_id);
+		struct Channel *channel = channel_create(chname + 1,chpass,0,CHAN_TYPE_PRIVATE,sd->status.char_id);
 		channel_join(channel,sd);
 		if( !( channel->opt & CHAN_OPT_ANNOUNCE_JOIN ) ) {
 			sprintf(output, msg_txt(sd,1403),chname); // You're now in the '%s' channel.
@@ -931,7 +928,7 @@ int channel_pcsetopt(struct map_session_data *sd, char *chname, const char *opti
 		return -1;
 	}
 
-	if(!option || option == '\0' ) {
+	if(!option || option[0] == '\0' ) {
 		clif_displaymessage(sd->fd, msg_txt(sd,1446));// You need to input an option.
 		return -1;
 	}
@@ -1152,8 +1149,7 @@ int do_init_channel(void) {
 void do_final_channel(void) {
 	DBIterator *iter;
 	struct Channel *channel;
-	int i=0;
-
+	
 	//delete all in remaining chan db
 	iter = db_iterator(channel_db);
 	for( channel = dbi_first(iter); dbi_exists(iter); channel = dbi_next(iter) ) {
@@ -1165,6 +1161,7 @@ void do_final_channel(void) {
 
 	//delete all color thing
 	if( Channel_Config.colors_count ) {
+		int i=0;
 		for(i = 0; i < Channel_Config.colors_count; i++) {
 			aFree(Channel_Config.colors_name[i]);
 		}

+ 13 - 11
src/map/chrif.c

@@ -353,6 +353,11 @@ int chrif_save(struct map_session_data *sd, int flag) {
 }
 
 // connects to char-server (plaintext)
+/**
+ * Map-serv request to login into char-serv
+ * @param fd : char-serv fd to log into
+ * @return 0:request sent
+ */
 int chrif_connect(int fd) {
 	ShowStatus("Logging in to char server...\n", char_fd);
 	WFIFOHEAD(fd,60);
@@ -482,7 +487,7 @@ int chrif_connectack(int fd) {
 	static bool char_init_done = false;
 
 	if (RFIFOB(fd,2)) {
-		ShowFatalError("Connection to char-server failed %d.\n", RFIFOB(fd,2));
+		ShowFatalError("Connection to char-server failed %d, please check conf/import/map_conf userid and passwd.\n", RFIFOB(fd,2));
 		exit(EXIT_FAILURE);
 	}
 
@@ -727,9 +732,9 @@ void chrif_authfail(int fd) {/* HELLO WORLD. ip in RFIFOL 15 is not being used (
  */
 int auth_db_cleanup_sub(DBKey key, DBData *data, va_list ap) {
 	struct auth_node *node = db_data2ptr(data);
-	const char* states[] = { "Login", "Logout", "Map change" };
-
+	
 	if(DIFF_TICK(gettick(),node->node_created)>60000) {
+		const char* states[] = { "Login", "Logout", "Map change" };
 		switch (node->state) {
 			case ST_LOGOUT:
 				//Re-save attempt (->sd should never be null here).
@@ -1335,7 +1340,6 @@ int chrif_load_scdata(int fd) {
 
 #ifdef ENABLE_SC_SAVING
 	struct map_session_data *sd;
-	struct status_change_data *data;
 	int aid, cid, i, count;
 
 	aid = RFIFOL(fd,4); //Player Account ID
@@ -1356,7 +1360,7 @@ int chrif_load_scdata(int fd) {
 	count = RFIFOW(fd,12); //sc_count
 
 	for (i = 0; i < count; i++) {
-		data = (struct status_change_data*)RFIFOP(fd,14 + i*sizeof(struct status_change_data));
+		struct status_change_data *data = (struct status_change_data*)RFIFOP(fd,14 + i*sizeof(struct status_change_data));
 		status_change_start(NULL,&sd->bl, (sc_type)data->type, 10000, data->val1, data->val2, data->val3, data->val4, data->tick, 1|2|4|8);
 	}
 #endif
@@ -1367,13 +1371,11 @@ int chrif_load_scdata(int fd) {
 
 int chrif_skillcooldown_load(int fd) {
 	struct map_session_data *sd;
-	struct skill_cooldown_data *data;
 	int aid, cid, i, count;
 
 	aid = RFIFOL(fd, 4);
 	cid = RFIFOL(fd, 8);
 
-
 	sd = map_id2sd(aid);
 	if (!sd) {
 		ShowError("chrif_skillcooldown_load: Player of AID %d not found!\n", aid);
@@ -1385,7 +1387,7 @@ int chrif_skillcooldown_load(int fd) {
 	}
 	count = RFIFOW(fd, 12); //sc_count
 	for (i = 0; i < count; i++) {
-		data = (struct skill_cooldown_data*) RFIFOP(fd, 14 + i * sizeof (struct skill_cooldown_data));
+		struct skill_cooldown_data *data = (struct skill_cooldown_data*) RFIFOP(fd, 14 + i * sizeof (struct skill_cooldown_data));
 		skill_blockpc_start(sd, data->skill_id, data->tick);
 	}
 	return 0;
@@ -1484,7 +1486,7 @@ void chrif_on_disconnect(void) {
 		ShowWarning("Connection to Char Server lost.\n\n");
 	chrif_connected = 0;
 
- 	other_mapserver_count = 0; //Reset counter. We receive ALL maps from all map-servers on reconnect.
+	other_mapserver_count = 0; //Reset counter. We receive ALL maps from all map-servers on reconnect.
 	map_eraseallipport();
 
 	//Attempt to reconnect in a second. [Skotlex]
@@ -1565,7 +1567,7 @@ void chrif_parse_ack_vipActive(int fd) {
  *
  *------------------------------------------*/
 int chrif_parse(int fd) {
-	int packet_len, cmd;
+	int packet_len;
 
 	// only process data from the char-server
 	if ( fd != char_fd ) {
@@ -1590,7 +1592,7 @@ int chrif_parse(int fd) {
 	}
 
 	while ( RFIFOREST(fd) >= 2 ) {
-		cmd = RFIFOW(fd,0);
+		int cmd = RFIFOW(fd,0);
 		if (cmd < 0x2af8 || cmd >= 0x2af8 + ARRAYLENGTH(packet_len_table) || packet_len_table[cmd-0x2af8] == 0) {
 			int r = intif_parse(fd); // Passed on to the intif
 

+ 39 - 25
src/map/clif.c

@@ -66,8 +66,16 @@ struct Clif_Config {
 struct s_packet_db packet_db[MAX_PACKET_VER + 1][MAX_PACKET_DB + 1];
 int packet_db_ack[MAX_PACKET_VER + 1][MAX_ACK_FUNC + 1];
 
-//Converts item type in case of pet eggs.
-static inline int itemtype(int type) {
+//Converts item type in case of pet eggs/shadow equip.
+static inline int itemtype(int item_id) {
+	struct item_data* id = itemdb_exists(item_id);
+	int type = id->type;
+	if( type == IT_SHADOWGEAR ) {
+		if( id->equip&EQP_SHADOW_WEAPON )
+			return IT_WEAPON;
+		else
+			return IT_ARMOR;
+	}
 	return ( type == IT_PETEGG ) ? IT_WEAPON : type;
 }
 
@@ -749,7 +757,7 @@ void clif_dropflooritem(struct flooritem_data* fitem)
 	WBUFL(buf, offset+2) = fitem->bl.id;
 	WBUFW(buf, offset+6) = ((view = itemdb_viewid(fitem->item_data.nameid)) > 0) ? view : fitem->item_data.nameid;
 #if PACKETVER >= 20130000
-	WBUFW(buf, offset+8) = itemtype(itemdb_type(fitem->item_data.nameid));
+	WBUFW(buf, offset+8) = itemtype(fitem->item_data.nameid);
 	offset +=2;
 #endif
 	WBUFB(buf, offset+8) = fitem->item_data.identify;
@@ -1415,7 +1423,7 @@ void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
 	WBUFW(buf,31)=(unsigned short) (hd->homunculus.intimacy / 100) ;
 	WBUFW(buf,33)=0; // equip id
 	WBUFW(buf,35)=cap_value(status->rhw.atk2+status->batk, 0, INT16_MAX);
-	WBUFW(buf,37)=cap_value(status->matk_max, 0, INT16_MAX);
+	WBUFW(buf,37)=min(status->matk_max, INT16_MAX); //FIXME capping to INT16 here is too late
 	WBUFW(buf,39)=status->hit;
 	if (battle_config.hom_setting&0x10)
 		WBUFW(buf,41)=status->luk/3 + 1;	//crit is a +1 decimal value! Just display purpose.[Vicious]
@@ -1801,7 +1809,7 @@ void clif_buylist(struct map_session_data *sd, struct npc_data *nd)
 			continue;
 		WFIFOL(fd, 4+c*11) = val;
 		WFIFOL(fd, 8+c*11) = (discount) ? pc_modifybuyvalue(sd,val) : val;
-		WFIFOB(fd,12+c*11) = itemtype(id->type);
+		WFIFOB(fd,12+c*11) = itemtype(id->nameid);
 		WFIFOW(fd,13+c*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid;
 		c++;
 	}
@@ -2258,7 +2266,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
 		WFIFOL(fd,offs+19)=pc_equippoint(sd,n);
 		offs += 2;
 #endif
-		WFIFOB(fd,offs+21)=itemtype(sd->inventory_data[n]->type);
+		WFIFOB(fd,offs+21)=itemtype(sd->inventory_data[n]->nameid);
 		WFIFOB(fd,offs+22)=fail;
 #if PACKETVER >= 20061218
 		WFIFOL(fd,offs+23)=sd->status.inventory[n].expire_time;
@@ -2325,7 +2333,7 @@ void clif_item_sub_v5(unsigned char *buf, int n, int idx, struct item *i, struct
 
 	WBUFW(buf,n)=idx; //index
 	WBUFW(buf,n+2)= (id->view_id > 0)?id->view_id:i->nameid;
-	WBUFB(buf,n+4)=itemtype(id->type);
+	WBUFB(buf,n+4)=itemtype(id->nameid);
 
 	if(!normal){ //equip 31B
 		WBUFL(buf,n+5)= equip; //location
@@ -2360,7 +2368,7 @@ void clif_item_sub(unsigned char *buf, int n, int idx, struct item *i, struct it
 #else
 	WBUFW(buf,n)=idx; //index
 	WBUFW(buf,n+2)=(id->view_id > 0)?id->view_id:i->nameid; //itid
-	WBUFB(buf,n+4)=itemtype(id->type);
+	WBUFB(buf,n+4)=itemtype(id->nameid);
 	WBUFB(buf,n+5)=i->identify;
 	if (equip >= 0) { //Equippable item 28.B
 		WBUFW(buf,n+6)=equip;
@@ -5928,9 +5936,15 @@ void clif_use_card(struct map_session_data *sd,int idx)
 		if( j == sd->inventory_data[i]->slot )	// No room
 			continue;
 
+		if( sd->status.inventory[i].equip > 0 )	// Do not check items that are already equipped
+			continue;
+
 		WFIFOW(fd,4+c*2)=i+2;
 		c++;
 	}
+
+	if( !c ) return;	// no item is available for card insertion
+
 	WFIFOW(fd,2)=4+c*2;
 	WFIFOSET(fd,WFIFOW(fd,2));
 }
@@ -6535,7 +6549,7 @@ void clif_vendinglist(struct map_session_data* sd, int id, struct s_vending* ven
 		WFIFOL(fd,offset+ 0+i*22) = vending[i].value;
 		WFIFOW(fd,offset+ 4+i*22) = vending[i].amount;
 		WFIFOW(fd,offset+ 6+i*22) = vending[i].index + 2;
-		WFIFOB(fd,offset+ 8+i*22) = itemtype(data->type);
+		WFIFOB(fd,offset+ 8+i*22) = itemtype(data->nameid);
 		WFIFOW(fd,offset+ 9+i*22) = ( data->view_id > 0 ) ? data->view_id : vsd->status.cart[index].nameid;
 		WFIFOB(fd,offset+11+i*22) = vsd->status.cart[index].identify;
 		WFIFOB(fd,offset+12+i*22) = vsd->status.cart[index].attribute;
@@ -6594,7 +6608,7 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven
 		WFIFOL(fd, 8+i*22) = vending[i].value;
 		WFIFOW(fd,12+i*22) = vending[i].index + 2;
 		WFIFOW(fd,14+i*22) = vending[i].amount;
-		WFIFOB(fd,16+i*22) = itemtype(data->type);
+		WFIFOB(fd,16+i*22) = itemtype(data->nameid);
 		WFIFOW(fd,17+i*22) = ( data->view_id > 0 ) ? data->view_id : sd->status.cart[index].nameid;
 		WFIFOB(fd,19+i*22) = sd->status.cart[index].identify;
 		WFIFOB(fd,20+i*22) = sd->status.cart[index].attribute;
@@ -8746,7 +8760,7 @@ void clif_charnameack (int fd, struct block_list *bl)
 				if( battle_config.show_mob_info&1 )
 					str_p += sprintf(str_p, "HP: %u/%u | ", md->status.hp, md->status.max_hp);
 				if( battle_config.show_mob_info&2 )
-					str_p += sprintf(str_p, "HP: %ui%% | ", get_percentage(md->status.hp, md->status.max_hp));
+					str_p += sprintf(str_p, "HP: %u%% | ", get_percentage(md->status.hp, md->status.max_hp));
 				//Even thought mobhp ain't a name, we send it as one so the client
 				//can parse it. [Skotlex]
 				if( str_p != mobhp )
@@ -13623,7 +13637,7 @@ void clif_blacksmith(struct map_session_data* sd)
 	WFIFOHEAD(fd,packet_len(0x219));
 	WFIFOW(fd,0) = 0x219;
 	//Packet size limits this list to 10 elements. [Skotlex]
-	for (i = 0; i < 10 && i < MAX_FAME_LIST; i++) {
+	for (i = 0; i < min(10,MAX_FAME_LIST); i++) { //client is capped to 10 char
 		if (smith_fame_list[i].id > 0) {
 			if (strcmp(smith_fame_list[i].name, "-") == 0 &&
 				(name = map_charid2nick(smith_fame_list[i].id)) != NULL)
@@ -13676,7 +13690,7 @@ void clif_alchemist(struct map_session_data* sd)
 	WFIFOHEAD(fd,packet_len(0x21a));
 	WFIFOW(fd,0) = 0x21a;
 	//Packet size limits this list to 10 elements. [Skotlex]
-	for (i = 0; i < 10 && i < MAX_FAME_LIST; i++) {
+	for (i = 0; i < min(10,MAX_FAME_LIST); i++) {
 		if (chemist_fame_list[i].id > 0) {
 			if (strcmp(chemist_fame_list[i].name, "-") == 0 &&
 				(name = map_charid2nick(chemist_fame_list[i].id)) != NULL)
@@ -13729,7 +13743,7 @@ void clif_taekwon(struct map_session_data* sd)
 	WFIFOHEAD(fd,packet_len(0x226));
 	WFIFOW(fd,0) = 0x226;
 	//Packet size limits this list to 10 elements. [Skotlex]
-	for (i = 0; i < 10 && i < MAX_FAME_LIST; i++) {
+	for (i = 0; i < min(10,MAX_FAME_LIST); i++) {
 		if (taekwon_fame_list[i].id > 0) {
 			if (strcmp(taekwon_fame_list[i].name, "-") == 0 &&
 				(name = map_charid2nick(taekwon_fame_list[i].id)) != NULL)
@@ -14894,7 +14908,7 @@ void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd)
 		struct item_data* id = itemdb_search(nd->u.shop.shop_item[i].nameid);
 		WFIFOL(fd,offset+0+i*11) = nd->u.shop.shop_item[i].value;
 		WFIFOL(fd,offset+4+i*11) = nd->u.shop.shop_item[i].value; // Discount Price
-		WFIFOB(fd,offset+8+i*11) = itemtype(id->type);
+		WFIFOB(fd,offset+8+i*11) = itemtype(id->nameid);
 		WFIFOW(fd,offset+9+i*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid;
 	}
 	WFIFOSET(fd,WFIFOW(fd,2));
@@ -15719,7 +15733,7 @@ void clif_instance_create(struct map_session_data *sd, const char *name, int num
 #if PACKETVER >= 20071128
 	unsigned char buf[65];
 
-	nullpo_retv(sd);
+	if(!sd) return;
 
 	WBUFW(buf,0) = 0x2cb;
 	safestrncpy( WBUFP(buf,2), name, 62 );
@@ -15738,7 +15752,7 @@ void clif_instance_changewait(struct map_session_data *sd, int num, int flag)
 #if PACKETVER >= 20071128
 	unsigned char buf[4];
 
-	nullpo_retv(sd);
+	if(!sd) return;
 
 	WBUFW(buf,0) = 0x2cc;
 	WBUFW(buf,2) = num;
@@ -15756,7 +15770,7 @@ void clif_instance_status(struct map_session_data *sd, const char *name, unsigne
 #if PACKETVER >= 20071128
 	unsigned char buf[71];
 
-	nullpo_retv(sd);
+	if(!sd) return; //party_getavailablesd can return NULL
 
 	WBUFW(buf,0) = 0x2cd;
 	safestrncpy( WBUFP(buf,2), name, 62 );
@@ -15776,7 +15790,7 @@ void clif_instance_changestatus(struct map_session_data *sd, int type, unsigned
 #if PACKETVER >= 20071128
 	unsigned char buf[10];
 
-	nullpo_retv(sd);
+	if(!sd) return;
 
 	WBUFW(buf,0) = 0x2ce;
 	WBUFL(buf,2) = type;
@@ -15807,7 +15821,7 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
 	WBUFB(buf,10) = item_data->refine;
 	clif_addcards(WBUFP(buf,11), item_data);
 	WBUFW(buf,19) = id->equip; // equip location
-	WBUFB(buf,21) = itemtype(id->type); // item type
+	WBUFB(buf,21) = itemtype(id->nameid); // item type
 	clif_send(buf, packet_len(0x2b8), &sd->bl, PARTY_SAMEMAP_WOS);
 #endif
 }
@@ -16058,7 +16072,7 @@ void clif_buyingstore_myitemlist(struct map_session_data* sd)
 	{
 		WFIFOL(fd,12+i*9) = sd->buyingstore.items[i].price;
 		WFIFOW(fd,16+i*9) = sd->buyingstore.items[i].amount;
-		WFIFOB(fd,18+i*9) = itemtype(itemdb_type(sd->buyingstore.items[i].nameid));
+		WFIFOB(fd,18+i*9) = itemtype(sd->buyingstore.items[i].nameid);
 		WFIFOW(fd,19+i*9) = sd->buyingstore.items[i].nameid;
 	}
 
@@ -16150,7 +16164,7 @@ void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_d
 	{
 		WFIFOL(fd,16+i*9) = pl_sd->buyingstore.items[i].price;
 		WFIFOW(fd,20+i*9) = pl_sd->buyingstore.items[i].amount;  // TODO: Figure out, if no longer needed items (amount == 0) are listed on official.
-		WFIFOB(fd,22+i*9) = itemtype(itemdb_type(pl_sd->buyingstore.items[i].nameid));
+		WFIFOB(fd,22+i*9) = itemtype(pl_sd->buyingstore.items[i].nameid);
 		WFIFOW(fd,23+i*9) = pl_sd->buyingstore.items[i].nameid;
 	}
 
@@ -16353,7 +16367,7 @@ void clif_search_store_info_ack(struct map_session_data* sd)
 		WFIFOL(fd,i*blocksize+11) = ssitem->account_id;
 		memcpy(WFIFOP(fd,i*blocksize+15), ssitem->store_name, MESSAGE_SIZE);
 		WFIFOW(fd,i*blocksize+15+MESSAGE_SIZE) = ssitem->nameid;
-		WFIFOB(fd,i*blocksize+17+MESSAGE_SIZE) = itemtype(itemdb_type(ssitem->nameid));
+		WFIFOB(fd,i*blocksize+17+MESSAGE_SIZE) = itemtype(ssitem->nameid);
 		WFIFOL(fd,i*blocksize+18+MESSAGE_SIZE) = ssitem->price;
 		WFIFOW(fd,i*blocksize+22+MESSAGE_SIZE) = ssitem->amount;
 		WFIFOB(fd,i*blocksize+24+MESSAGE_SIZE) = ssitem->refine;
@@ -16914,7 +16928,7 @@ void clif_sub_ranklist(unsigned char *buf,int idx,struct map_session_data* sd, i
 
 	if(!skip){
 		//Packet size limits this list to 10 elements. [Skotlex]
-		for (i = 0; i < 10 && i < MAX_FAME_LIST; i++) {
+		for (i = 0; i < min(10,MAX_FAME_LIST); i++) {
 			if (list[i].id > 0) {
 				if (strcmp(list[i].name, "-") == 0 &&
 					(name = map_charid2nick(list[i].id)) != NULL)
@@ -17854,7 +17868,7 @@ void packetdb_readdb(void)
 			ln++;
 			if(line[0]=='/' && line[1]=='/')
 				continue;
-			if (sscanf(line,"%256[^:]: %256[^\r\n]",w1,w2) == 2)
+			if (sscanf(line,"%255[^:]: %255[^\r\n]",w1,w2) == 2)
 			{
 				if(strcmpi(w1,"packet_ver")==0) {
 					int prev_ver = packet_ver;

+ 0 - 2
src/map/elemental.c

@@ -96,8 +96,6 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet
 	ele.mdef = sd->battle_status.mdef + sd->battle_status.int_ / (5-i);
 	//Caster's FLEE + (Caster's Base Level / (5 - Elemental Summon Skill Level)
 	ele.flee = sd->status.base_level / (5-i);
-	//Caster's HIT + (Caster's Base Level)
-	ele.hit = sd->battle_status.hit + sd->status.base_level;
 
 	//per individual bonuses
 	switch(db->class_){

+ 18 - 14
src/map/guild.c

@@ -840,10 +840,11 @@ void guild_retrieveitembound(int char_id,int aid,int guild_id) {
 	TBL_PC *sd = map_id2sd(aid);
 	if(sd){ //Character is online
 		int idxlist[MAX_INVENTORY];
-		int j,i;
+		int j;
 		j = pc_bound_chk(sd,2,idxlist);
 		if(j) {
 			struct guild_storage* stor = guild2storage(sd->status.guild_id);
+			int i;
 			for(i=0;i<j;i++) { //Loop the matching items, guild_storage_additem takes care of opening storage
 				if(stor)
 					guild_storage_additem(sd,stor,&sd->status.inventory[idxlist[i]],sd->status.inventory[idxlist[i]].amount);
@@ -854,9 +855,9 @@ void guild_retrieveitembound(int char_id,int aid,int guild_id) {
 	} else { //Character is offline, ask char server to do the job
 		struct guild_storage* stor = guild2storage2(guild_id);
 		struct guild *g = guild_search(guild_id);
-		int i;
 		nullpo_retv(g);
 		if(stor && stor->storage_status == 1) { //Someone is in guild storage, close them
+			int i;
 			for(i=0; i<g->max_member; i++){
 				TBL_PC *pl_sd = g->member[i].sd;
 				if(pl_sd && pl_sd->state.storage_flag == 2)
@@ -1061,7 +1062,6 @@ int guild_change_notice(struct map_session_data *sd,int guild_id,const char *mes
  *---------------------------------------------------*/
 int guild_notice_changed(int guild_id,const char *mes1,const char *mes2) {
 	int i;
-	struct map_session_data *sd;
 	struct guild *g=guild_search(guild_id);
 	if(g==NULL)
 		return 0;
@@ -1070,7 +1070,8 @@ int guild_notice_changed(int guild_id,const char *mes1,const char *mes2) {
 	memcpy(g->mes2,mes2,MAX_GUILDMES2);
 
 	for(i=0;i<g->max_member;i++){
-		if((sd=g->member[i].sd)!=NULL)
+		struct map_session_data *sd = g->member[i].sd;
+		if(sd != NULL)
 			clif_guild_notice(sd,g);
 	}
 	return 0;
@@ -1582,13 +1583,14 @@ int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id
 
 
 	for (i = 0; i < 2 - (flag & 1); i++) { // Retransmission of the relationship list to all members
-		struct map_session_data *sd;
 		if(g[i]!=NULL)
-			for(j=0;j<g[i]->max_member;j++)
-				if((sd=g[i]->member[j].sd)!=NULL){
+			for(j=0;j<g[i]->max_member;j++) {
+				struct map_session_data *sd = g[i]->member[j].sd;
+				if( sd!=NULL){
 					clif_guild_allianceinfo(sd);
 					channel_gjoin(sd,2); //join ally join
 				}
+			}
 	}
 	return 0;
 }
@@ -1644,14 +1646,14 @@ int castle_guild_broken_sub(DBKey key, DBData *data, va_list ap)
 //Invoked on /breakguild "Guild name"
 int guild_broken(int guild_id,int flag) {
 	struct guild *g = guild_search(guild_id);
-	struct map_session_data *sd = NULL;
 	int i;
 
 	if(flag!=0 || g==NULL)
 		return 0;
 
 	for(i=0;i<g->max_member;i++){	// Destroy all relationships
-		if((sd=g->member[i].sd)!=NULL){
+		struct map_session_data *sd = sd=g->member[i].sd;
+		if(sd != NULL){
 			if(sd->state.storage_flag == 2)
 				storage_guild_storage_quit(sd,1);
 			sd->status.guild_id=0;
@@ -1787,12 +1789,12 @@ int guild_break(struct map_session_data *sd,char *name) {
  * from char-server.
  */
 void guild_castle_map_init(void) {
-	DBIterator* iter = NULL;
 	int num = db_size(castle_db);
 
 	if (num > 0) {
 		struct guild_castle* gc = NULL;
 		int *castle_ids, *cursor;
+		DBIterator* iter = NULL;
 
 		CREATE(castle_ids, int, num);
 		cursor = castle_ids;
@@ -1827,11 +1829,12 @@ int guild_castledatasave(int castle_id, int index, int value) {
 	case 1: // The castle's owner has changed? Update or remove Guardians too. [Skotlex]
 	{
 		int i;
-		struct mob_data *gd;
 		gc->guild_id = value;
-		for (i = 0; i < MAX_GUARDIANS; i++)
+		for (i = 0; i < MAX_GUARDIANS; i++){
+			struct mob_data *gd;
 			if (gc->guardian[i].visible && (gd = map_id2md(gc->guardian[i].id)) != NULL)
 				mob_guardian_guildchange(gd);
+		}
 		break;
 	}
 	case 2:
@@ -1839,11 +1842,12 @@ int guild_castledatasave(int castle_id, int index, int value) {
 	case 3: // defense invest change -> recalculate guardian hp
 	{
 		int i;
-		struct mob_data *gd;
 		gc->defense = value;
-		for (i = 0; i < MAX_GUARDIANS; i++)
+		for (i = 0; i < MAX_GUARDIANS; i++){
+			struct mob_data *gd;
 			if (gc->guardian[i].visible && (gd = map_id2md(gc->guardian[i].id)) != NULL)
 				status_calc_mob(gd, 0);
+		}
 		break;
 	}
 	case 4:

+ 5 - 3
src/map/homunculus.c

@@ -1282,9 +1282,7 @@ int read_homunculus_skilldb(void)
 
 void read_homunculus_expdb(void)
 {
-	FILE *fp;
-	char line[1024];
-	int i, j=0;
+	int i;
 	char *filename[]={
 		DBPATH"exp_homun.txt",
 		"import/exp_homun.txt"
@@ -1292,6 +1290,10 @@ void read_homunculus_expdb(void)
 
 	memset(hexptbl,0,sizeof(hexptbl));
 	for(i=0; i<ARRAYLENGTH(filename); i++){
+		FILE *fp;
+		char line[1024];
+		int j=0;
+		
 		sprintf(line, "%s/%s", db_path, filename[i]);
 		fp=fopen(line,"r");
 		if(fp == NULL){

+ 2 - 5
src/map/intif.c

@@ -938,20 +938,17 @@ int mapif_parse_WisToGM(int fd)
 {
 	int permission, mes_len;
 	char Wisp_name[NAME_LENGTH];
-	char mbuf[255];
 	char *message;
 
 	mes_len =  RFIFOW(fd,2) - 32;
-	message = (char *) (mes_len >= 255 ? (char *) aMalloc(mes_len) : mbuf);
+	message = (char *) aMalloc(mes_len);
 
 	permission = RFIFOL(fd,28);
 	safestrncpy(Wisp_name, (char*)RFIFOP(fd,4), NAME_LENGTH);
 	safestrncpy(message, (char*)RFIFOP(fd,32), mes_len);
 	// information is sent to all online GM
 	map_foreachpc(mapif_parse_WisToGM_sub, permission, Wisp_name, message, mes_len);
-
-	if (message != mbuf)
-		aFree(message);
+	aFree(message);
 	return 0;
 }
 

+ 82 - 44
src/map/itemdb.c

@@ -160,8 +160,8 @@ unsigned short itemdb_searchrandomid(int group_id, uint8 sub_group)
 		ShowError("itemdb_searchrandomid: Invalid sub_group %d\n", sub_group+1);
 		return UNKNOWN_ITEM_ID;
 	}
-	if (itemgroup_db[group_id].random_qty[sub_group])
-		return itemgroup_db[group_id].random[sub_group][rnd()%itemgroup_db[group_id].random_qty[sub_group]].nameid;
+	if (&itemgroup_db[group_id].random[sub_group] && itemgroup_db[group_id].random[sub_group].data_qty)
+		return itemgroup_db[group_id].random[sub_group].data[rand()%itemgroup_db[group_id].random[sub_group].data_qty].nameid;
 
 	ShowError("itemdb_searchrandomid: No item entries for group id %d and sub group %d\n", group_id, sub_group+1);
 	return UNKNOWN_ITEM_ID;
@@ -187,9 +187,11 @@ uint16 itemdb_get_randgroupitem_count(uint16 group_id, uint8 sub_group, uint16 n
 		ShowError("itemdb_get_randgroupitem_count: Invalid sub_group id %d\n", group_id+1);
 		return amt;
 	}
-	ARR_FIND(0,itemgroup_db[group_id].random_qty[sub_group],i,itemgroup_db[group_id].random[sub_group][i].nameid == nameid);
-	if (i < MAX_ITEMGROUP_RAND)
-		amt = itemgroup_db[group_id].random[sub_group][i].amount;
+	if (!(&itemgroup_db[group_id].random[sub_group]) || !itemgroup_db[group_id].random[sub_group].data_qty)
+		return amt;
+	ARR_FIND(0,itemgroup_db[group_id].random[sub_group].data_qty,i,itemgroup_db[group_id].random[sub_group].data[i].nameid == nameid);
+	if (i < itemgroup_db[group_id].random[sub_group].data_qty)
+		amt = itemgroup_db[group_id].random[sub_group].data[i].amount;
 	return amt;
 }
 
@@ -251,23 +253,23 @@ char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd) {
 	}
 	
 	//Get the 'must' item(s)
-	for (i = 0; i < itemgroup_db[group_id].must_qty; i++) {
-		if (&itemgroup_db[group_id].must[i] && itemdb_exists(itemgroup_db[group_id].must[i].nameid))
-			itemdb_pc_get_itemgroup_sub(sd,group_id,&itemgroup_db[group_id].must[i]);
-	}
+	if (itemgroup_db[group_id].must_qty)
+		for (i = 0; i < itemgroup_db[group_id].must_qty; i++)
+			if (&itemgroup_db[group_id].must[i] && itemdb_exists(itemgroup_db[group_id].must[i].nameid))
+				itemdb_pc_get_itemgroup_sub(sd,group_id,&itemgroup_db[group_id].must[i]);
 
 	//Get the 'random' item each random group
 	for (i = 0; i < MAX_ITEMGROUP_RANDGROUP; i++) {
 		uint16 rand;
-		if (!itemgroup_db[group_id].random_qty[i]) //Skip empty random group
+		if (!(&itemgroup_db[group_id].random[i]) || !itemgroup_db[group_id].random[i].data_qty) //Skip empty random group
 			continue;
-		rand = rnd()%itemgroup_db[group_id].random_qty[i];
+		rand = rnd()%itemgroup_db[group_id].random[i].data_qty;
 		//Woops, why is the data empty? Every check should be done when load the item group! So this is bad day for the player :P
-		if (!&itemgroup_db[group_id].random[i][rand] || !itemgroup_db[group_id].random[i][rand].nameid) {
+		if (!&itemgroup_db[group_id].random[i].data[rand] || !itemgroup_db[group_id].random[i].data[rand].nameid) {
 			continue;
 		}
-		if (itemdb_exists(itemgroup_db[group_id].random[i][rand].nameid))
-			itemdb_pc_get_itemgroup_sub(sd,group_id,&itemgroup_db[group_id].random[i][rand]);
+		if (itemdb_exists(itemgroup_db[group_id].random[i].data[rand].nameid))
+			itemdb_pc_get_itemgroup_sub(sd,group_id,&itemgroup_db[group_id].random[i].data[rand]);
 	}
 
 	return 0;
@@ -282,8 +284,8 @@ int itemdb_group_bonus(struct map_session_data* sd, int itemid)
 	for (i=0; i < MAX_ITEMGROUP; i++) {
 		if (!sd->itemgrouphealrate[i])
 			continue;
-		ARR_FIND( 0, itemgroup_db[i].random_qty[0], j, itemgroup_db[i].random[0][j].nameid == itemid );
-		if( j < itemgroup_db[i].random_qty[0] )
+		ARR_FIND(0,itemgroup_db[i].random[0].data_qty,j,itemgroup_db[i].random[0].data[j].nameid == itemid );
+		if( j < itemgroup_db[i].random[0].data_qty )
 			bonus += sd->itemgrouphealrate[i];
 	}
 	return bonus;
@@ -659,9 +661,10 @@ static void itemdb_read_itemgroup_sub(const char* filename, bool silent)
 	
 	while (fgets(line,sizeof(line),fp)) {
 		uint16 nameid;
-		int j, group_id, prob = 1, amt = 1, group = 1, announced = 0, dur = 0, named = 0, bound = 0;
+		int j, group_id, prob = 1, amt = 1, rand_group = 1, announced = 0, dur = 0, named = 0, bound = 0;
 		char *str[3], *p, w1[1024], w2[1024];
 		bool found = false;
+		struct s_item_group_random *random;
 
 		ln++;
 		if (line[0] == '/' && line[1] == '/')
@@ -678,7 +681,7 @@ static void itemdb_read_itemgroup_sub(const char* filename, bool silent)
 		for (j = 0, p = line; j < 3 && p;j++) {
 			str[j] = p;
 			if (j == 2)
-				sscanf(str[j],"%d,%d,%d,%d,%d,%d,%d",&prob,&amt,&group,&announced,&dur,&named,&bound);
+				sscanf(str[j],"%d,%d,%d,%d,%d,%d,%d",&prob,&amt,&rand_group,&announced,&dur,&named,&bound);
 			p = strchr(p,',');
 			if (p) *p++=0;
 		}
@@ -691,7 +694,8 @@ static void itemdb_read_itemgroup_sub(const char* filename, bool silent)
 		}
 
 		//Checking group_id
-		if (atoi(str[0]))
+		trim(str[0]);
+		if (ISDIGIT(str[0][0]))
 			group_id = atoi(str[0]);
 		else //Try reads group id by const
 			script_get_constant(trim(str[0]),&group_id);
@@ -701,13 +705,14 @@ static void itemdb_read_itemgroup_sub(const char* filename, bool silent)
 		}
 
 		//Checking sub group
-		if (group > MAX_ITEMGROUP_RANDGROUP) {
-			ShowWarning("itemdb_read_itemgroup: Invalid sub group %d for group id %d in %s:%d\n", group, group_id, filename, ln);
+		if (rand_group > MAX_ITEMGROUP_RANDGROUP) {
+			ShowWarning("itemdb_read_itemgroup: Invalid sub group %d for group id %d in %s:%d\n", rand_group, group_id, filename, ln);
 			continue;
 		}
 
 		//Checking item
-		if ((nameid = atoi(str[1])) && itemdb_exists(nameid))
+		trim(str[1]);
+		if (ISDIGIT(str[1][0]) && itemdb_exists((nameid = atoi(str[1]))))
 			found = true;
 		else if (itemdb_searchname(str[1])) {
 			found = true;
@@ -718,20 +723,18 @@ static void itemdb_read_itemgroup_sub(const char* filename, bool silent)
 			continue;
 		}
 
-		//Checking the capacity
-		if ((group && itemgroup_db[group_id].random_qty[group-1]+prob >= MAX_ITEMGROUP_RAND) ||
-			(!group && itemgroup_db[group_id].must_qty+1 >= MAX_ITEMGROUP_MUST))
-		{
-			ShowWarning("itemdb_read_itemgroup: Group id %d is overflow (%d entries) in %s:%d\n", group_id, (!group) ? MAX_ITEMGROUP_MUST : MAX_ITEMGROUP_RAND, filename, ln);
-			continue;
-		}
-
 		amt = cap_value(amt,1,MAX_AMOUNT);
 		dur = cap_value(dur,0,UINT16_MAX);
 		bound = cap_value(bound,0,4);
 
-		if (!group) {
+		//Must item, place it here
+		if (!rand_group) {
 			uint16 idx = itemgroup_db[group_id].must_qty;
+			if (!idx)
+				CREATE(itemgroup_db[group_id].must,struct s_item_group,1);
+			else
+				RECREATE(itemgroup_db[group_id].must,struct s_item_group,idx+1);
+
 			itemgroup_db[group_id].must[idx].nameid = nameid;
 			itemgroup_db[group_id].must[idx].amount = amt;
 			itemgroup_db[group_id].must[idx].isAnnounced = announced;
@@ -739,25 +742,34 @@ static void itemdb_read_itemgroup_sub(const char* filename, bool silent)
 			itemgroup_db[group_id].must[idx].isNamed = named;
 			itemgroup_db[group_id].must[idx].bound = bound;
 			itemgroup_db[group_id].must_qty++;
-			group = 1;
+			rand_group = 1;
 		}
 		prob = max(prob,0);
+		//Must item didn't set as random item, skip next process
 		if (!prob) {
 			entries++;
 			continue;
 		}
-		group -= 1;
-		for (j = 0; j < prob; j++) {
-			uint16 idx;
-			idx = itemgroup_db[group_id].random_qty[group];
-			itemgroup_db[group_id].random[group][idx].nameid = nameid;
-			itemgroup_db[group_id].random[group][idx].amount = amt;
-			itemgroup_db[group_id].random[group][idx].isAnnounced = announced;
-			itemgroup_db[group_id].random[group][idx].duration = dur;
-			itemgroup_db[group_id].random[group][idx].isNamed = named;
-			itemgroup_db[group_id].random[group][idx].bound = bound;
-			itemgroup_db[group_id].random_qty[group]++;
+		rand_group -= 1;
+		random = &itemgroup_db[group_id].random[rand_group];
+
+		//Check, if the entry for this random group already created or not
+		if (!random->data_qty) {
+			CREATE(random->data,struct s_item_group,prob);
+			random->data_qty = 0;
+		}
+		else
+			RECREATE(random->data,struct s_item_group,random->data_qty+prob);
+		//Now put the entry to its rand_group
+		for (j = random->data_qty; j < random->data_qty+prob; j++) {
+			random->data[j].nameid = nameid;
+			random->data[j].amount = amt;
+			random->data[j].isAnnounced = announced;
+			random->data[j].duration = dur;
+			random->data[j].isNamed = named;
+			random->data[j].bound = bound;
 		}
+		random->data_qty += prob;
 		entries++;
 	}
 	fclose(fp);
@@ -1621,6 +1633,19 @@ void itemdb_reload(void)
 		if( itemdb_array[i] )
 			destroy_item_data(itemdb_array[i], true);
 
+	for (i = 0; i < MAX_ITEMGROUP; i++) {
+		uint8 j;
+		if (!(&itemgroup_db[i]))
+			continue;
+		if (itemgroup_db[i].must_qty)
+			aFree(itemgroup_db[i].must);
+		for (j = 0; j < MAX_ITEMGROUP_RANDGROUP; j++) {
+			if (!(&itemgroup_db[i].random[j]) || !itemgroup_db[i].random[j].data_qty)
+				continue;
+			aFree(itemgroup_db[i].random[j].data);
+		}
+	}
+
 	itemdb_other->clear(itemdb_other, itemdb_final_sub);
 	db_clear(itemdb_combo);
 
@@ -1687,6 +1712,19 @@ void do_final_itemdb(void)
 		if( itemdb_array[i] )
 			destroy_item_data(itemdb_array[i], true);
 
+	for (i = 0; i < MAX_ITEMGROUP; i++) {
+		uint8 j;
+		if (!(&itemgroup_db[i]))
+			continue;
+		if (itemgroup_db[i].must_qty)
+			aFree(itemgroup_db[i].must);
+		for (j = 0; j < MAX_ITEMGROUP_RANDGROUP; j++) {
+			if (!(&itemgroup_db[i].random[j]) || !itemgroup_db[i].random[j].data_qty)
+				continue;
+			aFree(itemgroup_db[i].random[j].data);
+		}
+	}
+
 	itemdb_other->destroy(itemdb_other, itemdb_final_sub);
 	destroy_item_data(&dummy_item, false);
 	db_destroy(itemdb_combo);
@@ -1697,7 +1735,7 @@ int do_init_itemdb(void) {
 	itemdb_other = idb_alloc(DB_OPT_BASE);
 	itemdb_combo = idb_alloc(DB_OPT_BASE);
 	create_dummy_data(); //Dummy data item.
+	
 	itemdb_read();
-
 	return 0;
 }

+ 24 - 16
src/map/itemdb.h

@@ -26,10 +26,8 @@
 #define IG_FINDINGORE 6
 #define IG_POTION 37
 
-#define MAX_ITEMGROUP 390 ///The max. item group count (increase this when needed).
+#define MAX_ITEMGROUP 390 ///The max. item group count (increase this when needed). TODO: Remove this limit and use dynamic allocaton
 
-#define MAX_ITEMGROUP_RAND 11000 ///Max item slots for random item group (increase this when needed).
-#define MAX_ITEMGROUP_MUST 15 ///Max item for 'must' item group (increase this when needed).
 #define MAX_ITEMGROUP_RANDGROUP 4	///Max group for random item (increase this when needed).
 
 #define CARD0_FORGE 0x00FF
@@ -178,7 +176,7 @@ enum rune_item_list {
  * Mechanic
  */
 enum mechanic_item_list {
-	ITEMID_ACCELERATOR = 2800,
+	ITEMID_ACCELERATOR				= 2800,
 	ITEMID_HOVERING_BOOSTER,
 	ITEMID_SUICIDAL_DEVICE,
 	ITEMID_SHAPE_SHIFTER,
@@ -189,6 +187,10 @@ enum mechanic_item_list {
 	ITEMID_CAMOUFLAGE_GENERATOR,
 	ITEMID_HIGH_QUALITY_COOLER,
 	ITEMID_SPECIAL_COOLER,
+	ITEMID_SCARLET_PTS				= 6360,
+	ITEMID_INDIGO_PTS,
+	ITEMID_YELLOW_WISH_PTS,
+	ITEMID_LIME_GREEN_PTS,
 };
 
 /**
@@ -310,6 +312,14 @@ enum e_item_job {
 	ITEMJ_THIRD_BABY  = 0x20,
 };
 
+struct item_combo {
+	struct script_code *script;
+	unsigned short *nameid;/* nameid array */
+	unsigned char count;
+	unsigned short id;/* id of this combo */
+	bool isRef;/* whether this struct is a reference or the master */
+};
+
 struct item_data {
 	uint16 nameid;
 	char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH];
@@ -373,7 +383,7 @@ struct item_data {
 	unsigned char combos_count;
 };
 
-/* Struct of item group */
+/* Struct of item group entry */
 struct s_item_group {
 	uint16 nameid, ///item id
 		duration; ///duration if item as rental item
@@ -383,19 +393,17 @@ struct s_item_group {
 	char bound; ///makes the item as bound item (according to bound type)
 };
 
-/* Struct of item group that will be used for db */
-struct s_item_group_db {
-	struct s_item_group must[MAX_ITEMGROUP_MUST];
-	struct s_item_group random[MAX_ITEMGROUP_RANDGROUP][MAX_ITEMGROUP_RAND]; ///NOTE: Is this good?
-	uint16 must_qty, random_qty[MAX_ITEMGROUP_RANDGROUP];
+/* Struct of random group */
+struct s_item_group_random {
+	struct s_item_group *data;
+	uint16 data_qty;
 };
 
-struct item_combo {
-	struct script_code *script;
-	unsigned short *nameid;/* nameid array */
-	unsigned char count;
-	unsigned short id;/* id of this combo */
-	bool isRef;/* whether this struct is a reference or the master */
+/* Struct of item group that will be used for db */
+struct s_item_group_db {
+	struct s_item_group *must;
+	uint16 must_qty;
+	struct s_item_group_random random[MAX_ITEMGROUP_RANDGROUP]; //! TODO: Move this fixed array to dynamic allocation!
 };
 
 struct item_data* itemdb_searchname(const char *name);

+ 1 - 1
src/map/log.c

@@ -537,7 +537,7 @@ int log_config_read(const char* cfgName)
 		if( line[0] == '/' && line[1] == '/' )
 			continue;
 
-		if( sscanf(line, "%[^:]: %[^\r\n]", w1, w2) == 2 )
+		if( sscanf(line, "%1023[^:]: %1023[^\r\n]", w1, w2) == 2 )
 		{
 			if( strcmpi(w1, "enable_logs") == 0 )
 				log_config.enable_logs = (e_log_pick_type)config_switch(w2);

+ 4 - 3
src/map/map.c

@@ -3380,7 +3380,7 @@ int map_config_read(char *cfgName)
 			continue;
 		if( (ptr = strstr(line, "//")) != NULL )
 			*ptr = '\n'; //Strip comments
-		if( sscanf(line, "%[^:]: %[^\t\r\n]", w1, w2) < 2 )
+		if( sscanf(line, "%1023[^:]: %1023[^\t\r\n]", w1, w2) < 2 )
 			continue;
 
 		//Strip trailing spaces
@@ -3482,7 +3482,7 @@ void map_reloadnpc_sub(char *cfgName)
 			continue;
 		if( (ptr = strstr(line, "//")) != NULL )
 			*ptr = '\n'; //Strip comments
-		if( sscanf(line, "%[^:]: %[^\t\r\n]", w1, w2) < 2 )
+		if( sscanf(line, "%1023[^:]: %1023[^\t\r\n]", w1, w2) < 2 )
 			continue;
 
 		//Strip trailing spaces
@@ -3530,7 +3530,7 @@ int inter_config_read(char *cfgName)
 	{
 		if(line[0] == '/' && line[1] == '/')
 			continue;
-		if( sscanf(line,"%[^:]: %[^\r\n]",w1,w2) < 2 )
+		if( sscanf(line,"%1023[^:]: %1023[^\r\n]",w1,w2) < 2 )
 			continue;
 
 		if(strcmpi(w1,"item_db_db")==0)
@@ -3983,6 +3983,7 @@ void do_shutdown(void)
 
 int do_init(int argc, char *argv[])
 {
+	runflag = MAPSERVER_ST_STARTING;
 #ifdef GCOLLECT
 	GC_enable_incremental();
 #endif

+ 43 - 25
src/map/map.h

@@ -21,6 +21,7 @@ struct Channel;
 
 enum E_MAPSERVER_ST {
 	MAPSERVER_ST_RUNNING = CORE_ST_LAST,
+	MAPSERVER_ST_STARTING,
 	MAPSERVER_ST_SHUTDOWN,
 	MAPSERVER_ST_LAST
 };
@@ -52,35 +53,48 @@ void map_msg_reload(void);
 
 /** Added definitions for WoESE objects and other [L0ne_W0lf], [aleos] */
 enum MOBID {
-    MOBID_PORING = 1002,
-    MOBID_A_GUARDIAN = 1285,
-    MOBID_K_GUARDIAN,
-    MOBID_S_GUARDIAN,
-    MOBID_EMPERIUM,
-    MOBID_TREAS01 = 1324,
-    MOBID_TREAS40 = 1363,
-    MOBID_S_GUARDIAN_ = 1899,
-    MOBID_A_GUARDIAN_,
-    MOBID_BARRICADE1 = 1905,
-    MOBID_BARRICADE2,
-    MOBID_GUARIDAN_STONE1,
-    MOBID_GUARIDAN_STONE2,
-    MOBID_FOOD_STOR,
-    MOBID_BLUE_CRYST = 1914,
-    MOBID_PINK_CRYST,
-    MOBID_TREAS41 = 1938,
-    MOBID_TREAS49 = 1946,
-    MOBID_SILVERSNIPER = 2042,
-	MOBID_MAGICDECOY_FIRE,
-	MOBID_MAGICDECOY_WATER,
-	MOBID_MAGICDECOY_EARTH,
-	MOBID_MAGICDECOY_WIND,
+	MOBID_PORING			= 1002,
 	MOBID_MARINE_SPHERE		= 1142,
+	MOBID_A_GUARDIAN		= 1285,
+	MOBID_K_GUARDIAN,
+	MOBID_S_GUARDIAN,
+	MOBID_EMPERIUM,
+	MOBID_TREAS01			= 1324,
+	MOBID_TREAS40			= 1363,
 	MOBID_G_PARASITE		= 1555,
 	MOBID_G_FLORA			= 1575,
 	MOBID_G_HYDRA			= 1579,
 	MOBID_G_MANDRAGORA		= 1589,
 	MOBID_G_GEOGRAPHER		= 1590,
+	MOBID_S_GUARDIAN_		= 1899,
+	MOBID_A_GUARDIAN_,
+	MOBID_BARRICADE1		= 1905,
+	MOBID_BARRICADE2,
+	MOBID_GUARIDAN_STONE1,
+	MOBID_GUARIDAN_STONE2,
+	MOBID_FOOD_STOR,
+	MOBID_BLUE_CRYST		= 1914,
+	MOBID_PINK_CRYST,
+	MOBID_TREAS41			= 1938,
+	MOBID_TREAS49			= 1946,
+	MOBID_TATACHO			= 1986,
+	MOBID_CENTIPEDE,
+	MOBID_NEPENTHES,
+	MOBID_HILLSRION,
+	MOBID_HARDROCK_MOMMOTH,
+	MOBID_TENDRILRION,
+	MOBID_CORNUS,
+	MOBID_NAGA,
+	MOBID_LUCIOLA_VESPA,
+	MOBID_PINGUICULA,
+	MOBID_G_TATACHO			= 1997,
+	MOBID_G_HILLSRION,
+	MOBID_CENTIPEDE_LARVA,
+	MOBID_SILVERSNIPER		= 2042,
+	MOBID_MAGICDECOY_FIRE,
+	MOBID_MAGICDECOY_WATER,
+	MOBID_MAGICDECOY_EARTH,
+	MOBID_MAGICDECOY_WIND,
 	MOBID_S_HORNET			= 2158,
 	MOBID_S_GIANT_HORNET,
 	MOBID_S_LUCIOLA_VESPA,
@@ -281,6 +295,7 @@ enum bl_type {
 enum npc_subtype { WARP, SHOP, SCRIPT, CASHSHOP, ITEMSHOP, POINTSHOP, TOMB };
 
 enum e_race {
+	RC_NONE_=-1, //don't give us bonus
 	RC_FORMLESS=0,
 	RC_UNDEAD,
 	RC_BRUTE,
@@ -291,11 +306,13 @@ enum e_race {
 	RC_DEMIHUMAN,
 	RC_ANGEL,
 	RC_DRAGON,
+	RC_PLAYER,
 	RC_ALL,
 	RC_MAX //auto upd enum for array size
 };
 
 enum e_classAE {
+	CLASS_NONE=-1, //don't give us bonus
 	CLASS_NORMAL = 0,
 	CLASS_BOSS,
 	CLASS_GUARDIAN,
@@ -446,14 +463,15 @@ enum _sp {
 	SP_SP_GAIN_RACE, SP_SUBRACE2, SP_UNBREAKABLE_SHOES,	// 2031-2033
 	SP_UNSTRIPABLE_WEAPON,SP_UNSTRIPABLE_ARMOR,SP_UNSTRIPABLE_HELM,SP_UNSTRIPABLE_SHIELD,  // 2034-2037
 	SP_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040
-	SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE, SP_MAGIC_SP_GAIN_VALUE, SP_MAGIC_HP_GAIN_VALUE, SP_ADD_CLASS_DROP_ITEM, //2041-2045
+	SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE, SP_MAGIC_SP_GAIN_VALUE, SP_MAGIC_HP_GAIN_VALUE, SP_ADD_MONSTER_ID_DROP_ITEM, //2041-2045
 	SP_EMATK, SP_SP_GAIN_RACE_ATTACK, SP_HP_GAIN_RACE_ATTACK, SP_SKILL_USE_SP_RATE, //2046-2049
 	SP_SKILL_COOLDOWN,SP_SKILL_FIXEDCAST, SP_SKILL_VARIABLECAST, SP_FIXCASTRATE, SP_VARCASTRATE, //2050-2054
 	SP_SKILL_USE_SP,SP_MAGIC_ATK_ELE, SP_ADD_FIXEDCAST, SP_ADD_VARIABLECAST,  //2055-2058
 	SP_DEF_SET,SP_MDEF_SET,SP_HP_VANISH_RATE,  //2059-2061
 
 	SP_IGNORE_DEF_CLASS, SP_DEF_RATIO_ATK_CLASS, SP_ADDCLASS, SP_SUBCLASS, SP_MAGIC_ADDCLASS, //2062-2066
-	SP_WEAPON_COMA_CLASS, SP_IGNORE_MDEF_CLASS_RATE //2067-2068
+	SP_WEAPON_COMA_CLASS, SP_IGNORE_MDEF_CLASS_RATE, SP_EXP_ADDCLASS, SP_ADD_CLASS_DROP_ITEM, //2067-2070
+	SP_ADD_CLASS_DROP_ITEMGROUP // 2071
 };
 
 enum _look {

+ 2 - 2
src/map/mercenary.c

@@ -377,8 +377,8 @@ int mercenary_killbonus(struct mercenary_data *md)
 
 int mercenary_kills(struct mercenary_data *md)
 {
-	md->mercenary.kill_count++;
-	md->mercenary.kill_count = cap_value(md->mercenary.kill_count, 0, INT_MAX);
+	if(md->mercenary.kill_count <= (INT_MAX-1)) //safe cap to INT_MAX
+		md->mercenary.kill_count++;
 
 	if( (md->mercenary.kill_count % 50) == 0 )
 	{

+ 30 - 30
src/map/mob.c

@@ -82,8 +82,8 @@ static struct {
 } summon[MAX_RANDOMMONSTER];
 
 //Defines the Manuk/Splendide mob groups for the status reductions [Epoque]
-const int mob_manuk[8] = { 1986, 1987, 1988, 1989, 1990, 1997, 1998, 1999 };
-const int mob_splendide[5] = { 1991, 1992, 1993, 1994, 1995 };
+const int mob_manuk[8] = { MOBID_TATACHO, MOBID_CENTIPEDE, MOBID_NEPENTHES, MOBID_HILLSRION, MOBID_HARDROCK_MOMMOTH, MOBID_G_TATACHO, MOBID_G_HILLSRION, MOBID_CENTIPEDE_LARVA };
+const int mob_splendide[5] = { MOBID_TENDRILRION, MOBID_CORNUS, MOBID_NAGA, MOBID_LUCIOLA_VESPA, MOBID_PINGUICULA };
 
 /*==========================================
  * Local prototype declaration   (only required thing)
@@ -98,15 +98,13 @@ int mob_skill_id2skill_idx(int mob_id,uint16 skill_id);
 int mobdb_searchname(const char *str)
 {
 	int i;
-	struct mob_db* mob;
 	for(i=0;i<=MAX_MOB_DB;i++){
-		mob = mob_db(i);
+		struct mob_db *mob = mob_db(i);
 		if(mob == mob_dummy) //Skip dummy mobs.
 			continue;
 		if(strcmpi(mob->name,str)==0 || strcmpi(mob->jname,str)==0 || strcmpi(mob->sprite,str)==0)
 			return i;
 	}
-
 	return 0;
 }
 static int mobdb_searchname_array_sub(struct mob_db* mob, const char *str)
@@ -347,12 +345,9 @@ bool mob_ksprotected (struct block_list *src, struct block_list *target)
 	struct block_list *s_bl, *t_bl;
 	struct map_session_data
 		*sd,    // Source
-		*pl_sd, // Owner
 		*t_sd;  // Mob Target
-	struct status_change_entry *sce;
 	struct mob_data *md;
 	unsigned int tick = gettick();
-	char output[128];
 
 	if( !battle_config.ksprotection )
 		return false; // KS Protection Disabled
@@ -373,6 +368,10 @@ bool mob_ksprotected (struct block_list *src, struct block_list *target)
 	t_sd = BL_CAST(BL_PC,s_bl);
 
 	do {
+		struct status_change_entry *sce;
+		struct map_session_data *pl_sd; // Owner
+		char output[128];
+		
 		if( map[md->bl.m].flag.allowks || map_flag_ks(md->bl.m) )
 			return false; // Ignores GVG, PVP and AllowKS map flags
 
@@ -1340,7 +1339,7 @@ int mob_unlocktarget(struct mob_data *md, unsigned int tick)
 int mob_randomwalk(struct mob_data *md,unsigned int tick)
 {
 	const int retrycount=20;
-	int i,x,y,c,d;
+	int i,c,d;
 	int speed;
 
 	nullpo_ret(md);
@@ -1354,8 +1353,8 @@ int mob_randomwalk(struct mob_data *md,unsigned int tick)
 	if(d<5) d=5;
 	for(i=0;i<retrycount;i++){	// Search of a movable place
 		int r=rnd();
-		x=r%(d*2+1)-d;
-		y=r/(d*2+1)%(d*2+1)-d;
+		int x=r%(d*2+1)-d;
+		int y=r/(d*2+1)%(d*2+1)-d;
 		x+=md->bl.x;
 		y+=md->bl.y;
 
@@ -1828,10 +1827,11 @@ static struct item_drop* mob_setlootitem(struct item* item)
 static int mob_delay_item_drop(int tid, unsigned int tick, int id, intptr_t data)
 {
 	struct item_drop_list *list;
-	struct item_drop *ditem, *ditem_prev;
+	struct item_drop *ditem;
 	list=(struct item_drop_list *)data;
 	ditem = list->item;
 	while (ditem) {
+		struct item_drop *ditem_prev;
 		map_addflooritem(&ditem->item_data,ditem->item_data.amount,
 			list->m,list->x,list->y,
 			list->first_charid,list->second_charid,list->third_charid,4);
@@ -2117,7 +2117,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 		int id,zeny;
 		unsigned int base_exp,job_exp;
 	} pt[DAMAGELOG_SIZE];
-	int i, temp, count, m = md->bl.m, pnum = 0;
+	int i, temp, count, m = md->bl.m;
 	int dmgbltypes = 0;  // bitfield of all bl types, that caused damage to the mob and are elligible for exp distribution
 	unsigned int mvp_damage, tick = gettick();
 	bool rebirth, homkillonly;
@@ -2199,6 +2199,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 		(!map[m].flag.nobaseexp || !map[m].flag.nojobexp) //Gives Exp
 	) { //Experience calculation.
 		int bonus = 100; //Bonus on top of your share (common to all attackers).
+		int pnum = 0;
 		if (md->sc.data[SC_RICHMANKIM])
 			bonus += md->sc.data[SC_RICHMANKIM]->val2;
 		if(sd) {
@@ -2437,12 +2438,10 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 			// process script-granted extra drop bonuses
 			int itemid = 0;
 			for (i = 0; i < ARRAYLENGTH(sd->add_drop) && (sd->add_drop[i].id || sd->add_drop[i].group); i++) {
-				if ( sd->add_drop[i].race == -md->mob_id ||
-					( (sd->add_drop[i].race > 0 || sd->add_drop[i].class_ > 0) && (
-						sd->add_drop[i].race & (1<<status->race) ||
-						sd->add_drop[i].class_ & (1<<status->class_)
-					)))
-				{
+				if ( sd->add_drop[i].race == -md->mob_id 
+					|| (sd->add_drop[i].race && sd->add_drop[i].race&(1<<status->race|1<<RC_ALL))
+					|| (sd->add_drop[i].class_ && sd->add_drop[i].class_&(1<<status->class_|1<<CLASS_ALL))
+				) {
 					//check if the bonus item drop rate should be multiplied with mob level/10 [Lupus]
 					if(sd->add_drop[i].rate < 0) {
 						//it's negative, then it should be multiplied. e.g. for Mimic,Myst Case Cards, etc
@@ -3382,7 +3381,7 @@ int mob_is_clone(int mob_id)
 int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, int mode, int flag, unsigned int duration)
 {
 	int mob_id;
-	int i,j,inf,skill_id, fd;
+	int i,j,inf, fd;
 	struct mob_data *md;
 	struct mob_skill *ms;
 	struct mob_db* db;
@@ -3434,7 +3433,7 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons
 
 	//Go Backwards to give better priority to advanced skills.
 	for (i=0,j = MAX_SKILL_TREE-1;j>=0 && i< MAX_MOBSKILL ;j--) {
-		skill_id = skill_tree[pc_class2idx(sd->status.class_)][j].id;
+		int skill_id = skill_tree[pc_class2idx(sd->status.class_)][j].id;
 		if (!skill_id || sd->status.skill[skill_id].lv < 1 ||
 			(skill_get_inf2(skill_id)&(INF2_WEDDING_SKILL|INF2_GUILD_SKILL)) ||
 			skill_get_nocast(skill_id)&16
@@ -3682,7 +3681,7 @@ static bool mob_parse_dbrow(char** str)
 {
 	struct mob_db *db, entry;
 	struct status_data *status;
-	int mob_id, i, k;
+	int mob_id, i;
 	double exp, maxhp;
 	struct mob_data data;
 
@@ -3847,7 +3846,7 @@ static bool mob_parse_dbrow(char** str)
 		int rate = 0, rate_adjust, type;
 		unsigned short ratemin, ratemax;
 		struct item_data *id;
-		k = 31 + MAX_MVP_DROP*2 + i*2;
+		int k = 31 + MAX_MVP_DROP*2 + i*2;
 		db->dropitem[i].nameid = atoi(str[k]);
 		if (!db->dropitem[i].nameid) {
 			db->dropitem[i].p = 0; //No drop.
@@ -4040,10 +4039,7 @@ static bool mob_readdb_mobavail(char* str[], int columns, int current)
  *------------------------------------------*/
 static int mob_read_randommonster(void)
 {
-	FILE *fp;
-	char line[1024];
-	char *str[10],*p;
-	int i,j, entries, k;
+	int i;
 	const char* mobfile[] = {
 		DBPATH"mob_branch.txt",
 		DBPATH"mob_poring.txt",
@@ -4061,7 +4057,11 @@ static int mob_read_randommonster(void)
 
 	for( i = 0; i < ARRAYLENGTH(mobfile); i++ )
 	{ // MobID,DummyName,Rate
-		entries=0;
+		FILE *fp;
+		char line[1024];
+		char *str[10],*p;
+		int j, entries=0, k;
+		
 		k = (i >= MAX_RANDOMMONSTER) ? i - MAX_RANDOMMONSTER : i;
 		mob_db_data[0]->summonper[k] = MOBID_PORING;	// Default fallback value, in case the database does not provide one
 		sprintf(line, "%s/%s", db_path, mobfile[i]);
@@ -4493,7 +4493,7 @@ static int mob_read_sqlskilldb(void)
  *------------------------------------------*/
 static bool mob_readdb_race2(char* fields[], int columns, int current)
 {
-	int race, mobid, i;
+	int race, i;
 
 	race = atoi(fields[0]);
 
@@ -4505,7 +4505,7 @@ static bool mob_readdb_race2(char* fields[], int columns, int current)
 
 	for(i = 1; i<columns; i++)
 	{
-		mobid = atoi(fields[i]);
+		int mobid = atoi(fields[i]);
 		if (mob_db(mobid) == mob_dummy)
 		{
 			ShowWarning("mob_readdb_race2: Unknown mob id %d for race2 %d.\n", mobid, race);

+ 0 - 1
src/map/npc.c

@@ -4038,7 +4038,6 @@ int npc_reload(void) {
 	// Execute rest of the startup events if connected to char-server. [Lance]
 	if(!CheckForCharServer()){
 		ShowStatus("Event '"CL_WHITE"OnInterIfInit"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInit"));
-		ShowStatus("Event '"CL_WHITE"OnInterIfInitOnce"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInitOnce"));
 	}
 	return 0;
 }

+ 16 - 0
src/map/party.c

@@ -1130,6 +1130,22 @@ int party_sub_count(struct block_list *bl, va_list ap)
 	return 1;
 }
 
+// To use for counting classes in a party.
+int party_sub_count_class(struct block_list *bl, va_list ap)
+{
+	struct map_session_data *sd = (TBL_PC *)bl;
+	unsigned int mask = va_arg(ap, unsigned int);
+	unsigned int mapid_class = va_arg(ap, unsigned int);
+
+	if( !party_sub_count(bl, ap) )
+		return 0;
+
+	if( (sd->class_&mask) != mapid_class )
+		return 0;
+
+	return 1;
+}
+
 /// Executes 'func' for each party member on the same map and in range (0:whole map)
 int party_foreachsamemap(int (*func)(struct block_list*,va_list),struct map_session_data *sd,int range,...)
 {

+ 1 - 0
src/map/party.h

@@ -87,6 +87,7 @@ int party_exp_share(struct party_data *p,struct block_list *src,unsigned int bas
 int party_share_loot(struct party_data* p, struct map_session_data* sd, struct item* item_data, int first_charid);
 int party_send_dot_remove(struct map_session_data *sd);
 int party_sub_count(struct block_list *bl, va_list ap);
+int party_sub_count_class(struct block_list *bl, va_list ap);
 int party_foreachsamemap(int (*func)(struct block_list *,va_list),struct map_session_data *sd,int range,...);
 
 /*==========================================

+ 43 - 32
src/map/pc.c

@@ -1913,12 +1913,13 @@ static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id
 	}
 	for(i = 0; i < max && (drop[i].id || drop[i].group); i++) {
 		if(
-			((id && drop[i].id == id) ||
-			(group && drop[i].group == group))
-			&& (race > 0 || class_ > -1)
+			((id && drop[i].id == id) || (group && drop[i].group == group)) &&
+			((race > RC_NONE_ && race < RC_MAX) || (class_ > CLASS_NONE && class_ < CLASS_MAX))
 		) {
-			drop[i].race |= race;
-			drop[i].class_ |= class_;
+			if(race > RC_NONE_ && race < RC_MAX)
+				drop[i].race |= 1<<race;
+			if(class_ > CLASS_NONE && class_ < CLASS_MAX)
+				drop[i].class_ |= 1<<class_;
 			if(drop[i].rate > 0 && rate > 0)
 			{	//Both are absolute rates.
 				if (drop[i].rate < rate)
@@ -1940,7 +1941,6 @@ static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id
 	drop[i].id = id;
 	drop[i].group = group;
 	drop[i].race |= race;
-	drop[i].class_ |= class_;
 	drop[i].rate = rate;
 	return 1;
 }
@@ -3193,17 +3193,21 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 		if(sd->state.lr_flag != 2)
 			sd->expaddrace[type2]+=val;
 		break;
+	case SP_EXP_ADDCLASS:
+		if(sd->state.lr_flag != 2)
+			sd->expaddclass[type2]+=val;
+		break;
 	case SP_SP_GAIN_RACE:
 		if(sd->state.lr_flag != 2)
 			sd->sp_gain_race[type2]+=val;
 		break;
 	case SP_ADD_MONSTER_DROP_ITEM:
 		if (sd->state.lr_flag != 2)
-			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, (1<<CLASS_NORMAL)|(1<<CLASS_BOSS), 0, val);
+			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, CLASS_ALL, RC_NONE_, val);
 		break;
 	case SP_ADD_MONSTER_DROP_ITEMGROUP:
 		if (sd->state.lr_flag != 2)
-			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, (1<<CLASS_NORMAL)|(1<<CLASS_BOSS), 0, val);
+			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, CLASS_ALL, RC_NONE_, val);
 		break;
 	case SP_SP_LOSS_RATE:
 		if(sd->state.lr_flag != 2) {
@@ -3379,11 +3383,15 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
 	switch(type){
 	case SP_ADD_MONSTER_DROP_ITEM:
 		if(sd->state.lr_flag != 2)
-			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, -1, 1<<type3, val);
+			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, CLASS_NONE, type3, val);
+		break;
+	case SP_ADD_MONSTER_ID_DROP_ITEM:
+		if(sd->state.lr_flag != 2)
+			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, CLASS_NONE, -type3, val);
 		break;
 	case SP_ADD_CLASS_DROP_ITEM:
 		if(sd->state.lr_flag != 2)
-			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, -1, -type3, val);
+			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, type3, RC_NONE_, val);
 		break;
 	case SP_AUTOSPELL:
 		if(sd->state.lr_flag != 2)
@@ -3424,7 +3432,11 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
 		break;
 	case SP_ADD_MONSTER_DROP_ITEMGROUP:
 		if (sd->state.lr_flag != 2)
-			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, -1, 1<<type3, val);
+			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, CLASS_NONE, type3, val);
+		break;
+	case SP_ADD_CLASS_DROP_ITEMGROUP:
+		if (sd->state.lr_flag != 2)
+			pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, type3, RC_NONE_, val);
 		break;
 
 	case SP_ADDEFF:
@@ -4176,20 +4188,16 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
 	if (sd->status.party_id)
 		p = party_search(sd->status.party_id);
 
-	if(fitem->first_get_charid > 0 && fitem->first_get_charid != sd->status.char_id)
-	{
-		struct map_session_data *first_sd = NULL,*second_sd = NULL,*third_sd = NULL;
-		first_sd = map_charid2sd(fitem->first_get_charid);
+	if(fitem->first_get_charid > 0 && fitem->first_get_charid != sd->status.char_id) {
+		struct map_session_data *first_sd = map_charid2sd(fitem->first_get_charid);
 		if(DIFF_TICK(tick,fitem->first_get_tick) < 0) {
 			if (!(p && p->party.item&1 &&
 				first_sd && first_sd->status.party_id == sd->status.party_id
 			))
 				return 0;
 		}
-		else
-		if(fitem->second_get_charid > 0 && fitem->second_get_charid != sd->status.char_id)
-		{
-			second_sd = map_charid2sd(fitem->second_get_charid);
+		else if(fitem->second_get_charid > 0 && fitem->second_get_charid != sd->status.char_id) {
+			struct map_session_data *second_sd = map_charid2sd(fitem->second_get_charid);
 			if(DIFF_TICK(tick, fitem->second_get_tick) < 0) {
 				if(!(p && p->party.item&1 &&
 					((first_sd && first_sd->status.party_id == sd->status.party_id) ||
@@ -4197,10 +4205,8 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
 				))
 					return 0;
 			}
-			else
-			if(fitem->third_get_charid > 0 && fitem->third_get_charid != sd->status.char_id)
-			{
-				third_sd = map_charid2sd(fitem->third_get_charid);
+			else if(fitem->third_get_charid > 0 && fitem->third_get_charid != sd->status.char_id){
+				struct map_session_data *third_sd = map_charid2sd(fitem->third_get_charid);
 				if(DIFF_TICK(tick,fitem->third_get_tick) < 0) {
 					if(!(p && p->party.item&1 &&
 						((first_sd && first_sd->status.party_id == sd->status.party_id) ||
@@ -5928,6 +5934,10 @@ static void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsi
 		bonus += sd->expaddrace[status->race];
 	if( sd->expaddrace[RC_ALL] )
 		bonus += sd->expaddrace[RC_ALL];
+	if( sd->expaddclass[status->class_] )
+		bonus += sd->expaddclass[status->class_];
+	if( sd->expaddclass[CLASS_ALL] )
+		bonus += sd->expaddclass[CLASS_ALL];
 
 	if (battle_config.pk_mode &&
 		(int)(status_get_lv(src) - sd->status.base_level) >= 20)
@@ -8511,7 +8521,6 @@ void pc_cleareventtimer(struct map_session_data *sd)
 static int pc_checkcombo(struct map_session_data *sd, struct item_data *data) {
 	uint16 i;
 	int success = 0;
-
 	for( i = 0; i < data->combos_count; i++ ) {
 		int16 *combo_idx = NULL, idx, j;
 		/* ensure this isn't a duplicate combo */
@@ -8525,7 +8534,8 @@ static int pc_checkcombo(struct map_session_data *sd, struct item_data *data) {
 		}
 
 		CREATE(combo_idx,int16,data->combos[i]->count);
-		memset(combo_idx,-1,data->combos[i]->count);
+		memset(combo_idx,-1,data->combos[i]->count * sizeof(int16));
+
 		for( j = 0; j < data->combos[i]->count; j++ ) {
 			uint16 id = data->combos[i]->nameid[j], k;
 			bool found = false;
@@ -8542,7 +8552,7 @@ static int pc_checkcombo(struct map_session_data *sd, struct item_data *data) {
 				if(!sd->inventory_data[index])
 					continue;
 				if(j>0){
-					uint16 z;
+					uint8 z;
 					for (z = 0; z < data->combos[i]->count; z++)
 						if(combo_idx[z] == index) //we already have that index recorded
 							do_continue=true;
@@ -10098,7 +10108,7 @@ static bool pc_readdb_job_param(char* fields[], int columns, int current)
 	return true;
 }
 
-int pc_read_statsdb(const char *basedir, bool silent){
+static int pc_read_statsdb(const char *basedir, int last_s, bool silent){
 	int i=1;
 	char line[24000]; //FIXME this seem too big
 	FILE *fp;
@@ -10113,7 +10123,8 @@ int pc_read_statsdb(const char *basedir, bool silent){
 		while(fgets(line, sizeof(line), fp))
 		{
 			int stat;
-			if(line[0]=='/' && line[1]=='/')
+			trim(line);
+			if(line[0] == '\0' || (line[0]=='/' && line[1]=='/'))
 				continue;
 			if ((stat=strtoul(line,NULL,10))<0)
 				stat=0;
@@ -10124,9 +10135,9 @@ int pc_read_statsdb(const char *basedir, bool silent){
 			entries++;
 		}
 		fclose(fp);
-		ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s%s"CL_RESET"'.\n", entries, basedir,"statpoint.txt");
+		ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s/%s"CL_RESET"'.\n", entries, basedir,"statpoint.txt");
 	}
-	return i;
+	return max(last_s,i);
 }
 
 /*==========================================
@@ -10140,7 +10151,7 @@ int pc_read_statsdb(const char *basedir, bool silent){
  *------------------------------------------*/
 int pc_readdb(void)
 {
-	int i, k, s;
+	int i, k, s = 1;
 	const char* dbsubpath[] = {
 		"",
 		"import"
@@ -10185,7 +10196,7 @@ int pc_readdb(void)
 		if(i==0) safesnprintf(dbsubpath2,n2,"%s/%s%s",db_path,DBPATH,dbsubpath[i]);
 		else safesnprintf(dbsubpath2,n2,"%s/%s",db_path,dbsubpath[i]);
 
-		s = pc_read_statsdb(dbsubpath2,i);
+		s = pc_read_statsdb(dbsubpath2,s,i);
 #ifdef RENEWAL_ASPD
 		sv_readdb(dbsubpath1, "re/job_db1.txt",',',6+MAX_WEAPON_TYPE,6+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, i);
 #else

+ 3 - 1
src/map/pc.h

@@ -114,7 +114,8 @@ struct s_addeffectonskill {
 
 struct s_add_drop {
 	short id, group;
-	int race, rate, class_;
+	int rate;
+	int race, class_; //bitwise value of 1<<x
 };
 
 struct s_autobonus {
@@ -311,6 +312,7 @@ struct map_session_data {
 	int magic_atk_ele[ELE_NONE];
 	int critaddrace[RC_MAX];
 	int expaddrace[RC_MAX];
+	int expaddclass[CLASS_MAX];
 	int ignore_mdef_by_race[RC_MAX];
 	int ignore_mdef_by_class[CLASS_MAX];
 	int ignore_def_by_race[RC_MAX];

+ 120 - 100
src/map/script.c

@@ -9230,7 +9230,10 @@ BUILDIN_FUNC(addtimer)
 	if( sd == NULL )
 		return 0;
 
-	pc_addeventtimer(sd,tick,event);
+	if (!pc_addeventtimer(sd,tick,event)) {
+		ShowWarning("buildin_addtimer: Event timer is full, can't add new event timer. (cid:%d timer:%s)\n",sd->status.char_id,event);
+		return SCRIPT_CMD_FAILURE;
+	}
 	return SCRIPT_CMD_SUCCESS;
 }
 
@@ -16370,6 +16373,19 @@ BUILDIN_FUNC(checkquest)
 	return SCRIPT_CMD_SUCCESS;
 }
 
+BUILDIN_FUNC(isbegin_quest)
+{
+	struct map_session_data *sd = script_rid2sd(st);
+	int i;
+
+	nullpo_ret(sd);
+
+	i = quest_check(sd, script_getnum(st, 2), (quest_check_type) HAVEQUEST);
+	script_pushint(st, i + (i < 1));
+
+	return SCRIPT_CMD_SUCCESS;
+}
+
 BUILDIN_FUNC(showevent)
 {
 	TBL_PC *sd = script_rid2sd(st);
@@ -17679,7 +17695,9 @@ BUILDIN_FUNC(npcskill)
 
 /* Consumes an item.
  * consumeitem <item id>;
- * consumeitem "<item name>"; */
+ * consumeitem "<item name>";
+ * @param item: Item ID or name
+ */
 BUILDIN_FUNC(consumeitem)
 {
 	TBL_NPC *nd;
@@ -17698,30 +17716,30 @@ BUILDIN_FUNC(consumeitem)
 
 		if( ( item_data = itemdb_searchname( name ) ) == NULL ){
 			ShowError( "buildin_consumeitem: Nonexistant item %s requested.\n", name );
-			return 1;
+			return SCRIPT_CMD_FAILURE;
 		}
 	}else if( data_isint( data ) ){
 		int nameid = conv_num( st, data );
 
 		if( ( item_data = itemdb_exists( nameid ) ) == NULL ){
 			ShowError("buildin_consumeitem: Nonexistant item %d requested.\n", nameid );
-			return 1;
+			return SCRIPT_CMD_FAILURE;
 		}
 	}else{
 		ShowError("buildin_consumeitem: invalid data type for argument #1 (%d).", data->type );
-		return 1;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	run_script( item_data->script, 0, sd->bl.id, nd->bl.id );
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*=======================================================
- * Make a player sit/stand.
+/** Makes a player sit/stand.
  * sit {"<character name>"};
  * stand {"<character name>"};
  * Note: Use readparam(Sitting) which returns 1 or 0 (sitting or standing).
- *-------------------------------------------------------*/
+ * @param name: Player name that will be invoked
+ */
 BUILDIN_FUNC(sit)
 {
 	TBL_PC *sd;
@@ -17732,7 +17750,7 @@ BUILDIN_FUNC(sit)
 		sd = script_rid2sd(st);
 
 	if( sd == NULL)
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 
 	if( !pc_issit(sd) ) {
 		unit_stop_walking(&sd->bl, 1|4);
@@ -17743,6 +17761,9 @@ BUILDIN_FUNC(sit)
 	return SCRIPT_CMD_SUCCESS;
 }
 
+/** Makes player to stand
+* @param name: Player name that will be set
+*/
 BUILDIN_FUNC(stand)
 {
 	TBL_PC *sd;
@@ -17753,7 +17774,7 @@ BUILDIN_FUNC(stand)
 		sd = script_rid2sd(st);
 
 	if( sd == NULL)
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 
 	if( pc_issit(sd) ) {
 		pc_setstand(sd);
@@ -17764,22 +17785,18 @@ BUILDIN_FUNC(stand)
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
+/** Creates an array of bounded item IDs
  * countbound {<type>};
- * Creates an array of bounded item IDs
- * Returns amount of items found
- * Type:
- *	1 - Account Bound
- *	2 - Guild Bound
- *	3 - Party Bound
- *------------------------------------------*/
+ * @param type: 1 - Account Bound; 2 - Guild Bound; 3 - Party Bound
+ * @return amt: Amount of items found
+ */
 BUILDIN_FUNC(countbound)
 {
 	int i, type, j=0, k=0;
 	TBL_PC *sd;
 
 	if( (sd = script_rid2sd(st)) == NULL )
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 
 	type = script_hasdata(st,2)?script_getnum(st,2):0;
 
@@ -17798,17 +17815,19 @@ BUILDIN_FUNC(countbound)
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
+/** Creates new party
  * party_create "<party name>"{,<char id>{,<item share>{,<item share type>}}};
- * <item share>: 0-Each Take. 1-Party Share
- * <item share type>: 0-Each Take. 1-Even Share
- * Return values:
+ * @param party_name: String of party name that will be created
+ * @param char_id: Chara that will be leader of this new party. If no char_id specified, the invoker will be party leader
+ * @param item_share: 0-Each Take. 1-Party Share
+ * @param item_share_type: 0-Each Take. 1-Even Share
+ * @return val: Result value
  *	-3	- party name is exist
  *	-2	- player is in party already
  *	-1	- player is not found
  *	0	- unknown error
  *	1	- success, will return party id $@party_create_id
- *------------------------------------------*/
+ */
 BUILDIN_FUNC(party_create)
 {
 	char party_name[NAME_LENGTH];
@@ -17817,19 +17836,19 @@ BUILDIN_FUNC(party_create)
 
 	if( (!script_hasdata(st,3) && !(sd = script_rid2sd(st))) || (script_hasdata(st,3) && !(sd = map_charid2sd(script_getnum(st,3)))) ) {
 		script_pushint(st,-1);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if( sd->status.party_id ) {
 		script_pushint(st,-2);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	safestrncpy(party_name,script_getstr(st,2),NAME_LENGTH);
 	trim(party_name);
 	if( party_searchname(party_name) ) {
 		script_pushint(st,-3);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 	if( script_getnum(st,4) )
 		item1 = 1;
@@ -17841,17 +17860,18 @@ BUILDIN_FUNC(party_create)
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
+/** Adds player to specified party
  * party_addmember <party id>,<char id>;
- * Adds player to specified party
- * Return values:
+ * @param party_id: The party that will be entered by player
+ * @param char_id: Char id of player that will be joined to the party
+ * @return val: Result value
  *	-4	- party is full
  *	-3	- party is not found
  *	-2	- player is in party already
  *	-1	- player is not found
  *	0	- unknown error
  *	1	- success
- *------------------------------------------*/
+ */
 BUILDIN_FUNC(party_addmember)
 {
 	int party_id = script_getnum(st,2);
@@ -17860,46 +17880,46 @@ BUILDIN_FUNC(party_addmember)
 
 	if( !(sd = map_charid2sd(script_getnum(st,3))) ) {
 		script_pushint(st,-1);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if( sd->status.party_id ) {
 		script_pushint(st,-2);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if( !(party = party_search(party_id)) ) {
 		script_pushint(st,-3);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if( party->party.count >= MAX_PARTY ) {
 		script_pushint(st,-4);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 	sd->party_invite = party_id;
 	script_pushint(st,party_add_member(party_id,sd));
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
+/** Removes player from his/her party. If party_id and char_id is empty remove the invoker from his/her party
  * party_delmember {<char id>,<party_id>};
- * Removes player from his/her party. If party_id and char_id is empty
- * remove the invoker from his/her party
- * Return values:
+ * @param: char_id
+ * @param: party_id
+ * @return val: Result value
  *	-3	- player is not in party
  *	-2	- party is not found
  *	-1	- player is not found
  *	0	- unknown error
  *	1	- success
- *------------------------------------------*/
+ */
 BUILDIN_FUNC(party_delmember)
 {
 	TBL_PC *sd = NULL;
 
 	if( !script_hasdata(st,2) && !script_hasdata(st,3) && !(sd = script_rid2sd(st)) ) {
 		script_pushint(st,-1);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 	if( sd || (script_getnum(st,2) && (sd = map_charid2sd(script_getnum(st,2)))) )
 		script_pushint(st,party_removemember2(sd,0,0));
@@ -17908,17 +17928,17 @@ BUILDIN_FUNC(party_delmember)
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
+/** Changes party leader of specified party (even the leader is offline)
  * party_changeleader <party id>,<char id>;
- * Can change party leader even the leader is not online
- * Return values:
+ * @param party_id: ID of party
+ * @param char_id: Char ID of new leader
+ * @return val: Result value
  *	-4	- player is party leader already
  *	-3	- player is not in this party
  *	-2	- player is not found
  *	-1	- party is not found
  *	0	- unknown error
- *	1	- success
- *------------------------------------------*/
+ *	1	- success */
 BUILDIN_FUNC(party_changeleader)
 {
 	int i, party_id = script_getnum(st,2);
@@ -17928,59 +17948,55 @@ BUILDIN_FUNC(party_changeleader)
 
 	if( !(party = party_search(party_id)) ) {
 		script_pushint(st,-1);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if( !(tsd = map_charid2sd(script_getnum(st,3))) ) {
 		script_pushint(st,-2);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if( tsd->status.party_id != party_id ) {
 		script_pushint(st,-3);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	ARR_FIND(0,MAX_PARTY,i,party->party.member[i].leader);
 	if( i >= MAX_PARTY ) {	//this is should impossible!
 		script_pushint(st,0);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 	if( party->data[i].sd == tsd ) {
 		script_pushint(st,-4);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	script_pushint(st,party_changeleader(sd,tsd,party));
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
+/** Changes party option
  * party_changeoption <party id>,<option>,<flag>;
- * Return values:
- *	-1	- party is not found
- *	0	- invalid option
- *	1	- success
- *------------------------------------------*/
+ * @param party_id: ID of party that will be changed
+ * @param option: Type of option
+ * @return val: -1 - party is not found, 0 - invalid option, 1 - success
+ */
 BUILDIN_FUNC(party_changeoption)
 {
 	struct party_data *party;
 
 	if( !(party = party_search(script_getnum(st,2))) ) {
 		script_pushint(st,-1);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 	script_pushint(st,party_setoption(party,script_getnum(st,3),script_getnum(st,4)));
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
+/** Destroys party with party id.
  * party_destroy <party id>;
- * Destroys party with party id.
- * Return values:
- *	0	- failed
- *	1	- success
- *------------------------------------------*/
+ * @param party_id: ID of party that will be destroyed
+ */
 BUILDIN_FUNC(party_destroy)
 {
 	int i;
@@ -17988,7 +18004,7 @@ BUILDIN_FUNC(party_destroy)
 
 	if( !(party = party_search(script_getnum(st,2))) ) {
 		script_pushint(st,0);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	ARR_FIND(0,MAX_PARTY,i,party->party.member[i].leader);
@@ -18009,13 +18025,10 @@ BUILDIN_FUNC(party_destroy)
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
-* Checks if a player's client version meets a required version or date.
-* @type :
-*  0 - check by version number
-*  1 - check by date
-* @return true/false
- *------------------------------------------*/
+/** Checks if a player's client version meets a required version or date.
+* @param type: 0 - check by version number; 1 - check by date
+* @param data: Input
+*/
 BUILDIN_FUNC(is_clientver) {
 	TBL_PC *sd = NULL;
 	int type = script_getnum(st,2);
@@ -18028,7 +18041,7 @@ BUILDIN_FUNC(is_clientver) {
 		sd = script_rid2sd(st);
 	if (sd == NULL) {
 		script_pushint(st,0);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	switch(type){
@@ -18043,10 +18056,9 @@ BUILDIN_FUNC(is_clientver) {
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/*==========================================
-* Retrieves server definitions.
-* (see @type in const.txt)
- *------------------------------------------*/
+/** Retrieves server definitions
+* @param type: See in const.txt
+*/
 BUILDIN_FUNC(getserverdef) {
 	int type = script_getnum(st,2);
 	switch(type){
@@ -18070,9 +18082,10 @@ BUILDIN_FUNC(getserverdef) {
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/* Returns various information about a player's VIP status.
+/** Returns various information about a player's VIP status. Need to enable VIP system
  * vip_status <type>,{"<character name>"};
- * Note: VIP System needs to be enabled.
+ * @param type: Info type, 1: VIP status, 2: Expired date, 3: Remaining time
+ * @param name: Character name (Optional)
  */
 BUILDIN_FUNC(vip_status) {
 #ifdef VIP_ENABLE
@@ -18087,7 +18100,7 @@ BUILDIN_FUNC(vip_status) {
 		sd = script_rid2sd(st);
 
 	if (sd == NULL)
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 
 	switch(type) {
 		case 1: // Get VIP status.
@@ -18120,10 +18133,10 @@ BUILDIN_FUNC(vip_status) {
 }
 
 
-/* Adds or removes VIP time in minutes.
+/** Adds or removes VIP time in minutes. Need to enable VIP system
  * vip_time <time in mn>,{"<character name>"};
- * If time < 0 remove time, else add time.
- * Note: VIP System needs to be enabled. 
+ * @param time: VIP duration in minutes. If time < 0 remove time, else add time.
+ * @param name: Character name (optional)
  */
 BUILDIN_FUNC(vip_time) {
 #ifdef VIP_ENABLE //would be a pain for scripting npc otherwise
@@ -18136,7 +18149,7 @@ BUILDIN_FUNC(vip_time) {
 		sd = script_rid2sd(st);
 
 	if (sd == NULL)
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 
 	chrif_req_login_operation(sd->status.account_id, sd->status.name, 6, viptime, 7, 0); 
 #endif
@@ -18144,10 +18157,16 @@ BUILDIN_FUNC(vip_time) {
 }
 
 
-/*==========================================
- * Turns a player into a monster and grants SC attribute effect. [malufett/Hercules]
+/** Turns a player into a monster and grants SC attribute effect. [malufett/Hercules]
  * montransform <monster name/ID>, <duration>, <sc type>, <val1>, <val2>, <val3>, <val4>;
- *------------------------------------------*/
+ * @param monster: Monster ID or name
+ * @param duration: Transform duration in millisecond (ms)
+ * @param sc_type: Type of SC that will be affected during the transformation
+ * @param val1: Value for SC
+ * @param val2: Value for SC
+ * @param val3: Value for SC
+ * @param val4: Value for SC
+ */
 BUILDIN_FUNC(montransform) {
 
 	TBL_PC *sd;
@@ -18175,17 +18194,17 @@ BUILDIN_FUNC(montransform) {
 			ShowWarning("buildin_montransform: Attempted to use non-existing monster '%s'.\n", script_getstr(st, 2));
 		else
 			ShowWarning("buildin_montransform: Attempted to use non-existing monster of ID '%d'.\n", script_getnum(st, 2));
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if (mob_id == MOBID_EMPERIUM) {
 		ShowWarning("buildin_montransform: Monster 'Emperium' cannot be used.\n");
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if (!(type > SC_NONE && type < SC_MAX)) {
 		ShowWarning("buildin_montransform: Unsupported status change id %d\n", type);
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	if (script_hasdata(st, 5))
@@ -18205,12 +18224,12 @@ BUILDIN_FUNC(montransform) {
 
 		if (battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m)) {
 			clif_displaymessage(sd->fd, msg_txt(sd,1500)); // Transforming into monster is not allowed in Guild Wars.
-			return 0;
+			return SCRIPT_CMD_FAILURE;
 		}
 
 		if (sd->disguise){
 			clif_displaymessage(sd->fd, msg_txt(sd,1498)); // Cannot transform into monster while in disguise.
-			return 0;
+			return SCRIPT_CMD_FAILURE;
 		}
 
 		sprintf(msg, msg_txt(sd,1497), monster->name); // Traaaansformation-!! %s form!!
@@ -18246,7 +18265,7 @@ BUILDIN_FUNC(bonus_script) {
 		sd = script_rid2sd(st);
 
 	if (sd == NULL)
-		return 0;
+		return SCRIPT_CMD_FAILURE;
 	
 	script_str = script_getstr(st,2);
 	dur = 1000 * abs(script_getnum(st,3));
@@ -18255,27 +18274,27 @@ BUILDIN_FUNC(bonus_script) {
 	FETCH(6,icon);
 
 	if (script_str[0] == '\0' || !dur) {
-		//ShowWarning("buildin_bonus_script: Invalid value(s). Skipping...\n");
-		return 0;
+		//ShowWarning("buildin_bonus_script: Invalid script. Skipping...\n");
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	//Skip duplicate entry
 	ARR_FIND(0,MAX_PC_BONUS_SCRIPT,i,&sd->bonus_script[i] && sd->bonus_script[i].script_str && strcmp(sd->bonus_script[i].script_str,script_str) == 0);
 	if (i < MAX_PC_BONUS_SCRIPT) {
 		//ShowWarning("buildin_bonus_script: Duplicate entry with bonus '%d'. Skipping...\n",i);
-		return 0;
+		return SCRIPT_CMD_SUCCESS;
 	}
 
 	if (!(script = parse_script(script_str,"bonus_script",0,1))) {
-		//ShowWarning("buildin_bonus_script: Failed to parse script '%s'. Skipping...\n",script_str);
-		return 0;
+		ShowWarning("buildin_bonus_script: Failed to parse script '%s' (cid:%d). Skipping...\n",script_str,sd->status.char_id);
+		return SCRIPT_CMD_FAILURE;
 	}
 
 	//Find the empty slot
 	ARR_FIND(0,MAX_PC_BONUS_SCRIPT,i,!sd->bonus_script[i].script);
 	if (i >= MAX_PC_BONUS_SCRIPT) {
-		ShowWarning("buildin_itemscript: Maximum script_bonus is reached (max: %d). Skipping...\n",MAX_PC_BONUS_SCRIPT);
-		return 0;
+		ShowWarning("buildin_itemscript: Maximum script_bonus is reached (cid:%d max: %d). Skipping...\n",sd->status.char_id,MAX_PC_BONUS_SCRIPT);
+		return SCRIPT_CMD_SUCCESS;
 	}
 
 	//Add the script data
@@ -18753,6 +18772,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(erasequest, "i"),
 	BUILDIN_DEF(completequest, "i"),
 	BUILDIN_DEF(checkquest, "i?"),
+	BUILDIN_DEF(isbegin_quest,"i"),
 	BUILDIN_DEF(changequest, "ii"),
 	BUILDIN_DEF(showevent, "ii"),
 

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 240 - 148
src/map/skill.c


+ 10 - 9
src/map/skill.h

@@ -119,10 +119,10 @@ struct skill_condition {
 		state,
 		spiritball,
 		itemid[MAX_SKILL_ITEM_REQUIRE],
-		amount[MAX_SKILL_ITEM_REQUIRE],
-		eqItem[MAX_SKILL_EQUIP_REQUIRE]; //max eq_item
-	uint8 status_count;
-	enum sc_type status[MAX_SKILL_STATUS_REQUIRE];
+		amount[MAX_SKILL_ITEM_REQUIRE];
+	short *eqItem;
+	enum sc_type *status;
+	uint8 status_count, eqItem_count;
 };
 
 struct s_skill_require {
@@ -138,10 +138,10 @@ struct s_skill_require {
 		state,
 		spiritball[MAX_SKILL_LEVEL],
 		itemid[MAX_SKILL_ITEM_REQUIRE],
-		amount[MAX_SKILL_ITEM_REQUIRE],
-		eqItem[MAX_SKILL_EQUIP_REQUIRE]; //max eq_item
-	uint8 status_count;
-	enum sc_type status[MAX_SKILL_STATUS_REQUIRE];
+		amount[MAX_SKILL_ITEM_REQUIRE];
+	short *eqItem;
+	enum sc_type *status;
+	uint8 status_count, eqItem_count;
 };
 
 /// Database skills
@@ -334,7 +334,7 @@ int skill_get_weapontype( uint16 skill_id );
 int skill_get_ammotype( uint16 skill_id );
 int skill_get_ammo_qty( uint16 skill_id, uint16 skill_lv );
 int skill_get_state(uint16 skill_id);
-int skill_get_status( uint16 skill_id, int idx );
+//int skill_get_status( uint16 skill_id, int idx );
 int skill_get_status_count( uint16 skill_id );
 int skill_get_spiritball( uint16 skill_id, uint16 skill_lv );
 int skill_get_itemid( uint16 skill_id, int idx );
@@ -1966,6 +1966,7 @@ struct s_skill_magicmushroom_db {
 };
 extern struct s_skill_magicmushroom_db skill_magicmushroom_db[MAX_SKILL_MAGICMUSHROOM_DB];
 int skill_maelstrom_suction(struct block_list *bl, va_list ap);
+int skill_check_shadowform(struct block_list *bl, int64 damage, int hit);
 /**
  * Ranger
  **/

+ 133 - 99
src/map/status.c

@@ -609,8 +609,8 @@ void initChangeTables(void)
 	/* Warlock */
 	add_sc( WL_WHITEIMPRISON	, SC_WHITEIMPRISON	);
 	set_sc_with_vfx( WL_FROSTMISTY	, SC_FREEZING		, SI_FROSTMISTY		, SCB_ASPD|SCB_SPEED|SCB_DEF|SCB_DEF2 );
-	set_sc( WL_MARSHOFABYSS		, SC_MARSHOFABYSS	, SI_MARSHOFABYSS	, SCB_SPEED|SCB_FLEE|SCB_DEF|SCB_MDEF );
-	set_sc(WL_RECOGNIZEDSPELL	, SC_RECOGNIZEDSPELL	, SI_RECOGNIZEDSPELL	, SCB_MATK);
+	set_sc( WL_MARSHOFABYSS		, SC_MARSHOFABYSS	, SI_MARSHOFABYSS	, SCB_AGI|SCB_DEX|SCB_SPEED );
+	set_sc( WL_RECOGNIZEDSPELL	, SC_RECOGNIZEDSPELL	, SI_RECOGNIZEDSPELL	, SCB_MATK);
 	set_sc( WL_STASIS		, SC_STASIS		, SI_STASIS		, SCB_NONE );
 	set_sc( WL_TELEKINESIS_INTENSE	, SC_TELEKINESIS_INTENSE, SI_TELEKINESIS_INTENSE, SCB_MATK );
 
@@ -618,7 +618,7 @@ void initChangeTables(void)
 	set_sc( RA_FEARBREEZE		, SC_FEARBREEZE		, SI_FEARBREEZE		, SCB_NONE );
 	set_sc( RA_ELECTRICSHOCKER	, SC_ELECTRICSHOCKER	, SI_ELECTRICSHOCKER	, SCB_NONE );
 	set_sc( RA_WUGDASH		, SC_WUGDASH		, SI_WUGDASH		, SCB_SPEED );
-	set_sc( RA_CAMOUFLAGE		, SC_CAMOUFLAGE		, SI_CAMOUFLAGE		, SCB_SPEED );
+	set_sc( RA_CAMOUFLAGE		, SC_CAMOUFLAGE		, SI_CAMOUFLAGE		, SCB_WATK|SCB_CRI|SCB_DEF|SCB_SPEED );
 	add_sc( RA_MAGENTATRAP		, SC_ELEMENTALCHANGE	);
 	add_sc( RA_COBALTTRAP		, SC_ELEMENTALCHANGE	);
 	add_sc( RA_MAIZETRAP		, SC_ELEMENTALCHANGE	);
@@ -658,7 +658,7 @@ void initChangeTables(void)
 	set_sc( SC_INVISIBILITY		, SC__INVISIBILITY	, SI_INVISIBILITY	, SCB_ASPD|SCB_CRI|SCB_ATK_ELE );
 	set_sc( SC_DEADLYINFECT		, SC__DEADLYINFECT	, SI_DEADLYINFECT	, SCB_NONE );
 	set_sc( SC_ENERVATION		, SC__ENERVATION	, SI_ENERVATION		, SCB_BATK  );
-	set_sc( SC_GROOMY		, SC__GROOMY		, SI_GROOMY		, SCB_ASPD|SCB_HIT|SCB_SPEED );
+	set_sc( SC_GROOMY		, SC__GROOMY		, SI_GROOMY		, SCB_ASPD|SCB_HIT );
 	set_sc( SC_IGNORANCE		, SC__IGNORANCE		, SI_IGNORANCE		, SCB_NONE );
 	set_sc( SC_LAZINESS		, SC__LAZINESS		, SI_LAZINESS		, SCB_FLEE );
 	set_sc( SC_UNLUCKY		, SC__UNLUCKY		, SI_UNLUCKY		, SCB_CRI|SCB_FLEE2 );
@@ -666,7 +666,7 @@ void initChangeTables(void)
 	set_sc( SC_STRIPACCESSARY	, SC__STRIPACCESSORY	, SI_STRIPACCESSARY	, SCB_DEX|SCB_INT|SCB_LUK );
 	set_sc_with_vfx( SC_MANHOLE	, SC__MANHOLE		, SI_MANHOLE		, SCB_NONE );
 	add_sc( SC_CHAOSPANIC		, SC_CONFUSION		);
-	add_sc( SC_BLOODYLUST		, SC_BERSERK		);
+	set_sc( SC_BLOODYLUST		, SC_BERSERK		, SI_BLOODYLUST		, SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK);
 
 	/* Sura */
 	add_sc( SR_DRAGONCOMBO			, SC_STUN		);
@@ -676,7 +676,7 @@ void initChangeTables(void)
 	set_sc( SR_LIGHTNINGWALK		, SC_LIGHTNINGWALK	, SI_LIGHTNINGWALK		, SCB_NONE );
 	set_sc( SR_RAISINGDRAGON		, SC_RAISINGDRAGON	, SI_RAISINGDRAGON		, SCB_REGEN|SCB_MAXHP|SCB_MAXSP );
 	set_sc( SR_GENTLETOUCH_ENERGYGAIN	, SC_GT_ENERGYGAIN	, SI_GENTLETOUCH_ENERGYGAIN	, SCB_NONE );
-	set_sc( SR_GENTLETOUCH_CHANGE		, SC_GT_CHANGE		, SI_GENTLETOUCH_CHANGE		, SCB_ASPD|SCB_MDEF|SCB_MAXHP );
+	set_sc( SR_GENTLETOUCH_CHANGE		, SC_GT_CHANGE		, SI_GENTLETOUCH_CHANGE		, SCB_WATK|SCB_MDEF|SCB_ASPD|SCB_MAXHP );
 	set_sc( SR_GENTLETOUCH_REVITALIZE	, SC_GT_REVITALIZE	, SI_GENTLETOUCH_REVITALIZE	, SCB_MAXHP|SCB_REGEN );
 	add_sc( SR_FLASHCOMBO			, SC_FLASHCOMBO );
 
@@ -696,8 +696,8 @@ void initChangeTables(void)
 	set_sc( WM_DANCE_WITH_WUG		, SC_DANCEWITHWUG		, SI_DANCEWITHWUG		, SCB_ASPD );
 	set_sc( WM_SATURDAY_NIGHT_FEVER		, SC_SATURDAYNIGHTFEVER		, SI_SATURDAYNIGHTFEVER		, SCB_BATK|SCB_DEF|SCB_FLEE|SCB_REGEN );
 	set_sc( WM_LERADS_DEW			, SC_LERADSDEW			, SI_LERADSDEW			, SCB_MAXHP );
-	set_sc( WM_MELODYOFSINK			, SC_MELODYOFSINK		, SI_MELODYOFSINK		, SCB_BATK|SCB_MATK );
-	set_sc( WM_BEYOND_OF_WARCRY		, SC_BEYONDOFWARCRY		, SI_WARCRYOFBEYOND		, SCB_BATK|SCB_MATK );
+	set_sc( WM_MELODYOFSINK			, SC_MELODYOFSINK		, SI_MELODYOFSINK		, SCB_INT );
+	set_sc( WM_BEYOND_OF_WARCRY		, SC_BEYONDOFWARCRY		, SI_WARCRYOFBEYOND		, SCB_STR|SCB_CRI|SCB_MAXHP );
 	set_sc( WM_UNLIMITED_HUMMING_VOICE	, SC_UNLIMITEDHUMMINGVOICE	, SI_UNLIMITEDHUMMINGVOICE	, SCB_NONE );
 	set_sc( WM_FRIGG_SONG			, SC_FRIGG_SONG			, SI_FRIGG_SONG			, SCB_MAXHP );
 
@@ -721,8 +721,8 @@ void initChangeTables(void)
 	set_sc( GN_THORNS_TRAP			, SC_THORNSTRAP		, SI_THORNTRAP			, SCB_NONE );
 	set_sc_with_vfx( GN_BLOOD_SUCKER	, SC_BLOODSUCKER	, SI_BLOODSUCKER		, SCB_NONE );
 	add_sc( GN_WALLOFTHORN			, SC_STOP		);
-	set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER	, SC_SMOKEPOWDER	, SI_FIRE_EXPANSION_SMOKE_POWDER, SCB_NONE );
-	set_sc( GN_FIRE_EXPANSION_TEAR_GAS	, SC_TEARGAS		, SI_FIRE_EXPANSION_TEAR_GAS	, SCB_NONE );
+	set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER	, SC_SMOKEPOWDER	, SI_FIRE_EXPANSION_SMOKE_POWDER, SCB_FLEE );
+	set_sc( GN_FIRE_EXPANSION_TEAR_GAS	, SC_TEARGAS		, SI_FIRE_EXPANSION_TEAR_GAS	, SCB_HIT|SCB_FLEE );
 	set_sc( GN_MANDRAGORA			, SC_MANDRAGORA		, SI_MANDRAGORA			, SCB_INT );
 	set_sc_with_vfx( GN_ILLUSIONDOPING	, SC_ILLUSIONDOPING	, SI_ILLUSIONDOPING		, SCB_HIT );
 
@@ -2547,6 +2547,8 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 			//Decreasing
 			if(sc->data[SC_VENOMBLEED])
 				bonus -= 15;
+			if(sc->data[SC_BEYONDOFWARCRY])
+				bonus -= sc->data[SC_BEYONDOFWARCRY]->val4;
 			if(sc->data[SC__WEAKNESS])
 				bonus -= sc->data[SC__WEAKNESS]->val2;
 			if(sc->data[SC_MYSTERIOUS_POWDER])
@@ -2760,6 +2762,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
 		+ sizeof(sd->magic_atk_ele)
 		+ sizeof(sd->critaddrace)
 		+ sizeof(sd->expaddrace)
+		+ sizeof(sd->expaddclass)
 		+ sizeof(sd->ignore_def_by_race)
 		+ sizeof(sd->ignore_mdef_by_race)
 		+ sizeof(sd->ignore_mdef_by_class)
@@ -2795,7 +2798,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
 	}
 	status->aspd_rate = 1000;
 	status->ele_lv = 1;
-	status->race = RC_DEMIHUMAN;
+	status->race = RC_PLAYER;
 	status->class_ = CLASS_NORMAL;
 
 	// Zero up structures...
@@ -4665,10 +4668,12 @@ static unsigned short status_calc_str(struct block_list *bl, struct status_chang
 		str += ((sc->data[SC_MARIONETTE2]->val3)>>16)&0xFF;
 	if(sc->data[SC_GIANTGROWTH])
 		str += 30;
+	if(sc->data[SC_BEYONDOFWARCRY])
+		str -= sc->data[SC_BEYONDOFWARCRY]->val3;
 	if(sc->data[SC_SAVAGE_STEAK])
 		str += sc->data[SC_SAVAGE_STEAK]->val1;
 	if(sc->data[SC_INSPIRATION])
-		str += sc->data[SC_INSPIRATION]->val3;
+		str += sc->data[SC_INSPIRATION]->val2;
 	if(sc->data[SC_STOMACHACHE])
 		str -= sc->data[SC_STOMACHACHE]->val1;
 	if(sc->data[SC_KYOUGAKU])
@@ -4727,10 +4732,12 @@ static unsigned short status_calc_agi(struct block_list *bl, struct status_chang
 		agi += ((sc->data[SC_MARIONETTE2]->val3)>>8)&0xFF;
 	if(sc->data[SC_ADORAMUS])
 		agi -= sc->data[SC_ADORAMUS]->val2;
+	if(sc->data[SC_MARSHOFABYSS])
+		agi -= agi * sc->data[SC_MARSHOFABYSS]->val2 / 100;
 	if(sc->data[SC_DROCERA_HERB_STEAMED])
 		agi += sc->data[SC_DROCERA_HERB_STEAMED]->val1;
 	if(sc->data[SC_INSPIRATION])
-		agi += sc->data[SC_INSPIRATION]->val3;
+		agi += sc->data[SC_INSPIRATION]->val2;
 	if(sc->data[SC_STOMACHACHE])
 		agi -= sc->data[SC_STOMACHACHE]->val1;
 	if(sc->data[SC_KYOUGAKU])
@@ -4782,7 +4789,7 @@ static unsigned short status_calc_vit(struct block_list *bl, struct status_chang
 	if(sc->data[SC_MINOR_BBQ])
 		vit += sc->data[SC_MINOR_BBQ]->val1;
 	if(sc->data[SC_INSPIRATION])
-		vit += sc->data[SC_INSPIRATION]->val3;
+		vit += sc->data[SC_INSPIRATION]->val2;
 	if(sc->data[SC_STOMACHACHE])
 		vit -= sc->data[SC_STOMACHACHE]->val1;
 	if(sc->data[SC_KYOUGAKU])
@@ -4843,12 +4850,14 @@ static unsigned short status_calc_int(struct block_list *bl, struct status_chang
 		int_ -= ((sc->data[SC_MARIONETTE]->val4)>>16)&0xFF;
 	if(sc->data[SC_MARIONETTE2])
 		int_ += ((sc->data[SC_MARIONETTE2]->val4)>>16)&0xFF;
+	if(sc->data[SC_MELODYOFSINK])
+		int_ -= sc->data[SC_MELODYOFSINK]->val3;
 	if(sc->data[SC_MANDRAGORA])
-		int_ -= 5 + 5 * sc->data[SC_MANDRAGORA]->val1;
+		int_ -= 4 * sc->data[SC_MANDRAGORA]->val1;
 	if(sc->data[SC_COCKTAIL_WARG_BLOOD])
 		int_ += sc->data[SC_COCKTAIL_WARG_BLOOD]->val1;
 	if(sc->data[SC_INSPIRATION])
-		int_ += sc->data[SC_INSPIRATION]->val3;
+		int_ += sc->data[SC_INSPIRATION]->val2;
 	if(sc->data[SC_STOMACHACHE])
 		int_ -= sc->data[SC_STOMACHACHE]->val1;
 	if(sc->data[SC_KYOUGAKU])
@@ -4917,7 +4926,7 @@ static unsigned short status_calc_dex(struct block_list *bl, struct status_chang
 	if(sc->data[SC_SIROMA_ICE_TEA])
 		dex += sc->data[SC_SIROMA_ICE_TEA]->val1;
 	if(sc->data[SC_INSPIRATION])
-		dex += sc->data[SC_INSPIRATION]->val3;
+		dex += sc->data[SC_INSPIRATION]->val2;
 	if(sc->data[SC_STOMACHACHE])
 		dex -= sc->data[SC_STOMACHACHE]->val1;
 	if(sc->data[SC_KYOUGAKU])
@@ -4925,6 +4934,8 @@ static unsigned short status_calc_dex(struct block_list *bl, struct status_chang
 
 	if(sc->data[SC__STRIPACCESSORY] && bl->type != BL_PC)
 		dex -= dex * sc->data[SC__STRIPACCESSORY]->val2 / 100;
+	if(sc->data[SC_MARSHOFABYSS])
+		dex -= dex * sc->data[SC_MARSHOFABYSS]->val2 / 100;
 	if(sc->data[SC_FULL_THROTTLE])
 		dex += dex * 20 / 100;
 
@@ -4970,7 +4981,7 @@ static unsigned short status_calc_luk(struct block_list *bl, struct status_chang
 	if(sc->data[SC_PUTTI_TAILS_NOODLES])
 		luk += sc->data[SC_PUTTI_TAILS_NOODLES]->val1;
 	if(sc->data[SC_INSPIRATION])
-		luk += sc->data[SC_INSPIRATION]->val3;
+		luk += sc->data[SC_INSPIRATION]->val2;
 	if(sc->data[SC_STOMACHACHE])
 		luk -= sc->data[SC_STOMACHACHE]->val1;
 	if(sc->data[SC_KYOUGAKU])
@@ -5046,14 +5057,12 @@ static unsigned short status_calc_batk(struct block_list *bl, struct status_chan
 		batk += batk * sc->data[SC_FLEET]->val3/100;
 	if(sc->data[SC__ENERVATION])
 		batk -= batk * sc->data[SC__ENERVATION]->val2 / 100;
+	if(sc->data[SC__BLOODYLUST])
+		batk += batk * 32 / 100;
 	if(sc->data[SC_RUSHWINDMILL])
-		batk += batk * sc->data[SC_RUSHWINDMILL]->val2/100;
+		batk += batk * sc->data[SC_RUSHWINDMILL]->val3/100;
 	if(sc->data[SC_SATURDAYNIGHTFEVER])
 		batk += 100 * sc->data[SC_SATURDAYNIGHTFEVER]->val1;
-	if(sc->data[SC_MELODYOFSINK])
-		batk -= batk * sc->data[SC_MELODYOFSINK]->val3/100;
-	if(sc->data[SC_BEYONDOFWARCRY])
-		batk += batk * sc->data[SC_BEYONDOFWARCRY]->val3/100;
 	if( sc->data[SC_ZANGETSU] )
 		batk += batk * sc->data[SC_ZANGETSU]->val2 / 100;
 	if(sc->data[SC_EQC])
@@ -5091,9 +5100,15 @@ static unsigned short status_calc_watk(struct block_list *bl, struct status_chan
 	if(sc->data[SC_SHIELDSPELL_DEF] && sc->data[SC_SHIELDSPELL_DEF]->val1 == 3)
 		watk += sc->data[SC_SHIELDSPELL_DEF]->val2;
 	if(sc->data[SC_INSPIRATION])
-		watk += sc->data[SC_INSPIRATION]->val2;
+		watk += (sc->data[SC_INSPIRATION]->val1 * 40) + (sc->data[SC_INSPIRATION]->val2 * 3);
 	if( sc->data[SC_BANDING] && sc->data[SC_BANDING]->val2 > 0 )
 		watk += (10 + 10 * sc->data[SC_BANDING]->val1) * (sc->data[SC_BANDING]->val2);
+	if( sc->data[SC_GT_CHANGE] )
+		watk += sc->data[SC_GT_CHANGE]->val2;
+	if( sc->data[SC_CAMOUFLAGE] )
+		watk += 30 * sc->data[SC_CAMOUFLAGE]->val2;
+	if(sc->data[SC__BLOODYLUST])
+		watk += watk * 32 / 100;
 	if( sc->data[SC_TROPIC_OPTION] )
 		watk += sc->data[SC_TROPIC_OPTION]->val2;
 	if( sc->data[SC_HEATER_OPTION] )
@@ -5216,11 +5231,7 @@ static unsigned short status_calc_matk(struct block_list *bl, struct status_chan
 	if (sc->data[SC_INCMATKRATE])
 		matk += matk * sc->data[SC_INCMATKRATE]->val1/100;
 	if (sc->data[SC_MOONLITSERENADE])
-		matk += matk * sc->data[SC_MOONLITSERENADE]->val2/100;
-	if (sc->data[SC_MELODYOFSINK])
-		matk += matk * sc->data[SC_MELODYOFSINK]->val3/100;
-	if (sc->data[SC_BEYONDOFWARCRY])
-		matk -= matk * sc->data[SC_BEYONDOFWARCRY]->val3/100;
+		matk += matk * sc->data[SC_MOONLITSERENADE]->val3;
 	if (sc->data[SC_ZANGETSU])
 		matk += matk * sc->data[SC_ZANGETSU]->val2 / 100;
 	if (sc->data[SC_MTF_MATK])
@@ -5252,16 +5263,19 @@ static signed short status_calc_critical(struct block_list *bl, struct status_ch
 	if (sc->data[SC_CLOAKING])
 		critical += critical;
 	if (sc->data[SC_STRIKING])
-		critical += sc->data[SC_STRIKING]->val1*10;
+		critical += critical * sc->data[SC_STRIKING]->val1 / 100;
 #ifdef RENEWAL
 	if (sc->data[SC_SPEARQUICKEN])
 		critical += 3*sc->data[SC_SPEARQUICKEN]->val1*10;
 #endif
-
+	if(sc->data[SC_CAMOUFLAGE])
+		critical += critical * ( 10 * sc->data[SC_CAMOUFLAGE]->val2 ) / 100;
 	if (sc->data[SC__INVISIBILITY])
 		critical += critical * sc->data[SC__INVISIBILITY]->val3 / 100;
 	if (sc->data[SC__UNLUCKY])
 		critical -= critical * sc->data[SC__UNLUCKY]->val2 / 100;
+	if(sc->data[SC_BEYONDOFWARCRY])
+		critical -= sc->data[SC_BEYONDOFWARCRY]->val3;
 
 	return (short)cap_value(critical,10,SHRT_MAX);
 }
@@ -5289,7 +5303,7 @@ static signed short status_calc_hit(struct block_list *bl, struct status_change
 	if(sc->data[SC_CONCENTRATION])
 		hit += sc->data[SC_CONCENTRATION]->val3;
 	if(sc->data[SC_INSPIRATION])
-		hit += 5 * sc->data[SC_INSPIRATION]->val1;
+		hit += (5 * sc->data[SC_INSPIRATION]->val1) + (sc->data[SC_INSPIRATION]->val3 / 2);
 	if(sc->data[SC_ADJUSTMENT])
 		hit -= 30;
 	if(sc->data[SC_INCREASING])
@@ -5307,6 +5321,8 @@ static signed short status_calc_hit(struct block_list *bl, struct status_change
 		hit -= hit * 20 / 100;
 	if (sc->data[SC_ASH])
 		hit -= (hit * sc->data[SC_ASH]->val2) / 100;
+	if (sc->data[SC_TEARGAS])
+		hit -= hit * 50 / 100;
 	if(sc->data[SC_ILLUSIONDOPING])
 		hit -= hit * (5 + sc->data[SC_ILLUSIONDOPING]->val1) / 100; // Custom
 	if(sc->data[SC_HEAT_BARREL])
@@ -5370,8 +5386,6 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change
 		flee += sc->data[SC_HALLUCINATIONWALK]->val2;
 	if( sc->data[SC_WATER_BARRIER] )
 		flee -= sc->data[SC_WATER_BARRIER]->val3;
-	if( sc->data[SC_MARSHOFABYSS] )
-		flee -= (9 * sc->data[SC_MARSHOFABYSS]->val3 / 10 + sc->data[SC_MARSHOFABYSS]->val2 / 10) * (bl->type == BL_MOB ? 2 : 1);
 #ifdef RENEWAL
 	if( sc->data[SC_SPEARQUICKEN] )
 		flee += 2 * sc->data[SC_SPEARQUICKEN]->val1;
@@ -5394,7 +5408,7 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change
 	if( sc->data[SC__LAZINESS] )
 		flee -= flee * sc->data[SC__LAZINESS]->val3 / 100;
 	if( sc->data[SC_GLOOMYDAY] )
-		flee -= flee * sc->data[SC_GLOOMYDAY]->val2 / 100;
+		flee -= sc->data[SC_GLOOMYDAY]->val2;
 	if( sc->data[SC_SATURDAYNIGHTFEVER] )
 		flee -= flee * (40 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100;
 	if( sc->data[SC_WIND_STEP_OPTION] )
@@ -5405,6 +5419,10 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change
 		flee -= flee * sc->data[SC_ASH]->val4 / 100;
 	if (sc->data[SC_GOLDENE_FERSE])
 		flee += flee * sc->data[SC_GOLDENE_FERSE]->val2 / 100;
+	if (sc->data[SC_SMOKEPOWDER])
+		flee += flee * 20 / 100;
+	if (sc->data[SC_TEARGAS])
+		flee -= flee * 50 / 100;
 
 	return (short)cap_value(flee,1,SHRT_MAX);
 }
@@ -5494,14 +5512,16 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
 		def -= def * (sc->data[SC_FLING]->val2)/100;
 	if( sc->data[SC_FREEZING] )
 		def -= def * 10 / 100;
-	if( sc->data[SC_MARSHOFABYSS] )
-		def -= def * ( 6 + 6 * sc->data[SC_MARSHOFABYSS]->val3/10 + (bl->type == BL_MOB ? 5 : 3) * sc->data[SC_MARSHOFABYSS]->val2/36 ) / 100;
+	if(sc->data[SC_CAMOUFLAGE])
+		def -= def * ( 5 * sc->data[SC_CAMOUFLAGE]->val2 ) / 100;
 	if( sc->data[SC_ANALYZE] )
 		def -= def * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
 	if( sc->data[SC_FORCEOFVANGUARD] )
 		def += def * 2 * sc->data[SC_FORCEOFVANGUARD]->val1 / 100;
 	if( sc->data[SC_NEUTRALBARRIER] )
 		def += def * (10 + sc->data[SC_NEUTRALBARRIER]->val1 * 5) / 100;
+	if( sc->data[SC__BLOODYLUST] )
+		def -= def * 55 / 100;
 	if(sc->data[SC_SATURDAYNIGHTFEVER])
 		def -= def * (10 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100;
 	if(sc->data[SC_EARTHDRIVE])
@@ -5511,7 +5531,7 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
 	if( sc->data[SC_POWER_OF_GAIA] )
 		def += def * sc->data[SC_POWER_OF_GAIA]->val2 / 100;
 	if( sc->data[SC_PRESTIGE] )
-		def += def * sc->data[SC_PRESTIGE]->val1 / 100;
+		def += sc->data[SC_PRESTIGE]->val1;
 	if(sc->data[SC_ASH])
 		def -= def * sc->data[SC_ASH]->val3/100;
 	if( sc->data[SC_OVERED_BOOST] )
@@ -5569,11 +5589,11 @@ static signed short status_calc_def2(struct block_list *bl, struct status_change
 	if(sc->data[SC_FLING])
 		def2 -= def2 * (sc->data[SC_FLING]->val3)/100;
 	if( sc->data[SC_FREEZING] )
-		def2 -= def2 * 3 / 10;
+		def2 -= def2 * 10 / 100;
 	if(sc->data[SC_ANALYZE])
 		def2 -= def2 * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
 	if( sc->data[SC_ECHOSONG] )
-		def2 += def2 * sc->data[SC_ECHOSONG]->val2/100;
+		def2 += def2 * sc->data[SC_ECHOSONG]->val3 / 100;
 	if(sc->data[SC_ASH])
 		def2 -= def2 * sc->data[SC_ASH]->val3/100;
 	if (sc->data[SC_PARALYSIS])
@@ -5630,14 +5650,12 @@ static defType status_calc_mdef(struct block_list *bl, struct status_change *sc,
 		mdef += 25*mdef/100;
 	if( sc->data[SC_NEUTRALBARRIER] )
 		mdef += mdef * (10 + sc->data[SC_NEUTRALBARRIER]->val1 * 5) / 100;
-	if( sc->data[SC_MARSHOFABYSS] )
-		mdef -= mdef * ( 6 + 6 * sc->data[SC_MARSHOFABYSS]->val3/10 + (bl->type == BL_MOB ? 5 : 3) * sc->data[SC_MARSHOFABYSS]->val2/36 ) / 100;
 	if(sc->data[SC_ANALYZE])
 		mdef -= mdef * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
 	if(sc->data[SC_SYMPHONYOFLOVER])
-		mdef += mdef * sc->data[SC_SYMPHONYOFLOVER]->val2 / 100;
+		mdef += mdef * sc->data[SC_SYMPHONYOFLOVER]->val3 / 100;
 	if(sc->data[SC_GT_CHANGE] && sc->data[SC_GT_CHANGE]->val4)
-		mdef -= mdef * sc->data[SC_GT_CHANGE]->val4 / 100;
+		mdef -= sc->data[SC_GT_CHANGE]->val4;
 	if (sc->data[SC_ODINS_POWER])
 		mdef -= 20;
 
@@ -5697,7 +5715,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
 
 	if( sd && sd->ud.skilltimer != INVALID_TIMER && (pc_checkskill(sd,SA_FREECAST) > 0 || sd->ud.skill_id == LG_EXEEDBREAK) ) {
 		if( sd->ud.skill_id == LG_EXEEDBREAK )
-			speed_rate = 100 + 60 - (sd->ud.skill_lv * 10);
+			speed_rate = 160 - 10 * sd->ud.skill_lv;
 		else
 			speed_rate = 175 - 5 * pc_checkskill(sd,SA_FREECAST);
 	} else {
@@ -5712,7 +5730,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
 			else if( pc_isridingwug(sd) )
 				val = 15 + 5 * pc_checkskill(sd, RA_WUGRIDER);
 			else if( pc_ismadogear(sd) ) {
-				val = (- 10 * (5 - pc_checkskill(sd,NC_MADOLICENCE)));
+				val = -(50 - 10 * pc_checkskill(sd,NC_MADOLICENCE));
 				if( sc->data[SC_ACCELERATION] )
 					val += 25;
 			}
@@ -5760,13 +5778,11 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
 			if( sc->data[SC_SWOO] )
 				val = max( val, 300 );
 			if( sc->data[SC_FREEZING] )
-				val = max( val, 70 );
+				val = max( val, 50 );
 			if( sc->data[SC_MARSHOFABYSS] )
-				val = max( val, 40 + 10 * sc->data[SC_MARSHOFABYSS]->val1 );
+				val = max( val, sc->data[SC_MARSHOFABYSS]->val3 );
 			if( sc->data[SC_CAMOUFLAGE] )
-				val = max( val, sc->data[SC_CAMOUFLAGE]->val1 < 3 ? 0 : 25 * (5 - sc->data[SC_CAMOUFLAGE]->val1) );
-			if( sc->data[SC__GROOMY] )
-				val = max( val, sc->data[SC__GROOMY]->val2);
+				val = max( val, sc->data[SC_CAMOUFLAGE]->val1 < 3 ? 0 : 25 * sc->data[SC_CAMOUFLAGE]->val1 );
 			if( sc->data[SC_STEALTHFIELD_MASTER] )
 				val = max( val, 30 );
 			if( sc->data[SC_BANDING_DEFENCE] )
@@ -5816,7 +5832,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
 		if( sc->data[SC_GN_CARTBOOST] )
 			val = max( val, sc->data[SC_GN_CARTBOOST]->val2 );
 		if( sc->data[SC_SWINGDANCE] )
-			val = max( val, sc->data[SC_SWINGDANCE]->val2 );
+			val = max( val, sc->data[SC_SWINGDANCE]->val3 );
 		if( sc->data[SC_WIND_STEP_OPTION] )
 			val = max( val, sc->data[SC_WIND_STEP_OPTION]->val2 );
 		if( sc->data[SC_FULL_THROTTLE] )
@@ -5956,8 +5972,6 @@ static short status_calc_aspd(struct block_list *bl, struct status_change *sc, s
 		skills2 -=  2 + 5 * sc->data[SC__BODYPAINT]->val1;
 	if( sc->data[SC__INVISIBILITY] )
 		skills2 -= sc->data[SC__INVISIBILITY]->val2 ;
-	if( sc->data[SC__GROOMY] )
-		skills2 -= sc->data[SC__GROOMY]->val2;
 	if( sc->data[SC_SWINGDANCE] )
 		skills2 += sc->data[SC_SWINGDANCE]->val2;
 	if( sc->data[SC_DANCEWITHWUG] )
@@ -7050,7 +7064,7 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
 				tick_def2 = status->agi*100;
 			break;
 		case SC_CRYSTALIZE:
-			tick_def2 = status->vit*100 + status_get_lv(bl)*20;
+			tick_def2 = status->vit*100;
 			break;
 		case SC_MANDRAGORA:
 			sc_def = (status->vit + status->luk)*20;
@@ -7062,7 +7076,7 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
 			tick_def2 = (status->vit + status->luk)*50;
 			break;
 		case SC_VOICEOFSIREN:
-			tick_def2 = (status_get_lv(bl) * 100) + ((bl->type == BL_PC)?((TBL_PC*)bl)->status.job_level : 0);
+			tick_def2 = (status_get_lv(bl) * 100) + ((bl->type == BL_PC)?((TBL_PC*)bl)->status.job_level * 20 : 0);
 			break;
 		default:
 			// Effect that cannot be reduced? Likely a buff.
@@ -8919,6 +8933,13 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			val2 = 50 * val1; // Evasion rate of physical attacks. Flee
 			val3 = 10 * val1; // Evasion rate of magical attacks.
 			break;
+		case SC_MARSHOFABYSS:
+			if( bl->type == BL_PC )
+				val2 = 3 * val1; // AGI and DEX Reduction
+			else // BL_MOB
+				val2 = 6 * val1; // AGI and DEX Reduction
+			val3 = 10 * val1; // Movement Speed Reduction
+			break;
 		case SC_READING_SB:
 			// val2 = sp reduction per second
 			tick_time = 5000; // [GodLesZ] tick time
@@ -8983,7 +9004,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			if( sd ) pc_delspiritball(sd,sd->spiritball,0);
 			break;
 		case SC__GROOMY:
-			val2 = 20 + 10 * val1; // ASPD. Need to confirm if Movement Speed reduction is the same. [Jobbie]
+			val2 = 20 + 10 * val1; // ASPD
 			val3 = 20 * val1; // HIT
 			if( sd ) { // Removes Animals
 				if( pc_isriding(sd) ) pc_setriding(sd, 0);
@@ -8993,7 +9014,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				if( pc_isfalcon(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_FALCON);
 				if( sd->status.pet_id > 0 ) pet_menu(sd, 3);
 				if( merc_is_hom_active(sd->hd) ) merc_hom_vaporize(sd,HOM_ST_REST);
-				if( sd->md ) merc_delete(sd->md,3);
+				//if( sd->md ) merc_delete(sd->md,3); // Are Mercenaries removed? [aleos]
 			}
 			break;
 		case SC__LAZINESS:
@@ -9045,17 +9066,17 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			tick_time = 100; // [GodLesZ] tick time
 			break;
 		case SC_SWINGDANCE:
-			val2 = 4 * val1; // Walk speed and aspd reduction.
+			val3 = (5 * val1) + val2; // Walk speed and aspd reduction.
 			break;
 		case SC_SYMPHONYOFLOVER:
-		case SC_RUSHWINDMILL:
-		case SC_ECHOSONG:
-			val2 = 6 * val1;
-			val2 += val3; // Adding 1% * Lesson Bonus
-			val2 += (int)(val4*2/10); // Adding 0.2% per JobLevel
+			val3 = (12 * val1) + val2 + ((sd?sd->status.job_level:50) / 4); // MDEF Increase in %
 			break;
-		case SC_MOONLITSERENADE:
-			val2 = 10 * val1;
+		case SC_MOONLITSERENADE: // MATK Increase
+		case SC_RUSHWINDMILL: // ATK Increase
+			val3 = (6 * val1) + val2 + ((sd?sd->status.job_level:50) / 5);
+			break;
+		case SC_ECHOSONG:
+			val3 = (6 * val1) + val2 + ((sd?sd->status.job_level:50) / 4); // DEF Increase in %
 			break;
 		case SC_HARMONIZE:
 			val2 = 5 + 5 * val1;
@@ -9069,15 +9090,15 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			tick_time = 2000; // [GodLesZ] tick time
 			break;
 		case SC_SIRCLEOFNATURE:
-			val2 = 1 + val1; // SP consume
+			val2 = 4 + val1; // SP consume
 			val3 = 40 * val1;	// HP recovery
 			val4 = tick / 1000;
 			tick_time = 1000; // [GodLesZ] tick time
 			break;
 		case SC_SONGOFMANA:
-			val3 = 10 + (2 * val2);
-			val4 = tick/3000;
-			tick_time = 3000; // [GodLesZ] tick time
+			val3 = 10 + (5 * val2);
+			val4 = tick/5000;
+			tick_time = 5000; // [GodLesZ] tick time
 			break;
 		case SC_SATURDAYNIGHTFEVER:
 			if (!val4) val4 = skill_get_time2(status_sc2skill(type),val1);
@@ -9107,23 +9128,27 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			}
 			break;
 		case SC_DANCEWITHWUG:
-			val3 = (5 * val1) + (1 * val2); // Still need official value.
+			val3 = 5 + 5 * val2; // ASPD Increase
+			val4 = 20 + 10 * val2; // Fixed Cast Time Reduction
 			break;
 		case SC_LERADSDEW:
-			val3 = (5 * val1) + (1 * val2);
+			val3 = 200 * val1 + 300 * val2; // MaxHP Increase
 			break;
 		case SC_MELODYOFSINK:
-			val3 = (5 * val1) + (1 * val2);
+			val3 = val1 * 2 + val2; // INT Reduction.
+			val4 = tick/1000;
+			tick_time = 1000;
 			break;
 		case SC_BEYONDOFWARCRY:
-			val3 = (5 * val1) + (1 * val2);
+			val3 = val1 * (2 + val2); // STR and CRIT Reduction
+			val4 = 4 * val1 + 4 * val2; // MaxHP Reduction
 			break;
 		case SC_UNLIMITEDHUMMINGVOICE:
 			{
 				struct unit_data *ud = unit_bl2ud(bl);
 				if( ud == NULL ) return 0;
 				ud->state.skillcastcancel = 0;
-				val3 = 15 - (2 * val2);
+				val3 = 15 - (3 * val2);
 			}
 			break;
 		case SC_REFLECTDAMAGE:
@@ -9136,22 +9161,22 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			val2 = 8 + (12 * val1); // Chance
 			val3 = 5 + (2 * val1); // Max rage counters
 			tick = -1; // Endless duration in the client
-			tick_time = 6000; // [GodLesZ] tick time
+			tick_time = 10000; // [GodLesZ] tick time
 			break;
 		case SC_EXEEDBREAK:
-			val1 *= 150; // 150 * skill_lv
+			val1 *= 100; // 100 * skill_lv
 			if( sd && sd->inventory_data[sd->equip_index[EQI_HAND_R]] ) {  // Chars.
 				val1 += (sd->inventory_data[sd->equip_index[EQI_HAND_R]]->weight/10 * sd->inventory_data[sd->equip_index[EQI_HAND_R]]->wlv * status_get_lv(bl) / 100);
-			val1 += 15 * (sd ? sd->status.job_level:50) + 100;
+				val1 += 10 * sd->status.job_level;
 			}
 			else	// Mobs
-				val1 += (400 * status_get_lv(bl) / 100) + (15 * (status_get_lv(bl) / 2));	// About 1138% at mob_lvl 99. Is an aproximation to a standard weapon. [pakpil]
+				val1 += 500;
 			break;
-		case SC_PRESTIGE:	// Bassed on suggested formula in iRO Wiki and some test, still need more test. [pakpil]
-			val2 = ((status->int_ + status->luk) / 6) + 5;	// Chance to evade magic damage.
+		case SC_PRESTIGE:
+			val2 = (status->int_ + status->luk) * (val1 / 20) * (status_get_lv(bl) / 200) + val1;	// Chance to evade magic damage.
 			val1 *= 15; // Defence added
 			if( sd )
-				val1 += 10 * pc_checkskill(sd,CR_DEFENDER);
+				val1 += (10 * pc_checkskill(sd,CR_DEFENDER)) * (status_get_lv(bl) / 100);
 			break;
 		case SC_BANDING:
 			tick_time = 5000; // [GodLesZ] tick time
@@ -9162,11 +9187,11 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			break;
 		case SC_INSPIRATION:
 			if( sd ) {
-				val2 = (40 * val1) + (3 * sd->status.job_level); // ATK bonus
-				val3 = (sd->status.job_level / 10) * 2 + 12; // All stat bonus
+				val2 = (status_get_lv(bl) / 10) + ((sd?sd->status.job_level:50) / 5); // All stat bonus
+				val3 = (sd?sd->status.job_level:50);
 			}
-			val4 = tick / 1000;
-			tick_time = 1000; // [GodLesZ] tick time
+			val4 = tick / 5000;
+			tick_time = 5000; // [GodLesZ] tick time
 			status_change_clear_buffs(bl,3); // Remove buffs/debuffs
 			break;
 		case SC_CRESCENTELBOW:
@@ -9183,15 +9208,18 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 		case SC_GT_CHANGE:
 			{ // Take note there is no def increase as skill desc says. [malufett]
 				struct block_list * src;
+				val2 = (status->str / 2 + status->dex / 4) * val1 / 5; // Fixed amount of weapon attack increase.
 				val3 = status->agi * val1 / 60; // ASPD increase: [(Target AGI x Skill Level) / 60] %
 				if( (src = map_id2bl(val2)) )
 					val4 = ( 200/status_get_int(src) ) * val1; // MDEF decrease: MDEF [(200 / Caster INT) x Skill Level]
+				if( val4 < 0 )
+					val4 = 0;
 			}
 			break;
 		case SC_GT_REVITALIZE:
 			{ // Take note there is no vit,aspd,speed increase as skill desc says. [malufett]
 				struct block_list * src;
-				val3 = val1 * 30 + 150; // Natural HP recovery increase: [(Skill Level x 30) + 50] %
+				val3 = val1 * 30 + 50; // Natural HP recovery increase: [(Skill Level x 30) + 50] %
 				if( (src = map_id2bl(val2)) ) // The stat def is not shown in the status window and it is process differently
 					val4 = ( status_get_vit(src)/4 ) * val1; // STAT DEF increase: [(Caster VIT / 4) x Skill Level]
 			}
@@ -11348,8 +11376,8 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
 		break;
 
 	case SC_DEEPSLEEP:
-		if( --(sce->val4) >= 0 ) { // Recovers 1% HP/SP every 2 seconds.
-			status_heal(bl, status->max_hp / 100, status->max_sp / 100, 2);
+		if( --(sce->val4) >= 0 ) { // Recovers 3% HP/SP every 2 seconds.
+			status_heal(bl, status->max_hp * 3 / 100, status->max_sp * 3 / 100, 2);
 			sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
 			return 0;
 		}
@@ -11357,9 +11385,9 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
 
 	case SC_SIRCLEOFNATURE:
 		if( --(sce->val4) >= 0 ) {
-			if( !status_charge(bl,0,sce->val2) )
+			if( !status_charge(bl,0,sce->val3) )
 				break;
-			status_heal(bl, sce->val3, 0, 1);
+			status_heal(bl, sce->val2, 0, 1);
 			sc_timer_next(1000 + tick, status_change_timer, bl->id, data);
 			return 0;
 		}
@@ -11368,7 +11396,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
 	case SC_SONGOFMANA:
 		if( --(sce->val4) >= 0 ) {
 			status_heal(bl,0,sce->val3,3);
-			sc_timer_next(3000 + tick, status_change_timer, bl->id, data);
+			sc_timer_next(5000 + tick, status_change_timer, bl->id, data);
 			return 0;
 		}
 		break;
@@ -11377,15 +11405,21 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
 	case SC_SATURDAYNIGHTFEVER:
 		// 1% HP/SP drain every val4 seconds [Jobbie]
 		if( --(sce->val3) >= 0 ) {
-			int hp = status->hp / 100;
-			int sp = status->sp / 100;
-			if( !status_charge(bl, hp, sp) )
+			if( !status_charge(bl, status->hp / 100, status->sp / 100) )
 				break;
 			sc_timer_next(sce->val4+tick, status_change_timer, bl->id, data);
 			return 0;
 		}
 		break;
 
+	case SC_MELODYOFSINK:
+		if( --(sce->val4) >= 0 ) {
+			status_charge(bl, 0, status->max_sp * ( 2 * sce->val1 + 2 * sce->val2 ) / 100);
+			sc_timer_next(1000+tick, status_change_timer, bl->id, data);
+			return 0;
+		}
+		break;
+
 	case SC_CRYSTALIZE:
 		if( --(sce->val4) >= 0 ) { // Drains 2% of HP and 1% of SP every seconds.
 			if( bl->type != BL_MOB) // Doesn't work on mobs
@@ -11396,7 +11430,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
 		break;
 
 	case SC_FORCEOFVANGUARD:
-		if( !status_charge(bl,0,24 - (4 * sce->val1)) )
+		if( !status_charge(bl,0,24 - 4 * sce->val1) )
 			break;
 		sc_timer_next(10000 + tick, status_change_timer, bl->id, data);
 		return 0;
@@ -11456,12 +11490,12 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
 
 	case SC_INSPIRATION:
 		if(--(sce->val4) >= 0) {
-			int hp = status->max_hp * (7-sce->val1) / 100;
-			int sp = status->max_sp * (9-sce->val1) / 100;
+			int hp = status->max_hp * (35 - 5 * sce->val1) / 1000;
+			int sp = status->max_sp * (45 - 5 * sce->val1) / 1000;
 
 			if( !status_charge(bl,hp,sp) ) break;
 
-			sc_timer_next(1000+tick,status_change_timer,bl->id, data);
+			sc_timer_next(5000+tick,status_change_timer,bl->id, data);
 			return 0;
 		}
 		break;

+ 7 - 6
src/map/unit.c

@@ -1769,12 +1769,12 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
  */
 int unit_set_target(struct unit_data* ud, int target_id)
 {
-	struct unit_data * ux;
-	struct block_list* target;
-
 	nullpo_ret(ud);
 
 	if( ud->target != target_id ) {
+		struct unit_data * ux;
+		struct block_list* target;
+	
 		if( ud->target && (target = map_id2bl(ud->target)) && (ux = unit_bl2ud(target)) && ux->target_count > 0 )
 			ux->target_count --;
 		if( target_id && (target = map_id2bl(target_id)) && (ux = unit_bl2ud(target)) )
@@ -1939,7 +1939,6 @@ bool unit_can_reach_pos(struct block_list *bl,int x,int y, int easy)
  */
 bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range, int easy, short *x, short *y)
 {
-	int i;
 	short dx,dy;
 	nullpo_retr(false, bl);
 	nullpo_retr(false, tbl);
@@ -1960,6 +1959,7 @@ bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range,
 	dy=(dy>0)?1:((dy<0)?-1:0);
 
 	if (map_getcell(tbl->m,tbl->x-dx,tbl->y-dy,CELL_CHKNOPASS)) { // Look for a suitable cell to place in.
+		int i;
 		for(i=0;i<9 && map_getcell(tbl->m,tbl->x-dirx[i],tbl->y-diry[i],CELL_CHKNOPASS);i++);
 		if (i==9) return false; // No valid cells.
 		dx = dirx[i];
@@ -1981,7 +1981,7 @@ bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range,
  */
 int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
 {
-	int dx, dy, x, y, i, k;
+	int dx, dy, x, y;
 	struct unit_data *ud = unit_bl2ud(bl);
 	nullpo_ret(ud);
 
@@ -2001,8 +2001,9 @@ int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
 		if( dx > 0 ) x--; else if( dx < 0 ) x++;
 		if( dy > 0 ) y--; else if( dy < 0 ) y++;
 		if( !unit_can_reach_pos(bl, x, y, 0) ) {
+			int i;
 			for( i = 0; i < 12; i++ ) {
-				k = rnd()%8; // Pick a Random Dir
+				int k = rnd()%8; // Pick a Random Dir
 				dx = -dirx[k] * 2;
 				dy = -diry[k] * 2;
 				x = tx + dx;

+ 1 - 1
src/map/vending.c

@@ -293,7 +293,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
 
 		sd->vending[i].index = index;
 		sd->vending[i].amount = amount;
-		sd->vending[i].value = cap_value(value, 0, (unsigned int)battle_config.vending_max_value);
+		sd->vending[i].value = min(value, (unsigned int)battle_config.vending_max_value);
 
 		i++; // item successfully added
 	}

+ 1 - 1
tools/convert_sql.pl

@@ -13,7 +13,7 @@
 #     --i=../db/re/mob_skill_db.txt --o=../sql-files/mob_skill_db_re.sql --t=re --m=mob_skill --table=mob_skill_db_re
 #
 # List of options:
-#   item_db.pl --help
+#   convert_sql.pl --help
 
 use strict;
 use warnings;

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio