소스 검색

Plagiarism & Reproduce updates:
-- Fixed bugreport:6994, Preseve only prevent to copy skill via Plagiarism, player still able to copy skill by Reproduce
-- Re-structure db/skill_reproduce_db.txt becomes db/skill_copyable_db.txt that allow you customize the avaiable skill to be copied
-- Removed 'copyskill_restrict' config from conf/battle/skill.conf, this setting can be set on db/skill_reproduce_db.txt
-- Enjoy structure of skill_copyable_db.txt! SkillName,Option{,JobAllowed{,RequirementRemoved}}

Cahyadi Ramadhan Togihon 11 년 전
부모
커밋
5e6626e312
10개의 변경된 파일721개의 추가작업 그리고 295개의 파일을 삭제
  1. 0 7
      conf/battle/skill.conf
  2. 171 6
      db/pre-re/skill_db.txt
  3. 171 6
      db/re/skill_db.txt
  4. 246 0
      db/skill_copyable_db.txt
  5. 0 204
      db/skill_reproduce_db.txt
  6. 2 3
      src/map/battle.c
  7. 0 1
      src/map/battle.h
  8. 8 8
      src/map/pc.c
  9. 107 60
      src/map/skill.c
  10. 16 0
      src/map/skill.h

+ 0 - 7
conf/battle/skill.conf

@@ -197,13 +197,6 @@ backstab_bow_penalty: yes
 // Use 0 to disable (max allowed value is 255)
 skill_steal_max_tries: 0
 
-// Can Rogues plagiarize advanced job skills           
-// 0 = no restriction
-// 1 = only stalker may plagiarize advanced skills       
-// 2 = advanced skills cannot be plagiarized by anyone  
-// Official servers setting: 2
-copyskill_restrict: 2
-
 // Does Berserk/Frenzy cancel other self-buffs when used?
 berserk_cancels_buffs: no
 

+ 171 - 6
db/pre-re/skill_db.txt

@@ -62,6 +62,9 @@
 // 17 Name
 // 18 Description
 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0,		NV_BASIC,Basic Skill
+
+//****
+// Swordman
 2,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		SM_SWORD,Sword Mastery
 3,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		SM_TWOHAND,Two-Handed Sword Mastery
 4,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SM_RECOVERY,Increase HP Recovery
@@ -69,6 +72,9 @@
 6,9,6,1,0,1,0,10,1,no,0,0,0,none,0,0x0,		SM_PROVOKE,Provoke
 7,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0,		SM_MAGNUM,Magnum Break
 8,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,		SM_ENDURE,Endure
+
+//****
+// Mage
 9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20,		MG_SRECOVERY,Increase SP Recovery
 10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20,		MG_SIGHT,Sight
 11,9,6,1,8,0x6,1,10,1,yes,0,0,0,magic,0,0x20,		MG_NAPALMBEAT,Napalm Beat
@@ -82,6 +88,9 @@
 19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_FIREBOLT,Fire Bolt
 20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_LIGHTNINGBOLT,Lightning Bolt
 21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_THUNDERSTORM,Thunderstorm
+
+//****
+// Acolyte
 22,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AL_DP,Divine Protection
 23,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AL_DEMONBANE,Demon Bane
 24,0,6,4,6,0x3,2,1,1,yes,0,0,0,magic,0,0x20,		AL_RUWACH,Ruwach
@@ -96,6 +105,9 @@
 33,0,6,4,0,0x3,-1,10,1,yes,0,0,0,magic,0,0x0,	AL_ANGELUS,Angelus
 34,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1020,	AL_BLESSING,Blessing
 35,9,6,16,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		AL_CURE,Cure
+
+//****
+// Merchant
 36,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		MC_INCCARRY,Enlarge Weight Limit
 37,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		MC_DISCOUNT,Discount
 38,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		MC_OVERCHARGE,Overcharge
@@ -103,18 +115,29 @@
 40,1,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		MC_IDENTIFY,Item Appraisal
 41,1,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0,		MC_VENDING,Vending
 42,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,		MC_MAMMONITE,Mammonite
+
+//****
+// Archer
 43,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AC_OWL,Owl's Eye
 44,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AC_VULTURE,Vulture's Eye
 45,0,6,4,0,0x3,3,10,1,no,0,0,0,weapon,0,0x0,		AC_CONCENTRATION,Improve Concentration
 46,-9,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x80,		AC_DOUBLE,Double Strafe
 47,-9,6,2,-1,0x2,2,10,1,no,0,0x0,0,weapon,2,0x81,	AC_SHOWER,Arrow Shower
+
+//****
+// Thief
 48,-1,8,0,-1,0,0,10,2,no,0,0,0,weapon,0,0x0,		TF_DOUBLE,Double Attack
 49,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		TF_MISS,Improve Dodge
 50,1,6,1,0,1,0,10,1,no,0,0,0,weapon,0,0x0,		TF_STEAL,Steal
 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
+
+//****
+// Knight
 55,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		KN_SPEARMASTERY,Spear Mastery
 56,-2,8,1,-1,0,0,10,3,no,0,0,0,weapon,0,0x0,		KN_PIERCE,Pierce
 57,-2,6,1,-1,0x1,0,10,1,no,0,0,0,weapon,3,0x0,	KN_BRANDISHSPEAR,Brandish Spear
@@ -125,6 +148,9 @@
 62,-2,6,1,-1,0x2,1,10,1,no,0,0,0,weapon,1,0x0,	KN_BOWLINGBASH,Bowling Bash
 63,0,0,0,0,0,0,1,0,no,0,0,0,weapon,0,0x0,		KN_RIDING,Peco Peco Riding
 64,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		KN_CAVALIERMASTERY,Cavalier Mastery
+
+//****
+// Priest
 65,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		PR_MACEMASTERY,Mace Mastery
 66,9,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		PR_IMPOSITIO,Impositio Manus
 67,9,6,16,0,0x1,0,3,1,yes,0,0x200,0,magic,0,0x0,	PR_SUFFRAGIUM,Suffragium
@@ -140,6 +166,9 @@
 77,5,6,1,6,0x28,0,10,1,yes,0,0,0,magic,0,0x20,	PR_TURNUNDEAD,Turn Undead
 78,9,6,1,0,0x1,0,1,0,yes,0,0,0,magic,0,0x20,		PR_LEXAETERNA,Lex Aeterna
 79,9,8,2,6,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	PR_MAGNUS,Magnus Exorcismus
+
+//****
+// Wizard
 80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12:12,yes,0,0x80,5,magic,0,0x0,	WZ_FIREPILLAR,Fire Pillar
 81,0,6,4,3,0,3,10,1,yes,0,0,0,magic,5,0x20,		WZ_SIGHTRASHER,Sightrasher
 83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0,0,magic,0,0x20,	WZ_METEOR,Meteor Storm
@@ -153,6 +182,9 @@
 91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20,	WZ_HEAVENDRIVE,Heaven's Drive
 92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20,		WZ_QUAGMIRE,Quagmire
 93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		WZ_ESTIMATION,Sense
+
+//****
+// Blacksmith
 94,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		BS_IRON,Iron Tempering
 95,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		BS_STEEL,Steel Tempering
 96,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		BS_ENCHANTEDSTONE,Enchanted Stone Craft
@@ -174,6 +206,9 @@
 112,0,6,4,0,0x3,-1,5,1,no,0,0,0,weapon,0,0x4000,	BS_WEAPONPERFECT,Weapon Perfection
 113,0,6,4,0,0x3,-1,5,1,no,0,0,0,weapon,0,0x4000,	BS_OVERTHRUST,Power-Thrust
 114,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x4000,		BS_MAXIMIZE,Maximize Power
+
+//****
+// Hunter
 115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x2000,	HT_SKIDTRAP,Skid Trap
 116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800,	HT_LANDMINE,Land Mine
 117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x2000,	HT_ANKLESNARE,Ankle Snare
@@ -191,6 +226,9 @@
 129,5,8,1,0,0x42,1,5,1:2:3:4:5,yes,0,0,0,misc,0,0x80,	HT_BLITZBEAT,Blitz Beat
 130,3:5:7:9,6,2,0,0x3,3,4,1,no,0,0,0,misc,0,0x0,	HT_DETECTING,Detect
 131,4:5:6:7:8,6,32,0,0x1,0,5,1,no,0,0,0,misc,0,0x2000,	HT_SPRINGTRAP,Spring Trap
+
+//****
+// Assassin
 132,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		AS_RIGHT,Righthand Mastery
 133,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		AS_LEFT,Lefthand Mastery
 134,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AS_KATAR,Katar Mastery
@@ -201,6 +239,9 @@
 139,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0,0x0,		AS_POISONREACT,Poison React
 140,2,6,2,5,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	AS_VENOMDUST,Venom Dust
 141,1,6,1,-1,0x51,2,10,1,yes,0,0,0,weapon,0,0x0,	AS_SPLASHER,Venom Splasher
+
+//****
+// 1st Class Quest
 142,0,6,4,0,0x1,0,1,1,no,0,0x1,0,none,0,0x20,		NV_FIRSTAID,First Aid
 143,0,6,4,0,0x1,0,1,1,no,0,0x1,0,none,0,0x0,		NV_TRICKDEAD,Play Dead
 144,0,0,0,0,0,0,1,0,no,0,0x1,0,none,0,0x0,		SM_MOVINGRECOVERY,Moving HP-Recovery
@@ -217,6 +258,9 @@
 155,0,6,4,0,0x1,0,1,1,no,0,0x1,0,weapon,0,0x0,	MC_LOUD,Crazy Uproar
 156,9,6,1,6,0,0,1,1,yes,0,0x1,0,magic,0,0x20,		AL_HOLYLIGHT,Holy Light
 157,0,6,4,0,0x1,0,1,1,yes,0,0x1,0,magic,0,0x20,	MG_ENERGYCOAT,Energy Coat
+
+//****
+// NPC Skills
 158,3,6,1,-1,0x20,0,10,1,no,0,0x2,0,weapon,0,0x0,	NPC_PIERCINGATT,Piercing Attack
 159,-1,6,1,-1,0x40,0,5,1,no,0,0x2,0,weapon,0,0x0,	NPC_MENTALBREAKER,Spirit Destruction
 160,9,6,1,0,0,0,10,1,no,0,0x2,0,weapon,0,0x0,	NPC_RANGEATTACK,Stand off attack
@@ -269,6 +313,9 @@
 207,9,0,1,0,0x1,0,10,1,no,0,0x2,0,magic,0,0x0,	NPC_HALLUCINATION,Hallucination
 208,0,0,4,0,0x1,0,1,1,no,0,0x2,0,magic,0,0x0,	NPC_REBIRTH,Rebirth
 209,0,0,4,0,0x1,0,10,1,no,0,0x2,0,magic,0,0x0,	NPC_SUMMONMONSTER,Monster Summons
+
+//****
+// Rogue
 210,0,0,0,-1,0,0,10,0,no,0,0,0,weapon,0,0x0,		RG_SNATCHER,Gank
 211,1,6,1,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	RG_STEALCOIN,Mug
 212,-1,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,0x4,	RG_BACKSTAP,Back Stab
@@ -285,6 +332,9 @@
 223,0,0,0,0,0,1,1,0,no,0,0,0,none,0,0x0,		RG_GANGSTER,Slyness
 224,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		RG_COMPULSION,Haggle
 225,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RG_PLAGIARISM,Intimidate
+
+//****
+// Alchemist
 226,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AM_AXEMASTERY,Axe Mastery
 227,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AM_LEARNINGPOTION,Potion Research
 228,0,6,4,0,0x1,0,10,0,no,0,0,0,none,0,0x0,		AM_PHARMACY,Prepare Potion
@@ -307,6 +357,9 @@
 //245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AM_DRILLMASTER,Drillmaster
 //246,9,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AM_HEALHOMUN,Heal Homunculus
 247,9,6,4,0,0x1,1,5,0,no,0,0,0,none,0,0x0,		AM_RESURRECTHOMUN,Homunculus Resurrection
+
+//****
+// Creator
 248,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		CR_TRUST,Faith
 249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	CR_AUTOGUARD,Guard
 250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0,	CR_SHIELDCHARGE,Smite
@@ -318,6 +371,9 @@
 256,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,none,0,0x0,	CR_PROVIDENCE,Resistant Souls
 257,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		CR_DEFENDER,Defending Aura
 258,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	CR_SPEARQUICKEN,Spear Quicken
+
+//****
+// Monk
 259,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		MO_IRONHAND,Iron Fists
 260,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		MO_SPIRITSRECOVERY,Spiritual Cadence
 261,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		MO_CALLSPIRITS,Summon Spirit Sphere
@@ -333,6 +389,9 @@
 271,-2,6,1,0,0x60,0,5,1,yes,0,0,0,weapon,0,0x0,	MO_EXTREMITYFIST,Asura Strike
 272,-2,8,4,-1,0,0,5,-4,no,0,0x200,0,weapon,0,0x0,	MO_CHAINCOMBO,Raging Quadruple Blow
 273,-2,6,4,-1,0x2,2,5,1,no,0,0x200,0,weapon,0,0x0,	MO_COMBOFINISH,Raging Thrust
+
+//****
+// Sage
 274,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		SA_ADVANCEDBOOK,Study
 275,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,		SA_CASTCANCEL,Cast Cancel
 276,0,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_MAGICROD,Magic Rod
@@ -363,6 +422,9 @@
 301,9,6,4,0,0,0,1,1,yes,0,0x2,0,magic,0,0x0,		SA_INSTANTDEATH,Suicide
 302,9,6,4,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0,	SA_FULLRECOVERY,Rejuvenation
 303,9,6,4,0,0,0,1,1,yes,0,0x2,0,magic,0,0x0,		SA_COMA,Coma
+
+//****
+// Bard & Dancer
 304,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x8,		BD_ADAPTATION,Amp
 305,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		BD_ENCORE,Encore
 306,0,6,4,0,0x1,0,1,1,no,0,0x40,0,misc,0,0x0,	BD_LULLABY,Lullaby
@@ -374,6 +436,9 @@
 312,0,6,4,0,0x1,0,1,1,no,0,0x40,0,misc,0,0x0,	BD_INTOABYSS,Power Chord
 313,0,6,4,0,0x1,0,5,1,no,0,0x40,0,misc,0,0x0,	BD_SIEGFRIED,Acoustic Rhythm
 //314,0,0,0,0,0,0,1,1,no,0,0x40,0,misc,0,0x0,	BD_RAGNAROK,Ragnarok
+
+//****
+// Bard
 315,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		BA_MUSICALLESSON,Music Lessons
 316,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x8,		BA_MUSICALSTRIKE,Melody Strike
 317,0,8,4,0,0x41,0,5,1,no,0,0x20,0,misc,0,0x1,	BA_DISSONANCE,Unchained Serenade
@@ -382,6 +447,9 @@
 320,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	BA_ASSASSINCROSS,Impressive Riff
 321,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	BA_POEMBRAGI,Magic Strings
 322,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	BA_APPLEIDUN,Song of Lutie
+
+//****
+// Dancer
 323,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		DC_DANCINGLESSON,Dance Lessons
 324,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x8,		DC_THROWARROW,Slinging Arrow
 325,0,8,4,0,0x1,0,5,1,no,0,0x20,0,misc,0,0x1,	DC_UGLYDANCE,Hip Shaker
@@ -390,12 +458,21 @@
 328,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	DC_DONTFORGETME,Slow Grace
 329,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	DC_FORTUNEKISS,Lady Luck
 330,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	DC_SERVICEFORYOU,Gypsy's Kiss
+
+//****
+// NPC Skills
 331,0,6,4,0,0x1,0,10,0,no,0,0x2,0,none,0,0x0,	NPC_RANDOMMOVE,Random Move
 332,0,6,4,0,0x1,0,10,0,no,0,0x2,0,none,0,0x0,	NPC_SPEEDUP,Speed UP
 333,0,6,4,0,0x1,0,1,0,no,0,0x2,0,none,0,0x0,		NPC_REVENGE,Revenge
+
+//****
+// Mariage Skills
 334,9,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,0x0,	WE_MALE,I Will Protect You
 335,9,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,0x0,	WE_FEMALE,I Look up to You
 336,9,6,4,0,0x1,3,1,1,yes,0,0x4,1,none,0,0x0,	WE_CALLPARTNER,I miss You
+
+//****
+// NPC Skills
 337,9,6,1,-1,0,0,1,1,no,0,0x2,0,weapon,0,0x0,	ITM_TOMAHAWK,Throw Tomahawk
 338,-1,8,1,7,0,0,10,-2,no,0,0x2,0,weapon,0,0x0,	NPC_DARKCROSS,Cross of Darkness
 339,5,6,4,7,0x48,0,10,1,no,0,0x102,0,magic,0,0x0,	NPC_GRANDDARKNESS,Grand cross of Darkness
@@ -414,62 +491,119 @@
 352,2,0,4,0,0x1,0,1,0,no,0,0x2,0,none,0,0x0,		NPC_CALLSLAVE,Recall Slaves
 353,0,0,0,0,0x1,0,1,0,no,0,0x2,0,none,0,0x0,		NPC_INVISIBLE,Invisible
 354,2,6,4,0,0x1,0,20,0,no,0,0x2,0,misc,0,0x0,	NPC_RUN,Run
+
+//****
+// Lord Knight
 355,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		LK_AURABLADE,Aura Blade
 356,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	LK_PARRYING,Parrying
 357,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		LK_CONCENTRATION,Concentration
 358,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		LK_TENSIONRELAX,Relax
 359,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		LK_BERSERK,Frenzy
 //360,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,	LK_FURY,Fury
+
+//****
+// High Priest
 361,9,6,16,0,0x1,1,5,1,yes,0,0,0,magic,0,0x0,	HP_ASSUMPTIO,Assumptio
 362,4,6,4,0,0x1,0,5,1,yes,0,0,0,magic,2,0x0,		HP_BASILICA,Basilica
 363,0,0,0,0,0,0,10,0,no,0,0,0,magic,0,0x0,		HP_MEDITATIO,Meditatio
+
+//****
+// High Wizard
 364,0,0,0,0,0,0,10,1,no,0,0,0,magic,0,0x0,		HW_SOULDRAIN,Soul Drain
 365,9,8,1,-1,0,0,1,1,yes,0,0,0,weapon,0,0x0,		HW_MAGICCRASHER,Stave Crasher
 366,0,6,4,0,0x1,0,10,1,no,0,0,0,magic,0,0x20,		HW_MAGICPOWER,Mystical Amplification
+
+//****
+// Paladin
 367,9,8,1,0,0xD0,0,5,1,no,0,0x18000,0,misc,0,0x0,		PA_PRESSURE,Gloria Domini
 368,0,6,4,0,0x61,0,5,1,yes,0,0,0,weapon,0,0x0,	PA_SACRIFICE, Martyr's Reckoning
 369,0,6,4,0,0x41,0,10,1,yes,0,0,0,misc,0,0x0,	PA_GOSPEL,Battle Chant
+
+//****
+// Champion
 370,-2,6,1,-1,0,0,5,1,yes,0,0,0,weapon,3,0x0,	CH_PALMSTRIKE,Raging Palm Strike
 371,-2,8,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0,	CH_TIGERFIST,Glacier Fist
 372,-2,8,4,-1,0,0,10,-1:-1:-2:-2:-3:-3:-4:-4:-5:-5,no,0,0x200,0,weapon,0,0x0,	CH_CHAINCRUSH,Chain Crush Combo
+
+//****
+// Professor
 373,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x20,	PF_HPCONVERSION,Indulge
 374,9,6,1,0,0x1,0,1,1,yes,0,0xE00,0,none,0,0x20,	PF_SOULCHANGE,Soul Exhale
 375,9,6,1,0,0x98,0,5,1,yes,0,0,0,magic,0,0x0,	PF_SOULBURN,Soul Siphon
+
+//****
+// Assassin Cross
 376,0,0,0,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		ASC_KATAR,Advanced Katar Mastery
 //377,0,0,4,0,0x1,0,10,1,no,0,0,0,misc,0,0x0,	ASC_HALLUCINATION,Hallucination Walk
 378,0,6,4,5,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		ASC_EDP,Enchant Deadly Poison
 379,7,6,1,-1,0x8,0,10,1,yes,0,0,0,weapon,0,0x0,	ASC_BREAKER,Soul Destroyer
+
+//****
+// Sniper
 380,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	SN_SIGHT,Falcon Eyes
 381,5,8,1,0,0x40,0,5,1,yes,0,0,0,misc,0,0x80,		SN_FALCONASSAULT,Falcon Assault
 382,9,8,1,-1,0,2,5,1,yes,0,0,13,weapon,0,0x0,	SN_SHARPSHOOTING,Focused Arrow Strike
 383,0,6,4,0,0x3,-1,10,1,yes,0,0,0,weapon,0,0x0,	SN_WINDWALK,Wind Walker
+
+//****
+// Whitesmith
 384,0,0,4,0,0x1,0,10,1,yes,0,0,0,weapon,0,0x4000,	WS_MELTDOWN,Shattering Strike
 //385,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	WS_CREATECOIN,Create Coins
 //386,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	WS_CREATENUGGET,Create Nuggets
 387,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x4000,		WS_CARTBOOST,Cart Boost
 //388,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		WS_SYSTEMCREATE,Auto Attack System
+
+//****
+// Stalker
 389,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x60,		ST_CHASEWALK,Stealth
 390,0,0,4,0,0,0,5,1,yes,0,0,0,weapon,0,0x0,		ST_REJECTSWORD,Counter Instinct
 //391,0,0,4,0,1,0,1,1,yes,0,0,0,magic,0,0x0,		ST_STEALBACKPACK,Steal Backpack
+
+//****
+// Creator
 392,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		CR_ALCHEMY,Alchemy
 393,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		CR_SYNTHESISPOTION,Potion Synthesis
+
+//****
+// Clown & Gypsy
 394,9,8,1,-1,0,0,10,-9,yes,0,0,0,weapon,0,0x0,	CG_ARROWVULCAN,Vulcan Arrow
 395,0,0,4,0,0x1,3,1,1,yes,0,0x40,0,misc,2,0x0,	CG_MOONLIT,Sheltering Bliss
 396,1,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40,	CG_MARIONETTE,Marionette Control
+
+//****
+// Lord Knight
 397,5,8,1,-1,0x20,0,5,5,no,0,0,0,weapon,0,0x0,	LK_SPIRALPIERCE,Spiral Pierce
 398,4,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,		LK_HEADCRUSH,Traumatic Blow
 399,4,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,		LK_JOINTBEAT,Vital Strike
+
+//****
+// High Wizard
 400,9,8,1,8,0x6,1,5,1:2:3:4:5,yes,0,0,0,magic,0,0x0,	HW_NAPALMVULCAN,Napalm Vulcan
+
+//****
+// Champion
 401,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		CH_SOULCOLLECT,Zen
+
+//****
+// Professor
 402,9,6,1,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		PF_MINDBREAKER,Mind Breaker
 403,0,0,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		PF_MEMORIZE,Foresight
 404,9,6,2,2,0x1,0,5,1,yes,0,0x100,2,magic,0,0x20,	PF_FOGWALL,Blinding Mist
 405,7,6,1,0,0x1,0,1,1,no,0,0,3,magic,0,0x20,		PF_SPIDERWEB,Fiber Lock
+
+//****
+// Assassin Cross
 406,0,6,4,-1,0xA,2,10,1,no,0,0,0,weapon,0,0x0,	ASC_METEORASSAULT,Meteor Assault
 407,0,6,4,0,0x1,0,1,0,no,0,0,0,none,0,0x0,		ASC_CDP,Create Deadly Poison
+
+//****
+// Mariage Skills for Baby
 408,9,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,0x0,	WE_BABY,Baby
 409,9,6,4,0,0x1,3,1,1,yes,0,0x4,1,none,0,0x0,	WE_CALLPARENT,Call Parent
 410,9,6,4,0,0x1,3,1,1,yes,0,0x4,1,none,0,0x0,	WE_CALLBABY,Call Baby
+
+//****
+// Taekwon
 411,0,6,4,0,0x1,0,10,1,yes,0,0,0,misc,4,0x20,		TK_RUN,Running
 412,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		TK_READYSTORM,Tornado Stance
 413,-2,8,4,-1,0x2,2,7,-3,no,0,0x200,0,weapon,0,0x0,	TK_STORMKICK,Tornado Kick
@@ -486,6 +620,9 @@
 424,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		TK_POWER,Kihop
 425,0,6,4,2:4:1:3:8:7:6,0x1,0,7,1,no,0,0,0,weapon,0,0x20,	TK_SEVENWIND,Mild Wind
 426,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x20,		TK_HIGHJUMP,Taekwon Jump
+
+//****
+// Star Gladiator
 427,0,6,4,0,0x1,0,3,1,yes,0,0,0,magic,0,0x0,		SG_FEEL,Feeling the Sun Moon and Stars
 428,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x0,	SG_SUN_WARM,Warmth of the Sun
 429,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x0,	SG_MOON_WARM,Warmth of the Moon
@@ -505,7 +642,13 @@
 443,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SG_KNOWLEDGE,Knowledge of the Sun Moon and Stars
 444,0,6,4,0,0x1,0,1,1,no,0,0,0,misc,0,0x0,		SG_FUSION,Union of the Sun Moon and Stars
 445,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_ALCHEMIST,Spirit of the Alchemist
+
+//****
+// Alchemist
 446,9,6,16,0,0x1,0,1,1,yes,0,0xC08,0,none,0,0x0,	AM_BERSERKPITCHER,Aid Berserk Potion
+
+//****
+// Soul Linker
 447,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_MONK,Spirit of the Monk
 448,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_STAR,Spirit of the Star Gladiator
 449,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_SAGE,Spirit of the Sage
@@ -518,7 +661,13 @@
 456,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_ROGUE,Spirit of the Rogue
 457,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_ASSASIN,Spirit of the Assasin
 458,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_BLACKSMITH,Spirit of the Blacksmith
+
+//****
+// Blacksmith
 459,0,6,4,0,0x3,-1,1,1,no,0,0x8,0,weapon,0 ,0x4000,	BS_ADRENALINE2,Advanced Adrenaline Rush
+
+//****
+// Soul Linker
 460,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_HUNTER,Spirit of the Hunter
 461,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_SOULLINKER,Spirit of the Soul Linker
 462,9,6,16,0,0x1,0,7,1,yes,0,0,0,magic,0,0x0,	SL_KAIZEL,Kaizel
@@ -532,6 +681,9 @@
 470,9,6,1,0,0x1,0,7,1,no,0,0,0,magic,0,0x0,		SL_SWOO,Eswoo
 471,9,6,1,0,0x1,0,3,1,no,0,0,0,magic,0,0x0,		SL_SKE,Eske
 472,9,6,1,0,0x1,0,3,1,no,0,0,0,magic,0,0x0,		SL_SKA,Eska
+
+//****
+// Other 2nd Skills
 473,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0,		SM_SELFPROVOKE,Provoke Self
 474,0,0,4,0,0x1,0,10,1,no,0,0x2,0,none,0,0x0,	NPC_EMOTION_ON,Emotion ON
 475,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		ST_PRESERVE,Preserve
@@ -559,6 +711,9 @@
 497,0,6,4,0,0x1,0,1,0,no,0,0x8,0,none,0,0x0,		AM_TWILIGHT2,Twilight Alchemy 2
 498,0,6,4,0,0x1,0,1,0,no,0,0x8,0,none,0,0x0,		AM_TWILIGHT3,Twilight Alchemy 3
 499,-9,8,4,-1,0,0,1,2,no,0,0x208,0,weapon,0,0x80,	HT_POWER,Beast Strafing
+
+//****
+// Gunslinger
 500,0,6,4,0,0x40,0,5,1,no,0,0,0,misc,0,0x0,		GS_GLITTERING,Flip the Coin
 501,9,6,1,-1,0x50,0,1,1,no,0,0,0,misc,0,0x0,		GS_FLING,Fling
 502,-9,8,1,-1,0,0,1,3,no,0,0,0,weapon,0,0x0,		GS_TRIPLEACTION,Triple Action
@@ -581,6 +736,9 @@
 519,-9,6,1,-1,0,0,10,1,yes,0,0,0,weapon,0,0x100,	GS_FULLBUSTER,Full Buster
 520,-9,6,1,-1,0x2,1:1:1:2:2:2:3:3:3:4,10,1,no,0,0,0,weapon,0,0x100,	GS_SPREADATTACK,Spread Attack
 521,-9,6,2,-1,0x40,1,10,1,no,0,0,0,misc,3,0x100,	GS_GROUNDDRIFT,Ground Drift
+
+//****
+// Ninja
 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0,0x0,		NJ_TOBIDOUGU,Shuriken Training
 523,9,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,0x0,	NJ_SYURIKEN,Throw Shuriken
 524,9,8,1,-1,0x40,0,5,3,no,0,0,0,weapon,0,0x0,	NJ_KUNAI,Throw Kunai
@@ -605,6 +763,7 @@
 543,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,		NJ_NEN,Soul
 544,-5,6,1,0,0x40,0,10,1,no,0,0,0,weapon,0,0x0,	NJ_ISSEN,Final Strike
 
+//****
 // Additional NPC Skills (Episode 11.3)
 653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2,0,magic,0,0x0,	NPC_EARTHQUAKE,Earthquake
 654,9,6,1,3,0,5,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_FIREBREATH,Fire Breath
@@ -635,9 +794,11 @@
 679,0,6,4,0,0x2,5:7:9:11:13:13:13:13:13:13,10,1,no,0,0x2,0,weapon,0,0x0,	NPC_VAMPIRE_GIFT,Vampire Gift
 680,0,6,4,0,0x3,5:7:9:11:13:13:13:13:13:13,10,1,no,0,0x2,0,none,0,0x0,	NPC_WIDESOULDRAIN,Wide Soul Drain
 
+//****
 // Cash Shop Skill
 681,0,0,0,0,0,0,10,0,no,0,0x1,0,none,0,0x0,		ALL_INCCARRY,Increase Weight Limit R
 
+//****
 // Additional NPC skill (Episode 12)
 682,0,0,4,0,0x1,0,1,1,no,0,0x2,0,none,0,0x0,	NPC_TALK,Talk
 683,-9,6,1,-1,0,0,1,1,no,0,0x2,0,none,0,0x0,	NPC_HELLPOWER,Hell Power
@@ -646,6 +807,7 @@
 686,0,0,4,0,0x1,0,1,1,no,0,0x2,0,none,0,0x0,	NPC_INVINCIBLEOFF,Invincible off
 687,0,6,4,0,0x1,0,1,1,yes,0,0x2,0,none,0,0x0,	NPC_ALLHEAL,Full Heal
 
+//****
 // Additional Skill (??)
 688,9,6,16,0,0x1,0,10,0,no,0,0x200,0,none,0,0x0,	GM_SANDMAN,GM Sandman
 689,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,0x1000,	CASH_BLESSING,Party Blessing
@@ -660,6 +822,7 @@
 698,0,6,4,0,0x01,0,1,1,no,0,0x2,0,none,0,0x0,		ALL_WEWISH,Christmas Carol
 //699,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0,		ALL_SONKRAN,ALL_SONKRAN
 
+//****
 // New NPC Wide Status AoE Skills And Others
 //700,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDEHEALTHFEAR,Wide Health Fear
 //701,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDEBODYBURNNING,Wide Body Burnning
@@ -671,6 +834,8 @@
 //707,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_MILLENNIUMSHIELD,Millenium Shield 2
 //708,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_COMET,Comet 2
 
+//****
+// 2nd Quest Skills
 1001,9,6,1,-1,0,0,1,1,no,0,0x1,0,weapon,0,0x0,	KN_CHARGEATK,Charge Attack
 1002,0,6,4,0,0x1,0,1,0,no,0,0x1,0,weapon,2,0x0,	CR_SHRINK,Shrink
 1003,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x0,	AS_SONICACCEL,Sonic Acceleration
@@ -693,7 +858,6 @@
 
 //****
 // RK Rune Knight
-//****
 2001,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	RK_ENCHANTBLADE,Enchant Blade
 2002,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_SONICWAVE,Sonic Wave
 2003,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	RK_DEATHBOUND,Death Bound
@@ -717,7 +881,6 @@
 
 //****
 // 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
@@ -754,7 +917,6 @@
 
 //****
 // 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
@@ -775,7 +937,6 @@
 
 //****
 // AB Arch Bishop
-//****
 2038,11,8,1,6,0x2,3,5,-3,yes,0,0,0,magic,0,0x0,	AB_JUDEX,Judex
 2039,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,	AB_ANCILLA,Ancilla
 2040,11,8,1,6,0,0,10,-10,yes,0,0,0,magic,0,0x0,	AB_ADORAMUS,Adoramus
@@ -801,7 +962,6 @@
 
 //****
 // 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
 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
@@ -1028,6 +1188,7 @@
 2497,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0,	GN_S_PHARMACY,Special Pharmacy
 2498,11,6,1,0,0,0,1,1,no,0,0,0,weapon,0,0x0,	GN_SLINGITEM_RANGEMELEEATK,Sling Item Attack
 
+//****
 // Episode 13.3
 2533,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	ALL_ODINS_RECALL,Odin's Recall
 2534,0,0,4,0,0x1,0,1,0,no,0,0,0,none,0,0x0,	RETURN_TO_ELDICASTES,Return To Eldicastes
@@ -1074,6 +1235,8 @@
 3028,1,6,4,0,0x2,3,1,1,no,0,0,0,weapon,0,0x0,	OB_OBOROGENSOU_TRANSITION_ATK,
 3029,7,6,1,0,0x1,0,5,0,no,0,0,0,none,0,0x0,		OB_AKAITSUKI,Akaitsuki
 
+//****
+// Homunculus S
 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,	HLIF_HEAL,Healing Touch
 8002,0,6,4,0,0x3,-1,5,1,no,0,0,0,none,0,0x0,	HLIF_AVOID,Avoid
 8003,0,0,0,0,0,1,5,0,no,0,0,0,none,0,0x0,		HLIF_BRAIN,Brain Surgery
@@ -1090,7 +1253,6 @@
 8014,0,6,4,0,0x1,0,5,0,no,0,0,0,none,0,0x0,		HVAN_CHAOTIC,Benediction of Chaos
 8015,0,0,0,0,0x1,0,5,0,no,0,0,0,none,0,0x0,		HVAN_INSTRUCT,Instruct
 8016,4,6,4,-1,0xD2,4,3,1,no,0,0,0,misc,0,0x0,	HVAN_EXPLOSION,Bio Explosion
-//
 8018,9,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		MH_SUMMON_LEGION,Summon Legion
 8019,5,6,1,5,0,0,5,1,no,0,0,0,weapon,0,0x0,		MH_NEEDLE_OF_PARALYZE,Needle of Paralyze
 8020,5,6,2,5,0,0,5,1,no,0,0,1,weapon,0,0x0,		MH_POISON_MIST,Poison Mist
@@ -1118,6 +1280,7 @@
 8042,0,6,4,3,0x1,0,5,1,no,0,0,0,none,0,0x0,		MH_PYROCLASTIC,Pyroclastic
 8043,7,6,2,0,0x1,0,5,1,no,0,0,3,none,0,0x0,		MH_VOLCANIC_ASH,Volcanic Ash
 
+//****
 // Mercenary Skill Place holders
 8201,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,	MS_BASH,Bash
 8202,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0,	MS_MAGNUM,Magnum_Break
@@ -1160,6 +1323,7 @@
 8239,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1000,	MER_BLESSING,Blessing
 8240,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1000,	MER_INCAGI,Increase Agility
 
+//****
 // Elemental Spirits Skills
 8401,0,6,4,3,0,0,1,1,no,0,0,0,weapon,2,0x0,		EL_CIRCLE_OF_FIRE,Circle of Fire
 8402,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		EL_FIRE_CLOAK,Fire Cloak
@@ -1204,6 +1368,7 @@
 8441,5,6,1,2,0,1,1,1,no,0,0,0,magic,0,0x0,		EL_ROCK_CRUSHER_ATK,Rock Launcher Attack
 8442,9,6,1,2,0,1,1,-5,no,0,0,0,weapon,0,0x0,	EL_STONE_RAIN,Stone Rain
 
+//****
 //Guild Skills
 10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0,	GD_APPROVAL,Official Guild Approval
 10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0,	GD_KAFRACONTRACT,Kafra Contract

+ 171 - 6
db/re/skill_db.txt

@@ -64,6 +64,9 @@
 // 17 Name
 // 18 Description
 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0,		NV_BASIC,Basic Skill
+
+//****
+// Swordman
 2,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		SM_SWORD,Sword Mastery
 3,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		SM_TWOHAND,Two-Handed Sword Mastery
 4,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SM_RECOVERY,Increase HP Recovery
@@ -71,6 +74,9 @@
 6,9,6,1,0,1,0,10,1,no,0,0,0,none,0,0x0,		SM_PROVOKE,Provoke
 7,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0,		SM_MAGNUM,Magnum Break
 8,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,		SM_ENDURE,Endure
+
+//****
+// Mage
 9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20,		MG_SRECOVERY,Increase SP Recovery
 10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20,		MG_SIGHT,Sight
 11,9,6,1,8,0x6,1,10,1,yes,0,0,0,magic,0,0x20,		MG_NAPALMBEAT,Napalm Beat
@@ -84,6 +90,9 @@
 19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_FIREBOLT,Fire Bolt
 20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_LIGHTNINGBOLT,Lightning Bolt
 21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_THUNDERSTORM,Thunderstorm
+
+//****
+// Acolyte
 22,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AL_DP,Divine Protection
 23,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AL_DEMONBANE,Demon Bane
 24,0,6,4,6,0x3,2,1,1,yes,0,0,0,magic,0,0x20,		AL_RUWACH,Ruwach
@@ -98,6 +107,9 @@
 33,0,6,4,0,0x3,-1,10,1,yes,0,0,0,magic,0,0x0,	AL_ANGELUS,Angelus
 34,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1020,	AL_BLESSING,Blessing
 35,9,6,16,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		AL_CURE,Cure
+
+//****
+// Merchant
 36,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		MC_INCCARRY,Enlarge Weight Limit
 37,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		MC_DISCOUNT,Discount
 38,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		MC_OVERCHARGE,Overcharge
@@ -105,18 +117,28 @@
 40,1,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		MC_IDENTIFY,Item Appraisal
 41,1,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0,		MC_VENDING,Vending
 42,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,		MC_MAMMONITE,Mammonite
+
+//****
+// Archer
 43,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AC_OWL,Owl's Eye
 44,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AC_VULTURE,Vulture's Eye
 45,0,6,4,0,0x3,3,10,1,no,0,0,0,weapon,0,0x0,		AC_CONCENTRATION,Improve Concentration
 46,-9,8,1,-1,0,0,10,2,no,0,0,0,weapon,0,0x80,		AC_DOUBLE,Double Strafe
 47,-9,6,2,-1,0x2,2,10,1,no,0,0x0,0,weapon,2,0x81,	AC_SHOWER,Arrow Shower
+
+//****
+// Thief
 48,-1,8,0,-1,0,0,10,2,no,0,0,0,weapon,0,0x0,		TF_DOUBLE,Double Attack
 49,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		TF_MISS,Improve Dodge
 50,1,6,1,0,1,0,10,1,no,0,0,0,weapon,0,0x0,		TF_STEAL,Steal
 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
+
+//****
+// Knight
 55,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		KN_SPEARMASTERY,Spear Mastery
 56,-2,8,1,-1,0,0,10,3,no,0,0,0,weapon,0,0x0,		KN_PIERCE,Pierce
 57,-2,6,1,-1,0x1,0,10,1,no,0,0,0,weapon,3,0x0,	KN_BRANDISHSPEAR,Brandish Spear
@@ -127,6 +149,9 @@
 62,-2,6,1,-1,0x2,1,10,1,no,0,0,0,weapon,1,0x0,	KN_BOWLINGBASH,Bowling Bash
 63,0,0,0,0,0,0,1,0,no,0,0,0,weapon,0,0x0,		KN_RIDING,Peco Peco Riding
 64,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		KN_CAVALIERMASTERY,Cavalier Mastery
+
+//****
+// Priest
 65,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		PR_MACEMASTERY,Mace Mastery
 66,9,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		PR_IMPOSITIO,Impositio Manus
 67,9,6,16,0,0x1,0,3,1,yes,0,0x200,0,magic,0,0x0,	PR_SUFFRAGIUM,Suffragium
@@ -142,6 +167,9 @@
 77,5,6,1,6,0x28,0,10,1,yes,0,0,0,magic,0,0x20,	PR_TURNUNDEAD,Turn Undead
 78,9,6,1,0,0x1,0,1,0,yes,0,0,0,magic,0,0x20,		PR_LEXAETERNA,Lex Aeterna
 79,9,8,2,6,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	PR_MAGNUS,Magnus Exorcismus
+
+//****
+// Wizard
 80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12:12,yes,0,0x80,5,magic,0,0x0,	WZ_FIREPILLAR,Fire Pillar
 81,0,6,4,3,0,3,10,1,yes,0,0,0,magic,5,0x20,		WZ_SIGHTRASHER,Sightrasher
 83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0,0,magic,0,0x20,	WZ_METEOR,Meteor Storm
@@ -155,6 +183,9 @@
 91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20,	WZ_HEAVENDRIVE,Heaven's Drive
 92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20,		WZ_QUAGMIRE,Quagmire
 93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		WZ_ESTIMATION,Sense
+
+//****
+// Blacksmith
 94,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		BS_IRON,Iron Tempering
 95,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		BS_STEEL,Steel Tempering
 96,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		BS_ENCHANTEDSTONE,Enchanted Stone Craft
@@ -176,6 +207,9 @@
 112,0,6,4,0,0x3,-1,5,1,no,0,0,0,weapon,0,0x4000,	BS_WEAPONPERFECT,Weapon Perfection
 113,0,6,4,0,0x3,-1,5,1,no,0,0,0,weapon,0,0x4000,	BS_OVERTHRUST,Power-Thrust
 114,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x4000,		BS_MAXIMIZE,Maximize Power
+
+//****
+// Hunter
 115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x2000,	HT_SKIDTRAP,Skid Trap
 116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800,	HT_LANDMINE,Land Mine
 117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x2000,	HT_ANKLESNARE,Ankle Snare
@@ -193,6 +227,9 @@
 129,5,8,1,0,0x42,1,5,1:2:3:4:5,yes,0,0,0,misc,0,0x80,	HT_BLITZBEAT,Blitz Beat
 130,3:5:7:9,6,2,0,0x3,3,4,1,no,0,0,0,misc,0,0x0,	HT_DETECTING,Detect
 131,4:5:6:7:8,6,32,0,0x1,0,5,1,no,0,0,0,misc,0,0x2000,	HT_SPRINGTRAP,Spring Trap
+
+//****
+// Assassin
 132,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		AS_RIGHT,Righthand Mastery
 133,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		AS_LEFT,Lefthand Mastery
 134,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AS_KATAR,Katar Mastery
@@ -203,6 +240,9 @@
 139,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0,0x0,		AS_POISONREACT,Poison React
 140,2,6,2,5,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	AS_VENOMDUST,Venom Dust
 141,1,6,1,-1,0x51,2,10,1,yes,0,0,0,weapon,0,0x0,	AS_SPLASHER,Venom Splasher
+
+//****
+// 1st Class Quest
 142,0,6,4,0,0x1,0,1,1,no,0,0x1,0,none,0,0x20,		NV_FIRSTAID,First Aid
 143,0,6,4,0,0x1,0,1,1,no,0,0x1,0,none,0,0x0,		NV_TRICKDEAD,Play Dead
 144,0,0,0,0,0,0,1,0,no,0,0x1,0,none,0,0x0,		SM_MOVINGRECOVERY,Moving HP-Recovery
@@ -219,6 +259,9 @@
 155,0,6,4,0,0x1,0,1,1,no,0,0x1,0,weapon,0,0x0,	MC_LOUD,Crazy Uproar
 156,9,6,1,6,0,0,1,1,yes,0,0x1,0,magic,0,0x20,		AL_HOLYLIGHT,Holy Light
 157,0,6,4,0,0x1,0,1,1,yes,0,0x1,0,magic,0,0x20,	MG_ENERGYCOAT,Energy Coat
+
+//****
+// NPC Skills
 158,3,6,1,-1,0x20,0,10,1,no,0,0x2,0,weapon,0,0x0,	NPC_PIERCINGATT,Piercing Attack
 159,-1,6,1,-1,0x40,0,5,1,no,0,0x2,0,weapon,0,0x0,	NPC_MENTALBREAKER,Spirit Destruction
 160,9,6,1,0,0,0,10,1,no,0,0x2,0,weapon,0,0x0,	NPC_RANGEATTACK,Stand off attack
@@ -271,6 +314,9 @@
 207,9,0,1,0,0x1,0,10,1,no,0,0x2,0,magic,0,0x0,	NPC_HALLUCINATION,Hallucination
 208,0,0,4,0,0x1,0,1,1,no,0,0x2,0,magic,0,0x0,	NPC_REBIRTH,Rebirth
 209,0,0,4,0,0x1,0,10,1,no,0,0x2,0,magic,0,0x0,	NPC_SUMMONMONSTER,Monster Summons
+
+//****
+// Rogue
 210,0,0,0,-1,0,0,10,0,no,0,0,0,weapon,0,0x0,		RG_SNATCHER,Gank
 211,1,6,1,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	RG_STEALCOIN,Mug
 212,-1,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,0x4,	RG_BACKSTAP,Back Stab
@@ -287,6 +333,9 @@
 223,0,0,0,0,0,1,1,0,no,0,0,0,none,0,0x0,		RG_GANGSTER,Slyness
 224,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		RG_COMPULSION,Haggle
 225,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RG_PLAGIARISM,Intimidate
+
+//****
+// Alchemist
 226,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AM_AXEMASTERY,Axe Mastery
 227,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AM_LEARNINGPOTION,Potion Research
 228,0,6,4,0,0x1,0,10,0,no,0,0,0,none,0,0x0,		AM_PHARMACY,Prepare Potion
@@ -309,6 +358,9 @@
 //245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AM_DRILLMASTER,Drillmaster
 //246,9,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AM_HEALHOMUN,Heal Homunculus
 247,9,6,4,0,0x1,1,5,0,no,0,0,0,none,0,0x0,		AM_RESURRECTHOMUN,Homunculus Resurrection
+
+//****
+// Creator
 248,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		CR_TRUST,Faith
 249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	CR_AUTOGUARD,Guard
 250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0,	CR_SHIELDCHARGE,Smite
@@ -320,6 +372,9 @@
 256,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,none,0,0x0,	CR_PROVIDENCE,Resistant Souls
 257,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		CR_DEFENDER,Defending Aura
 258,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	CR_SPEARQUICKEN,Spear Quicken
+
+//****
+// Monk
 259,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		MO_IRONHAND,Iron Fists
 260,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		MO_SPIRITSRECOVERY,Spiritual Cadence
 261,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		MO_CALLSPIRITS,Summon Spirit Sphere
@@ -335,6 +390,9 @@
 271,-2,6,1,0,0x60,0,5,1,yes,0,0,0,weapon,0,0x0,	MO_EXTREMITYFIST,Asura Strike
 272,-2,8,4,-1,0,0,5,-4,no,0,0x200,0,weapon,0,0x0,	MO_CHAINCOMBO,Raging Quadruple Blow
 273,-2,6,4,-1,0x2,2,5,1,no,0,0x200,0,weapon,0,0x0,	MO_COMBOFINISH,Raging Thrust
+
+//****
+// Sage
 274,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		SA_ADVANCEDBOOK,Study
 275,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,		SA_CASTCANCEL,Cast Cancel
 276,0,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_MAGICROD,Magic Rod
@@ -365,6 +423,9 @@
 301,9,6,4,0,0,0,1,1,yes,0,0x2,0,magic,0,0x0,		SA_INSTANTDEATH,Suicide
 302,9,6,4,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0,	SA_FULLRECOVERY,Rejuvenation
 303,9,6,4,0,0,0,1,1,yes,0,0x2,0,magic,0,0x0,		SA_COMA,Coma
+
+//****
+// Bard & Dancer
 304,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x8,		BD_ADAPTATION,Amp
 305,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		BD_ENCORE,Encore
 306,0,6,4,0,0x1,0,1,1,no,0,0x40,0,misc,0,0x0,	BD_LULLABY,Lullaby
@@ -376,6 +437,9 @@
 312,0,6,4,0,0x1,0,1,1,no,0,0x40,0,misc,0,0x0,	BD_INTOABYSS,Power Chord
 313,0,6,4,0,0x1,0,5,1,no,0,0x40,0,misc,0,0x0,	BD_SIEGFRIED,Acoustic Rhythm
 //314,0,0,0,0,0,0,1,1,no,0,0x40,0,misc,0,0x0,	BD_RAGNAROK,Ragnarok
+
+//****
+// Bard
 315,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		BA_MUSICALLESSON,Music Lessons
 316,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x8,		BA_MUSICALSTRIKE,Melody Strike
 317,0,8,4,0,0x41,0,5,1,no,0,0x20,0,misc,0,0x1,	BA_DISSONANCE,Unchained Serenade
@@ -384,6 +448,9 @@
 320,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	BA_ASSASSINCROSS,Impressive Riff
 321,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	BA_POEMBRAGI,Magic Strings
 322,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	BA_APPLEIDUN,Song of Lutie
+
+//****
+// Dancer
 323,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		DC_DANCINGLESSON,Dance Lessons
 324,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x8,		DC_THROWARROW,Slinging Arrow
 325,0,8,4,0,0x1,0,5,1,no,0,0x20,0,misc,0,0x1,	DC_UGLYDANCE,Hip Shaker
@@ -392,12 +459,21 @@
 328,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	DC_DONTFORGETME,Slow Grace
 329,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	DC_FORTUNEKISS,Lady Luck
 330,0,6,4,0,0x1,0,10,1,no,0,0x20,0,misc,0,0x1,	DC_SERVICEFORYOU,Gypsy's Kiss
+
+//****
+// NPC Skills
 331,0,6,4,0,0x1,0,10,0,no,0,0x2,0,none,0,0x0,	NPC_RANDOMMOVE,Random Move
 332,0,6,4,0,0x1,0,10,0,no,0,0x2,0,none,0,0x0,	NPC_SPEEDUP,Speed UP
 333,0,6,4,0,0x1,0,1,0,no,0,0x2,0,none,0,0x0,		NPC_REVENGE,Revenge
+
+//****
+// Mariage Skills
 334,9,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,0x0,	WE_MALE,I Will Protect You
 335,9,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,0x0,	WE_FEMALE,I Look up to You
 336,9,6,4,0,0x1,3,1,1,yes,0,0x4,1,none,0,0x0,	WE_CALLPARTNER,I miss You
+
+//****
+// NPC Skills
 337,9,6,1,-1,0,0,1,1,no,0,0x2,0,weapon,0,0x0,	ITM_TOMAHAWK,Throw Tomahawk
 338,-1,8,1,7,0,0,10,-2,no,0,0x2,0,weapon,0,0x0,	NPC_DARKCROSS,Cross of Darkness
 339,5,6,4,7,0x48,0,10,1,no,0,0x102,0,magic,0,0x0,	NPC_GRANDDARKNESS,Grand cross of Darkness
@@ -416,62 +492,119 @@
 352,2,0,4,0,0x1,0,1,0,no,0,0x2,0,none,0,0x0,		NPC_CALLSLAVE,Recall Slaves
 353,0,0,0,0,0x1,0,1,0,no,0,0x2,0,none,0,0x0,		NPC_INVISIBLE,Invisible
 354,2,6,4,0,0x1,0,20,0,no,0,0x2,0,misc,0,0x0,	NPC_RUN,Run
+
+//****
+// Lord Knight
 355,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		LK_AURABLADE,Aura Blade
 356,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	LK_PARRYING,Parrying
 357,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		LK_CONCENTRATION,Concentration
 358,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		LK_TENSIONRELAX,Relax
 359,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		LK_BERSERK,Frenzy
 //360,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,	LK_FURY,Fury
+
+//****
+// High Priest
 361,9,6,16,0,0x1,1,5,1,yes,0,0,0,magic,0,0x0,	HP_ASSUMPTIO,Assumptio
 362,4,6,4,0,0x1,0,5,1,yes,0,0,0,magic,2,0x0,		HP_BASILICA,Basilica
 363,0,0,0,0,0,0,10,0,no,0,0,0,magic,0,0x0,		HP_MEDITATIO,Meditatio
+
+//****
+// High Wizard
 364,0,0,0,0,0,0,10,1,no,0,0,0,magic,0,0x0,		HW_SOULDRAIN,Soul Drain
 365,9,8,1,-1,0,0,1,1,yes,0,0,0,weapon,0,0x0,		HW_MAGICCRASHER,Stave Crasher
 366,0,6,4,0,0x1,0,10,1,no,0,0,0,magic,0,0x20,		HW_MAGICPOWER,Mystical Amplification
+
+//****
+// Paladin
 367,9,8,1,0,0xD0,0,5,1,no,0,0x18000,0,misc,0,0x0,		PA_PRESSURE,Gloria Domini
 368,0,6,4,0,0x69,0,5,1,yes,0,0,0,weapon,0,0x0,	PA_SACRIFICE, Martyr's Reckoning
 369,0,6,4,0,0x41,0,10,1,yes,0,0,0,misc,0,0x0,	PA_GOSPEL,Battle Chant
+
+//****
+// Champion
 370,-2,6,1,-1,0,0,5,1,yes,0,0,0,weapon,3,0x0,	CH_PALMSTRIKE,Raging Palm Strike
 371,-2,8,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0,	CH_TIGERFIST,Glacier Fist
 372,-2,8,4,-1,0,0,10,-1:-1:-2:-2:-3:-3:-4:-4:-5:-5,no,0,0x200,0,weapon,0,0x0,	CH_CHAINCRUSH,Chain Crush Combo
+
+//****
+// Professor
 373,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x20,	PF_HPCONVERSION,Indulge
 374,9,6,1,0,0x1,0,1,1,yes,0,0xE00,0,none,0,0x20,	PF_SOULCHANGE,Soul Exhale
 375,9,6,1,0,0x98,0,5,1,yes,0,0,0,magic,0,0x0,	PF_SOULBURN,Soul Siphon
 376,0,0,0,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		ASC_KATAR,Advanced Katar Mastery
+
+//****
+// Asassin Cross
 //377,0,0,4,0,0x1,0,10,1,no,0,0,0,misc,0,0x0,	ASC_HALLUCINATION,Hallucination Walk
 378,0,6,4,5,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		ASC_EDP,Enchant Deadly Poison
 379,7,6,1,-1,0x68,0,10,1,yes,0,0,0,misc,0,0x0,	ASC_BREAKER,Soul Destroyer
+
+//****
+// Sniper
 380,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	SN_SIGHT,Falcon Eyes
 381,5,8,1,0,0x40,0,5,1,yes,0,0,0,misc,0,0x80,		SN_FALCONASSAULT,Falcon Assault
 382,9,8,1,-1,0,2,5,1,yes,0,0,13,weapon,0,0x0,	SN_SHARPSHOOTING,Focused Arrow Strike
 383,0,6,4,0,0x3,-1,10,1,yes,0,0,0,weapon,0,0x0,	SN_WINDWALK,Wind Walker
+
+//****
+// Whitesmith
 384,0,0,4,0,0x1,0,10,1,yes,0,0,0,weapon,0,0x4000,	WS_MELTDOWN,Shattering Strike
 //385,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	WS_CREATECOIN,Create Coins
 //386,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	WS_CREATENUGGET,Create Nuggets
 387,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x4000,		WS_CARTBOOST,Cart Boost
 //388,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		WS_SYSTEMCREATE,Auto Attack System
+
+//****
+// Stalker
 389,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x60,		ST_CHASEWALK,Stealth
 390,0,0,4,0,0,0,5,1,yes,0,0,0,weapon,0,0x0,		ST_REJECTSWORD,Counter Instinct
 //391,0,0,4,0,1,0,1,1,yes,0,0,0,magic,0,0x0,		ST_STEALBACKPACK,Steal Backpack
+
+//****
+// Creator
 392,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		CR_ALCHEMY,Alchemy
 393,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		CR_SYNTHESISPOTION,Potion Synthesis
+
+//****
+// Clown & Gypsy
 394,9,8,1,-1,0,0,10,-9,yes,0,0,0,weapon,0,0x0,	CG_ARROWVULCAN,Vulcan Arrow
 395,0,0,4,0,0x1,3,1,1,yes,0,0x40,0,misc,2,0x0,	CG_MOONLIT,Sheltering Bliss
 396,1,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40,	CG_MARIONETTE,Marionette Control
+
+//****
+// Lord Knight
 397,5,8,1,-1,0,0,5,5,no,0,0,0,weapon,0,0x0,	LK_SPIRALPIERCE,Spiral Pierce
 398,4,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,		LK_HEADCRUSH,Traumatic Blow
 399,4,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,		LK_JOINTBEAT,Vital Strike
+
+//****
+// High Wizard
 400,9,8,1,8,0x6,1,5,1:2:3:4:5,yes,0,0,0,magic,0,0x0,	HW_NAPALMVULCAN,Napalm Vulcan
+
+//****
+// Champion
 401,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		CH_SOULCOLLECT,Zen
+
+//****
+// Professor
 402,9,6,1,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		PF_MINDBREAKER,Mind Breaker
 403,0,0,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		PF_MEMORIZE,Foresight
 404,9,6,2,2,0x1,0,5,1,yes,0,0x100,2,magic,0,0x20,	PF_FOGWALL,Blinding Mist
 405,7,6,1,0,0x1,0,1,1,no,0,0,3,magic,0,0x20,		PF_SPIDERWEB,Fiber Lock
+
+//****
+// Assassin Cross
 406,0,6,4,-1,0xA,2,10,1,no,0,0,0,weapon,0,0x0,	ASC_METEORASSAULT,Meteor Assault
 407,0,6,4,0,0x1,0,1,0,no,0,0,0,none,0,0x0,		ASC_CDP,Create Deadly Poison
+
+//****
+// Mariage Skills for Baby
 408,9,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,0x0,	WE_BABY,Baby
 409,9,6,4,0,0x1,3,1,1,yes,0,0x4,1,none,0,0x0,	WE_CALLPARENT,Call Parent
 410,9,6,4,0,0x1,3,1,1,yes,0,0x4,1,none,0,0x0,	WE_CALLBABY,Call Baby
+
+//****
+// Taekwon
 411,0,6,4,0,0x1,0,10,1,yes,0,0,0,misc,4,0x20,		TK_RUN,Running
 412,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		TK_READYSTORM,Tornado Stance
 413,-2,8,4,-1,0x2,2,7,-3,no,0,0x200,0,weapon,0,0x0,	TK_STORMKICK,Tornado Kick
@@ -488,6 +621,9 @@
 424,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		TK_POWER,Kihop
 425,0,6,4,2:4:1:3:8:7:6,0x1,0,7,1,no,0,0,0,weapon,0,0x20,	TK_SEVENWIND,Mild Wind
 426,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x20,		TK_HIGHJUMP,Taekwon Jump
+
+//****
+// Star Gladiator
 427,0,6,4,0,0x1,0,3,1,yes,0,0,0,magic,0,0x0,		SG_FEEL,Feeling the Sun Moon and Stars
 428,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x0,	SG_SUN_WARM,Warmth of the Sun
 429,1,6,4,-1,0x2,1,3,1,yes,0,0,0,weapon,2,0x0,	SG_MOON_WARM,Warmth of the Moon
@@ -507,7 +643,13 @@
 443,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SG_KNOWLEDGE,Knowledge of the Sun Moon and Stars
 444,0,6,4,0,0x1,0,1,1,no,0,0,0,misc,0,0x0,		SG_FUSION,Union of the Sun Moon and Stars
 445,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_ALCHEMIST,Spirit of the Alchemist
+
+//****
+// Alchemist
 446,9,6,16,0,0x1,0,1,1,yes,0,0xC08,0,none,0,0x0,	AM_BERSERKPITCHER,Aid Berserk Potion
+
+//****
+// Soul Linker
 447,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_MONK,Spirit of the Monk
 448,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_STAR,Spirit of the Star Gladiator
 449,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_SAGE,Spirit of the Sage
@@ -520,7 +662,13 @@
 456,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_ROGUE,Spirit of the Rogue
 457,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_ASSASIN,Spirit of the Assasin
 458,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_BLACKSMITH,Spirit of the Blacksmith
+
+//****
+// Blacksmith
 459,0,6,4,0,0x3,-1,1,1,no,0,0x8,0,weapon,0,0x4000,		BS_ADRENALINE2,Advanced Adrenaline Rush
+
+//****
+// Soul Linker
 460,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_HUNTER,Spirit of the Hunter
 461,9,6,16,0,0x1,0,5,1,yes,0,0x200,0,magic,0,0x0,	SL_SOULLINKER,Spirit of the Soul Linker
 462,9,6,16,0,0x1,0,7,1,yes,0,0,0,magic,0,0x0,	SL_KAIZEL,Kaizel
@@ -534,6 +682,9 @@
 470,9,6,1,0,0x1,0,7,1,no,0,0,0,magic,0,0x0,		SL_SWOO,Eswoo
 471,9,6,1,0,0x1,0,3,1,no,0,0,0,magic,0,0x0,		SL_SKE,Eske
 472,9,6,1,0,0x1,0,3,1,no,0,0,0,magic,0,0x0,		SL_SKA,Eska
+
+//****
+// Other 2nd Skills
 473,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0,		SM_SELFPROVOKE,Provoke Self
 474,0,0,4,0,0x1,0,10,1,no,0,0x2,0,none,0,0x0,	NPC_EMOTION_ON,Emotion ON
 475,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,		ST_PRESERVE,Preserve
@@ -561,6 +712,9 @@
 497,0,6,4,0,0x1,0,1,0,no,0,0x8,0,none,0,0x0,		AM_TWILIGHT2,Twilight Alchemy 2
 498,0,6,4,0,0x1,0,1,0,no,0,0x8,0,none,0,0x0,		AM_TWILIGHT3,Twilight Alchemy 3
 499,-9,8,4,-1,0,0,1,2,no,0,0x208,0,weapon,0,0x80,	HT_POWER,Beast Strafing
+
+//****
+// Gunslinger
 500,0,6,4,0,0x40,0,5,1,no,0,0,0,misc,0,0x0,		GS_GLITTERING,Flip the Coin
 501,9,6,1,-1,0x50,0,1,1,no,0,0,0,misc,0,0x0,		GS_FLING,Fling
 502,-9,8,1,-1,0,0,1,3,no,0,0,0,weapon,0,0x0,		GS_TRIPLEACTION,Triple Action
@@ -583,6 +737,9 @@
 519,-9,6,1,-1,0,0,10,1,yes,0,0,0,weapon,0,0x100,	GS_FULLBUSTER,Full Buster
 520,-9,6,1,-1,0x2,1:1:1:2:2:2:3:3:3:4,10,1,no,0,0,0,weapon,0,0x100,	GS_SPREADATTACK,Spread Attack
 521,-9,6,2,-1,0x60,1,10,1,no,0,0,0,misc,3,0x100,	GS_GROUNDDRIFT,Ground Drift
+
+//****
+// Ninja
 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0,0x0,		NJ_TOBIDOUGU,Shuriken Training
 523,9,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,0x0,	NJ_SYURIKEN,Throw Shuriken
 524,9,8,1,-1,0x40,0,5,3,no,0,0,0,weapon,0,0x0,	NJ_KUNAI,Throw Kunai
@@ -607,6 +764,7 @@
 543,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,		NJ_NEN,Soul
 544,-5,8,1,0,0x40,0,10,1,no,0,0,0,misc,0,0x0,	NJ_ISSEN,Final Strike
 
+//****
 // Additional NPC Skills (Episode 11.3)
 653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2,0,magic,0,0x0,	NPC_EARTHQUAKE,Earthquake
 654,9,6,1,3,0,5,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_FIREBREATH,Fire Breath
@@ -637,9 +795,11 @@
 679,0,6,4,0,0x2,5:7:9:11:13:13:13:13:13:13,10,1,no,0,0x2,0,weapon,0,0x0,	NPC_VAMPIRE_GIFT,Vampire Gift
 680,0,6,4,0,0x3,5:7:9:11:13:13:13:13:13:13,10,1,no,0,0x2,0,none,0,0x0,	NPC_WIDESOULDRAIN,Wide Soul Drain
 
+//****
 // Cash Shop Skill
 681,0,0,0,0,0,0,10,0,no,0,0x1,0,none,0,0x0,		ALL_INCCARRY,Increase Weight Limit R
 
+//****
 // Additional NPC skill (Episode 12)
 682,0,0,4,0,0x1,0,1,1,no,0,0x2,0,none,0,0x0,	NPC_TALK,Talk
 683,-9,6,1,-1,0,0,1,1,no,0,0x2,0,none,0,0x0,	NPC_HELLPOWER,Hell Power
@@ -648,6 +808,7 @@
 686,0,0,4,0,0x1,0,1,1,no,0,0x2,0,none,0,0x0,	NPC_INVINCIBLEOFF,Invincible off
 687,0,6,4,0,0x1,0,1,1,yes,0,0x2,0,none,0,0x0,	NPC_ALLHEAL,Full Heal
 
+//****
 // Additional Skill (??)
 688,9,6,16,0,0x1,0,10,0,no,0,0x200,0,none,0,0x0,	GM_SANDMAN,GM Sandman
 689,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,0x1000,	CASH_BLESSING,Party Blessing
@@ -662,6 +823,7 @@
 698,0,6,4,0,0x01,0,1,1,no,0,0x2,0,none,0,0x0,		ALL_WEWISH,Christmas Carol
 //699,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0,		ALL_SONKRAN,ALL_SONKRAN
 
+//****
 // New NPC Wide Status AoE Skills And Others
 //700,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDEHEALTHFEAR,Wide Health Fear
 //701,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDEBODYBURNNING,Wide Body Burnning
@@ -685,6 +847,8 @@
 //719,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_HELLBURNING,Hell Burning
 //720,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_JACKFROST,Jack Frost 2
 
+//****
+// 2nd Quest Skills
 1001,9,6,1,-1,0,0,1,1,no,0,0x1,0,weapon,0,0x0,	KN_CHARGEATK,Charge Attack
 1002,0,6,4,0,0x1,0,1,0,no,0,0x1,0,weapon,2,0x0,	CR_SHRINK,Shrink
 1003,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x0,	AS_SONICACCEL,Sonic Acceleration
@@ -707,7 +871,6 @@
 
 //****
 // RK Rune Knight
-//****
 2001,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	RK_ENCHANTBLADE,Enchant Blade
 2002,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_SONICWAVE,Sonic Wave
 2003,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	RK_DEATHBOUND,Death Bound
@@ -731,7 +894,6 @@
 
 //****
 // 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
@@ -768,7 +930,6 @@
 
 //****
 // 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
@@ -789,7 +950,6 @@
 
 //****
 // AB Arch Bishop
-//****
 2038,11,8,1,6,0x2,3,5,-3,yes,0,0,0,magic,0,0x0,	AB_JUDEX,Judex
 2039,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,	AB_ANCILLA,Ancilla
 2040,11,8,1,6,0,0,10,-10,yes,0,0,0,magic,0,0x0,	AB_ADORAMUS,Adoramus
@@ -815,7 +975,6 @@
 
 //****
 // 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
 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
@@ -1092,6 +1251,7 @@
 3028,1,6,4,0,0x2,3,1,1,no,0,0,0,weapon,0,0x0,	OB_OBOROGENSOU_TRANSITION_ATK,Hazy Moonlight Illusion Transition Attack
 3029,7,6,1,0,0x1,0,5,0,no,0,0,0,none,0,0x0,		OB_AKAITSUKI,Akaitsuki
 
+//****
 // Eclage Skills
 3031,7,6,16,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	ECL_SNOWFLIP,Snow Flip
 3032,7,6,16,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	ECL_PEONYMAMY,Peony Mamy
@@ -1099,6 +1259,7 @@
 3034,7,6,16,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	ECL_SEQUOIADUST,Sequoia Dust
 3035,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		ECLAGE_RECALL,Return To Eclage
 
+//****
 // EP 14.3 Part 2 3rd Job Skills
 //5001,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_DARKCROW,Dark Claw
 //5002,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		RA_UNLIMIT,Unlimited
@@ -1119,6 +1280,8 @@
 //5017,-2,6,4,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,no,0,0x200,0,weapon,0,0x0,	SR_FLASHCOMBO_ATK_STEP3,Flash Combo Attack Step 3//Tiger Cannon
 //5018,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,0,0x0,	SR_FLASHCOMBO_ATK_STEP4,Flash Combo Attack Step 4//Skynet Blow
 
+//****
+// Homunculus S
 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,	HLIF_HEAL,Healing Touch
 8002,0,6,4,0,0x3,-1,5,1,no,0,0,0,none,0,0x0,	HLIF_AVOID,Avoid
 8003,0,0,0,0,0,1,5,0,no,0,0,0,none,0,0x0,		HLIF_BRAIN,Brain Surgery
@@ -1135,7 +1298,6 @@
 8014,0,6,4,0,0x1,0,5,0,no,0,0,0,none,0,0x0,		HVAN_CHAOTIC,Benediction of Chaos
 8015,0,0,0,0,0x1,0,5,0,no,0,0,0,none,0,0x0,		HVAN_INSTRUCT,Instruct
 8016,4,6,4,-1,0xD2,4,3,1,no,0,0,0,misc,0,0x0,	HVAN_EXPLOSION,Bio Explosion
-//
 8018,9,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		MH_SUMMON_LEGION,Summon Legion
 8019,5,6,1,5,0,0,5,1,no,0,0,0,weapon,0,0x0,		MH_NEEDLE_OF_PARALYZE,Needle of Paralyze
 8020,5,6,2,5,0,0,5,1,no,0,0,1,weapon,0,0x0,		MH_POISON_MIST,Poison Mist
@@ -1163,6 +1325,7 @@
 8042,0,6,4,3,0x1,0,5,1,no,0,0,0,none,0,0x0,		MH_PYROCLASTIC,Pyroclastic
 8043,7,6,2,0,0x1,0,5,1,no,0,0,3,none,0,0x0,		MH_VOLCANIC_ASH,Volcanic Ash
 
+//****
 // Mercenary Skill Place holders
 8201,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,	MS_BASH,Bash
 8202,0,6,4,3,0x2,2,10,1,no,0,0,0,weapon,2,0x0,	MS_MAGNUM,Magnum_Break
@@ -1206,6 +1369,7 @@
 8240,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1000,	MER_INCAGI,Increase Agility
 //8241,2,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		MER_INVINCIBLEOFF2,Mind Blaster
 
+//****
 // Elemental Spirits Skills
 8401,0,6,4,3,0,0,1,1,no,0,0,0,weapon,2,0x0,		EL_CIRCLE_OF_FIRE,Circle of Fire
 8402,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		EL_FIRE_CLOAK,Fire Cloak
@@ -1250,6 +1414,7 @@
 8441,5,6,1,2,0,1,1,1,no,0,0,0,magic,0,0x0,		EL_ROCK_CRUSHER_ATK,Rock Launcher Attack
 8442,9,6,1,2,0,1,1,-5,no,0,0,0,weapon,0,0x0,	EL_STONE_RAIN,Stone Rain
 
+//****
 //Guild Skills
 10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0,	GD_APPROVAL,Official Guild Approval
 10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0,	GD_KAFRACONTRACT,Kafra Contract

+ 246 - 0
db/skill_copyable_db.txt

@@ -0,0 +1,246 @@
+// Available Skills for Intimidate/Plagiarism or Reproduce
+// ====================================================
+// http://irowiki.org/wiki/Intimidate
+//    -> "Intimidate will copy any 2nd class skill"
+// http://irowiki.org/wiki/Reproduce/List_of_reproducible_skills
+//    -> "Players can reproduce 1-x, 2-x, and 3-x skills and Expanded Class, but cannot
+//        reproduce transcendent skills"
+// ====================================================
+// Structure of Database:
+//    SkillName,Option{,JobAllowed{,RequirementRemoved}}
+// ====================================================
+// Option is using bitmask of skill that can be copied by:
+//    1 = Plagiarism
+//    2 = Reproduce
+// JobAllowed, the skill only can be copied by:
+//    (0 or the default value makes all jobs can copy the skill)
+//    1    = Rogue
+//    2    = Stalker
+//    4    = Shadow Chaser
+//    8    = Trans. Shadow Chaser
+//    16   = Baby Rouge
+//    32   = Baby Shadow Chaser
+// RequirementRemoved, decide which requirement(s) that will be removed while checking.
+//    0    = makes the requirement(s) same like original requirement(s)
+//    1    = hp
+//    2    = maxhptrigger
+//    4    = sp
+//    8    = hprate
+//    16   = sprate
+//    32   = zeny
+//    64   = weapon type
+//    128  = ammo (with the amount)
+//    256  = state
+//    512  = statuses
+//    1024 = spirit sphere
+//    2048 = items (with the amount)
+//    (see 'skill_require_db.txt' for requirement(s) detail)
+// ====================================================
+// Example of advanced usage:
+//AS_SONICBLOW,2,63,64
+// AS_SONICBLOW can be copied by all jobs by only Plagiarism. To use the copied skill,
+// doesn't need to use katar weapon (Sonic Blow weapon type requirement)
+//
+//CR_ACIDDEMONSTRATION,3,10
+// CR_ACIDDEMONSTRATION only can be copied by Stalker/Trans. Shadow Chaser by Plagiarism
+// or Reproduce.
+// This mode just like previous battle config which there was option only allow Trans.
+// Skills only can be copied by Trans. class (Stalker/Trans. Shadow Chaser).
+// ====================================================
+
+//Swordsman
+SM_BASH,3   //Bash
+SM_MAGNUM,3 //Magnum Break
+
+//Mage
+MG_NAPALMBEAT,3 // Napalm Beat
+MG_SOULSTRIKE,3 // Soul Strike
+MG_COLDBOLT,3   // Cold Bolt
+MG_FROSTDIVER,3 // Frost Diver
+MG_FIREBALL,3   // Fire Ball
+MG_FIREWALL,3   // Fire Wall
+MG_FIREBOLT,3   // Fire Bolt
+MG_LIGHTNINGBOLT,3 // Lightning Bolt
+MG_THUNDERSTORM,3  // Thunderstorm
+
+//Acolyte
+AL_RUWACH,3 // Ruwach
+AL_HEAL,3   // Heal
+
+//Merchant
+MC_MAMMONITE,3 // Mammonite
+
+//Archer
+AC_DOUBLE,3 // Double Strafe
+AC_SHOWER,3 // Arrow Shower
+
+//Thief
+TF_POISON,3 // Envenom
+
+// Resurrection
+ALL_RESURRECTION,3 // Resurrection
+
+// Knight
+KN_BOWLINGBASH,3 // Bowling Bash
+
+// Priest
+PR_ASPERSIO,3   // Asperio
+PR_BENEDICTIO,3 // B.S Sacramenti
+PR_SANCTUARY,3  // Sanctuary
+PR_TURNUNDEAD,3 // Turn Undead
+PR_MAGNUS,3     // Magnus Exorcismus
+
+// Wizard
+WZ_FIREPILLAR,3  // Fire Pillar
+WZ_SIGHTRASHER,3 // Sightrasher
+WZ_METEOR,3      // Meteor Storm
+WZ_JUPITEL,3     // Jupitel Thunder
+WZ_VERMILION,3   // Lord of Vermillion
+WZ_WATERBALL,3   // Water Ball
+WZ_FROSTNOVA,3   // Frost Nova
+WZ_STORMGUST,3   // Storm Gust
+WZ_EARTHSPIKE,3  // Earth Spike
+WZ_HEAVENDRIVE,3 // Heaven's Drive
+
+// Hunter
+HT_LANDMINE,3     // Land Mine
+HT_FREEZINGTRAP,3 // Freezing Trap
+HT_BLASTMINE,3    // Blast Mine
+HT_CLAYMORETRAP,3 // Claymore Trap
+
+// Assassin
+AS_SPLASHER,3 // Venom Splasher
+
+// 1st Job Quest Skills
+AC_CHARGEARROW,3 // Arrow Repel
+TF_THROWSTONE,3  // Stone Fling
+AL_HOLYLIGHT,3   // Holy Light
+
+// Rogue
+RG_BACKSTAP,3 // Backstab
+
+// Alchemist
+AM_DEMONSTRATION,3 // Bomb
+AM_ACIDTERROR,3    // Acid Terror
+
+// Crusader
+CR_SHIELDCHARGE,3    // Smite
+CR_SHIELDBOOMERANG,3 // Shield Boomerang
+CR_HOLYCROSS,3       // Holy Cross
+CR_GRANDCROSS,3      // Grand Cross
+
+// Monk
+MO_TRIPLEATTACK,3    // Raging Trifecta Blow
+MO_INVESTIGATE,3     // Occult Impaction
+MO_FINGEROFFENSIVE,3 // Throw Spirit Sphere
+MO_EXTREMITYFIST,3   // Asura Strike
+MO_CHAINCOMBO,3      // Raging Quadruple Blow
+
+// Item Skill
+ITM_TOMAHAWK,3 // Throw Tomahawk
+
+// TaeKwon Kid
+TK_JUMPKICK,3 // Flying Kick
+
+// Ninja
+NJ_ZENYNAGE,3     // Throw Zeny
+NJ_TATAMIGAESHI,3 // Flip Tatami
+NJ_KASUMIKIRI,3   // Haze Slasher
+NJ_SHADOWJUMP,3   // Shadow Slash
+NJ_UTSUSEMI,3     // Blaze Shield
+NJ_KOUENKA,3      // Flaming Petals
+NJ_BAKUENRYU,3    // Exploding Dragon
+NJ_HYOUSENSOU,3   // Freezing Spear
+NJ_HYOUSYOURAKU,3 // Snow Flake Draft
+NJ_HUUJIN,3       // Wind Blade
+NJ_RAIGEKISAI,3   // Lightning Jolt
+NJ_KAMAITACHI,3   // First Wind
+
+// 2nd Job Quest Skills
+KN_CHARGEATK,3     // Charge Attack
+AS_VENOMKNIFE,3    // Venom Knife
+WZ_SIGHTBLASTER,3  // Sight Blaster
+HT_PHANTASMIC,3    // Phantasmic Arrow
+MO_KITRANSLATION,3 // Excruciating Palm
+
+// Rune Knight
+RK_SONICWAVE,2     // Sonic Wave
+RK_WINDCUTTER,2    // Ignition Break
+RK_IGNITIONBREAK,2 // Wind Cutter
+
+// Guillotine Cross
+GC_CROSSIMPACT,2   // Cross Impact
+GC_DARKILLUSION,2  // Dark Illusion
+GC_PHANTOMMENACE,2 // Phantom Menace
+
+// Arch Bishop
+AB_JUDEX,2        // Judex
+AB_ADORAMUS,2     // Adoramus
+AB_HIGHNESSHEAL,2 // Highness Heal
+AB_DUPLELIGHT,2   // Duple Light
+
+// Warlock
+WL_SOULEXPANSION,2  // Soul Expansion
+WL_FROSTMISTY,2     // Frosty Misty
+WL_JACKFROST,2      // Jack Frost
+WL_DRAINLIFE,2      // Drain Life
+WL_CRIMSONROCK,2    // Crimson Rock
+WL_HELLINFERNO,2    // Hell Inferno
+WL_COMET,2          // Comet
+WL_CHAINLIGHTNING,2 // Chain Lightning
+WL_EARTHSTRAIN,2    // Earth Strain
+
+// Ranger
+RA_ARROWSTORM,2   // Arrow Storm
+RA_AIMEDBOLT,2    // Aimed Bolt
+RA_CLUSTERBOMB,2  // Cluster Bomb
+RA_FIRINGTRAP,2   // Firing Trap
+RA_ICEBOUNDTRAP,2 // Icebound Trap
+
+// Shadow Chaser
+SC_FATALMENACE,2  // Fatal Menace
+SC_TRIANGLESHOT,2 // Triangle Shot
+SC_FEINTBOMB,2    // Feint Bomb
+
+// Royal Guard
+LG_SHIELDPRESS,2 // Shield Press
+LG_SHIELDSPELL,2 // Shield Spell
+LG_EXEEDBREAK,2  // Exceed Break
+LG_MOONSLASHER,2 // Moon Slasher
+LG_EARTHDRIVE,2  // Earth Drive
+
+// Sura
+SR_DRAGONCOMBO,2  // Dragon Combo
+SR_SKYNETBLOW,2   // Sky Net Blow
+SR_EARTHSHAKER,2    // Earth Shaker
+SR_TIGERCANNON,2    // Tiger Cannon
+SR_RAMPAGEBLASTER,2 // Rampage Blaster
+SR_KNUCKLEARROW,2   // Knuckle Arrow
+SR_WINDMILL,2       // Windmill
+SR_GATEOFHELL,2     // Gate of Hell
+SR_GENTLETOUCH_QUIET,2	// Gentle Touch - Quiet
+SR_HOWLINGOFLION,2      // Howling of Lion
+SR_RIDEINLIGHTNING,2    // Riding Lightning
+
+// Minstrel/Wanderer
+WM_METALICSOUND,2     // Metallic Sound
+WM_REVERBERATION,2    // Reverberation
+WM_SEVERE_RAINSTORM,2 // Severe Rainstorm
+
+// Sorcerer
+SO_FIREWALK,2      // Fire Walk
+SO_ELECTRICWALK,2  // Electric Walk
+SO_EARTHGRAVE,2    // Earth Grave
+SO_DIAMONDDUST,2   // Diamond Dust
+SO_POISON_BUSTER,2 // Poison Buster
+SO_PSYCHIC_WAVE,2  // Psychic Wave
+SO_CLOUD_KILL,2    // Cloud Kill
+SO_VARETYR_SPEAR,2 // Varetyr Spear
+
+// Genetic
+GN_THORNS_TRAP,2     // Thorn Trap
+GN_BLOOD_SUCKER,2    // Blood Sucker
+GN_SPORE_EXPLOSION,2 // Spore Explosion
+GN_WALLOFTHORN,2     // Wall of Thorns
+GN_CRAZYWEED,2       // Crazy Weed
+GN_HELLS_PLANT,2     // Hell's Plant

+ 0 - 204
db/skill_reproduce_db.txt

@@ -1,204 +0,0 @@
-// Reproduce Copy Skills List
-//
-// ##TODO## screw this file and make it a new skill_info2 flag
-//
-// Structure of Database:
-// SkillID
-//=================================
-
-//Swordsman
-5	//Bash
-7	//Magnum Break
-
-//Mage
-11	// Napalm Beat
-13	// Soul Strike
-14	// Cold Bolt
-15	// Frost Diver
-17	// Fire Ball
-18	// Fire Wall
-19	// Fire Bolt
-20	// Lightning Bolt
-21	// Thunderstorm
-
-//Acolyte
-24	// Ruwach
-28	// Heal
-
-//Merchant
-42	// Mammonite
-
-//Archer
-46	// Double Strafe
-47	// Arrow Shower
-
-//Thief
-52	// Envenom
-
-// Resurrection
-54	// Resurrection
-
-// Knight
-62	// Bowling Bash
-
-// Priest
-68	// Asperio
-69	// B.S Sacramenti
-70	// Sanctuary
-77	// Turn Undead
-79	// Magnus Exorcismus
-
-// Wizard
-80	// Fire Pillar
-81	// Sightrasher
-83	// Meteor Storm
-84	// Jupitel Thunder
-85	// Lord of Vermillion
-86	// Water Ball
-88	// Frost Nova
-89	// Storm Gust
-90	// Earth Spike
-91	// Heaven's Drive
-
-// Hunter
-116	// Land Mine
-121	// Freezing Trap
-122	// Blast Mine
-123	// Claymore Trap
-
-// Assassin
-141	// Venom Splasher
-
-// 1st Job Quest Skills
-148	// Arrow Repel
-152	// Stone Fling
-156	// Holy Light
-
-// Rogue
-212	// Backstab
-
-// Alchemist
-229	// Bomb
-230	// Acid Terror
-
-// Crusader
-250	// Smite
-251	// Shield Boomerang
-253	// Holy Cross
-254	// Grand Cross
-
-// Monk
-263	// Raging Trifecta Blow
-266	// Occult Impaction
-267	// Throw Spirit Sphere
-271	// Guillotine Fist
-272	// Raging Quadruple Blow
-
-// Item Skill
-337	// Tomahawk Throwing
-
-// TaeKwon Kid
-421	// Flying Kick
-
-// Ninja
-526	// Throw Coins
-527	// Flip Tatami
-528	// Haze Slasher
-529	// Shadow Slash
-531	// Blaze Shield
-534	// Flaming Petals
-536	// Exploding Dragon
-537	// Freezing Spear
-539	// Snow Flake Draft
-540	// Wind Blade
-541	// Lightning Jolt
-542	// First Wind
-
-// 2nd Job Quest Skills
-1001	// Charge Attack
-1004	// Venom Knife
-1006	// Sight Blaster
-1009	// Phantasmic Arrow
-1015	// Excruciating Palm
-
-// Rune Knight
-2002	// Sonic Wave
-2005	// Ignition Break
-2006	// Wind Cutter
-
-// Guillotine Cross
-2022	// Cross Impact
-2023	// Dark Illusion
-2034	// Phantom Menace
-
-// Arch Bishop
-2038	// Judex
-2040	// Adoramus
-2051	// Highness Heal
-2054	// Duple Light
-
-// Warlock
-2202	// Soul Expansion
-2203	// Frosty Misty
-2204	// Jack Frost
-2210	// Drain Life
-2211	// Crimson Rock
-2212	// Hell Inferno
-2213	// Comet
-2214	// Chain Lightning
-2216	// Earth Strain
-
-// Ranger
-2233	// Arrow Storm
-2236	// Aimed Bolt
-2239	// Cluster Bomb
-2253	// Icebound Trap
-2254	// Firing Trap
-
-// Shadow Chaser
-2284	// Fatal Menace
-2288	// Triangle Shot
-2304	// Feint Bomb
-
-// Royal Guard
-2310	// Shield Press
-2315	// Shield Spell
-2316	// Exceed Break
-2320	// Moon Slasher
-2323	// Earth Drive
-
-// Sura
-2326	// Dragon Combo
-2327	// Sky Net Blow
-2328	// Earth Shaker
-2330	// Tiger Cannon
-2332	// Rampage Blaster
-2336	// Knuckle Arrow
-2337	// Windmill
-2343	// Gate of Hell
-2344	// Gentle Touch - Quiet
-2517	// Howling of Lion
-2518	// Riding Lightning
-
-// Minstrel/Wanderer
-2413	// Metallic Sound
-2414	// Reverberation
-2418	// Severe Rainstorm
-
-// Sorcerer
-2443	// Fire Walk
-2444	// Electric Walk
-2446	// Earth Grave
-2447	// Diamond Dust
-2448	// Poison Buster
-2449	// Psychic Wave
-2450	// Cloud Kill
-2454	// Varetyr Spear
-
-// Genetic
-2479	// Thorn Trap
-2480	// Blood Sucker
-2481	// Spore Explosion
-2482	// Wall of Thorns
-2483	// Crazy Weed
-2490	// Hell's Plant

+ 2 - 3
src/map/battle.c

@@ -3701,7 +3701,7 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
 #ifdef RENEWAL
 				atk = ((wd.equipAtk + wd.weaponAtk + wd.statusAtk + wd.masteryAtk) * (10*tsc->data[SC_SPIRIT]->val1)) / 100;// +10% custom value.
 #else
-				atk = ((wd.damage) * (10*tsc->data[SC_SPIRIT]->val1)) / 100;// +10% custom value.
+				atk = (int) ((wd.damage) * (10*tsc->data[SC_SPIRIT]->val1)) / 100;// +10% custom value.
 #endif
 				status_change_end(target,SC_SPIRIT,INVALID_TIMER);
 			}
@@ -3713,7 +3713,7 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
 #ifdef RENEWAL
 					atk = ((wd.equipAtk + wd.weaponAtk + wd.statusAtk + wd.masteryAtk) * (100 * sd->talisman[i])) / 100;// +100% custom value.
 #else
-					atk = ((wd.damage) * (100 * sd->talisman[i])) / 100;// +100% custom value.
+					atk = (int) ((wd.damage) * (100 * sd->talisman[i])) / 100;// +100% custom value.
 #endif
 					pc_del_talisman(sd, sd->talisman[i], i);
 				}
@@ -6965,7 +6965,6 @@ static const struct _battle_data {
 	{ "display_hallucination",              &battle_config.display_hallucination,           1,      0,      1,              },
 	{ "use_statpoint_table",                &battle_config.use_statpoint_table,             1,      0,      1,              },
 	{ "ignore_items_gender",                &battle_config.ignore_items_gender,             1,      0,      1,              },
-	{ "copyskill_restrict",                 &battle_config.copyskill_restrict,              2,      0,      2,              },
 	{ "berserk_cancels_buffs",              &battle_config.berserk_cancels_buffs,           0,      0,      1,              },
 	{ "debuff_on_logout",                   &battle_config.debuff_on_logout,                1|2,    0,      1|2,            },
 	{ "monster_ai",                         &battle_config.mob_ai,                          0x000,  0x000,  0x77F,          },

+ 0 - 1
src/map/battle.h

@@ -383,7 +383,6 @@ extern struct Battle_Config
 
 	int ignore_items_gender; //[Lupus]
 
-	int copyskill_restrict; // [Aru]
 	int berserk_cancels_buffs; // [Aru]
 	int debuff_on_logout; // Removes a few "official" negative Scs on logout. [Skotlex]
 	int mob_ai; //Configures various mob_ai settings to make them smarter or dumber(official). [Skotlex]

+ 8 - 8
src/map/pc.c

@@ -1246,20 +1246,20 @@ int pc_reg_received(struct map_session_data *sd)
 	}
 
 	if ((i = pc_checkskill(sd,RG_PLAGIARISM)) > 0) {
-		sd->cloneskill_id = pc_readglobalreg(sd,"CLONE_SKILL");
+		sd->cloneskill_id = pc_readglobalreg(sd,SKILL_VAR_PLAGIARISM);
 		if (sd->cloneskill_id > 0) {
 			sd->status.skill[sd->cloneskill_id].id = sd->cloneskill_id;
-			sd->status.skill[sd->cloneskill_id].lv = pc_readglobalreg(sd,"CLONE_SKILL_LV");
+			sd->status.skill[sd->cloneskill_id].lv = pc_readglobalreg(sd,SKILL_VAR_PLAGIARISM_LV);
 			if (sd->status.skill[sd->cloneskill_id].lv > i)
 				sd->status.skill[sd->cloneskill_id].lv = i;
 			sd->status.skill[sd->cloneskill_id].flag = SKILL_FLAG_PLAGIARIZED;
 		}
 	}
 	if ((i = pc_checkskill(sd,SC_REPRODUCE)) > 0) {
-		sd->reproduceskill_id = pc_readglobalreg(sd,"REPRODUCE_SKILL");
+		sd->reproduceskill_id = pc_readglobalreg(sd,SKILL_VAR_REPRODUCE);
 		if( sd->reproduceskill_id > 0) {
 			sd->status.skill[sd->reproduceskill_id].id = sd->reproduceskill_id;
-			sd->status.skill[sd->reproduceskill_id].lv = pc_readglobalreg(sd,"REPRODUCE_SKILL_LV");
+			sd->status.skill[sd->reproduceskill_id].lv = pc_readglobalreg(sd,SKILL_VAR_REPRODUCE_LV);
 			if( i < sd->status.skill[sd->reproduceskill_id].lv)
 				sd->status.skill[sd->reproduceskill_id].lv = i;
 			sd->status.skill[sd->reproduceskill_id].flag = SKILL_FLAG_PLAGIARIZED;
@@ -7550,8 +7550,8 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 			clif_deleteskill(sd,sd->cloneskill_id);
 		}
 		sd->cloneskill_id = 0;
-		pc_setglobalreg(sd, "CLONE_SKILL", 0);
-		pc_setglobalreg(sd, "CLONE_SKILL_LV", 0);
+		pc_setglobalreg(sd,SKILL_VAR_PLAGIARISM, 0);
+		pc_setglobalreg(sd,SKILL_VAR_PLAGIARISM_LV, 0);
 	}
 
 	if(sd->reproduceskill_id) {
@@ -7562,8 +7562,8 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 			clif_deleteskill(sd,sd->reproduceskill_id);
 		}
 		sd->reproduceskill_id = 0;
-		pc_setglobalreg(sd, "REPRODUCE_SKILL",0);
-		pc_setglobalreg(sd, "REPRODUCE_SKILL_LV",0);
+		pc_setglobalreg(sd,SKILL_VAR_REPRODUCE,0);
+		pc_setglobalreg(sd,SKILL_VAR_REPRODUCE_LV,0);
 	}
 
 	// Give or reduce transcendent status points

+ 107 - 60
src/map/skill.c

@@ -94,7 +94,7 @@ struct s_skill_improvise_db {
 	short per;//1-10000
 };
 struct s_skill_improvise_db skill_improvise_db[MAX_SKILL_IMPROVISE_DB];
-bool skill_reproduce_db[MAX_SKILL_DB];
+
 struct s_skill_changematerial_db {
 	int itemid;
 	short rate;
@@ -431,34 +431,54 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
 	return hp;
 }
 
-// Making plagiarize check its own function [Aru]
-int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* bl)
-{
+/// Making plagiarize check its own function
+/// Credits:
+///   Aru for previous check
+///   Jobbie for class restriction idea
+///   Cydh expands the copyable skill
+/// Returns:
+///   0 - Cannot be copied
+///   1 - Can be copied by Plagiarism
+///   2 - Can be copied by Reproduce
+static short skill_isCopyable (struct map_session_data *sd, uint16 skill_id, struct block_list* bl) {
+	int idx = skill_get_index(skill_id);
+
+	// Only copy skill that player doesn't have or the skill is old clone
+	if (sd->status.skill[skill_id].id != 0 && sd->status.skill[skill_id].flag != SKILL_FLAG_PLAGIARIZED)
+		return 0;
+	
 	// Never copy NPC/Wedding Skills
 	if (skill_get_inf2(skill_id)&(INF2_NPC_SKILL|INF2_WEDDING_SKILL))
 		return 0;
 
-	// High-class skills
-	if((skill_id >= LK_AURABLADE && skill_id <= ASC_CDP) || (skill_id >= ST_PRESERVE && skill_id <= CR_CULTIVATION))
-	{
-		if(battle_config.copyskill_restrict == 2)
+	// Added so plagarize can't copy agi/bless if you're undead since it damages you
+	if (skill_get_inf3(skill_id)&INF3_DIS_PLAGIA)
+		return 0;
+
+	// Check if the skill is copyable by class
+	if (!pc_has_permission(sd, PC_PERM_ALL_SKILL)) {
+		uint16 job_allowed;
+		job_allowed = skill_db[idx].copyable.joballowed;
+		while (1) {
+			if (job_allowed&0x01 && sd->status.class_ == JOB_ROGUE) break;
+			if (job_allowed&0x02 && sd->status.class_ == JOB_STALKER) break;
+			if (job_allowed&0x04 && sd->status.class_ == JOB_SHADOW_CHASER) break;
+			if (job_allowed&0x08 && sd->status.class_ == JOB_SHADOW_CHASER_T) break;
+			if (job_allowed&0x10 && sd->status.class_ == JOB_BABY_ROGUE) break;
+			if (job_allowed&0x20 && sd->status.class_ == JOB_BABY_CHASER) break;
 			return 0;
-		else if(battle_config.copyskill_restrict)
-			return (sd->status.class_ == JOB_STALKER);
+		}
 	}
 
-	//Added so plagarize can't copy agi/bless if you're undead since it damages you
-	if (skill_get_inf3(skill_id)&INF3_DIS_PLAGIA)
-		return 0;
+	//Plagiarism only able to copy skill while SC_PRESERVE is not active and skill is copyable by Plagiarism
+	if (skill_db[idx].copyable.plagiarism && pc_checkskill(sd,RG_PLAGIARISM) && !sd->sc.data[SC_PRESERVE])
+		return 1;
 
-	// Couldn't preserve 3rd Class skills except only when using Reproduce skill. [Jobbie]
-	if( !(sd->sc.data[SC__REPRODUCE]) && (skill_id >= RK_ENCHANTBLADE && skill_id <= SR_RIDEINLIGHTNING) )
-		return 0;
-	// Reproduce will only copy skills according on the list. [Jobbie]
-	else if( sd->sc.data[SC__REPRODUCE] && !skill_reproduce_db[skill_id] )
-		return 0;
+	//Reproduce can copy skill if SC__REPRODUCE is active and the skill is copyable by Reproduce
+	if (skill_db[idx].copyable.reproduce && pc_checkskill(sd,SC_REPRODUCE) && (&sd->sc && sd->sc.data[SC__REPRODUCE]))
+		return 2;
 
-	return 1;
+	return 0;
 }
 
 // [MouseJstr] - skill ok to cast? and when?
@@ -896,7 +916,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint
 
 	case MG_FROSTDIVER:
 		if(!sc_start(src,bl,SC_FREEZE,skill_lv*3+35,skill_lv,skill_get_time2(skill_id,skill_lv)) && sd)
-			clif_skill_fail(sd,skill_id,0,0);
+			clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
 		break;
 
 	case WZ_FROSTNOVA:
@@ -2055,7 +2075,7 @@ int skill_strip_equip(struct block_list *src,struct block_list *bl, unsigned sho
 	struct status_change *sc;
 	const int pos[5]             = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HELM, EQP_ACC};
 	const enum sc_type sc_atk[5] = {SC_STRIPWEAPON, SC_STRIPSHIELD, SC_STRIPARMOR, SC_STRIPHELM, SC__STRIPACCESSORY};
-	const enum sc_type sc_def[5] = {SC_CP_WEAPON, SC_CP_SHIELD, SC_CP_ARMOR, SC_CP_HELM, 0};
+	const enum sc_type sc_def[5] = {SC_CP_WEAPON, SC_CP_SHIELD, SC_CP_ARMOR, SC_CP_HELM, SC_NONE};
 	int i;
 
 	if (rnd()%100 >= rate)
@@ -2066,7 +2086,7 @@ int skill_strip_equip(struct block_list *src,struct block_list *bl, unsigned sho
 		return 0;
 
 	for (i = 0; i < ARRAYLENGTH(pos); i++) {
-		if (where&pos[i] && sc->data[sc_def[i]])
+		if (where&pos[i] && sc_def[i] > SC_NONE && sc->data[sc_def[i]])
 			where&=~pos[i];
 	}
 	if (!where) return 0;
@@ -2325,8 +2345,9 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
 	struct status_change *tsc;
 	struct map_session_data *sd, *tsd;
 	int64 damage;
-	int type;
 	int8 rmdamage=0;//magic reflected
+	int type;
+	int idx;
 	bool additional_effects = true;
 
 	if(skill_id > 0 && !skill_lv) return 0;
@@ -2617,16 +2638,17 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
 
 	map_freeblock_lock();
 
-	if(damage > 0 && dmg.flag&BF_SKILL && tsd
-		&& pc_checkskill(tsd,RG_PLAGIARISM)
-		&& (!tsc || !tsc->data[SC_PRESERVE])
-		&& damage < tsd->battle_status.hp)
-	{	//Updated to not be able to copy skills if the blow will kill you. [Skotlex]
-		int copy_skill = skill_id;
-		/**
-		 * Copy Referal: dummy skills should point to their source upon copying
-		 **/
-		switch( skill_id ) {
+	idx = skill_get_index(skill_id);
+	//Check for copying skill
+	if (damage > 0 && dmg.flag&BF_SKILL && tsd
+		&& damage < tsd->battle_status.hp	//Updated to not be able to copy skills if the blow will kill you. [Skotlex]
+		&& (pc_checkskill(tsd, RG_PLAGIARISM) || pc_checkskill(tsd, SC_REPRODUCE)))
+	{
+		uint16 copy_skill = skill_id;
+		short copy_flag;
+
+		// Copy Referal: dummy skills should point to their source upon copying
+		switch (skill_id) {
 			case AB_DUPLELIGHT_MELEE:
 			case AB_DUPLELIGHT_MAGIC:
 				copy_skill = AB_DUPLELIGHT;
@@ -2653,11 +2675,9 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
 				break;
 		}
 
-		if ((tsd->status.skill[copy_skill].id == 0 || tsd->status.skill[copy_skill].flag == SKILL_FLAG_PLAGIARIZED) &&
-			can_copy(tsd,copy_skill,bl))	// Split all the check into their own function [Aru]
-		{
+		if ((copy_flag = skill_isCopyable(tsd,copy_skill,bl))) {
 			int lv;
-			if( tsc && tsc->data[SC__REPRODUCE] && (lv = tsc->data[SC__REPRODUCE]->val1) ) {
+			if (copy_flag == 2 && (lv = tsc->data[SC__REPRODUCE]->val1)) {
 				//Level dependent and limitation.
 				lv = min(lv,skill_get_max(copy_skill));
 				if( tsd->reproduceskill_id && tsd->status.skill[tsd->reproduceskill_id].flag == SKILL_FLAG_PLAGIARIZED ) {
@@ -2668,16 +2688,16 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
 				}
 
 				tsd->reproduceskill_id = copy_skill;
-				pc_setglobalreg(tsd, "REPRODUCE_SKILL", copy_skill);
-				pc_setglobalreg(tsd, "REPRODUCE_SKILL_LV", lv);
+				pc_setglobalreg(tsd,SKILL_VAR_REPRODUCE,copy_skill);
+				pc_setglobalreg(tsd,SKILL_VAR_REPRODUCE_LV,lv);
 
 				tsd->status.skill[copy_skill].id = copy_skill;
 				tsd->status.skill[copy_skill].lv = lv;
 				tsd->status.skill[copy_skill].flag = SKILL_FLAG_PLAGIARIZED;
 				clif_addskill(tsd,copy_skill);
-			} else {
+			} else if (copy_flag == 1) {
 				lv = skill_lv;
-				if (tsd->cloneskill_id && tsd->status.skill[tsd->cloneskill_id].flag == SKILL_FLAG_PLAGIARIZED){
+				if (tsd->cloneskill_id && tsd->status.skill[tsd->cloneskill_id].flag == SKILL_FLAG_PLAGIARIZED) {
 					tsd->status.skill[tsd->cloneskill_id].id = 0;
 					tsd->status.skill[tsd->cloneskill_id].lv = 0;
 					tsd->status.skill[tsd->cloneskill_id].flag = SKILL_FLAG_PERMANENT;
@@ -2688,8 +2708,8 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
 					lv = type;
 
 				tsd->cloneskill_id = copy_skill;
-				pc_setglobalreg(tsd, "CLONE_SKILL", copy_skill);
-				pc_setglobalreg(tsd, "CLONE_SKILL_LV", lv);
+				pc_setglobalreg(tsd,SKILL_VAR_PLAGIARISM,copy_skill);
+				pc_setglobalreg(tsd,SKILL_VAR_PLAGIARISM_LV,lv);
 
 				tsd->status.skill[skill_id].id = copy_skill;
 				tsd->status.skill[skill_id].lv = lv;
@@ -14046,6 +14066,23 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
 			break;
 	}
 
+	//Check if player is using the copied skill [Cydh]
+	if (sd->status.skill[idx].flag == SKILL_FLAG_PLAGIARIZED) {
+		uint16 req_opt = skill_db[idx].copyable.req_opt;
+		if (req_opt&0x001) req.hp = 0;
+		if (req_opt&0x002) req.mhp = 0;
+		if (req_opt&0x004) req.sp = 0;
+		if (req_opt&0x008) req.hp_rate = 0;
+		if (req_opt&0x010) req.sp_rate = 0;
+		if (req_opt&0x020) req.zeny = 0;
+		if (req_opt&0x040) req.weapon = 0;
+		if (req_opt&0x080) { req.ammo = 0; req.ammo_qty = 0; }
+		if (req_opt&0x100) req.state = ST_NONE;
+		if (req_opt&0x200) { memset(req.status,SC_NONE,sizeof(req.status)); }
+		if (req_opt&0x400) req.spiritball = 0;
+		if (req_opt&0x800) { memset(req.itemid,0,sizeof(req.itemid)); memset(req.amount,0,sizeof(req.amount)); }
+	}
+
 	return req;
 }
 
@@ -17940,15 +17977,12 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current)
 static bool skill_parse_row_requiredb(char* split[], int columns, int current)
 {// skill_id,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,RequiredStatuss,SpiritSphereCost,RequiredItemID1,RequiredItemAmount1,RequiredItemID2,RequiredItemAmount2,RequiredItemID3,RequiredItemAmount3,RequiredItemID4,RequiredItemAmount4,RequiredItemID5,RequiredItemAmount5,RequiredItemID6,RequiredItemAmount6,RequiredItemID7,RequiredItemAmount7,RequiredItemID8,RequiredItemAmount8,RequiredItemID9,RequiredItemAmount9,RequiredItemID10,RequiredItemAmount10
 	char* p;
-	uint16 j;
-	uint16 skill_id = atoi(split[0]);
-	uint16 idx;
+	uint16 skill_id = atoi(split[0]), idx, i;
 
 	if (!skill_get_index(skill_id)) // invalid skill id
 		return false;
 
 	idx = skill_get_index(skill_id);
-
 	skill_split_atoi(split[1],skill_db[idx].require.hp);
 	skill_split_atoi(split[2],skill_db[idx].require.mhp);
 	skill_split_atoi(split[3],skill_db[idx].require.sp);
@@ -17958,7 +17992,7 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
 
 	//Witch weapon type are required, see doc/item_db for weapon types (View column)
 	p = split[7];
-	for( j = 0; j < 32; j++ ) {
+	while (p) {
 		int l = atoi(p);
 		if( l == 99 ) { // Any weapon
 			skill_db[idx].require.weapon = 0;
@@ -17973,7 +18007,7 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
 
 	//Ammo type that required, see doc/item_db for ammo types (View column)
 	p = split[8];
-	for( j = 0; j < 32; j++ ) {
+	while (p) {
 		int l = atoi(p);
 		if( l == 99 ) { // Any ammo type
 			skill_db[idx].require.ammo = 0xFFFFFFFF;
@@ -18006,7 +18040,7 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
 	//Status requirements
 	skill_db[idx].require.status_count = 0;
 	p = strtok(split[11],":");
-	for( j = 0; j < MAX_SKILL_STATUS_REQUIRE && p != NULL; j++ ) {
+	for( i = 0; i < MAX_SKILL_STATUS_REQUIRE && p != NULL; i++ ) {
 		int status = SC_NONE;
 		script_get_constant(trim(p), &status);		
 		if (status > SC_NONE) {
@@ -18018,9 +18052,9 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
 
 	skill_split_atoi(split[12],skill_db[idx].require.spiritball);
 
-	for( j = 0; j < MAX_SKILL_ITEM_REQUIRE; j++ ) {
-		skill_db[idx].require.itemid[j] = atoi(split[13+ 2*j]);
-		skill_db[idx].require.amount[j] = atoi(split[14+ 2*j]);
+	for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++ ) {
+		skill_db[idx].require.itemid[i] = atoi(split[13+ 2*i]);
+		skill_db[idx].require.amount[i] = atoi(split[14+ 2*i]);
 	}
 
 	return true;
@@ -18219,12 +18253,26 @@ static bool skill_parse_row_magicmushroomdb(char* split[], int column, int curre
 }
 
 static bool skill_parse_row_reproducedb(char* split[], int column, int current) {
-	uint16 skill_id = atoi(split[0]);
-	uint16 idx = skill_get_index(skill_id);
-	if( !idx )
+	uint16 skill_id = skill_name2id(split[0]), idx;
+	uint8 option;
+
+	if (!skill_get_index(skill_id)) {
+		ShowError("skill_parse_row_reproducedb: Invalid skill %s\n",split[0]);
 		return false;
+	}
+	if (!(option = atoi(split[1]))) {
+		ShowError("skill_parse_row_reproducedb: Invalid option %d\n",option);
+		return false;
+	}
+	idx = skill_get_index(skill_id);
+
+	//skill that can be copied by plagiarism
+	skill_db[idx].copyable.plagiarism = (option&1) ? true : false;
+	//skill that can be copied by reproduce
+	skill_db[idx].copyable.reproduce = (option&2) ? true : false;
 
-	skill_reproduce_db[idx] = true;
+	skill_db[idx].copyable.joballowed = (atoi(split[2])) ? cap_value(atoi(split[2]),1,63) : 63;
+	skill_db[idx].copyable.req_opt = cap_value(atoi(split[3]),0,4095);
 
 	return true;
 }
@@ -18330,7 +18378,6 @@ static void skill_readdb(void)
 	memset(skill_abra_db,0,sizeof(skill_abra_db));
 	memset(skill_spellbook_db,0,sizeof(skill_spellbook_db));
 	memset(skill_magicmushroom_db,0,sizeof(skill_magicmushroom_db));
-	memset(skill_reproduce_db,0,sizeof(skill_reproduce_db));
 	memset(skill_changematerial_db,0,sizeof(skill_changematerial_db));
 
 	// load skill databases
@@ -18357,7 +18404,7 @@ static void skill_readdb(void)
 	sv_readdb(db_path, "spellbook_db.txt"      , ',',   3,  3, MAX_SKILL_SPELLBOOK_DB, skill_parse_row_spellbookdb);
 	//Guillotine Cross
 	sv_readdb(db_path, "magicmushroom_db.txt"  , ',',   1,  1, MAX_SKILL_MAGICMUSHROOM_DB, skill_parse_row_magicmushroomdb);
-	sv_readdb(db_path, "skill_reproduce_db.txt", ',',   1,  1, MAX_SKILL_DB, skill_parse_row_reproducedb);
+	sv_readdb(db_path, "skill_copyable_db.txt", ',',    2,  4, MAX_SKILL_DB, skill_parse_row_reproducedb);
 	sv_readdb(db_path, "skill_improvise_db.txt"      , ',',   2,  2, MAX_SKILL_IMPROVISE_DB, skill_parse_row_improvisedb);
 	sv_readdb(db_path, "skill_changematerial_db.txt"      , ',',   4,  4+2*5, MAX_SKILL_PRODUCE_DB, skill_parse_row_changematerialdb);
 #ifdef ADJUST_SKILL_DAMAGE

+ 16 - 0
src/map/skill.h

@@ -108,6 +108,8 @@ struct skill_condition {
 	int hp,
 		mhp,
 		sp,
+		hp_rate,
+		sp_rate,
 		ammo,
 		ammo_qty,
 		weapon,
@@ -164,6 +166,10 @@ struct s_skill_db {
 #ifdef ADJUST_SKILL_DAMAGE
 	struct s_skill_damage damage;
 #endif
+	struct s_copyable { // [Cydh]
+		bool plagiarism, reproduce;
+		uint16 joballowed, req_opt;
+	} copyable;
 };
 extern struct s_skill_db skill_db[MAX_SKILL_DB];
 
@@ -1966,4 +1972,14 @@ enum e_skill_damage_caster {
 };
 #endif
 
+/// Variable name of copied skill by Plagiarism
+#define SKILL_VAR_PLAGIARISM "CLONE_SKILL"
+/// Variable name of copied skill level by Plagiarism
+#define SKILL_VAR_PLAGIARISM_LV "CLONE_SKILL_LV"
+
+/// Variable name of copied skill by Reproduce
+#define SKILL_VAR_REPRODUCE "REPRODUCE_SKILL"
+/// Variable name of copied skill level by Reproduce
+#define SKILL_VAR_REPRODUCE_LV "REPRODUCE_SKILL_LV"
+
 #endif /* _SKILL_H_ */