Explorar o código

Merge branch 'master' into cleanup/storages_optimization

aleos89 %!s(int64=8) %!d(string=hai) anos
pai
achega
7a05b59dd1

+ 3 - 0
conf/battle/party.conf

@@ -56,3 +56,6 @@ party_even_share_bonus: 0
 // Display party name regardless if player is in a guild.
 // Official servers do not display party name unless the user is in a guild. (Note 1)
 display_party_name: no
+
+// Prevent multiple characters of the same account to join the same party. (Note 1)
+block_account_in_same_party: yes

+ 22 - 0
db/pre-re/skill_db.txt

@@ -865,6 +865,28 @@
 //725,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_REVERBERATION,Reverberation 2
 //726,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_REVERBERATION_ATK,Reverberation Attack
 //727,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_LEX_AETERNA,Lex Aeterna 2
+//728,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_ARROWSTORM,NPC Arrow Storm
+//729,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_CHEAL,NPC Coluceo Heal
+//730,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_SR_CURSEDCIRCLE,NPC 
+//731,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_DRAGONBREATH,NPC Dragon Breath
+//732,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_FATALMENACE,NPC Fatal Menace
+//733,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_MAGMA_ERUPTION,NPC Magma Eruption
+//734,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_MAGMA_ERUPTION_DOTDAMAGE,NPC Magma Eruption Dot Damage
+//735,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_MANDRAGORA,NPC Howling of Mandragora
+//736,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_PSYCHIC_WAVE,NPC Psychic Wave
+//737,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_RAYOFGENESIS,NPC Ray of Genesis
+//738,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_VENOMIMPRESS,NPC Venom Impress
+//739,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_CLOUD_KILL,NPC Cloud Kill
+//740,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_IGNITIONBREAK,NPC Ignition Break
+//741,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_PHANTOMTHRUST,NPC Phantom Thrust
+//742,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_POISON_BUSTER,NPC Poison Blaster
+//743,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_HALLUCINATIONWALK,NPC Hallucination Walk
+//744,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_ELECTRICWALK,NPC Electric Walk
+//745,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_FIREWALK,NPC Fire Walk
+//746,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDEDISPEL,Wide Dispell
+//747,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_LEASH,Leash
+//748,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDELEASH,Wide Leash
+//749,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDECRITICALWOUND,Wide Critical Wound
 
 //****
 // 2nd Quest Skills

+ 35 - 4
db/re/item_combo_db.txt

@@ -32,6 +32,7 @@
 1490:19021,{ bonus2 bSkillAtk,"LK_SPIRALPIERCE",getequiprefinerycnt(EQI_HAND_R)*5; bonus4 bAutoSpellOnSkill,"LK_JOINTBEAT","LK_SPIRALPIERCE",max(getskilllv("LK_SPIRALPIERCE"),1),50+(getskilllv("LK_JOINTBEAT")*10); /* Confirm: Success rate */ }
 15141:19033,{ bonus bMaxSP,100; bonus bNoCastCancel,1; }
 15141:20779:22075,{ .@r = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bMaxHP,1000; bonus bHealPower,min(5+.@r,30); bonus bHealPower2,min(5+.@r,30); }
+15186:19168,{ bonus2 bExpAddClass,Class_All,5; bonus2 bDropAddClass,Class_All,5; }
 1535:4361,{ bonus bBreakArmorRate,900; bonus bBreakWeaponRate,900; }
 1559:5467,{ bonus bAspd,1; bonus bFlee2,3; }
 1572:2716:2717,{ bonus bInt,5; bonus bMaxHP,700; bonus bAspdRate,5; }
@@ -348,10 +349,10 @@
 4545:18730,{ bonus bMatk,5; bonus bBaseAtk,5; }
 4605:4606,{ bonus2 bSubEle,Ele_Neutral,20; bonus bFlee,20; bonus2 bHPLossRate,100,6000; bonus2 bSPLossRate,6,6000; }
 4608:4609,{ bonus2 bAddSize,Size_Medium,15; bonus2 bAddSize,Size_Large,15; bonus2 bSubSize,Size_Medium,5; bonus2 bSubSize,Size_Large,5; }
-4626:4628,{ bonus2 bSubRace,RC_Formless,5; bonus2 bSubRace,RC_Demon,5; bonus2 bIgnoreMdefRaceRate,RC_Formless,50; bonus2 bIgnoreMdefRaceRate,RC_Demon,50; }
-4627:4628,{ bonus2 bSubRace,RC_Formless,5; bonus2 bSubRace,RC_Demon,5; bonus2 bIgnoreDefRaceRate,RC_Formless,50; bonus2 bIgnoreDefRaceRate,RC_Demon,50;}
-4629:4630,{ bonus3 bAutoSpell,677,2,2; bonus2 bSubEle,Ele_Neutral,5; }
-4631:4632,{ bonus5 bAutoSpell,85,1,1,BF_SHORT,0; }
+4626:4628,{ bonus2 bIgnoreMdefRaceRate,RC_Demon,50; }
+4627:4628,{ bonus2 bIgnoreDefRaceRate,RC_Formless,50; bonus2 bIgnoreDefRaceRate,RC_Demon,50;}
+4629:4630,{ bonus3 bAutoSpell,"NPC_WIDECURSE",2,2; bonus2 bSubEle,Ele_Neutral,5; }
+4631:4632,{ bonus5 bAutoSpell,"WZ_VERMILION",1,1,BF_WEAPON,0; }
 4635:4636,{ bonus2 bResEff,Eff_Burning,10000; }
 4642:4646,{ bonus bAtkRate,10; bonus bMatkRate,10; }
 4643:4646,{ bonus bAtkRate,10; bonus bMatkRate,10; }
@@ -426,6 +427,21 @@
 15156:20790:22085:28380:28418,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus2 bSkillAtk,"SU_CN_METEOR",200; }
 15156:20790:22085:28380:28421,{ bonus bMaxHPrate,30; bonus bMaxSPrate,9; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",200; }
 15156:20790:22085:28381:28415,{ bonus bMaxHPrate,25; bonus bMaxSPrate,15; bonus bHealPower,30; skill "AL_HEAL",9,1; }
+15181:28443:28444,{ bonus bAtk,20; bonus2 bSubEle,Ele_All,2; bonus2 bSubEle,Ele_Neutral,-2; }
+15182:28445:28446,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; }
+15183:28447:28448,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; bonus2 bExpAddClass,Class_All,2; }
+15184:28449:28450,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; }
+15185:28451:28452,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel,1; }
+15181:28453:28454,{ bonus bMatk,20; bonus2 bSubEle,Ele_All,2; bonus2 bSubEle,Ele_Neutral,-2; }
+15182:28455:28456,{ bonus bMatk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; }
+15183:28457:28458,{ bonus bMatk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; bonus2 bExpAddClass,Class_All,2; }
+15184:28459:28460,{ bonus bMatk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; }
+15185:28461:28462,{ bonus bMatk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel,1; }
+15181:28463:28464,{ bonus bAtk,20; bonus2 bSubEle,Ele_All,2; bonus2 bSubEle,Ele_Neutral,-2; }
+15182:28465:28466,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; }
+15183:28467:28468,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; bonus2 bExpAddClass,Class_All,2; }
+15184:28469:28470,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; }
+15185:28471:28472,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel,1; }
 18137:1752,{ bonus bLongAtkRate,25; }
 18137:1752:19048,{ bonus bLongAtkRate,20; bonus2 bSubEle,Ele_Fire,-10; if (getequiprefinerycnt(EQI_HAND_R) >= 10) bonus bAspd,1; }
 18137:19019,{ bonus bLongAtkRate,45; }
@@ -453,6 +469,21 @@
 20797:4174,{ bonus2 bSubEle,Ele_All,50; bonus2 bSubEle,Ele_Neutral,-50; }
 22069:2195,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bAddEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_L); }
 22069:20753,{ bonus2 bAddEle,Ele_Neutral,5; .@r = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r; bonus bMaxSPrate,.@r; }
+22122:28443:28444,{ bonus bAspdRate,4; bonus bHit,4; }
+22123:28445:28446,{ bonus bAspdRate,8; bonus bHit,8; }
+22124:28447:28448,{ bonus bAspdRate,8; bonus bHit,8; bonus2 bExpAddClass,Class_All,2; }
+22125:28449:28450,{ bonus bAspdRate,10; bonus bHit,10; bonus2 bExpAddClass,Class_All,2; }
+22126:28451:28452,{ bonus bAspdRate,10; bonus bHit,10; bonus2 bExpAddClass,Class_All,2; bonus bSpeedAddRate,25; }
+22122:28453:28454,{ bonus bVariableCastrate,-3; bonus bDelayrate,-3; }
+22123:28455:28456,{ bonus bVariableCastrate,-6; bonus bDelayrate,-6; }
+22124:28457:28458,{ bonus bVariableCastrate,-6; bonus bDelayrate,-6; bonus2 bExpAddClass,Class_All,2; }
+22125:28459:28460,{ bonus bVariableCastrate,-6; bonus bDelayrate,-6; bonus2 bExpAddClass,Class_All,2; }
+22126:28461:28462,{ bonus bVariableCastrate,-8; bonus bDelayrate,-8; bonus2 bExpAddClass,Class_All,2; bonus bSpeedAddRate,25; }
+22122:28463:28464,{ bonus bAspdRate,4; bonus bHit,4; }
+22123:28465:28466,{ bonus bAspdRate,8; bonus bHit,8; }
+22124:28467:28468,{ bonus bAspdRate,8; bonus bHit,8; bonus2 bExpAddClass,Class_All,2; }
+22125:28469:28470,{ bonus bAspdRate,10; bonus bHit,10; bonus2 bExpAddClass,Class_All,2; }
+22126:28471:28472,{ bonus bAspdRate,10; bonus bHit,10; bonus2 bExpAddClass,Class_All,2; bonus bSpeedAddRate,25; }
 24012:24013:24014:24015:24016:24017,{ bonus bAllStats,9; }
 24018:24019:24020,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus bAtkRate,1; } }
 24021:24022:24023,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus bMatkRate,1; } }

+ 71 - 13
db/re/item_db.txt

@@ -2155,7 +2155,7 @@
 2967,RWC_2012_Ring_,Chambered RWC 2012 Ring,4,20,,200,,0,,1,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,1; },{},{}
 2968,RWC_2012_Pendant,RWC 2012 Pendant,4,20,,200,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bMatkRate,1; },{},{}
 2969,RWC_2012_Pendant_,Chambered RWC 2012 Pendant,4,20,,200,,0,,1,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bMatkRate,1; },{},{}
-2971,Pocket_Watch,Pocket Watch,4,10,,200,,1,,1,0x800200,63,2,136,,80,1,,{},{},{}
+2971,Pocket_Watch,Pocket Watch,4,10,,200,,1,,1,0x800200,63,2,136,,80,1,,{ bonus bHPrecovRate,15; bonus bSPrecovRate,15; bonus bMatkRate,7; },{},{}
 2976,Red_Lantern,Red Lantern,4,10,,200,,0,,1,0xFFFFFFFF,63,2,136,,100,0,,{ bonus bMaxSP,-300; skill "MG_SIGHT",1; },{},{ sc_end SC_SIGHT; }
 2977,Broken_Heart,Broken Heart,4,10,,100,,0,,1,0xFFFFFFFF,63,2,136,,110,0,,{ bonus bMaxSP,200; skill "DC_SCREAM",3; },{},{}
 2978,Kindly_Heart,Kindly Heart,4,10,,100,,0,,1,0xFFFFFFFF,63,2,136,,110,0,,{ bonus bMaxHP,500; bonus2 bHPRegenRate,300,10000; skill "DC_SCREAM",3; },{},{}
@@ -2789,13 +2789,13 @@
 4609,Khalitzburg_Knight_Card,Khalitzburg Knight Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,20; bonus2 bSubSize,Size_Medium,25; bonus2 bSubSize,Size_Large,25; },{},{}
 4610,Sarah_Card,Sarah Card,6,10,,10,,,,,,,,16,,,,,{ bonus bAbsorbDmgMaxHP,100; },{},{}
 4625,Time_Holder_Card,Time Holder Card,6,10,,10,,,,,,,,2,,,,,{ bonus bMatkRate,20; bonus bUseSPrate,10; },{},{}
-4626,Big_Ben_Card,Big Ben Card,6,10,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Formless,10; bonus2 bMagicAddRace,RC_Demon,10; },{},{}
+4626,Big_Ben_Card,Big Ben Card,6,10,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Formless,5; bonus2 bMagicAddRace,RC_Demon,5; },{},{}
 4627,Big_Bell_Card,Big Bell Card,6,10,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Formless,10; bonus2 bAddRace,RC_Demon,10; },{},{}
 4628,Neo_Punk_Card,Neo Punk Card,6,10,,10,,,,,0xFFFFFFFF,63,2,32,,,,,{ bonus2 bSubRace,RC_Formless,20; bonus2 bSubRace,RC_Demon,20; },{},{}
-4629,Arc_Elder_Card,Arc Elder Card,6,10,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAtkEle,Ele_Earth,30; },{},{}
-4630,Nightmare_Timer_Keeper_Card,Nightmare Timer Keeper Card,6,10,,10,,,,,,,,64,,,,,{ bonus3 bAutoSpell,"NPC_WIDECURSE",2,1; },{},{}
+4629,Arc_Elder_Card,Arc Elder Card,6,10,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAtkEle,Ele_Earth,getrefine()*3; },{},{}
+4630,Nightmare_Timer_Keeper_Card,Nightmare Timer Keeper Card,6,10,,10,,,,,,,,64,,,,,{ bonus3 bAutoSpell,"NPC_WIDECURSE",2,20; },{},{}
 4631,Owl_Viscount_Card,Owl Viscount Card,6,10,,10,,,,,,,,136,,,,,{ bonus bAspdRate,3; },{},{}
-4632,Owl_Marquees_Card,Owl Marquees Card,6,10,,10,,,,,,,,136,,,,,{ bonus5 bAutoSpell,"SA_VIOLENTGALE",(getskilllv("SA_VIOLENTGALE")==5?5:1),1,BF_SHORT,0; },{},{}
+4632,Owl_Marquees_Card,Owl Marquees Card,6,10,,10,,,,,,,,136,,,,,{ bonus5 bAutoSpell,"SA_VIOLENTGALE",(getskilllv("SA_VIOLENTGALE")==5?5:1),1,BF_WEAPON,0; },{},{}
 4633,Enhanced_Archer_Skeleton_Card,Enhanced Archer Skeleton Card,6,20,,10,,,,,,,,2,,,,,{ bonus bLongAtkRate,(BaseLevel>=100?12:10); },{},{}
 4634,Enhanced_Soldier_Skeleton_Card,Enhanced Soldier Skeleton Card,6,20,,10,,,,,,,,2,,,,,{ if (BaseLevel<100) { bonus bCritical,9; } else { bonus bCritical,10; bonus bCritAtkRate,5; } },{},{}
 4635,Enhanced_Amdarais_Card,Enhanced Amdarais Card,6,20,,10,,,,,,,,16,,,,,{ .@r = getrefine(); bonus bDef,(.@r*10); bonus bFlee,(.@r*-2); if (BaseLevel>=100) bonus bMaxHP,500; },{},{}
@@ -5778,9 +5778,9 @@
 7935,Poison_Herb_Seratum,Poison Herb Seratum,3,1,,10,,,,,,,,,,,,,{},{},{}
 7936,Poison_Herb_Scopolia,Poison Herb Scoporia,3,1,,10,,,,,,,,,,,,,{},{},{}
 7937,Poison_Herb_Amoena,Poison Herb Amoena,3,1,,10,,,,,,,,,,,,,{},{},{}
-7938,Light_Granule,Light Granule,3,1000,,10,,,,,,,,,,,,,{},{},{}
-7939,Elder_Branch,Elder Branch,3,1000,,10,,,,,,,,,,,,,{},{},{}
-7940,Special_Alloy_Trap,Special Alloy Trap,3,200,,2,,,,,,,,,,,,,{},{},{}
+7938,Light_Granule,Light Granule,3,1500,,10,,,,,,,,,,,,,{},{},{}
+7939,Elder_Branch,Elder Branch,3,1500,,10,,,,,,,,,,,,,{},{},{}
+7940,Special_Alloy_Trap,Special Alloy Trap,3,300,,2,,,,,,,,,,,,,{},{},{}
 7941,Halloween_Ticket,Halloween Ticket,3,10,,0,,,,,,,,,,,,,{},{},{}
 7942,Letter_From_Chico,Chico Cesar Letter,3,0,,0,,,,,,,,,,,,,{},{},{}
 7943,Caskinya,Caskinya,3,0,,0,,,,,,,,,,,,,{},{},{}
@@ -8637,6 +8637,12 @@
 15163,Fictitious_Robe,Fictitious Robe,4,20,,100,,0,,1,0xFFFFFFFF,63,2,16,,100,1,,{ skill "SA_SPELLBREAKER",1; .@i = BaseLevel; bonus bMatkRate,(.@i>=140)?(14):((.@i>=120)?(9):(5)); },{},{}
 15164,Consultative_Robe,Consultative Robe,4,20,,100,,0,,1,0xFFFFFFFF,63,2,16,,100,1,,{ bonus bVit,5; skill "PA_SACRIFICE",1; bonus2 bSubEle,Ele_Dark,getrefine()*3; bonus2 bSubEle,Ele_Fire,getrefine()*3; },{},{}
 15174,Surfer_Swimsuit,Surfer Swimsuit,4,20,,100,,1,,1,0xFFFFFFFF,63,2,16,,40,1,,{ bonus bMaxHPrate,(getrefine()/3)+5; bonus bMaxSPrate,(getrefine()/3)+5; },{},{}
+15181,Para_Team_Uniform100,Awakened Eden Group Uniform I,4,20,,0,,80,,0,0xFFFFFFFF,63,2,16,,100,,,{ bonus bAllStats,1; bonus bMaxHP,700; bonus bMaxSP,100; bonus bMdef,7; },{},{}
+15182,Para_Team_Uniform115,Awakened Eden Group Uniform II,4,20,,0,,85,,0,0xFFFFFFFF,63,2,16,,115,,,{ bonus bAllStats,1; bonus bMaxHP,1100; bonus bMaxSP,120; bonus bMdef,11; },{},{}
+15183,Para_Team_Uniform130,Awakened Eden Group Uniform III,4,20,,0,,90,,0,0xFFFFFFFF,63,2,16,,130,,,{ bonus bAllStats,2; bonus bMaxHP,1100; bonus bMaxSP,120; bonus bMdef,11; },{},{}
+15184,Para_Team_Uniform145,Awakened Eden Group Uniform IV,4,20,,0,,100,,0,0xFFFFFFFF,63,2,16,,145,,,{ bonus bAllStats,2; bonus bMaxHP,1500; bonus bMaxSP,150; bonus bMdef,15; },{},{}
+15185,Para_Team_Uniform160,Awakened Eden Group Uniform V,4,20,,0,,100,,0,0xFFFFFFFF,63,2,16,,160,,,{ bonus bAllStats,2; bonus bMaxHP,1500; bonus bMaxSP,150; bonus bMdef,15; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; },{},{}
+15186,Kafra_Uniform,Kafra Uniform,4,20,,500,,40,,1,0xFFFFFFFF,63,2,16,,1,1,,{ bonus2 bExpAddClass,Class_All,5; bonus2 bDropAddClass,Class_All,5; .@r = getrefine(); bonus bMaxHP,100*.@r; bonus bMaxSP,20*.@r; bonus bMaxHPrate,(3*(.@r>=7)+5*(.@r>=9)); bonus bMaxSPrate,(3*(.@r>=7)+5*(.@r>=9)); if(.@r>=12){ bonus bHPrecovRate,100; bonus bSPrecovRate,100; } },{},{}
 //===================================================================
 // More Maces
 //===================================================================
@@ -9405,7 +9411,7 @@
 18120,Bow_Of_Evil_Slayer,Bow Of Evil Slayer,5,10,,1350,,115,,1,0x00020008,63,2,34,,100,1,11,{ bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus bAtkRate,(.@r>=9)?(5):((.@r>=12)?(7):(0)); },{},{}
 18121,Bow_of_Vicious_Mind,Bow of Vicious Mind,5,20,,1700,170,,5,1,0x000A0808,63,2,34,4,160,1,11,{ bonus bAtk,pow(min(getrefine(),15),2); },{},{}
 18122,Giant_Bow,Giant Bow,5,20,,3000,195,,5,1,0x00000800,63,2,34,4,130,1,11,{ bonus bLongAtkRate,40; bonus bAspdRate,-15; bonus bHit,50; },{},{}
-18123,Bow_of_Storms,Bow of Storms,5,20,,1500,160,,5,1,0x00000800,63,2,34,4,130,1,11,{ bonus bLongAtkRate,30; bonus2 bSkillCooldown,"RA_ARROWSTORM",-20; bonus2 bSkillUseSP,"RA_ARROWSTORM",15; },{},{}
+18123,Bow_of_Storms,Bow of Storms,5,20,,1500,160,,5,1,0x00080800,63,2,34,4,130,1,11,{ bonus bLongAtkRate,30; bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",15; },{},{}
 18124,Half_BF_Bow1,Half BF Bow1,5,20,,0,100,,5,0,0x000A0848,63,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; },{},{}
 18125,Arcus_Daemonicus,Arcus Daemonicus,5,20,,1000,130,,5,2,0x00020008,63,2,34,4,80,1,11,{ /*Fix me: bonus bAtkRate,50; when equipped with shadow arrows*/ if(getrefine()>9){ bonus bAspd,1; bonus bUseSPrate,-20; } },{},{}
 18126,Blue_Bow,Blue Bow,5,10,,1200,150,,5,1,0x00000800,56,2,2,3,100,1,11,{ bonus bAgi,5; bonus bDex,5; },{},{}
@@ -9657,7 +9663,7 @@
 18748,Gold_Ingot_Poring_Hat,Gold Ingot Poring Hat,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,0,1,887,{ bonus bDex,2; bonus bLuk,2; },{},{}
 18749,Majoruros_Horn,Majoruros Horn,4,20,,500,,8,,1,0xFFFFFFFF,63,2,256,,0,1,888,{ bonus bStr,2; bonus bMaxHP,100; },{},{}
 18750,Poker_Card_In_Mouth,Poker Card In Mouth,4,20,,50,,0,,0,0xFFFFFFFF,63,2,1,,10,0,889,{ bonus2 bAddRace,RC_DemiHuman,2; },{},{}
-18752,Rideword_Hat_,Rideword Hat,4,20,,300,,3,,1,0xFFFFFFFE,63,2,256,,99,1,890,{ .@r = getrefine(); bonus2 bHPLossRate,500*.@r,5000; bonus2 bHPDrainRate,40,4+(.@r/2); bonus2 bSPDrainRate,10,1+(.@r/3); },{},{}
+18752,Cursed_Book,Cursed Book,4,20,,300,,3,,1,0xFFFFFFFE,63,2,256,,99,1,890,{ .@r = getrefine(); bonus2 bHPLossRate,.@r,5000; bonus2 bHPDrainRate,40,4+(.@r/2); bonus2 bSPDrainRate,10,1+(.@r/3); },{},{}
 18753,Tw_Rice_Ball,Tw Rice Ball,4,20,,100,,6,,0,0xFFFFFFFF,63,2,256,,0,0,892,{ bonus bLuk,1; bonus2 bAddMonsterDropItem,564,100; },{},{}
 18754,Blood_Sucker,Blood Sucker,4,20,,300,,0,,0,0xFFFFFFFF,63,2,1,,40,0,893,{ bonus bUnbreakableHelm,1; bonus2 bHPDrainRate,30,5; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{}
 18755,Feather_Beret_,Feather Beret,4,0,,600,,1,,1,0xFFFFFFFF,63,2,256,1,1,1,224,{ bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
@@ -9746,7 +9752,7 @@
 18871,Very_Sweet_Candy,Very Sweet Candy,4,10,,10,,,,0,0xFFFFFFFF,63,2,1,,1,1,446,{ bonus bAllStats,1; bonus bBaseAtk,5; bonus bMatk,5; },{},{}
 18872,Snake_Hat,Snake Hat,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,986,{ bonus bStr,3; bonus bInt,3; bonus bMdef,5; bonus bUnbreakableHelm,1; },{},{}
 18873,Sweet_Valentine_Out,Sweet Valentine Out,4,20,,100,,1,,0,0xFFFFFFFF,63,2,256,,1,1,865,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; },{},{}
-18874,Cyclops_Glasses,Cyclops Glasses,4,10,,100,,,,1,0xFFFFFFFF,63,2,512,,1,1,23,{},{},{}
+18874,Cyclops_Glasses,Cyclops Glasses,4,10,,100,,,,1,0xFFFFFFFF,63,2,512,,1,,23,{},{},{}
 18878,Palace_Guard_Cap,Palace Guard Cap,4,10,,1000,,15,,1,0xFFFFFFFF,63,2,256,,50,1,991,{ .@r = getrefine(); bonus2 bAddEle,Ele_Neutral,4+.@r/6; bonus bLongAtkRate,4+.@r; bonus bUnbreakableHelm,1; },{},{}
 18879,Angry_Scorpion_Hat,Angry Scorpion Hat,4,10,,100,,5,,0,0xFFFFFFFF,63,2,256,,0,1,995,{ bonus bMdef,5; },{},{}
 18880,Advanced_Jao_King_Hat,Advanced Jao King Hat,4,10,,1500,,4,,1,0xFFFFFFFF,63,2,256,,175,1,996,{ bonus bAllStats,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5; },{},{}
@@ -9809,7 +9815,7 @@
 19026,Aegir_Helm,Aegir Helm,4,10,,800,,10,,1,0xFFFFFFFF,63,2,256,,40,1,870,{ bonus bVit,3; },{},{}
 19030,Pretty_Rabbit_Hood,Pretty Rabbit Hood,4,10,,100,,20,,1,0xFFFFFFFF,63,2,769,,1,1,1085,{ bonus bMaxHP,(15*BaseLevel); },{},{}
 19031,Fallen_Angel_Blessing,Fallen Angel Blessing,4,0,,200,,1,,0,0xFFFFFFFF,63,2,512,,,1,1250,{ bonus2 bAddRace,RC_Angel,5; bonus2 bSubRace,RC_Angel,5; },{},{}
-19033,Rift_Ancient_Decoration,Rift Ancient Decoration,4,20,,20,,2,,1,0xFFFFFFFF,63,2,256,,100,1,376,{ .@r = getrefine(); bonus bMaxHP,1000+(.@r >= 9 ? 1000 : .@r >=7 ? 400 : 0); },{},{}
+19033,Rift_Ancient_Decoration,Rift Ancient Decoration,4,20,,200,,2,,1,0xFFFFFFFF,63,2,256,,100,1,376,{ .@r = getrefine(); bonus bMaxHP,1000+(.@r >= 9 ? 1000 : .@r >=7 ? 400 : 0); },{},{}
 19038,12_Anniversary_Crown_Of_Saint,12 Anniversary Crown of Saint,4,10,,120,,12,,1,0xFFFFFFFF,63,2,256,,0,1,1117,{ bonus bAllStats,2; bonus bMdef,12; },{},{}
 19039,12_Anniversary_Elf_Ears,12 Anniversary Elf Ears,4,10,,120,,0,,0,0xFFFFFFFF,63,2,512,,0,1,875,{ bonus2 bSubRace,RC_All,4; bonus2 bSubRace,RC_Player,-4; },{},{}
 19047,Angeling_KnitCap,Angeling KnitCap,4,0,,300,,5,,1,0xFFFFFFFF,63,2,256,,20,1,953,{ bonus2 bSPGainRace,RC_Angel,5; bonus bHPGainValue,100; .@r = getrefine(); if (.@r >= 5) { bonus2 bSubRace,RC_Angel,5+((.@r >= 7) ? 5 : 0); } },{},{}
@@ -9852,7 +9858,10 @@
 19158,C_GeminiS58_Eyes_Blue,Costume GeminiS58 Eyes Blue,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,0,0,1456,{},{},{}
 19159,Barrel_Helm,Barrel Helm,4,20,,420,,59,,1,0xFFFFFFFF,63,2,769,,60,1,1498,{ bonus bVit,5; bonus bHPrecovRate,-10; .@r = getrefine(); if (.@r >= 7) { bonus bDef,100; skill "CR_AUTOGUARD",1; } if (.@r >= 8) { bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(BaseJob==Job_SuperNovice) { skill "CR_AUTOGUARD",5; } } },{},{}
 19162,Scuba_Mask_,Scuba Mask,4,20,,100,,0,,1,0xFFFFFFFF,63,2,512,,40,1,400,{ bonus bBaseAtk,5; bonus bMatk,5; },{},{}
+19164,Para_Team_Hat100,Awakened Eden Group Hat I,4,20,,0,,10,,1,0xFFFFFFFF,63,2,256,,100,1,1529,{ autobonus "{ bonus bBaseAtk,15; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,15; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; .@r = getrefine(); if(.@r >= 7){ bonus bAtk,10; bonus bMatk,10; if(.@r >= 9){ bonus bAllStats,1; if(.@r >= 12){ bonus2 bRegenPercentSP,1,10000; } } } },{},{}
+19165,Para_Team_Hat160,Awakened Eden Group Hat II,4,20,,0,,10,,1,0xFFFFFFFF,63,2,256,,160,1,1530,{ autobonus "{ bonus bBaseAtk,30; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; .@r = getrefine(); if(.@r >= 7){ bonus bAtk,15; bonus bMatk,15; if(.@r >= 9){ bonus bAllStats,2; if(.@r >= 12){ bonus2 bRegenPercentHP,2,10000; bonus2 bRegenPercentSP,1,10000; } } } },{},{}
 19166,RO_Celebration_Hat,RO Celebration Hat,4,20,,140,,14,,1,0xFFFFFFFF,63,2,256,,14,1,1541,{ bonus bMaxSP,140; bonus2 bSPRegenRate,6,4000; },{},{}
+19168,Band_Of_Kafra_,Kafra Staff Headband,4,20,,500,,0,,1,0xFFFFFFFF,63,2,256,,,1,106,{ bonus2 bSubClass,Class_All,5; .@r = getrefine()*10; bonus2 bAddMonsterDropItem,23177,10+.@r; bonus2 bAddMonsterDropItem,7059,10+.@r; bonus2 bAddMonsterDropItem,7060,10+.@r; },{},{}
 //===================================================================
 // Costume System
 //===================================================================
@@ -10737,6 +10746,9 @@
 20797,Etran_Shirt,Etran Shirt,4,0,,150,,,,1,0xFFFFFFFF,63,2,4,1,1,1,,{ bonus bMdef,10; bonus bMaxHPrate,2; .@r = getrefine(); if (.@r >= 6) bonus bMaxHPrate,4; if (.@r >= 7) bonus bMaxHPrate,6; if (.@r >= 8) bonus bMaxHPrate,8; if (.@r >= 9) bonus bNoKnockback,1; },{},{}
 20798,C_Grim_Reaper_Protection,Costume Grim Reaper Protection,4,0,,0,,,,0,0xFFFFFFFF,63,2,4096,,1,0,1450,{},{},{}
 20819,Oxygen_Bottle,Oxygen Bottle,4,0,,500,,0,,1,0xFFFFFFFF,63,2,4,,40,0,0,{ bonus bFlee,12+getrefine(); bonus bHit,getrefine(); },{},{}
+20823,Para_Team_Manteau100,Awakened Eden Group Manteau I,4,0,,0,,20,,0,0xFFFFFFFF,63,2,4,,100,1,0,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus bFlee2,2; if(.@r >= 9){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; } } },{},{}
+20824,Para_Team_Manteau130,Awakened Eden Group Manteau II,4,0,,0,,25,,0,0xFFFFFFFF,63,2,4,,130,1,0,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; bonus bMaxHP,500; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; if(.@r >= 9){ bonus2 bSubEle,Ele_Neutral,5; } } },{},{}
+20825,Para_Team_Manteau160,Awakened Eden Group Manteau III,4,0,,0,,30,,0,0xFFFFFFFF,63,2,4,,160,1,0,{ bonus2 bSubEle,Ele_All,10; bonus bFlee,12; bonus bMaxHP,1000; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus2 bSubEle,Ele_Neutral,5; if(.@r >= 9){ skill "BS_GREED",1; } } },{},{}
 //===================================================================
 // More 2-Handed Swords
 //===================================================================
@@ -10800,6 +10812,11 @@
 22084,Luxury_Doram_Shoes,Luxury Doram Shoes,4,20,,600,,30,,1,0x80000000,7,2,64,,140,1,,{ bonus bMaxHP,300; bonus bMaxSP,100; .@r = getrefine()/3; bonus bHPrecovRate,20*.@r; bonus bSPrecovRate,20*.@r; },{},{}
 22085,Elegant_Doram_Shoes,Elegant Doram Shoes,4,20,,700,,35,,1,0x80000000,7,2,64,,175,1,,{ bonus bMaxHPrate,10; bonus bMaxSPrate,5; .@r = getrefine()/2; bonus bMaxHP,100*.@r; bonus bMaxSP,20*.@r; if(.@r >= 4) bonus2 bSkillUseSP,"SU_LOPE",5; },{},{}
 22103,Excelion_Leg,Excelion Leg,4,0,,500,,13,,0,0xFFFFFFFF,63,2,64,1,100,1,,{ .@r = getrefine(); bonus bMaxHP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; bonus bMaxSP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; },{},{}
+22122,Para_Team_Boots100,Awakened Eden Group Boots I,4,0,,0,,22,,0,0xFFFFFFFF,63,2,64,,100,1,,{ bonus bAllStats,1; bonus bHPrecovRate,30; bonus bSPrecovRate,14; },{},{}
+22123,Para_Team_Boots115,Awakened Eden Group Boots II,4,0,,0,,25,,0,0xFFFFFFFF,63,2,64,,115,1,,{ bonus bAllStats,1; bonus bHPrecovRate,36; bonus bSPrecovRate,18; },{},{}
+22124,Para_Team_Boots130,Awakened Eden Group Boots III,4,0,,0,,27,,0,0xFFFFFFFF,63,2,64,,130,1,,{ bonus bAllStats,2; bonus bHPrecovRate,36; bonus bSPrecovRate,18; },{},{}
+22125,Para_Team_Boots145,Awakened Eden Group Boots IV,4,0,,0,,30,,0,0xFFFFFFFF,63,2,64,,145,1,,{ bonus bAllStats,2; bonus bHPrecovRate,40; bonus bSPrecovRate,20; },{},{}
+22126,Para_Team_Boots160,Awakened Eden Group Boots V,4,0,,0,,30,,0,0xFFFFFFFF,63,2,64,,160,1,,{ bonus bAllStats,2; bonus bHPrecovRate,40; bonus bSPrecovRate,20; bonus bUseSPrate,-5; },{},{}
 22508,Para_Team_Mark_,Eden Group Mark,11,0,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ unitskilluseid getcharid(3),"AL_TELEPORT",3; },{},{}
 22507,Worn-Out-Scroll,Worn-Out-Scroll,3,10,,10,,,,0,,,,,,,,,{},{},{}
 22510,King_Wolf_Scroll,King Wolf Scroll,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO, confirm the rates*/ getitem callfunc("F_Rand",6635,19598,5658,6238,6239),1; },{},{}
@@ -10966,7 +10983,7 @@
 22813,Bearer's_Shadow_Box,Bearer's Shadow Box,2,10,,10,,,,,,,,,,,,,{ getitem callfunc("F_Rand",24180,24181,24182,24183,24184,24185),1; },{},{}
 22814,Cat_Hand_Ticket,Cat Hand Ticket,3,10,,0,,,,,,,,,,,,,{},{},{}
 22823,Sealed_Sniper_Scroll,Sealed Sniper Scroll,2,10,,10,,,,,,,,,,,,,{ /*getitem callfunc("F_Rand",4491,6228,6232,24196, Hasty Shadow Armor, 19882, 17474, 6635),1;*/ },{},{}
-22826,Costume_Enchantment_Stone_Box_4,Costume Enchantment Stone Box 4,2,10,,100,,,,,,,,,,,,,{},{},{}
+22826,Costume_Enchantment_Stone_Box_4,Costume Enchantment Stone Box 4,2,10,,10,,,,,,,,,,,,,{},{},{}
 22827,Shadow_Cube,Shadow Cube,2,10,,10,,,,,,,,,,,,,{/*No Info*/},{},{}
 22828,Sealed_Album_Scroll,Sealed Album Scroll,2,10,,100,,,,,,,,,,,,,{ getitem callfunc("F_Rand",22829,6232,6228,24208,24209,17474/*,Enchanted Letter*/),1; },{},{}
 22829,Sealed_Card_Album,Sealed Card Album,2,10,,100,,,,,,,,,,,,,{ getitem callfunc("F_Rand",4488,4497,4486,4480,4485,4539,4487,4494,4538,4489,4490,4482,4503,4483,4491),1; },{},{}
@@ -11015,6 +11032,12 @@
 22901,Question_Old_Blue_Box,Question Old Blue Box,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ /*No info yet*/ },{},{}
 22902,Sealed_Card_Album_Scroll_II,Sealed Card Album Scroll II,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem callfunc("F_Rand",6238,6239,17474,22829,24243,24244,24245),1; },{},{}
 22985,Basil,Basil,0,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus2 bSPRegenRate,5,10000; }",180,1,0,SI_DORAM_BUF_02; },{},{}
+//
+23177,Kafra_Card_,Kafra Card,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashStore"; },{},{}
+23191,Varetyr_Spear_Scroll_1_5,Level 5 Varetyr Spear,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "SO_VARETYR_SPEAR",5; },{},{}
+23192,Diamond_Dust_Scroll_1_5,Level 5 Diamond Dust,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "SO_DIAMONDDUST",5; },{},{}
+23193,Crimson_Rock_Scroll_1_5,Level 5 Crimson Rock,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "WL_CRIMSONROCK",5; },{},{}
+23194,Sienna_Execrate_Scroll_1_5,Level 5 Sienna Execrate,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "WL_SIENNAEXECRATE",5,true; },{},{}
 //===================================================================
 // Shadow Equipments
 //===================================================================
@@ -11273,6 +11296,9 @@
 25148,Cute_Starved_Demon_Doll,Cute Starved Demon Doll,3,0,,0,,,,,,,,,,,,,{},{},{}
 25149,Doll_With_Warm_Scarf,Doll With Warm Scarf,3,0,,0,,,,,,,,,,,,,{},{},{}
 25150,Hugging_Alice_Pilow,Hugging Alice Pilow,3,0,,0,,,,,,,,,,,,,{},{},{}
+25223,Para_Team_Coin,Eden Group Coin,3,0,,0,,,,,,,,,,,,,{},{},{}
+25238,New_Normal_Lubricant,New Normal Lubricant,3,0,,0,,,,,,,,,,,,,{},{},{}
+25239,New_Advanced_Lubricant,New Advanced Lubricant,3,0,,0,,,,,,,,,,,,,{},{},{}
 //
 26100,Paradise_Foxtail_Staff_II,Eden Group Foxtail Staff II,5,20,,0,135:165,,1,0,0x80000000,7,2,2,2,40,0,10,{ bonus bDex,4; bonus bInt,4; bonus bLongAtkRate,6; },{},{}
 26101,Paradise_Foxtail_Staff_III,Eden Group Foxtail Staff III,5,20,,0,150:195,,1,0,0x80000000,7,2,2,3,60,0,10,{ bonus bDex,5; bonus bInt,5; bonus bLongAtkRate,7; },{},{}
@@ -11347,6 +11373,37 @@
 28422,Shiny_Branch_Talisman,Shiny Branch Talisman,4,0,,100,,1,,1,0x80000000,63,2,136,,100,,,{ bonus2 bVariableCastrate,"SU_SV_STEMSPEAR",-50; bonus2 bSkillAtk,"SU_SV_STEMSPEAR",(readparam(bInt)/2)+(20 * getskilllv("SU_SV_STEMSPEAR")); /* Need to confirm damage formula */ },{},{}
 28423,Fresh_Tuna_Talisman,Fresh Tuna Talisman,4,0,,100,,1,,1,0x80000000,63,2,136,,100,,,{ bonus2 bSkillCooldown,"SU_TUNAPARTY",-5000; bonus3 bAutoSpellWhenHit,"SU_TUNAPARTY",max(1,getskilllv("SU_TUNAPARTY")),10; },{},{}
 28424,Chubby_Worm_Talisman,Chubby Worm Talisman,4,0,,100,,1,,1,0x80000000,63,2,136,,100,,,{ bonus2 bVariableCastrate,"SU_PICKYPECK",-50; bonus2 bSkillAtk,"SU_PICKYPECK",(readparam(bDex)/2)+(20 * getskilllv("SU_PICKYPECK")); /* Need to confirm damage formula */ },{},{}
+28443,Para_Team_Str_Ring100,Awakened Eden Group Ring of Strength I,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,100,,,{ bonus bAtkRate,2; },{},{}
+28444,Para_Team_Str_Necklace100,Awakened Eden Group Necklace of Strength I,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,100,,,{ bonus bStr,1; },{},{}
+28445,Para_Team_Str_Ring115,Awakened Eden Group Ring of Strength II,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,115,,,{ bonus bAtkRate,3; },{},{}
+28446,Para_Team_Str_Necklace115,Awakened Eden Group Necklace of Strength II,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,115,,,{ bonus bStr,2; },{},{}
+28447,Para_Team_Str_Ring130,Awakened Eden Group Ring of Strength III,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,130,,,{ bonus bAtkRate,4; },{},{}
+28448,Para_Team_Str_Necklace130,Awakened Eden Group Necklace of Strength III,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,130,,,{ bonus bStr,3; },{},{}
+28449,Para_Team_Str_Ring145,Awakened Eden Group Ring of Strength IV,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,145,,,{ bonus bAtkRate,5; },{},{}
+28450,Para_Team_Str_Necklace145,Awakened Eden Group Necklace of Strength IV,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,145,,,{ bonus bStr,4; },{},{}
+28451,Para_Team_Str_Ring160,Awakened Eden Group Ring of Strength V,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{ bonus bAtkRate,5; skill "AL_HEAL",1; },{},{}
+28452,Para_Team_Str_Necklace160,Awakened Eden Group Necklace of Strength V,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{ bonus bStr,4; skill "AL_TELEPORT",1; },{},{}
+28453,Para_Team_Magic_Ring100,Awakened Eden Group Ring of Magic I,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,100,,,{ bonus bMatkRate,2; },{},{}
+28454,Para_Team_Magic_Necklace100,Awakened Eden Group Necklace of Magic I,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,100,,,{ bonus bInt,1; },{},{}
+28455,Para_Team_Magic_Ring115,Awakened Eden Group Ring of Magic II,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,115,,,{ bonus bMatkRate,3; },{},{}
+28456,Para_Team_Magic_Necklace115,Awakened Eden Group Necklace of Magic II,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,115,,,{ bonus bInt,2; },{},{}
+28457,Para_Team_Magic_Ring130,Awakened Eden Group Ring of Magic III,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,130,,,{ bonus bMatkRate,4; },{},{}
+28458,Para_Team_Magic_Necklace130,Awakened Eden Group Necklace of Magic III,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,130,,,{ bonus bInt,3; },{},{}
+28459,Para_Team_Magic_Ring145,Awakened Eden Group Ring of Magic IV,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,145,,,{ bonus bMatkRate,5; },{},{}
+28460,Para_Team_Magic_Necklace145,Awakened Eden Group Necklace of Magic IV,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,145,,,{ bonus bInt,4; },{},{}
+28461,Para_Team_Magic_Ring160,Awakened Eden Group Ring of Magic V,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{ bonus bMatkRate,5; skill "AL_HEAL",1; },{},{}
+28462,Para_Team_Magic_Necklace160,Awakened Eden Group Necklace of Magic V,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{ bonus bInt,4; skill "AL_TELEPORT",1; },{},{}
+28463,Para_Team_Agi_Ring100,Awakened Eden Group Ring of Agility I,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,100,,,{ bonus bLongAtkRate,1; },{},{}
+28464,Para_Team_Agi_Necklace100,Awakened Eden Group Necklace of Agility I,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,100,,,{ bonus bDex,1; },{},{}
+28465,Para_Team_Agi_Ring115,Awakened Eden Group Ring of Agility II,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,115,,,{ bonus bLongAtkRate,2; },{},{}
+28466,Para_Team_Agi_Necklace115,Awakened Eden Group Necklace of Agility II,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,115,,,{ bonus bDex,2; },{},{}
+28467,Para_Team_Agi_Ring130,Awakened Eden Group Ring of Agility III,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,130,,,{ bonus bLongAtkRate,3; },{},{}
+28468,Para_Team_Agi_Necklace130,Awakened Eden Group Necklace of Agility III,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,130,,,{ bonus bDex,3; },{},{}
+28469,Para_Team_Agi_Ring145,Awakened Eden Group Ring of Agility IV,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,145,,,{ bonus bLongAtkRate,4; },{},{}
+28470,Para_Team_Agi_Necklace145,Awakened Eden Group Necklace of Agility IV,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,145,,,{ bonus bDex,4; },{},{}
+28471,Para_Team_Agi_Ring160,Awakened Eden Group Ring of Agility V,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{ bonus bLongAtkRate,4; skill "AL_HEAL",1; },{},{}
+28472,Para_Team_Agi_Necklace160,Awakened Eden Group Necklace of Agility V,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{ bonus bDex,4; skill "AL_TELEPORT",1; },{},{}
+28483,Royal_Guardian_Ring,Royal Guardian Ring,4,0,,10,,1,,1,0xFFFFFFFF,63,2,136,,99,,,{ .@b = min(BaseLevel/25,7); bonus bMaxHPrate,.@b; bonus bMaxSPrate,.@b; },{},{}
 28600,Blue_Book,Blue Book,5,10,,500,160,,1,1,0x00000100,56,2,2,3,100,1,15,{ bonus bAgi,5; bonus bDex,5; },{},{}
 28601,Ru_Gold_Book,Ru Gold Book,5,0,,500,160,,1,2,0x00000008,63,2,2,3,120,1,15,{ bonus bVit,8; bonus bInt,8; },{},{}
 28602,Demon_Hunting_Bible,Demon Hunting Bible,5,0,,500,30:170,,1,2,0x00000008,63,2,2,3,110,1,15,{ bonus bInt,2; bonus bDex,2; .@b = readparam(bInt); bonus2 bSkillAtk,"PR_MAGNUS",30+min(.@b,120); },{},{}
@@ -11503,5 +11560,6 @@
 31088,C_Mad_Hatter,Costume Mad Hatter,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1421,{},{},{}
 31089,C_Exploding_Crimson_Flame,Costume Exploding Crimson Flame,4,0,,0,,,,0,0xFFFFFFFF,63,2,2048,,1,0,1500,{},{},{}
 31090,C_Angelring_Hat,Costume Angelring Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,348,{},{},{}
+31092,C_Rabbit_Ribbon_Hat,Costume Bunny Ribbon Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,845,{},{},{}
 31093,C_Under_Lamp,Costume Under Lamp,4,0,,0,,,,0,0xFFFFFFFF,63,2,4096,,1,0,1531,{},{},{}
 31105,C_RO_Celebration_Hat,Costume RO Celebration Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1541,{},{},{}

+ 1 - 0
db/re/item_trade.txt

@@ -3857,6 +3857,7 @@
 //22950,475,100	//
 //22951,475,100	//
 //22952,475,100	//
+23177,475,100	// Kafra_Card_
 25132,499,100	// Pumpkin_Deco
 25133,499,100	// Dried_White_Stem
 25143,499,100	// Gift_Stuffed_Doll

+ 30 - 12
db/re/mob_db.txt

@@ -1632,8 +1632,8 @@
 2476,MG_AMDARAIS,Amdarias,Amdarias,143,3283990,1,74288,77950,2,8860,10022,32,66,140,159,30,109,300,90,10,12,2,2,63,0x6283695,200,1152,1152,576,37144,617,5500,617,5000,616,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4601,1
 
 //2477,NG_WANDER_MAN
-//2478,NG_RIDEWORD
-//2479,NG_MIMIC
+2478,NG_RIDEWORD,Nightmare Rideword,Nightmare Rideword,146,103220,1,10500,15840,1,2320,166,140,59,131,195,58,66,263,5,12,12,0,0,60,0x3695,150,864,500,192,0,0,0,0,0,0,0,1097,4850,1568,5,1569,5,1570,5,1571,5,7015,150,18752,1,0,0,0,0,0,0
+2479,NG_MIMIC,Nightmare Mimic,Nightmare Mimic,143,24958,1,2768,2354,1,1787,159,139,46,145,162,10,49,213,57,10,12,1,0,60,0x3095,100,972,500,288,0,0,0,0,0,0,0,617,10,603,50,7940,1000,7938,1000,2626,10,757,270,0,0,0,0,0,0,0,0
 //2480,NG_EVIL_DRUID
 //2481,NG_WRAITH_DEAD
 //2482,G_MG_KHALITZBURG
@@ -2070,14 +2070,14 @@
 2913,C3_ACIDUS_,Acidus Ringleader,Acidus Ringleader,130,203590,203590,14690,30480,2,1660,2372,98,47,106,110,61,53,133,53,10,12,2,9,44,0x3095,180,168,768,360,0,0,0,0,0,0,0,505,150,1035,4000,2890,10,1036,3589,7446,800,996,20,7446,100,0,0,0,0,4379,1
 //2914,E_GEFFEN_MAGE_3_1
 //2915,HIDDEN_MOB6
-//2916,BIG_BEN
-//2917,BIG_BELL
-//2918,TIME_KEEPER
-//2919,NEO_PUNK
-//2920,ARC_ELDER
-//2921,OWL_VISCOUNT
-//2922,G_OWL_VISCOUNT
-//2923,OWL_MARQUEES
+2916,BIG_BEN,Big Ben,Big Ben,150,220240,1,7447,7005,1,3101,212,125,43,102,58,69,75,131,49,10,12,1,0,42,0x91,200,1092,792,480,0,0,0,0,0,0,0,1095,3000,1019,500,509,950,568,160,757,100,22515,15,22515,15,0,0,0,0,4626,1
+2917,BIG_BELL,Big Bell,Big Bell,163,166860,1,7513,8457,1,4785,192,138,53,102,104,72,57,98,57,10,12,1,0,60,0x3695,300,1020,500,768,0,0,0,0,0,0,0,1095,3000,2607,1,7005,750,984,100,912,750,22515,10,0,0,0,0,0,0,4627,1
+2918,TIME_KEEPER,Time Keeper,Time Keeper,155,256000,1,7898,8869,3,2989,280,128,60,112,60,72,57,120,77,10,12,2,0,80,0x91,200,1072,672,384,0,0,0,0,0,0,0,1095,3000,7054,3000,999,250,520,425,2109,1,22515,1000,22515,1000,0,0,0,0,4630,1
+2919,NEO_PUNK,Neo Punk,Neo Punk,155,154760,1,5874,6618,1,2051,216,99,55,98,39,30,35,95,45,10,12,0,3,24,0x3095,300,1500,500,1000,0,0,0,0,0,0,0,7001,3000,715,500,1061,500,1057,1500,2502,8,5110,50,0,0,0,0,0,0,4628,1
+2920,ARC_ELDER,Arc Elder,Arc Elder,168,293640,1,9086,17532,3,2513,802,105,41,100,63,35,99,106,61,10,12,2,7,80,0x3885,165,1552,1152,336,0,0,0,0,0,0,0,7099,3000,7117,1000,1564,5,1473,1,616,2,22515,1500,7939,500,0,0,0,0,4629,1
+2921,OWL_VISCOUNT,Owl Viscount,Owl Viscount,168,295240,1,9086,11089,1,4368,900,113,45,87,51,45,88,106,50,10,12,2,6,60,0x6203695,195,1345,824,440,0,0,0,0,0,0,0,7071,2500,7063,1000,18874,1,747,1,2971,2,16024,1,15089,1,0,0,0,0,4631,1
+2922,G_OWL_VISCOUNT,Owl Viscount,Owl Viscount,168,295240,1,0,0,1,4368,900,113,45,87,51,45,88,106,50,10,12,2,6,60,0x6203695,195,1345,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+2923,OWL_MARQUEES,Owl Marquis,Owl Marquis,170,630000,1,21747,13806,2,1887,603,127,25,112,65,55,102,108,72,10,12,2,6,60,0x6203695,175,1345,824,440,0,0,0,0,0,0,0,7071,2000,7063,1500,1716,1,1472,1,15089,3,1668,1,18874,1,0,0,0,0,4632,1
 2924,T_ELDER_WILOW,Elder Willow,Elder Willow,34,599,1,116,131,1,80,14,45,0,10,14,25,0,29,0,10,12,1,3,43,0x3095,200,1372,672,432,0,0,0,0,0,0,0,6067,500,7406,500,7407,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2925,T_WILOW,Willow,Willow,8,91,1,31,23,1,13,5,38,2,13,3,8,5,12,5,10,12,1,3,22,0x81,200,1672,672,432,0,0,0,0,0,0,0,6065,500,6066,500,6067,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2926,T_HARPY,Harpy,Harpy,83,4423,1,660,760,1,340,41,69,44,71,39,50,31,125,12,10,12,1,6,64,0x3885,155,972,672,470,0,0,0,0,0,0,0,7406,500,7407,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -2228,7 +2228,7 @@
 //3071,PERE3
 //3072,PERE4
 //3073,GRAND_PERE
-//3074,TIMEHOLDER
+3074,TIMEHOLDER,Time Holder,Time Holder,170,25000000,1,2291250,1938750,1,5250,2100,288,265,224,152,251,257,402,77,10,12,2,6,80,0x6283695,100,398,384,288,2291250,0,0,0,0,0,0,1095,3000,2121,10,7054,3000,22515,3000,18874,20,16024,5,15089,3,0,0,0,0,4625,1
 //3075,WA_TREASURE
 //3076,WA_MONSTER_1
 //3077,WA_MONSTER_2
@@ -2812,5 +2812,23 @@
 //
 //3656,B_THE_PAPER
 //3657,B_THE_PAPER2
-//
+//3658,MD_LICH_LORD_100
+//3659,MD_LICH_LORD_160
+//3660,MD_NIGHTMARE_100
+//3661,MD_NIGHTMARE_160
+//3662,MD_JAKK_100
+//3663,MD_JAKK_160
+//3664,MD_GHOUL_100
+//3665,MD_GHOUL_160
+//3666,MD_DRAINLIAR_100
+//3667,MD_DRAINLIAR_160
 //3668,B_KIEL_
+//3721,QE_PORING
+//3722,QE_POPORING
+//3723,QE_DROPS
+//3724,QE_LUNATIC
+//3725,QE_WILOW
+//3726,QE_PICKY
+//3727,QE_PICKY_
+//3728,QE_ZOMBIE
+//3729,QE_POISON_SPORE

+ 68 - 65
db/re/mob_skill_db.txt

@@ -10264,68 +10264,71 @@
 2913,Acidus Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1716,,,,,,
 
 // Nightmare Clock Tower Dungeon
-//2916,Big Ben@NPC_CURSEATTACK,attack,181,3,500,800,5000,no,target,always,0,,,,,,6,
-//2916,Big Ben@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,0,,,,,,6,
-//2916,Big Ben@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,0,,,,,,6,
-//2916,Big Ben@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,0,6,0x3885,,,,,
-//2916,Big Ben@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,0,9,0x91,,,,,
-//2917,Big Bell@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,,
-//2917,Big Bell@NPC_DARKBREATH,attack,202,2,500,800,5000,no,target,always,0,,,,,,7,
-//2917,Big Bell@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-//2917,Big Bell@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
-//2917,Big Bell@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,attackpcge,2,,,,,,6,
-//2918,Time Keeper@AL_TELEPORT,idle,26,1,500,0,5000,yes,self,always,0,,,,,,,
-//2918,Time Keeper@WZ_FIREPILLAR,idle,80,5,500,0,5000,yes,around2,always,0,,,,,,9,
-//2918,Time Keeper@SA_DISPELL,attack,289,1,500,0,30000,yes,target,always,0,,,,,,,
-//2918,Time Keeper@NPC_SILENCEATTACK,attack,178,5,500,700,5000,no,target,always,0,,,,,,9,
-//2918,Time Keeper@NPC_SILENCEATTACK,chase,178,5,500,700,5000,no,target,always,0,,,,,,9,
-//2918,Time Keeper@NPC_SLEEPATTACK,attack,182,5,500,0,5000,yes,target,always,0,,,,,,9,
-//2918,Time Keeper@NPC_SLEEPATTACK,chase,182,5,500,0,5000,yes,target,always,0,,,,,,9,
-//2918,Time Keeper@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,0,6,0x3885,,,,,
-//2918,Time Keeper@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,0,9,0x91,,,,,
-//2919,Neo Punk@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,,
-//2919,Neo Punk@NPC_PETRIFYATTACK,attack,180,3,500,500,5000,no,target,always,0,,,,,,7,
-//2919,Neo Punk@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-//2919,Neo Punk@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
-//2919,Neo Punk@NPC_WINDATTACK,attack,187,1,2000,0,5000,yes,target,always,0,,,,,,,
-//2920,Arc Elder@MG_FIREBOLT,attack,19,7,10000,1500,5000,yes,target,always,0,,,,,,11,
-//2920,Arc Elder@MG_FROSTDIVER,chase,15,9,10000,500,5000,yes,target,always,0,,,,,,,
-//2920,Arc Elder@MG_LIGHTNINGBOLT,chase,20,7,10000,1500,5000,yes,target,always,0,,,,,,12,
-//2920,Arc Elder@MG_STONECURSE,attack,16,10,10000,0,5000,yes,target,always,0,,,,,,11,
-//2920,Arc Elder@SA_DISPELL,attack,289,1,0,0,30000,yes,target,always,0,,,,,,,
-//2920,Arc Elder@NPC_SILENCEATTACK,attack,178,5,500,700,5000,no,target,always,0,,,,,,,
-//2920,Arc Elder@MG_FIREBOLT,idle,19,7,10000,1500,5000,yes,randomtarget,always,0,,,,,,11,
-//2920,Arc Elder@MG_FROSTDIVER,idle,15,9,10000,500,5000,yes,randomtarget,always,0,,,,,,,
-//2920,Arc Elder@MG_LIGHTNINGBOLT,idle,20,7,10000,1500,5000,yes,randomtarget,always,0,,,,,,12,
-//2920,Arc Elder@MG_STONECURSE,idle,16,10,10000,0,5000,yes,randomtarget,always,0,,,,,,11,
-//2921,Owl Viscount@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
-//2921,Owl Viscount@MG_LIGHTNINGBOLT,attack,20,3,2000,0,5000,yes,target,always,0,,,,,,,
-//2921,Owl Viscount@MG_LIGHTNINGBOLT,chase,20,3,2000,0,5000,yes,target,always,0,,,,,,,
-//2921,Owl Viscount@PR_LEXDIVINA,attack,76,3,500,1000,5000,yes,target,always,0,,,,,,,
-//2921,Owl Viscount@PR_LEXDIVINA,chase,76,3,500,1000,5000,yes,target,always,0,,,,,,,
-//2921,Owl Viscount@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
-//2921,Owl Viscount@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0xA1,,,,,
-//2921,Owl Viscount@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x37B5,,,,,
-//2923,Owl Marquees@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
-//2923,Owl Marquees@MG_LIGHTNINGBOLT,attack,20,5,2000,0,5000,yes,target,always,0,,,,,,,
-//2923,Owl Marquees@MG_LIGHTNINGBOLT,chase,20,5,2000,0,5000,yes,target,always,0,,,,,,,
-//2923,Owl Marquees@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
-//2923,Owl Marquees@SA_DISPELL,attack,289,5,0,0,30000,yes,target,always,0,,,,,,5,
-//2923,Owl Marquees@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0xA1,,,,,
-//2923,Owl Marquees@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x37B5,,,,,
-//2923,Owl Marquees@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,2921,,,,,,
-//3074,Timeholder@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
-//3074,Timeholder@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,,
-//3074,Timeholder@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,,
-//3074,Timeholder@NPC_AGIUP,attack,350,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,,
-//3074,Timeholder@AL_INCAGI,chase,29,10,2000,700,300000,no,self,always,0,,,,,,,
-//3074,Timeholder@AL_DECAGI,attack,30,48,500,0,20000,no,target,always,0,,,,,,,
-//3074,Timeholder@AL_DECAGI,chase,30,48,500,0,20000,no,target,always,0,,,,,,,
-//3074,Timeholder@WZ_METEOR,attack,83,11,5000,500,2000,no,target,always,0,,,,,,,
-//3074,Timeholder@WZ_METEOR,chase,83,11,5000,500,2000,no,target,skillused,18,,,,,,,
-//3074,Timeholder@WZ_METEOR,chase,83,11,5000,500,2000,no,target,always,0,,,,,,,
-//3074,Timeholder@NPC_HELLJUDGEMENT,chase,662,10,10000,1000,10000,no,self,always,0,,,,,,,
-//3074,Timeholder@NPC_HELLJUDGEMENT,attack,662,10,10000,1000,10000,no,self,always,0,,,,,,,
-//3074,Timeholder@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,,
-//3074,Timeholder@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,0,2917,,,,,,
-//3074,Timeholder@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,0,2917,,,,,,
+2916,Big Ben@NPC_CURSEATTACK,attack,181,3,500,800,5000,no,target,always,0,,,,,,6,
+2916,Big Ben@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,0,,,,,,6,
+2916,Big Ben@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,0,,,,,,6,
+2916,Big Ben@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,0,9,0x0091,,,,,
+2916,Big Ben@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6,
+2917,Big Bell@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,,
+2917,Big Bell@NPC_DARKBREATH,attack,202,2,500,800,5000,no,target,always,0,,,,,,7,
+2917,Big Bell@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x0081,,,,,
+2917,Big Bell@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
+2917,Big Bell@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,attackpcge,2,,,,,,6,
+2917,Big Bell@LK_SPIRALPIERCE,attack,397,5,10000,1000,10000,yes,target,myhpltmaxrate,80,,,,,,36,
+2917,Big Bell@NPC_STONESKIN,attack,675,3,10000,0,30000,yes,self,always,,,,,,,6,
+2918,Time Keeper@AL_TELEPORT,idle,26,1,500,0,5000,yes,self,always,0,,,,,,,
+2918,Time Keeper@WZ_FIREPILLAR,idle,80,5,500,0,5000,yes,around2,always,0,,,,,,9,
+2918,Time Keeper@SA_DISPELL,attack,289,1,500,0,30000,yes,target,always,0,,,,,,,
+2918,Time Keeper@NPC_SILENCEATTACK,attack,178,5,500,700,5000,no,target,always,0,,,,,,9,
+2918,Time Keeper@NPC_SILENCEATTACK,chase,178,5,500,700,5000,no,target,always,0,,,,,,9,
+2918,Time Keeper@NPC_SLEEPATTACK,attack,182,5,500,0,5000,yes,target,always,0,,,,,,9,
+2918,Time Keeper@NPC_SLEEPATTACK,chase,182,5,500,0,5000,yes,target,always,0,,,,,,9,
+2918,Time Keeper@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,0,6,0x3885,,,,,
+2918,Time Keeper@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,0,9,0x0091,,,,,
+2919,Neo Punk@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,,
+2919,Neo Punk@NPC_PETRIFYATTACK,attack,180,3,500,500,5000,no,target,always,0,,,,,,7,
+2919,Neo Punk@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x0081,,,,,
+2919,Neo Punk@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
+2919,Neo Punk@NPC_WINDATTACK,attack,187,1,2000,0,5000,yes,target,always,0,,,,,,,
+2919,Neo Punk@NPC_MENTALBREAKER,attack,159,1,500,800,5000,no,target,always,,,,,,,,
+2920,Arc Elder@MG_FIREBOLT,attack,19,7,10000,1500,5000,yes,target,always,0,,,,,,11,
+2920,Arc Elder@MG_FROSTDIVER,chase,15,9,10000,500,5000,yes,target,always,0,,,,,,,
+2920,Arc Elder@MG_LIGHTNINGBOLT,chase,20,7,10000,1500,5000,yes,target,always,0,,,,,,12,
+2920,Arc Elder@MG_STONECURSE,attack,16,10,10000,0,5000,yes,target,always,0,,,,,,11,
+2920,Arc Elder@MG_FIREBOLT,idle,19,7,10000,1500,5000,yes,randomtarget,always,0,,,,,,11,
+2920,Arc Elder@MG_FROSTDIVER,idle,15,9,10000,500,5000,yes,randomtarget,always,0,,,,,,,
+2920,Arc Elder@MG_LIGHTNINGBOLT,idle,20,7,10000,1500,5000,yes,randomtarget,always,0,,,,,,12,
+2920,Arc Elder@MG_STONECURSE,idle,16,10,10000,0,5000,yes,randomtarget,always,0,,,,,,11,
+2920,Arc Elder@NPC_STONESKIN,attack,675,3,10000,0,30000,yes,self,always,,,,,,,6,
+2920,Arc Elder@NPC_RUN,attack,354,1,10000,0,0,yes,self,myhpltmaxrate,99,,,,,,26,
+2920,Arc Elder@NPC_RUN,chase,354,1,10000,0,0,yes,self,myhpltmaxrate,99,,,,,,26,
+2921,Owl Viscount@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
+2921,Owl Viscount@MG_LIGHTNINGBOLT,attack,20,5,2000,0,5000,yes,target,always,0,,,,,,,
+2921,Owl Viscount@MG_LIGHTNINGBOLT,chase,20,5,2000,0,5000,yes,target,always,0,,,,,,,
+2921,Owl Viscount@PR_LEXAETERNA,attack,78,1,500,1000,5000,yes,target,always,,,,,,,6,
+2921,Owl Viscount@PR_LEXAETERNA,chase,78,1,500,1000,5000,yes,target,always,,,,,,,6,
+2921,Owl Viscount@CR_REFLECTSHIELD,attack,252,10,10000,0,300000,yes,self,always,,,,,,,6,
+2921,Owl Viscount@CR_REFLECTSHIELD,chase,252,10,10000,0,300000,yes,self,always,,,,,,,6,
+2921,Owl Viscount@NPC_STONESKIN,attack,675,3,10000,0,30000,yes,self,always,,,,,,,6,
+2921,Owl Viscount@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
+2921,Owl Viscount@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x0081,,,,,
+2921,Owl Viscount@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
+2923,Owl Marquees@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
+2923,Owl Marquees@MG_LIGHTNINGBOLT,attack,20,3,2000,0,5000,yes,target,always,0,,,,,,,
+2923,Owl Marquees@MG_LIGHTNINGBOLT,chase,20,3,2000,0,5000,yes,target,always,0,,,,,,,
+2923,Owl Marquees@NPC_STONESKIN,attack,675,3,10000,0,30000,yes,self,always,,,,,,,6,
+2923,Owl Marquees@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
+2923,Owl Marquees@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x0081,,,,,
+2923,Owl Marquees@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
+2923,Owl Marquees@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,2922,,,,,,
+3074,Time Holder@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
+3074,Time Holder@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,,
+3074,Time Holder@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,,
+3074,Time Holder@NPC_AGIUP,attack,350,5,10000,0,10000,yes,self,myhpltmaxrate,30,,,,,,,
+3074,Time Holder@AL_INCAGI,chase,29,10,2000,700,10000,no,self,always,0,,,,,,,
+3074,Time Holder@WZ_METEOR,attack,83,11,1000,500,10000,no,target,always,0,,,,,,,
+3074,Time Holder@NPC_HELLJUDGEMENT,chase,662,10,3000,1000,10000,no,self,always,0,,,,,,,
+3074,Time Holder@NPC_HELLJUDGEMENT,attack,662,10,3000,1000,10000,no,self,always,0,,,,,,,
+3074,Time Holder@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,,
+3074,Time Holder@NPC_SUMMONSLAVE,attack,196,5,1000,700,10000,no,self,slavele,0,2917,,,,,,
+3074,Time Holder@NPC_SUMMONSLAVE,idle,196,5,1000,700,10000,no,self,slavele,0,2917,,,,,,

+ 22 - 0
db/re/skill_db.txt

@@ -865,6 +865,28 @@
 //725,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_REVERBERATION,Reverberation 2
 //726,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_REVERBERATION_ATK,Reverberation Attack
 //727,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_LEX_AETERNA,Lex Aeterna 2
+//728,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_ARROWSTORM,NPC Arrow Storm
+//729,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_CHEAL,NPC Coluceo Heal
+//730,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_SR_CURSEDCIRCLE,NPC 
+//731,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_DRAGONBREATH,NPC Dragon Breath
+//732,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_FATALMENACE,NPC Fatal Menace
+//733,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_MAGMA_ERUPTION,NPC Magma Eruption
+//734,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_MAGMA_ERUPTION_DOTDAMAGE,NPC Magma Eruption Dot Damage
+//735,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_MANDRAGORA,NPC Howling of Mandragora
+//736,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_PSYCHIC_WAVE,NPC Psychic Wave
+//737,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_RAYOFGENESIS,NPC Ray of Genesis
+//738,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_VENOMIMPRESS,NPC Venom Impress
+//739,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_CLOUD_KILL,NPC Cloud Kill
+//740,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_IGNITIONBREAK,NPC Ignition Break
+//741,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_PHANTOMTHRUST,NPC Phantom Thrust
+//742,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_POISON_BUSTER,NPC Poison Blaster
+//743,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_HALLUCINATIONWALK,NPC Hallucination Walk
+//744,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_ELECTRICWALK,NPC Electric Walk
+//745,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_FIREWALK,NPC Fire Walk
+//746,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDEDISPEL,Wide Dispell
+//747,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_LEASH,Leash
+//748,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDELEASH,Wide Leash
+//749,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0,		NPC_WIDECRITICALWOUND,Wide Critical Wound
 
 //****
 // 2nd Quest Skills

+ 2 - 0
doc/item_bonus.txt

@@ -155,6 +155,8 @@ 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
+bonus2 bRegenPercentHP,n,t;		Gain n% of max HP every t milliseconds
+bonus2 bRegenPercentSP,n,t;		Gain n% of max SP every t milliseconds
 bonus bNoRegen,x;       		Stops HP or SP regeneration (x: 1=HP, 2=SP)
 
 bonus bUseSPrate,n;         		SP consumption + n%

+ 10 - 0
doc/mapflags.txt

@@ -396,3 +396,13 @@ in '/conf/channels.conf'.
 Disables MVP tombs from appearing on a map.
 
 ---------------------------------------
+
+*nocostume
+
+Disables costume sprites on a map.
+
+This only disables the sprites and not the effect of the items.
+If a player logs out on a nocostume map the costume sprites will also not be shown in the
+character server.
+
+---------------------------------------

+ 9 - 2
doc/script_commands.txt

@@ -4774,18 +4774,24 @@ The default setting, 'item_enabled_npc', is defined in 'conf/battle/items.conf'.
 
 ---------------------------------------
 
-*itemskill <skill id>,<skill level>;
-*itemskill "<skill name>",<skill level>;
+*itemskill <skill id>,<skill level>{,<keep requirement>};
+*itemskill "<skill name>",<skill level>{,<keep requirement>};
 
 This command is meant for item scripts to replicate single-use skills in usable
 items. It will not work properly if there is a visible dialog window or menu.
 If the skill is self or auto-targeting, it will be used immediately; otherwise a
 target cursor is shown.
 
+If <keep requirement> parameter is set to true, the skill's requirements will be checked.
+By default, the requirements for item skills are not checked, and therefore the default value is false.
+
 // When Anodyne is used, it will cast Endure (8), Level 1, as if the actual
 // skill has been used from skill tree.
 605,Anodyne,Anodyne,11,2000,0,100,,,,,10477567,2,,,,,{ itemskill 8,1; },{}
 
+// When Sienna_Execrate_Scroll_1_5 is used, it will cast Sienna Execrate Level 5 and consume 2 Red_Gemstones.
+23194,Sienna_Execrate_Scroll_1_5,Level 5 Sienna Execrate,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "WL_SIENNAEXECRATE",5,true; },{},{}
+
 ---------------------------------------
 
 *consumeitem <item id>{,<char_id>};
@@ -9112,6 +9118,7 @@ The command returns 1 upon success, and these values upon failure:
 -2: Player already has a party.
 -3: Party not found.
 -4: Party is full.
+-5: Another character from the same account is already in the party.
 
 ---------------------------------------
 

+ 28 - 0
npc/mapflag/nocostume.txt

@@ -0,0 +1,28 @@
+//===== rAthena Script =======================================
+//= Mapflag: nocostume
+//===== Description: =========================================
+//= A mapflag to disable costume's sprite on map.
+//= Usage:
+//=     [mapname]	mapflag	nocostume
+//===== Changelogs: ==========================================
+//= 1.0 Initial release. [Cydh]
+//= 1.0.1 Added arug_dun01 and schg_dun01 to the list. [Cydh]
+//============================================================
+
+// WOE:TE Castles =========
+te_prtcas01	mapflag	nocostume
+te_prtcas02	mapflag	nocostume
+te_prtcas03	mapflag	nocostume
+te_prtcas04	mapflag	nocostume
+te_prtcas05	mapflag	nocostume
+te_aldecas1	mapflag	nocostume
+te_aldecas2	mapflag	nocostume
+te_aldecas3	mapflag	nocostume
+te_aldecas4	mapflag	nocostume
+te_aldecas5	mapflag	nocostume
+
+// Guild Dungeons =========
+teg_dun01	mapflag	nocostume
+teg_dun02	mapflag	nocostume
+arug_dun01	mapflag	nocostume
+schg_dun01	mapflag	nocostume

+ 4 - 4
npc/pre-re/jobs/1-1/mage.txt

@@ -104,7 +104,7 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 				mes "[Mage Guildsman]";
 				mes "Now it's time for";
 				mes "me to give you the test.";
-				switch(rand(3)) {
+				switch(rand(0,3)) {
 				case 1:
 					mes "Make me a ^3355FFMixed Solution No. 1^000000";
 					mes "and bring it back to me.";
@@ -207,9 +207,6 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 		mes "Congratulations!";
 		mes "You are now a Mage!";
 		next;
-		callfunc "Job_Change",Job_Mage;
-		callfunc "F_ClearJobVar";
-		set Zeny,Zeny+50;
 		if(checkquest(1005) != -1) {
 			completequest 1005;
 		}
@@ -222,6 +219,9 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 		else {
 			completequest 1008;
 		}
+		callfunc "Job_Change",Job_Mage;
+		callfunc "F_ClearJobVar";
+		set Zeny,Zeny+50;
 		mes "[Mage Guildsman]";
 		mes "'Welcome to My World~'";
 		mes "Heh heh, I just wanted to say that. You know, it's a quote from a well-known movie~";

+ 3 - 3
npc/quests/first_class/tu_archer.txt

@@ -109,7 +109,7 @@ payon_in02,67,65,3	script	Bard Jet#tu	1_M_BARD,{
 		mes "You're...!";
 		next;
 		specialeffect2 EF_TALK_FROSTJOKE;
-		//specialeffect EF_TALK_FROSTJOKE,"Bard Jet#tu";
+		//specialeffect EF_TALK_FROSTJOKE,AREA,"Bard Jet#tu";
 		emotion e_no1;
 		mes "[Jet]";
 		mes "Let's see...";
@@ -1172,11 +1172,11 @@ pay_arche,103,165,5	script	Reidin Corse#tu	4_M_REIDIN_KURS,{
 // Seisner
 //============================================================
 pay_arche,84,139,3	script	Seisner	4_F_JOB_HUNTER,{
-	specialeffect EF_HIT2,"#Target";
+	specialeffect EF_HIT2,AREA,"#Target";
 	mes "[Seisner]";
 	mes "Aaaah!";
 	mes "Double Strafe!";
-	specialeffect EF_HIT2,"#Target";
+	specialeffect EF_HIT2,AREA,"#Target";
 	next;
 	mes "[Seisner]";
 	mes "I did it!";

+ 99 - 373
npc/re/instances/OldGlastHeim.txt

@@ -242,12 +242,12 @@ OnEnable:
 		next;
 		mes "[Varmunt]";
 		mes "I am not joking Heinrich, Sir. Now, if my judgement is correct, she will be here soon.";
-		donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnTalk1";
+		npctalk "Varmunt : I am not joking Heinrich, Sir. Now, if my judgement is correct, she will be here soon.", instance_npcname("Varmunt#ghinstance2");
 		cutin "gl_barmund2",2;
 		next;
 		mes "[Varmunt]";
 		mes "I trust this guy following me. The Ymir's Heart pieces must be hidden in a safe place before Himmelmez takes them!";
-		donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnTalk2";
+		npctalk "Varmunt : I trust this guy following me. The Ymir's Heart pieces must be hidden in a safe place before Himmelmez takes them!", instance_npcname("Varmunt#ghinstance2");
 		next;
 		select("Even if you do not believe...");
 		mes "["+strcharinfo(0)+"]";
@@ -298,27 +298,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Varmunt#ghinstance2");
 	end;
-OnTalk1:
-	npctalk "Varmunt : I am not joking Heinrich, Sir. Now, if my judgement is correct, she will be here soon.";
-	end;
-OnTalk2:
-	npctalk "Varmunt : I trust this guy following me. The Ymir's Heart pieces must be hidden in a safe place before Himmelmez takes them!";
-	end;
-OnTalk3:
-	npctalk "Varmunt : Himmelmez!! Through the cracks!";
-	end;
-OnTalk4:
-	npctalk "Varmunt : Unbelievable. My men are...This kind of thing is not possible!";
-	end;
-OnTalk5:
-	npctalk "Varmunt : Heinrich, Sir! I need a quick decision.";
-	end;
-OnTalk6:
-	npctalk "Varmunt : To prevent other attacks, go chase her!";
-	end;
-OnTalk7:
-	npctalk "Varmunt : Now, your help is desperately needed. I hopefully ask you.";
-	end;
 }
 
 1@gl_k,149,97,6	script	Heinrich#ghinstance2	652,{
@@ -330,36 +309,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Heinrich#ghinstance2");
 	end;
-OnTalk1:
-	npctalk "Heinrich : Who?!";
-	end;
-OnTalk2:
-	npctalk "Heinrich : That who rules the dead? No doubt, a pretty story. Here, some tea will be served to entertain the ladies. Unfortunately, I do not...";
-	end;
-OnTalk3:
-	npctalk "Heinrich : What did you say?";
-	end;
-OnTalk4:
-	npctalk "Heinrich : The King responded to the invitation of the Rune Midgard's Royal Family and hasn't come back yet.";
-	end;
-OnTalk5:
-	npctalk "Heinrich : Just leave before you get in trouble. This is the King's will!";
-	end;
-OnTalk6:
-	npctalk "Heinrich : Damn! She has detected the position of the Ymir's Heart pieces.";
-	end;
-OnTalk7:
-	npctalk "Heinrich : Now, Khalitzburg Crusaders and White Knights, follow me...";
-	end;
-OnTalk8:
-	npctalk "Heinrich : Unbelievable. My men are...This kind of thing is not possible!";
-	end;
-OnTalk9:
-	npctalk "Heinrich : I'm sorry...";
-	end;
-OnTalk10:
-	npctalk "Heinrich : I'm sorry, my lord! Do not forgive me!";
-	end;
 }
 
 1@gl_k,149,100,6	script	Heinrich#ghinstance3	652,{
@@ -371,30 +320,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Heinrich#ghinstance3");
 	end;
-OnTalk1:
-	npctalk "Heinrich : I cannot believe I killed my men with my own hands!";
-	end;
-OnTalk2:
-	npctalk "Heinrich : Varmunt is right about that. Now is not the time to regret.";
-	end;
-OnTalk3:
-	npctalk "Heinrich : People, gather around and follow my orders.";
-	end;
-OnTalk4:
-	npctalk "Heinrich : Himmelmez is turning into monsters all the people she put to sleep.";
-	end;
-OnTalk5:
-	npctalk "Heinrich : I don't know if there are survivors around here yet.";
-	end;
-OnTalk6:
-	npctalk "Heinrich : If there are survivors from this evil thing, please rescue them.";
-	end;
-OnTalk7:
-	npctalk "Heinrich : With Varmunt by my side, I'm going to chase Himmelmez down.";
-	end;
-OnTalk8:
-	npctalk "Heinrich : Hurry up Varmunt, let's chase her down.";
-	end;
 }
 
 1@gl_k,149,89,1	script	Himmelmez#ghinstance1	650,{
@@ -406,30 +331,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Himmelmez#ghinstance1");
 	end;
-OnTalk1:
-	npctalk "Himmelmez : This~ Did I interrupt your conversation? The thing is, it's been too long since the last guests saw some sadness spread...";
-	end;
-OnTalk2:
-	npctalk "Himmelmez : My name is Lisa Kahn Himmelmez. I am called the Valkyrie of the dead, master of the Dullahan.";
-	end;
-OnTalk3:
-	npctalk "Himmelmez : There's no need to pretend to be so laid back. Don't bluff about the whereabouts of you Majesty and things will be alright.";
-	end;
-OnTalk4:
-	npctalk "Himmelmez : Hohoho, do you have any questions? You're a really mysterious man.";
-	end;
-OnTalk5:
-	npctalk "Himmelmez : Not coveting the king's throne, you're such a stupid man, only waiting for his return. Your innocence is true, I love it.";
-	end;
-Ontalk6:
-	npctalk "Himmelmez : You make me wish we hadn't met in this situation. Too bad we did.";
-	end;
-Ontalk7:
-	npctalk "Himmelmez : Well~ Today, with such a busy commandant, I won't be able to talk as much as I'd love for you to contemplate my explanation~";
-	end;
-OnTalk8:
-	npctalk "Himmelmez : I gotta get my job done. Meanwhile why don't you meet my men? Hohoho.";
-	end;
 }
 
 // Control Timer
@@ -444,53 +345,53 @@ OnEnable:
 	initnpctimer;
 	end;
 OnTimer5000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk1";
+	npctalk "Heinrich : Who?!", instance_npcname("Heinrich#ghinstance2");
 	end;
 OnTimer10000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk1";
+	npctalk "Himmelmez : This~ Did I interrupt your conversation? The thing is, it's been too long since the last guests saw some sadness spread...", instance_npcname("Himmelmez#ghinstance1");
 	end;
 OnTimer15000:
-	donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnTalk3";
+	npctalk "Varmunt : Himmelmez!! Through the cracks!", instance_npcname("Varmunt#ghinstance2");
 	end;
 OnTimer20000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk2";
+	npctalk "Himmelmez : My name is Lisa Kahn Himmelmez. I am called the Valkyrie of the dead, master of the Dullahan.", instance_npcname("Himmelmez#ghinstance1");
 	end;
 OnTimer25000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk2";
+	npctalk "Heinrich : That who rules the dead? No doubt, a pretty story. Here, some tea will be served to entertain the ladies. Unfortunately, I do not...", instance_npcname("Heinrich#ghinstance2");
 	end;
 OnTimer30000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk3";
+	npctalk "Himmelmez : There's no need to pretend to be so laid back. Don't bluff about the whereabouts of you Majesty and things will be alright.", instance_npcname("Himmelmez#ghinstance1");
 	end;
 OnTimer35000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk3";
+	npctalk "Heinrich : What did you say?", instance_npcname("Heinrich#ghinstance2");
 	end;
 OnTimer45000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk4";
+	npctalk "Himmelmez : Hohoho, do you have any questions? You're a really mysterious man.", instance_npcname("Himmelmez#ghinstance1");
 	end;	
 OnTimer50000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk5";
+	npctalk "Himmelmez : Not coveting the king's throne, you're such a stupid man, only waiting for his return. Your innocence is true, I love it.", instance_npcname("Himmelmez#ghinstance1");
 	end;
 OnTimer55000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk6";
+	npctalk "Himmelmez : You make me wish we hadn't met in this situation. Too bad we did.", instance_npcname("Himmelmez#ghinstance1");
 	end;
 OnTimer60000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk4";
+	npctalk "Heinrich : The King responded to the invitation of the Rune Midgard's Royal Family and hasn't come back yet.", instance_npcname("Heinrich#ghinstance2");
 	end;
 OnTimer65000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk5";
+	npctalk "Heinrich : Just leave before you get in trouble. This is the King's will!", instance_npcname("Heinrich#ghinstance2");
 	end;
 OnTimer70000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk7";
+	npctalk "Himmelmez : Well~ Today, with such a busy commandant, I won't be able to talk as much as I'd love for you to contemplate my explanation~", instance_npcname("Himmelmez#ghinstance1");
 	end;
 OnTimer75000:
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnTalk8";
+	npctalk "Himmelmez : I gotta get my job done. Meanwhile why don't you meet my men? Hohoho.", instance_npcname("Himmelmez#ghinstance1");
 	end;
 OnTimer80000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk6";
+	npctalk "Heinrich : Damn! She has detected the position of the Ymir's Heart pieces.", instance_npcname("Heinrich#ghinstance2");
 	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnDisable";
 	end;
 OnTimer85000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk7";
+	npctalk "Heinrich : Now, Khalitzburg Crusaders and White Knights, follow me...", instance_npcname("Heinrich#ghinstance2");
 	hideonnpc instance_npcname("Varmunt#ghinstance1");
 
 	for(set .@i,1; .@i<=20; set .@i,.@i+4) {
@@ -518,21 +419,21 @@ OnTimer85000:
 	for(set .@i,1; .@i<=22; set .@i,.@i+1)
 		hideoffnpc instance_npcname(".#ghinstance"+.@i);
 
-	donpcevent instance_npcname(".#ghinstance22")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance21")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance18")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance17")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance14")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance13")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance10")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance9")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance6")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance5")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance2")+"::OnTalkK";
-	donpcevent instance_npcname(".#ghinstance1")+"::OnTalkK";
+	npctalk ". : I'm so thirsty!", instance_npcname(".#ghinstance22");
+	npctalk ". : Uhh... My body.", instance_npcname(".#ghinstance21");
+	npctalk ". : Who am I...", instance_npcname(".#ghinstance18");
+	npctalk ". : This is so uncomfortable. Eww!", instance_npcname(".#ghinstance17");
+	npctalk ". : Oh... No... I cannot die...", instance_npcname(".#ghinstance14");
+	npctalk ". : I'm thirsty.", instance_npcname(".#ghinstance13");
+	npctalk ". : Ack... Ugh.", instance_npcname(".#ghinstance10");
+	npctalk ". : Heinrich Sir, help!", instance_npcname(".#ghinstance9");
+	npctalk ". : My stomach hurts...", instance_npcname(".#ghinstance6");
+	npctalk ". : Help.", instance_npcname(".#ghinstance5");
+	npctalk ". : Mom...", instance_npcname(".#ghinstance2");
+	npctalk ". : I do not want to die.", instance_npcname(".#ghinstance1");
 	end;
 OnTimer88000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk8";
+	npctalk "Heinrich : Unbelievable. My men are...This kind of thing is not possible!", instance_npcname("Heinrich#ghinstance2");
 
 	for(set .@i,1; .@i<=20; set .@i,.@i+4) {
 		hideonnpc instance_npcname(".#ghinstance"+.@i);
@@ -559,13 +460,13 @@ OnTimer88000:
 	monster .@map$,154,104,"Khalitzburg",2471,1,.@label$;
 	end;
 OnTimer93000:
-	donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnTalk4";
+	npctalk "Varmunt : Unbelievable. My men are...This kind of thing is not possible!", instance_npcname("Varmunt#ghinstance2");
 	end;
 OnTimer97000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk9";
+	npctalk "Heinrich : I'm sorry...", instance_npcname("Heinrich#ghinstance2");
 	end;
 OnTimer105000:
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnTalk10";
+	npctalk "Heinrich : I'm sorry, my lord! Do not forgive me!", instance_npcname("Heinrich#ghinstance2");
 	mapannounce instance_mapname("1@gl_k"), "Heinrich's Shout: Dead men, dead men all over the place!",bc_map,"0xFFFF00";
 	end;
 OnTimer107000:
@@ -636,40 +537,40 @@ OnTimer114750: //custom time
 OnTimer115000:
 	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnEnable";
 	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnDisable";
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk1";
+	npctalk "Heinrich : I cannot believe I killed my men with my own hands!", instance_npcname("Heinrich#ghinstance3");
 	donpcevent instance_npcname(".#ghinstance2")+"::OnEffect1";
 	donpcevent instance_npcname(".#ghinstance1")+"::OnEffect1";
 	killmonster instance_mapname("1@gl_k"),instance_npcname("#talkinstance1")+"::OnMyMobDead";
 	end;
 OnTimer120000:
-	donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnTalk5";
+	npctalk "Varmunt : Heinrich, Sir! I need a quick decision.", instance_npcname("Varmunt#ghinstance2");
 	end;
 OnTimer125000:
-	donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnTalk6";
+	npctalk "Varmunt : To prevent other attacks, go chase her!", instance_npcname("Varmunt#ghinstance2");
 	end;
 OnTimer130000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk2";
+	npctalk "Heinrich : Varmunt is right about that. Now is not the time to regret.", instance_npcname("Heinrich#ghinstance3");
 	end;
 OnTimer135000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk3";
+	npctalk "Heinrich : People, gather around and follow my orders.", instance_npcname("Heinrich#ghinstance3");
 	end;
 OnTimer140000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk4";
+	npctalk "Heinrich : Himmelmez is turning into monsters all the people she put to sleep.", instance_npcname("Heinrich#ghinstance3");
 	end;
 OnTimer145000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk5";
+	npctalk "Heinrich : I don't know if there are survivors around here yet.", instance_npcname("Heinrich#ghinstance3");
 	end;
 OnTimer150000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk6";
+	npctalk "Heinrich : If there are survivors from this evil thing, please rescue them.", instance_npcname("Heinrich#ghinstance3");
 	end;
 OnTimer155000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk7";
+	npctalk "Heinrich : With Varmunt by my side, I'm going to chase Himmelmez down.", instance_npcname("Heinrich#ghinstance3");
 	end;
 OnTimer160000:
-	donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnTalk7";
+	npctalk "Varmunt : Now, your help is desperately needed. I hopefully ask you.", instance_npcname("Varmunt#ghinstance2");
 	end;
 OnTimer165000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnTalk8";
+	npctalk "Heinrich : Hurry up Varmunt, let's chase her down.", instance_npcname("Heinrich#ghinstance3");
 	end;
 OnTimer167000:
 	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnDisable";
@@ -701,22 +602,6 @@ OnEffect1:
 	specialeffect EF_GRANDCROSS;
 	specialeffect EF_LEXAETERNA;
 	end;
-OnTalkK:
-	switch(atoi(replacestr(strnpcinfo(2),"ghinstance",""))) {
-		case 1: npctalk ". : I do not want to die."; break;
-		case 2: npctalk ". : Mom..."; break;
-		case 5: npctalk ". : Help."; break;
-		case 6: npctalk ". : My stomach hurts..."; break;
-		case 9: npctalk ". : Heinrich Sir, help!"; break;
-		case 10: npctalk ". : Ack... Ugh."; break;
-		case 13: npctalk ". : I'm thirsty."; break;
-		case 14: npctalk ". : Oh... No... I cannot die..."; break;
-		case 17: npctalk ". : This is so uncomfortable. Eww!"; break;
-		case 18: npctalk ". : Who am I..."; break;
-		case 21: npctalk ". : Uhh... My body."; break;
-		case 22: npctalk ". : I'm so thirsty!"; break;
-	}
-	end;
 }
 1@gl_k,154,54,3	duplicate(.#ghinstance1)	.#ghinstance2	2471
 1@gl_k,145,64,6	duplicate(.#ghinstance1)	.#ghinstance5	2471
@@ -1072,7 +957,7 @@ OnMyMobDead:
 	if (mobcount(.@map$,instance_npcname("#ghmemorialmob04")+"::OnMyMobDead") < 1) {
 		mapannounce .@map$, "12 o'clock warp leading to the Chivalry's Second Floor is now open.",bc_map,"0xFFFF00";
 		donpcevent instance_npcname("#ghinstancewarp7")+"::OnEnable";
-		donpcevent instance_npcname("Varmunt#ghinstance3")+"::OnTalk2";
+		npctalk "Varmunt : From the monster I picked up some great stuff. People who are interested, talk to me.", instance_npcname("Varmunt#ghinstance3");
 		donpcevent instance_npcname("#effectGH01")+"::OnEnable";
 		donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnEnable";
 		donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnEnable";
@@ -1112,37 +997,37 @@ OnEnable:
 	initnpctimer;
 	end;
 OnTimer3000:
-	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnTalk1";
+	npctalk "Himmelmez : What an awfully lucky, I flew all the way over here and just one of them is really powerful.", instance_npcname("Himmelmez#ghinstance2");
 	end;
 OnTimer6000:
-	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnTalk2";
+	npctalk "Himmelmez : But it doesn't matter to me.", instance_npcname("Himmelmez#ghinstance2");
 	end;
 OnTimer9000:
-	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnTalk3";
+	npctalk "Himmelmez : Now, all of you will die.", instance_npcname("Himmelmez#ghinstance2");
 	end;
 OnTimer12000:
-	donpcevent instance_npcname("Heinrich#ghinstance4")+"::OnTalk1";
+	npctalk "Heinrich : Himmelmez! I won't let you take even a single more step here.", instance_npcname("Heinrich#ghinstance4");
 	end;
 OnTimer15000:
-	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnTalk4";
+	npctalk "Himmelmez : Hahaha, so you guys thought I would come alone?", instance_npcname("Himmelmez#ghinstance2");
 	end;
 OnTimer18000:
-	donpcevent instance_npcname("Varmunt#ghinstance3")+"::OnTalk1";
+	npctalk "Varmunt : Heinrich Sir! Something unknown holds an inexplicably powerful force!", instance_npcname("Varmunt#ghinstance3");
 	end;
 OnTimer21000:
-	donpcevent instance_npcname("Heinrich#ghinstance4")+"::OnTalk2";
+	npctalk "Heinrich : What... is this?!", instance_npcname("Heinrich#ghinstance4");
 	end;
 OnTimer24000:
-	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnTalk5";
+	npctalk "Himmelmez : This is my new toy to keep you at my feet. Why don't you guys play while I entertain?", instance_npcname("Himmelmez#ghinstance2");
 	end;
 OnTimer27000:
-	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnTalk6";
+	npctalk "Himmelmez : Sincerely~, If I am given the opportunity I'd like to meet you again, Heinrich.", instance_npcname("Himmelmez#ghinstance2");
 	end;
 OnTimer28000:
 	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnDisable";
 	end;
 OnTimer31000:
-	donpcevent instance_npcname("Heinrich#ghinstance4")+"::OnTalk3";
+	npctalk "Heinrich : Varmunt Sir! Help the adventurers and I'll chase Himmelmez!", instance_npcname("Heinrich#ghinstance4");
 	end;
 OnTimer32000:
 	donpcevent instance_npcname("Heinrich#ghinstance4")+"::OnDisable";
@@ -1171,15 +1056,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Heinrich#ghinstance4");
 	end;
-OnTalk1:
-	npctalk "Heinrich : Himmelmez! I won't let you take even a single more step here.";
-	end;
-OnTalk2:
-	npctalk "Heinrich : What... is this?!";
-	end;
-OnTalk3:
-	npctalk "Heinrich : Varmunt Sir! Help the adventurers and I'll chase Himmelmez!";
-	end;
 }
 
 1@gl_k,150,257,3	script	Himmelmez#ghinstance2	650,{
@@ -1196,24 +1072,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Himmelmez#ghinstance2");
 	end;
-OnTalk1:
-	npctalk "Himmelmez : What an awfully lucky, I flew all the way over here and just one of them is really powerful.";
-	end;
-OnTalk2:
-	npctalk "Himmelmez : But it doesn't matter to me.";
-	end;
-OnTalk3:
-	npctalk "Himmelmez : Now, all of you will die.";
-	end;
-OnTalk4:
-	npctalk "Himmelmez : Hahaha, so you guys thought I would come alone?";
-	end;
-OnTalk5:
-	npctalk "Himmelmez : This is my new toy to keep you at my feet. Why don't you guys play while I entertain?";
-	end;
-OnTalk6:
-	npctalk "Himmelmez : Sincerely~, If I am given the opportunity I'd like to meet you again, Heinrich.";
-	end;
 }
 
 1@gl_k,156,259,3	script	Varmunt#ghinstance3	654,{
@@ -1247,12 +1105,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Varmunt#ghinstance3");
 	end;
-OnTalk1:
-	npctalk "Varmunt : Heinrich Sir! Something unknown holds an inexplicably powerful force!";
-	end;
-OnTalk2:
-	npctalk "Varmunt : From the monster I picked up some great stuff. People who are interested, talk to me.";
-	end;
 }
 
 // Floor 2
@@ -1272,21 +1124,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Heinrich#ghinstance5");
 	end;
-OnTalk1:
-	npctalk "Heinrich : These things have never been in the castle!";
-	end;
-OnTalk2:
-	npctalk "Heinrich : Trying to break this power with common weapons doesn't work. I tried it.";
-	end;
-OnTalk3:
-	npctalk "Heinrich : It is really unforgivable.";
-	end;
-OnTalk4:
-	npctalk "Heinrich : I, who already was a subordinate of genocide. How much more in the future...";
-	end;
-OnTalk5:
-	npctalk "Heinrich : ...";
-	end;
 }
 
 2@gl_k,151,71,7	script	Varmunt#ghinstance4	654,{
@@ -1303,54 +1140,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Varmunt#ghinstance4");
 	end;
-OnTalk2:
-	npctalk "Varmunt : Himmelmez's enchantment has completely blocked the passage to each section.";
-	end;
-OnTalk3:
-	npctalk "Varmunt : Get out of the way for a moment. I'll try to somehow break the spell with magical powers.";
-	end;
-OnTalk4:
-	npctalk "Varmunt : The enchantment seems to be broken.";
-	end;
-OnTalk5:
-	npctalk "Varmunt : I've never seen this spell before.";
-	end;
-OnTalk6:
-	npctalk "Varmunt : Himmelmez doesn't use a seal on a person's body to turn it into an undead.";
-	end;
-OnTalk7:
-	npctalk "Varmunt : She uses enchantment stones.This way, the spell is probably maintained.";
-	end;
-OnTalk8:
-	npctalk "Varmunt : We should kill the people who have the enchantment stones to break the spell.";
-	end;
-OnTalk9:
-	npctalk "Varmunt : However, we can't identify them. The purification can only be done randomly.";
-	end;
-OnTalk10:
-	npctalk "Varmunt : Commandant...";
-	end;
-OnTalk11:
-	npctalk "Varmunt : Commandant, it seems too loose.";
-	end;
-OnTalk12:
-	npctalk "Varmunt : We are related to all these people, not just a few.";
-	end;
-OnTalk13:
-	npctalk "Varmunt : We can't deny that it's not their fault for what is going on.";
-	end;
-OnTalk14:
-	npctalk "Varmunt : Well, let's do it then.";
-	end;
-OnTalk15:
-	npctalk "Varmunt : You guys are of a great help. Try to follow us.";
-	end;
-OnTalk16:
-	npctalk "Varmunt : There can be a tough fight. Hold on, and it would be nice to eat something.";
-	end;
-OnTalk17:
-	npctalk "Varmunt : Guys. It is time to depart, Heinrich Sir.";
-	end;
 }
 
 2@gl_k,150,67,0	script	#effectGH01	111,10,10,{
@@ -1385,72 +1174,72 @@ OnEnable:
 	initnpctimer;
 	end;
 OnTimer3000:
-	donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnTalk1";
+	npctalk "Heinrich : These things have never been in the castle!", instance_npcname("Heinrich#ghinstance5");
 	donpcevent instance_npcname("#ghmemorialmob05")+"::OnEnable";
 	end;
 OnTimer6000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk2";
+	npctalk "Varmunt : Himmelmez's enchantment has completely blocked the passage to each section.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer9000:
-	donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnTalk2";
+	npctalk "Heinrich : Trying to break this power with common weapons doesn't work. I tried it.", instance_npcname("Heinrich#ghinstance5");
 	end;
 OnTimer12000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk3";
+	npctalk "Varmunt : Get out of the way for a moment. I'll try to somehow break the spell with magical powers.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer15000:
 	donpcevent instance_npcname("#effectGH01")+"::OnEffect";
 	end;
 OnTimer18000:
 	donpcevent instance_npcname("#effectGH01")+"::OnDisable";
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk4";
+	npctalk "Varmunt : The enchantment seems to be broken.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer21000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk5";
+	npctalk "Varmunt : I've never seen this spell before.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer24000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk6";
+	npctalk "Varmunt : Himmelmez doesn't use a seal on a person's body to turn it into an undead.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer27000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk7";
+	npctalk "Varmunt : She uses enchantment stones.This way, the spell is probably maintained.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer30000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk8";
+	npctalk "Varmunt : We should kill the people who have the enchantment stones to break the spell.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer33000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk9";
+	npctalk "Varmunt : However, we can't identify them. The purification can only be done randomly.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer36000:
-	donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnTalk3";
+	npctalk "Heinrich : It is really unforgivable.", instance_npcname("Heinrich#ghinstance5");
 	end;
 OnTimer39000:
-	donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnTalk4";
+	npctalk "Heinrich : I, who already was a subordinate of genocide. How much more in the future...", instance_npcname("Heinrich#ghinstance5");
 	end;
 OnTimer42000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk10";
+	npctalk "Varmunt : Commandant...", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer45000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk11";
+	npctalk "Varmunt : Commandant, it seems too loose.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer48000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk12";
+	npctalk "Varmunt : We are related to all these people, not just a few.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer51000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk13";
+	npctalk "Varmunt : We can't deny that it's not their fault for what is going on.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer54000:
-	donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnTalk5";
+	npctalk "Heinrich : ...", instance_npcname("Heinrich#ghinstance5");
 	end;
 OnTimer57000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk14";
+	npctalk "Varmunt : Well, let's do it then.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer60000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk15";
+	npctalk "Varmunt : You guys are of a great help. Try to follow us.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer63000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk16";
+	npctalk "Varmunt : There can be a tough fight. Hold on, and it would be nice to eat something.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer66000:
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnTalk17";
+	npctalk "Varmunt : Guys. It is time to depart, Heinrich Sir.", instance_npcname("Varmunt#ghinstance4");
 	end;
 OnTimer69000:
 	mapannounce instance_mapname("2@gl_k"), "9 o'clock positioned warp leading to the 1st zone has been opened. Move from the central hallway. A being with an evil aura seems to be appearing in this region.",bc_map,"0xFFFF00";
@@ -1669,24 +1458,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Heinrich#ghinstance6");
 	end;
-OnTalk1:
-	npctalk "Heinrich : Gerhard!";
-	end;
-OnTalk2:
-	npctalk "Heinrich : What are you doing to my men, Himmelmez?!";
-	end;
-OnTalk3:
-	npctalk "Heinrich : Himmelmez! You don't need to make any more sacrifices!";
-	end;
-OnTalk4:
-	npctalk "Heinrich : Let him go! I don't want one more sacrifice!";
-	end;
-OnTalk5:
-	npctalk "Heinrich : I will not forgive you.";
-	end;
-OnTalk6:
-	npctalk "Heinrich : Just leave us alone, Himmelmez!!";
-	end;
 }
 
 2@gl_k,162,250,1	script	Varmunt#ghinstance5	654,{
@@ -1704,9 +1475,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Varmunt#ghinstance5");
 	end;
-OnTalk1:
-	npctalk "Varmunt : What? This cannot be. We must prevent Amdarias's attacks!";
-	end;
 }
 
 2@gl_k,158,252,3	script	Himmelmez#ghinstance4	650,4,4,{
@@ -1718,39 +1486,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Himmelmez#ghinstance4");
 	end;
-OnTalk1:
-	npctalk "Himmelmez : Great~ I thought you wouldn't come near the end...";
-	end;
-OnTalk2:
-	npctalk "Himmelmez : Huhu, I have already found a piece of Ymir's Heart, Heinrich.";
-	end;
-OnTalk3:
-	npctalk "Himmelmez : It would've been faster if there were no distractions.";
-	end;
-OnTalk4:
-	npctalk "Himmelmez : What do you think? Making it look like an accidental disease infected the king and the people around...";
-	end;
-OnTalk5:
-	npctalk "Himmelmez : You want that?";
-	end;
-OnTalk6:
-	npctalk "Himmelmez : This one is your final blow, Heinrich.";
-	end;
-OnTalk7:
-	npctalk "Himmelmez : It is said that stopping me requires a skillfull person.";
-	end;
-OnTalk8:
-	npctalk "Himmelmez : Seems like a perfect scenario to make my new monster, Amdarias.";
-	end;
-OnTalk9:
-	npctalk "Himmelmez : Booh~ I'm scared.";
-	end;
-OnTalk10:
-	npctalk "Himmelmez : Anyway, it was nice talking to you. Maybe we'll have the chance to meet again in the next story.";
-	end;
-OnTalk11:
-	npctalk "Himmelmez : Well, make sure you will come back again.";
-	end;
 }
 
 2@gl_k,150,179,0	script	#controlGH6	111,2,2,{
@@ -1799,15 +1534,6 @@ OnDisable:
 OnEnable:
 	hideoffnpc instance_npcname("Gerhard#ghinstance1");
 	end;
-OnTalk1:
-	npctalk "Gerhard : Damn it! Run away! I can't withstand anymore!";
-	end;
-OnTalk2:
-	npctalk "Gerhard : Commandant... Come on, you need to run away from here... Ugh.";
-	end;
-OnTalk3:
-	npctalk "Gerhard : Even if you defile my body, I won't let you take my soul, Himmelmez!";
-	end;
 OnEffect1:
 	specialeffect EF_BARRIER;
 	end;
@@ -1835,61 +1561,61 @@ OnEnable:
 	initnpctimer;
 	end;
 OnTimer3000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk1";
+	npctalk "Himmelmez : Great~ I thought you wouldn't come near the end...", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer6000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnTalk1";
+	npctalk "Gerhard : Damn it! Run away! I can't withstand anymore!", instance_npcname("Gerhard#ghinstance1");
 	end;
 OnTimer9000:
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnTalk1";
+	npctalk "Heinrich : Gerhard!", instance_npcname("Heinrich#ghinstance6");
 	end;
 OnTimer12000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnTalk2";
+	npctalk "Gerhard : Commandant... Come on, you need to run away from here... Ugh.", instance_npcname("Gerhard#ghinstance1");
 	end;
 OnTimer15000:
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnTalk2";
+	npctalk "Heinrich : What are you doing to my men, Himmelmez?!", instance_npcname("Heinrich#ghinstance6");
 	end;
 OnTimer18000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk2";
+	npctalk "Himmelmez : Huhu, I have already found a piece of Ymir's Heart, Heinrich.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer21000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk3";
+	npctalk "Himmelmez : It would've been faster if there were no distractions.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer24000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnTalk3";
+	npctalk "Gerhard : Even if you defile my body, I won't let you take my soul, Himmelmez!", instance_npcname("Gerhard#ghinstance1");
 	end;
 OnTimer27000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk4";
+	npctalk "Himmelmez : What do you think? Making it look like an accidental disease infected the king and the people around...", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer30000:
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnTalk3";
+	npctalk "Heinrich : Himmelmez! You don't need to make any more sacrifices!", instance_npcname("Heinrich#ghinstance6");
 	end;
 OnTimer33000:
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnTalk4";
+	npctalk "Heinrich : Let him go! I don't want one more sacrifice!", instance_npcname("Heinrich#ghinstance6");
 	end;
 OnTimer36000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk5";
+	npctalk "Himmelmez : You want that?", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer39000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk6";
+	npctalk "Himmelmez : This one is your final blow, Heinrich.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer42000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk7";
+	npctalk "Himmelmez : It is said that stopping me requires a skillfull person.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer45000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk8";
+	npctalk "Himmelmez : Seems like a perfect scenario to make my new monster, Amdarias.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer48000:
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnTalk5";
+	npctalk "Heinrich : I will not forgive you.", instance_npcname("Heinrich#ghinstance6");
 	end;
 OnTimer51000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk9";
+	npctalk "Himmelmez : Booh~ I'm scared.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer54000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk10";
+	npctalk "Himmelmez : Anyway, it was nice talking to you. Maybe we'll have the chance to meet again in the next story.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer57000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnTalk11";
+	npctalk "Himmelmez : Well, make sure you will come back again.", instance_npcname("Himmelmez#ghinstance4");
 	end;
 OnTimer60000:
 	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect1";
@@ -1904,14 +1630,14 @@ OnTimer66000:
 	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect2";
 	end;
 OnTimer67000:
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnTalk6";
+	npctalk "Heinrich : Just leave us alone, Himmelmez!!", instance_npcname("Heinrich#ghinstance6");
 	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect4";
 	end;
 OnTimer70000:
 	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect3";
 	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect4";
 	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnDisable";
-	donpcevent instance_npcname("Varmunt#ghinstance5")+"::OnTalk1";
+	npctalk "Varmunt : What? This cannot be. We must prevent Amdarias's attacks!", instance_npcname("Varmunt#ghinstance5");
 	end;
 OnTimer73000:
 	mapannounce instance_mapname("2@gl_k"), "Leads toward Gerhard's body.",bc_map,"0xFFFFFF";
@@ -1945,7 +1671,7 @@ OnTimer80000:
 		next;
 		mes "[Hugin]";
 		mes "Varmunt, I have arbitrarily stopped time. And soon, the time gap will be gone.";
-		specialeffect2 EF_BLIND,AREA;
+		specialeffect2 EF_BLIND;
 		soundeffect "_blind.wav",0;
 		next;
 		mes "[Hugin]";

+ 21 - 91
npc/re/instances/SaraMemory.txt

@@ -268,7 +268,7 @@ dali,139,118,4	script	Dimensional Device#sara	10007,{
 		mes "Hi Daddy!";
 		next;
 		cutin "sara_elder_irine1",2;
-		donpcevent instance_npcname("Doyen Irene#01", instance_id())+"::OnTalk01";
+		npctalk "Sweetheart you look so happy.", instance_npcname("Doyen Irene#01", instance_id());
 		mes "[Doyen Irene]";
 		mes "Sweetheart you look so happy.";
 		next;
@@ -278,7 +278,7 @@ dali,139,118,4	script	Dimensional Device#sara	10007,{
 		mes "You said you would come back soon! I waited for you and you lied!";
 		next;
 		cutin "sara_elder_irine1",2;
-		donpcevent instance_npcname("Doyen Irene#01", instance_id())+"::OnTalk02";
+		npctalk "Sweetheart, I am sorry I made you wait so long. The meeting with the village elders took longer than expected.", instance_npcname("Doyen Irene#01", instance_id());
 		mes "[Doyen Irene]";
 		mes "Sweetheart, I am sorry I made you wait so long. The meeting with the village elders took longer than expected.";
 		next;
@@ -288,7 +288,7 @@ dali,139,118,4	script	Dimensional Device#sara	10007,{
 		mes "I hate those old fogeys.";
 		next;
 		cutin "sara_elder_irine1",2;
-		donpcevent instance_npcname("Doyen Irene#01", instance_id())+"::OnTalk03";
+		npctalk "Don't say that sweetheart... Who is this with you?", instance_npcname("Doyen Irene#01", instance_id());
 		mes "[Doyen Irene]";
 		mes "Don't say that sweetheart... Who is this with you?";
 		next;
@@ -304,7 +304,7 @@ dali,139,118,4	script	Dimensional Device#sara	10007,{
 		mes "Here you go daddy!";
 		next;
 		cutin "sara_elder_irine1",2;
-		donpcevent instance_npcname("Doyen Irene#01", instance_id())+"::OnTalk04";
+		npctalk "Oh Sara, may I have them?", instance_npcname("Doyen Irene#01", instance_id());
 		mes "[Doyen Irene]";
 		mes "Oh Sara, may I have them?";
 		next;
@@ -317,7 +317,7 @@ dali,139,118,4	script	Dimensional Device#sara	10007,{
 		mes "^FF0000After being given the flowers the Doyen's mood seems to greatly improve.^000000";
 		next;
 		cutin "sara_elder_irine1",2;
-		donpcevent instance_npcname("Doyen Irene#01", instance_id())+"::OnTalk05";
+		npctalk "Alright my princess, where should we go now?", instance_npcname("Doyen Irene#01", instance_id());
 		mes "[Doyen Irene]";
 		mes "Alright my princess, where should we go now?";
 		next;
@@ -327,7 +327,7 @@ dali,139,118,4	script	Dimensional Device#sara	10007,{
 		mes "Oh daddy! Lets go to the top of that hill over there!";
 		next;
 		cutin "sara_elder_irine1",2;
-		donpcevent instance_npcname("Doyen Irene#01", instance_id())+"::OnTalk06";
+		npctalk "Hah! Ok, hold onto me tight!", instance_npcname("Doyen Irene#01", instance_id());
 		mes "[Doyen Irene]";
 		mes "Hah! Ok, hold onto me tight!";
 		next;
@@ -339,23 +339,23 @@ dali,139,118,4	script	Dimensional Device#sara	10007,{
 		mapannounce instance_mapname("1@sara"), "As they wander off you hear strange voices from around the corner...",bc_area,"0xffffff";
 		mes "^FF0000As they wander off you hear strange voices from around the corner...^000000";
 		next;
-		donpcevent instance_npcname("Strange Old Man#01", instance_id())+"::OnTalk01";
+		npctalk "I can feel Sara's power growing. We cannot just stand by and let her achieve her full potential!", instance_npcname("Strange Old Man#01", instance_id());
 		mes "[Strange Old Man]";
 		mes "I can feel Sara's power growing. We cannot just stand by and let her achieve her full potential!";
 		next;
-		donpcevent instance_npcname("Mysterious Old Man#02", instance_id())+"::OnTalk01";
+		npctalk "She was born under a bad sign and her mother isn't even one of us!", instance_npcname("Mysterious Old Man#02", instance_id());
 		mes "[Mysterious Old Man]";
 		mes "She was born under a bad sign and her mother isn't even one of us!";
 		next;
-		donpcevent instance_npcname("Mysterious Old Man#02", instance_id())+"::OnTalk02";
+		npctalk "Someday she will cause blood to flow in our streets.", instance_npcname("Mysterious Old Man#02", instance_id());
 		mes "[Mysterious Old Man]";
 		mes "Someday she will cause blood to flow in our streets.";
 		next;
-		donpcevent instance_npcname("Strange Old Man#01", instance_id())+"::OnTalk02";
+		npctalk "We have to do something before the Holy creatures select her. I asked 'HIM' to take care of it.", instance_npcname("Strange Old Man#01", instance_id());
 		mes "[Strange Old Man]";
 		mes "We have to do something before the Holy creatures select her. I asked 'HIM' to take care of it.";
 		next;
-		donpcevent instance_npcname("Mysterious Old Man#02", instance_id())+"::OnTalk03";
+		npctalk "We will see... I look forward to hearing the bad news that has befallen her...", instance_npcname("Mysterious Old Man#02", instance_id());
 		mes "[Mysterious Old Man]";
 		mes "We will see... I look forward to hearing the bad news that has befallen her...";
 		next;
@@ -385,25 +385,6 @@ OnDisable:
 1@sara,268,158,4	script	Doyen Irene#01	684,{
 	end;
 
-OnTalk01:
-	npctalk "Sweetheart you look so happy.";
-	end;
-OnTalk02:
-	npctalk "Sweetheart, I am sorry I made you wait so long. The meeting with the village elders took longer than expected.";
-	end;
-OnTalk03:
-	npctalk "Don't say that sweetheart... Who is this with you?";
-	end;
-OnTalk04:
-	npctalk "Oh Sara, may I have them?";
-	end;
-OnTalk05:
-	npctalk "Alright my princess, where should we go now?";
-	end;
-OnTalk06:
-	npctalk "Hah! Ok, hold onto me tight!";
-	end;
-
 OnInstanceInit:
 OnDisable:
 	disablenpc instance_npcname("Doyen Irene#01");
@@ -416,13 +397,6 @@ OnEnable:
 1@sara,260,156,4	script	Strange Old Man#01	-1,{
 	end;
 
-OnTalk01:
-	npctalk "I can feel Sara's power growing. We cannot just stand by and let her achieve her full potential!";
-	end;
-OnTalk02:
-	npctalk "We have to do something before the Holy creatures select her. I asked 'HIM' to take care of it.";
-	end;
-
 OnInstanceInit:
 OnDisable:
 	disablenpc instance_npcname("Strange Old Man#01");
@@ -435,16 +409,6 @@ OnEnable:
 1@sara,260,156,4	script	Mysterious Old Man#02	-1,{
 	end;
 
-OnTalk01:
-	npctalk "She was born under a bad sign and her mother isn't even one of us!";
-	end;
-OnTalk02:
-	npctalk "Someday she will cause blood to flow in our streets.";
-	end;
-OnTalk03:
-	npctalk "We will see... I look forward to hearing the bad news that has befallen her...";
-	end;
-
 OnInstanceInit:
 OnDisable:
 	disablenpc instance_npcname("Mysterious Old Man#02");
@@ -482,7 +446,7 @@ OnEnable:
 		mes "[Sara Irene]";
 		mes "...";
 		next;
-		donpcevent instance_npcname("Sara's Mother", instance_id())+"::OnTalk01";
+		npctalk "Sara...Ru-...away...", instance_npcname("Sara's Mother", instance_id());
 		mes "[Sara's Mother]";
 		mes "Sara...Ru-...away...";
 		next;
@@ -498,7 +462,7 @@ OnEnable:
 		next;
 		cutin "sara_momdie",255;
 		cutin "sara_elder_irine4",2;
-		donpcevent instance_npcname("Doyen Irene#02", instance_id())+"::OnTalk01";
+		npctalk "Ahh Sara! I was just looking for you...", instance_npcname("Doyen Irene#02", instance_id());
 		mes "[Doyen Irene]";
 		mes "Ahh Sara! I was just looking for you...";
 		next;
@@ -509,7 +473,7 @@ OnEnable:
 		next;
 		switch(select("Escape with Sara.")) {}
 		cutin "sara_elder_irine3",2;
-		donpcevent instance_npcname("Doyen Irene#02", instance_id())+"::OnTalk02";
+		npctalk "Guards! GUARDS!! There is a murderer here! Catch him!", instance_npcname("Doyen Irene#02", instance_id());
 		mes "[Doyen Irene]";
 		mes "Guards! GUARDS!! There is a murderer here! Catch him!";
 		next;
@@ -560,10 +524,6 @@ OnEnable:
 1@sara,107,325,4	script	Sara's Mother	-1,{
 	end;
 
-OnTalk01:
-	npctalk "Sara...Ru-...away...";
-	end;
-
 OnInstanceInit:
 OnDisable:
 	disablenpc instance_npcname("Sara's Mother");
@@ -576,13 +536,6 @@ OnEnable:
 1@sara,107,325,4	script	Doyen Irene#02	-1,{
 	end;
 
-OnTalk01:
-	npctalk "Ahh Sara! I was just looking for you...";
-	end;
-OnTalk02:
-	npctalk "Guards! GUARDS!! There is a murderer here! Catch him!";
-	end;
-
 OnInstanceInit:
 OnDisable:
 	disablenpc instance_npcname("Doyen Irene#02");
@@ -600,7 +553,7 @@ OnEnable:
 		mes "Mommy!";
 		next;
 		cutin "sara_elder_irine4",2;
-		donpcevent instance_npcname("Doyen Irene#03", instance_id())+"::OnTalk01";
+		npctalk "Sara...", instance_npcname("Doyen Irene#03", instance_id());
 		mes "[Doyen Irene]";
 		mes "Sara...";
 		next;
@@ -610,7 +563,7 @@ OnEnable:
 		mes "No!";
 		next;
 		cutin "sara_elder_irine4",2;
-		donpcevent instance_npcname("Doyen Irene#03", instance_id())+"::OnTalk02";
+		npctalk "I have been looking for you Sara. Please come with daddy, it is very dangerous here!", instance_npcname("Doyen Irene#03", instance_id());
 		mes "[Doyen Irene]";
 		mes "I have been looking for you Sara. Please come with daddy, it is very dangerous here!";
 		next;
@@ -619,7 +572,7 @@ OnEnable:
 		mes "I won't let you take Sara!";
 		next;
 		cutin "sara_elder_irine3",2;
-		donpcevent instance_npcname("Doyen Irene#03", instance_id())+"::OnTalk03";
+		npctalk "The murderer is here! Guards! We will finish him once and for all!", instance_npcname("Doyen Irene#03", instance_id());
 		mes "[Doyen Irene]";
 		mes "The murderer is here! Guards! We will finish him once and for all!";
 		next;
@@ -654,16 +607,6 @@ OnEnable:
 1@sara,152,233,4	script	Doyen Irene#03	-1,{
 	end;
 
-OnTalk01:
-	npctalk "Sara...";
-	end;
-OnTalk02:
-	npctalk "I have been looking for you Sara. Please come with daddy, it is very dangerous here!";
-	end;
-OnTalk03:
-	npctalk "The murderer is here! Guards! We will finish him once and for all!";
-	end;
-
 OnInstanceInit:
 OnDisable:
 	disablenpc instance_npcname("Doyen Irene#03");
@@ -759,18 +702,18 @@ OnEnable:
 		mes "^FF0000As you are about to call out to Sara, a sudden blow knocks you down from behind.^000000";
 		next;
 		cutin "sara_beholder",2;
-		donpcevent instance_npcname("?????#01", instance_id())+"::OnTalk01";
+		npctalk "The time travellers cannot interfere any longer. You cannot stop us from meeting Sara.", instance_npcname("?????#01", instance_id());
 		mes "[?????]";
 		mes "The time travellers cannot interfere any longer. You cannot stop us from meeting Sara.";
 		next;
-		donpcevent instance_npcname("?????#01", instance_id())+"::OnTalk02";
+		npctalk "You should go back to the time where you belong.", instance_npcname("?????#01", instance_id());
 		mes "[?????]";
 		mes "You should go back to the time where you belong.";
 		next;
 		mapannounce instance_mapname("1@sara"), "As you fall to the ground, two dark figures approach Sara.",bc_area,"0xffffff";
 		mes "^FF0000As you fall to the ground, two dark figures approach Sara.^000000";
 		next;
-		donpcevent instance_npcname("?????#01", instance_id())+"::OnTalk03";
+		npctalk "A girl full of betrayal, despair, and hate. We will guide you to your ultimate fate.", instance_npcname("?????#01", instance_id());
 		mes "[?????]";
 		mes "A girl full of betrayal, despair, and hate. We will guide you to your ultimate fate.";
 		next;
@@ -780,7 +723,7 @@ OnEnable:
 		mes "...";
 		next;
 		cutin "sara_beholder",2;
-		donpcevent instance_npcname("?????#01", instance_id())+"::OnTalk04";
+		npctalk "Sara Irene, 'he' will make your dreams come true.", instance_npcname("?????#01", instance_id());
 		mes "[?????]";
 		mes "Sara Irene, 'he' will make your dreams come true.";
 		next;
@@ -810,19 +753,6 @@ OnEnable:
 1@sara,39,142,4	script	?????#01	-1,{
 	end;
 
-OnTalk01:
-	npctalk "The time travellers cannot interfere any longer. You cannot stop us from meeting Sara.";
-	end;
-OnTalk02:
-	npctalk "You should go back to the time where you belong.";
-	end;
-OnTalk03:
-	npctalk "A girl full of betrayal, despair, and hate. We will guide you to your ultimate fate.";
-	end;
-OnTalk04:
-	npctalk "Sara Irene, 'he' will make your dreams come true.";
-	end;
-
 OnInstanceInit:
 OnDisable:
 	disablenpc instance_npcname("?????#01");

+ 8 - 8
npc/re/instances/WolfchevLaboratory.txt

@@ -570,42 +570,42 @@ OnEnable2:
 
 OnTimer1000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#01";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#01";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#01";
 	end;
 
 OnTimer2000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#02";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#02";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#02";
 	end;
 
 OnTimer3000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#03";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#03";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#03";
 	end;
 
 OnTimer4000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#04";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#04";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#04";
 	end;
 
 OnTimer5000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#05";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#05";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#05";
 	end;
 
 OnTimer6000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#06";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#06";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#06";
 	end;
 
 OnTimer7000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#07";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#07";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#07";
 	end;
 
 OnTimer8000:
 	specialeffect EF_SUI_EXPLOSION,AREA, "#08";
-	specialeffect EF_BEGINASURA, "Human Guinea pig#08";
+	specialeffect EF_BEGINASURA, AREA, "Human Guinea pig#08";
 	stopnpctimer;
 	end;
 

+ 1 - 1
npc/re/jobs/3-1/archbishop.txt

@@ -1637,7 +1637,7 @@ OnEnable:
 
 job3_arch02,290,221,0	script	#arch_end_eff	139,5,5,{
 OnTouch:
-	specialeffect EF_MAPPILLAR2,"#arch_end";
+	specialeffect EF_MAPPILLAR2,AREA,"#arch_end";
 	end;
 }
 

+ 1 - 1
npc/re/jobs/novice/academy.txt

@@ -3116,7 +3116,7 @@ iz_ac01,36,52,3	script	Odd Novice#ac	4_M_SIT_NOVICE,{
 			mes "How about it? Newfangled.";
 			mes "Idling away too long,";
 			mes "All the skills learnt over your shoulder could be used.";
-			specialeffect EF_SIGHT, "Odd Novice#nk1";
+			specialeffect EF_SIGHT, AREA, "Odd Novice#nk1";
 			next;
 			mes "[Odd Novice]";
 			mes "Ugh, all my SP is gone...";

+ 3 - 0
npc/re/mapflag/nobranch.txt

@@ -13,6 +13,7 @@
 //===== Additional Comments: ================================= 
 //= 1.0 Renewal split. [Euphy]
 //= 1.1 Added Izlude duplicates. [Euphy]
+//= 1.2 Added Nightmare Clock Tower [Lemongrass]
 //============================================================
 
 // 3rd Class Job Maps & Paradise
@@ -75,6 +76,8 @@ ma_zif09	mapflag	nobranch
 1@ma_h	mapflag	nobranch
 1@ma_c	mapflag	nobranch
 1@ma_b	mapflag	nobranch
+c_tower2_	mapflag	nobranch
+c_tower3_	mapflag	nobranch
 
 // Episode 14.2 ================
 eclage	mapflag	nobranch

+ 4 - 1
npc/re/mapflag/nomemo.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Description: ========================================= 
@@ -11,6 +11,7 @@
 //= Also disables marriage warp skills.
 //===== Additional Comments: ================================= 
 //= 1.0 Renewal split. [Euphy]
+//= 1.1 Added Nightmare Clock Tower [Secret]
 //============================================================
 
 // Episode 13 ====================
@@ -99,6 +100,8 @@ ecl_tdun04	mapflag	nomemo
 ecl_hub01	mapflag	nomemo
 moc_prydn1	mapflag	nomemo
 moc_prydn2	mapflag	nomemo
+c_tower2_	mapflag	nomemo
+c_tower3_	mapflag	nomemo
 
 //Orc's Memory ===================
 1@orcs	mapflag	nomemo

+ 24 - 1
npc/re/mobs/dungeons/c_tower.txt

@@ -3,11 +3,12 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.0 Split from combined Alde and CT spawn file. [L0ne_W0lf]
+//= 1.1 Added nightmare clock tower. [Ridley8819]
 //============================================================
 
 //==================================================
@@ -47,3 +48,25 @@ c_tower4,0,0,0,0	monster	Mimic	1191,12,5000,0,0
 c_tower4,0,0,0,0	monster	Whisper	1179,5,5000,0,0
 c_tower4,0,0,0,0	monster	Clock Tower Manager	1270,3,5000,0,0
 c_tower4,0,0,0,0	monster	Elder	1377,2,5000,0,0
+
+//==================================================
+// c_tower2_ - Clock Tower Nightmare 2f
+//==================================================
+c_tower2_,0,0,0,0	monster	Mimic (Nightmare)	2479,3,5000,0,0
+c_tower2_,0,0,0,0	monster	Rideword (Nightmare)	2478,4,300000,0,0
+c_tower2_,0,0,0,0	monster	Rideword (Nightmare)	2478,1,60000,0,0
+c_tower2_,0,0,0,0	monster	Neo Punk	2919,40,5000,0,0
+c_tower2_,0,0,0,0	monster	Big Ben	2916,40,5000,0,0
+c_tower2_,0,0,0,0	monster	Time Keeper	2918,1,5000,0,0
+c_tower2_,0,0,0,0	monster	Arc Elder	2920,2,3600000,0,0
+
+//==================================================
+// c_tower3_ - Clock Tower Nightmare 3f
+//==================================================
+c_tower3_,0,0,0,0	monster	Mimic (Nightmare)	2479,8,5000,0,0
+c_tower3_,0,0,0,0	monster	Rideword (Nightmare)	2478,8,5000,0,0
+c_tower3_,0,0,0,0	monster	Big Bell	2917,110,5000,0,0
+c_tower3_,0,0,0,0	monster	Time Keeper	2918,3,5000,0,0
+c_tower3_,0,0,0,0	monster	Owl Viscount	2921,1,5000,1800000,0
+c_tower3_,0,0,0,0	monster	Owl Marquis	2923,1,5000,5000,0
+c_tower3_,0,0,0,0	boss_monster	Time Holder	3074,1,7200000,0,0

+ 108 - 0
npc/re/quests/quests_aldebaran.txt

@@ -0,0 +1,108 @@
+//===== rAthena Script =======================================
+//= NPCs related to Aldebaran Clock Tower (Nightmare)
+//===== By: ==================================================
+//= Ridley8819
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Additional Comments: =================================
+//= 1.0 Initial release [Ridley8819]
+//= 1.1 Dialogue cleanup [Aleos]
+//============================================================
+
+c_tower1,232,222,5	script	Belljamin Button#ct	968,{
+	mes "[Belljamin Button]";
+	mes "The monsters here are able to control time.";
+	if( BaseLevel < 150 ){
+		mes "Come back when you've reached ^0000FFLevel 150^000000.";
+		close;
+	}
+	mes "Time, memories, environments... all can become warped here.";
+	next;
+	mes "[Belljamin Button]";
+	mes "I'm begging you not to ask more about it. It might put your life in danger.";
+	next;
+	switch( select( "Don't ask:Go to 2nd floor of warped tower:Go to 3rd floor of warped tower" ) ){
+		case 1:
+			break;
+		case 2:
+		case 3:
+			if( @menu == 2 ){
+				.@map$ = "c_tower2_";
+				.@x = 268;
+				.@y = 26;
+			}else{
+				.@map$ = "c_tower3_";
+				.@x = 65;
+				.@y = 147;
+			}
+			mes "[Belljamin Button]";
+			mes "Be careful with your choice.";
+			next;
+			mes "[Belljamin Button]";
+			mes "I need ^0000FF10,000z^000000 to let you in. It's a pretty dangerous place to be.";
+			next;
+			switch( select( "Quit:Pay 10,000z:Why do you need money?" ) ){
+				case 1:
+					break;
+				case 2:
+					if( Zeny < 10000 ){
+						mes "[Belljamin Button]";
+						mes "Really? You don't have the money and asked me to take you there?";
+						close;
+					}
+					Zeny -= 10000;
+					mes "[Belljamin Button]";
+					mes "I'm not sure how you'll keep track of time in there but be as careful as you can.";
+					close2;
+					warp .@map$, .@x, .@y;
+					end;
+				case 3:
+					mes "[Belljamin Button]";
+					mes "I am here all day for the safety of adventurers. I always alert them about the danger. That's why I need some form of payment.";
+					emotion e_swt;
+					close;
+			}
+			break;
+	}
+	mes "[Belljamin Button]";
+	mes "Phew...You've made a good choice. This place is brutal so you should probably get back to a safe area.";
+	close;
+}
+
+c_tower2_,274,26,3	script	Belljamin Button#nct1	962,{
+	mes "[Belljamin Button]";
+	mes "Perhaps you've seen me before?";
+	next;
+	mes "[Belljamin Button]";
+	mes "You saw me in a different place, with a different look.";
+	next;
+	if( select( "Who are you?:Get me out of here!" ) == 1 ){
+		mes "[Belljamin Button]";
+		mes "Can you explain to me what you've seen, what you've done?";
+		next;
+		mes "[Belljamin Button]";
+		mes "Me too. You might also be a missing one. Unaware, with no purpose nor idea.";
+		next;
+		mes "[Belljamin Button]";
+		mes "It's time to go back. Please cherish your time some more.";
+		next;
+		if( select( "Stay a little bit more:Please take me back" ) == 1 ){
+			mes "[Belljamin Button]";
+			mes "You must really like this place. Well, do whatever you want.";
+			close;
+		}
+	}else{
+		mes "[Belljamin Button]";
+		mes "It's time to move on. Do you have a favorite drink?";
+		next;
+	}
+	mes "[Belljamin Button]";
+	mes "Think about the drink in a cup. Slowly stir the cup with a spoon and peer through as the drink changes color.";
+	close2;
+	warp "c_tower1", 235, 223;
+	end;
+}
+
+c_tower3_,59,148,5	duplicate(Belljamin Button#nct1)	Belljamin Button#nct2	574

+ 13 - 13
npc/re/quests/quests_mora.txt

@@ -1,21 +1,16 @@
 //===== rAthena Script =======================================
 //= Mora Quest NPCs
-//===== By: ==================================================
-//= Euphy
-//===== Current Version: =====================================
-//= 1.1
-//===== Compatible With: =====================================
-//= rAthena Project
 //===== Description: =========================================
 //= [Official Conversion]
 //= Quest NPCs related to Mora:
 //== Theore's Request, Chesire's New Day,
 //== Helping Lope and Euridi, Mora Daily Quests,
 //== Find the Research Tools, Knights of the Neighborhood
-//===== Additional Comments: =================================
+//===== Changelogs: =================================
 //= 0.1 NPCs are currently placeholders. [Euphy]
 //= 1.0 Implemented all official quests. [Euphy]
 //= 1.1 Added GM management function and NPCs. [Euphy]
+//= 1.2 Corrected Mora Daily Quest Job EXP formula [Secretdataz]
 //============================================================
 
 // Theore's Request :: ep14_1_bs
@@ -531,6 +526,11 @@ splendide,183,117,4	script	Tired-looking Fairy	438,{
 		close;
 	} else if (ep14_1_bs < 10) {
 		if (checkquest(11187) == -1) {
+			if(!isbegin_quest(11186)) { // TODO: Confirm official dialog (is there one?)
+				mes "[Tired-looking Fairy]";
+				mes "I'm tired, don't talk to me.";
+				close;
+			}
 			mes "[Tired-looking Fairy]";
 			mes "I'm tired, don't talk to me.";
 			next;
@@ -4527,9 +4527,9 @@ mora,115,98,8	script	Hotcha#pa0829	509,{
 			erasequest .@i;
 			specialeffect2 EF_STEAL;
 			if (BaseLevel > 99)
-				getexp 0, ((JobLevel < 50)?JobLevel * JobLevel * (110/100) * 50:0);
+				getexp 0, ((JobLevel < 50)?JobLevel * JobLevel * 110 / 100 * 50:0);
 			else
-				getexp 0, ((JobLevel < 70)?JobLevel * JobLevel * (110/100) * 10:0);
+				getexp 0, ((JobLevel < 70)?JobLevel * JobLevel * 110 / 100 * 10:0);
 			getitem 6380,3; //Mora_Coin
 			close;
 		}
@@ -4728,9 +4728,9 @@ L_CheckQuest:
 		erasequest getarg(0);
 		specialeffect2 EF_STEAL;
 		if (BaseLevel > 99)
-			getexp 0, ((JobLevel < 50)?JobLevel * JobLevel * (110/100) * 50:0);
+			getexp 0, ((JobLevel < 50)?JobLevel * JobLevel * 110 / 100 * 50:0);
 		else
-			getexp 0, ((JobLevel < 70)?JobLevel * JobLevel * (110/100) * 10:0);
+			getexp 0, ((JobLevel < 70)?JobLevel * JobLevel * 110 / 100 * 10:0);
 		getitem 6380,1; //Mora_Coin
 		close;
 	}
@@ -4924,9 +4924,9 @@ L_CheckQuest:
 		erasequest getarg(0);
 		specialeffect2 EF_STEAL;
 		if (BaseLevel > 99)
-			getexp 0, ((JobLevel < 50)?JobLevel * JobLevel * (110/100) * 50:0);
+			getexp 0, ((JobLevel < 50)?JobLevel * JobLevel * 110 / 100 * 50:0);
 		else
-			getexp 0, ((JobLevel < 70)?JobLevel * JobLevel * (110/100) * 10:0);
+			getexp 0, ((JobLevel < 70)?JobLevel * JobLevel * 110 / 100 * 10:0);
 		getitem 6380,1; //Mora_Coin
 		close;
 	}

+ 1 - 0
npc/re/scripts_athena.conf

@@ -136,6 +136,7 @@ npc: npc/re/quests/mrsmile.txt
 npc: npc/re/quests/ninja_quests.txt
 npc: npc/re/quests/pile_bunker.txt
 npc: npc/re/quests/quests_13_1.txt
+npc: npc/re/quests/quests_aldebaran.txt
 npc: npc/re/quests/quests_brasilis.txt
 npc: npc/re/quests/quests_dewata.txt
 npc: npc/re/quests/quests_dicastes.txt

+ 1 - 0
npc/scripts_mapflags.conf

@@ -25,3 +25,4 @@ npc: npc/mapflag/restricted.txt
 npc: npc/mapflag/battleground.txt
 npc: npc/mapflag/skill_damage.txt
 npc: npc/mapflag/town.txt
+npc: npc/mapflag/nocostume.txt

+ 71 - 13
sql-files/item_db_re.sql

@@ -2187,7 +2187,7 @@ REPLACE INTO `item_db_re` VALUES (2966,'RWC_2012_Ring','RWC 2012 Ring',4,20,NULL
 REPLACE INTO `item_db_re` VALUES (2967,'RWC_2012_Ring_','Chambered RWC 2012 Ring',4,20,NULL,200,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bAddClass,Class_All,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2968,'RWC_2012_Pendant','RWC 2012 Pendant',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bMatkRate,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2969,'RWC_2012_Pendant_','Chambered RWC 2012 Pendant',4,20,NULL,200,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bMatkRate,1;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2971,'Pocket_Watch','Pocket Watch',4,10,NULL,200,NULL,1,NULL,1,0x800200,63,2,136,NULL,'80',1,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2971,'Pocket_Watch','Pocket Watch',4,10,NULL,200,NULL,1,NULL,1,0x800200,63,2,136,NULL,'80',1,NULL,'bonus bHPrecovRate,15; bonus bSPrecovRate,15; bonus bMatkRate,7;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2976,'Red_Lantern','Red Lantern',4,10,NULL,200,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'100',0,NULL,'bonus bMaxSP,-300; skill "MG_SIGHT",1;',NULL,'sc_end SC_SIGHT;');
 REPLACE INTO `item_db_re` VALUES (2977,'Broken_Heart','Broken Heart',4,10,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'110',0,NULL,'bonus bMaxSP,200; skill "DC_SCREAM",3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2978,'Kindly_Heart','Kindly Heart',4,10,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'110',0,NULL,'bonus bMaxHP,500; bonus2 bHPRegenRate,300,10000; skill "DC_SCREAM",3;',NULL,NULL);
@@ -2821,13 +2821,13 @@ REPLACE INTO `item_db_re` VALUES (4608,'White_Knight_Card','White Knight Card',6
 REPLACE INTO `item_db_re` VALUES (4609,'Khalitzburg_Knight_Card','Khalitzburg Knight Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bDef,20; bonus2 bSubSize,Size_Medium,25; bonus2 bSubSize,Size_Large,25;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4610,'Sarah_Card','Sarah Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bAbsorbDmgMaxHP,100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4625,'Time_Holder_Card','Time Holder Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bMatkRate,20; bonus bUseSPrate,10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (4626,'Big_Ben_Card','Big Ben Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bMagicAddRace,RC_Formless,10; bonus2 bMagicAddRace,RC_Demon,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (4626,'Big_Ben_Card','Big Ben Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bMagicAddRace,RC_Formless,5; bonus2 bMagicAddRace,RC_Demon,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4627,'Big_Bell_Card','Big Bell Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Formless,10; bonus2 bAddRace,RC_Demon,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4628,'Neo_Punk_Card','Neo Punk Card',6,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Formless,20; bonus2 bSubRace,RC_Demon,20;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (4629,'Arc_Elder_Card','Arc Elder Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAtkEle,Ele_Earth,30;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (4630,'Nightmare_Timer_Keeper_Card','Nightmare Timer Keeper Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"NPC_WIDECURSE",2,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (4629,'Arc_Elder_Card','Arc Elder Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAtkEle,Ele_Earth,getrefine()*3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (4630,'Nightmare_Timer_Keeper_Card','Nightmare Timer Keeper Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"NPC_WIDECURSE",2,20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4631,'Owl_Viscount_Card','Owl Viscount Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bAspdRate,3;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (4632,'Owl_Marquees_Card','Owl Marquees Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus5 bAutoSpell,"SA_VIOLENTGALE",(getskilllv("SA_VIOLENTGALE")==5?5:1),1,BF_SHORT,0;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (4632,'Owl_Marquees_Card','Owl Marquees Card',6,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus5 bAutoSpell,"SA_VIOLENTGALE",(getskilllv("SA_VIOLENTGALE")==5?5:1),1,BF_WEAPON,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4633,'Enhanced_Archer_Skeleton_Card','Enhanced Archer Skeleton Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bLongAtkRate,(BaseLevel>=100?12:10);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4634,'Enhanced_Soldier_Skeleton_Card','Enhanced Soldier Skeleton Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if (BaseLevel<100) { bonus bCritical,9; } else { bonus bCritical,10; bonus bCritAtkRate,5; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4635,'Enhanced_Amdarais_Card','Enhanced Amdarais Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'.@r = getrefine(); bonus bDef,(.@r*10); bonus bFlee,(.@r*-2); if (BaseLevel>=100) bonus bMaxHP,500;',NULL,NULL);
@@ -5810,9 +5810,9 @@ REPLACE INTO `item_db_re` VALUES (7934,'Poison_Herb_Makulata','Poison Herb Makul
 REPLACE INTO `item_db_re` VALUES (7935,'Poison_Herb_Seratum','Poison Herb Seratum',3,1,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (7936,'Poison_Herb_Scopolia','Poison Herb Scoporia',3,1,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (7937,'Poison_Herb_Amoena','Poison Herb Amoena',3,1,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (7938,'Light_Granule','Light Granule',3,1000,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (7939,'Elder_Branch','Elder Branch',3,1000,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (7940,'Special_Alloy_Trap','Special Alloy Trap',3,200,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (7938,'Light_Granule','Light Granule',3,1500,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (7939,'Elder_Branch','Elder Branch',3,1500,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (7940,'Special_Alloy_Trap','Special Alloy Trap',3,300,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (7941,'Halloween_Ticket','Halloween Ticket',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (7942,'Letter_From_Chico','Chico Cesar Letter',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (7943,'Caskinya','Caskinya',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -8669,6 +8669,12 @@ REPLACE INTO `item_db_re` VALUES (15162,'Lounge_Suit','Lounge Suit',4,20,NULL,30
 REPLACE INTO `item_db_re` VALUES (15163,'Fictitious_Robe','Fictitious Robe',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,16,NULL,'100',1,NULL,'skill "SA_SPELLBREAKER",1; .@i = BaseLevel; bonus bMatkRate,(.@i>=140)?(14):((.@i>=120)?(9):(5));',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15164,'Consultative_Robe','Consultative Robe',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,16,NULL,'100',1,NULL,'bonus bVit,5; skill "PA_SACRIFICE",1; bonus2 bSubEle,Ele_Dark,getrefine()*3; bonus2 bSubEle,Ele_Fire,getrefine()*3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15174,'Surfer_Swimsuit','Surfer Swimsuit',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,63,2,16,NULL,'40',1,NULL,'bonus bMaxHPrate,(getrefine()/3)+5; bonus bMaxSPrate,(getrefine()/3)+5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15181,'Para_Team_Uniform100','Awakened Eden Group Uniform I',4,20,NULL,0,NULL,80,NULL,0,0xFFFFFFFF,63,2,16,NULL,'100',NULL,NULL,'bonus bAllStats,1; bonus bMaxHP,700; bonus bMaxSP,100; bonus bMdef,7;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15182,'Para_Team_Uniform115','Awakened Eden Group Uniform II',4,20,NULL,0,NULL,85,NULL,0,0xFFFFFFFF,63,2,16,NULL,'115',NULL,NULL,'bonus bAllStats,1; bonus bMaxHP,1100; bonus bMaxSP,120; bonus bMdef,11;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15183,'Para_Team_Uniform130','Awakened Eden Group Uniform III',4,20,NULL,0,NULL,90,NULL,0,0xFFFFFFFF,63,2,16,NULL,'130',NULL,NULL,'bonus bAllStats,2; bonus bMaxHP,1100; bonus bMaxSP,120; bonus bMdef,11;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15184,'Para_Team_Uniform145','Awakened Eden Group Uniform IV',4,20,NULL,0,NULL,100,NULL,0,0xFFFFFFFF,63,2,16,NULL,'145',NULL,NULL,'bonus bAllStats,2; bonus bMaxHP,1500; bonus bMaxSP,150; bonus bMdef,15;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15185,'Para_Team_Uniform160','Awakened Eden Group Uniform V',4,20,NULL,0,NULL,100,NULL,0,0xFFFFFFFF,63,2,16,NULL,'160',NULL,NULL,'bonus bAllStats,2; bonus bMaxHP,1500; bonus bMaxSP,150; bonus bMdef,15; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15186,'Kafra_Uniform','Kafra Uniform',4,20,NULL,500,NULL,40,NULL,1,0xFFFFFFFF,63,2,16,NULL,'1',1,NULL,'bonus2 bExpAddClass,Class_All,5; bonus2 bDropAddClass,Class_All,5; .@r = getrefine(); bonus bMaxHP,100*.@r; bonus bMaxSP,20*.@r; bonus bMaxHPrate,(3*(.@r>=7)+5*(.@r>=9)); bonus bMaxSPrate,(3*(.@r>=7)+5*(.@r>=9)); if(.@r>=12){ bonus bHPrecovRate,100; bonus bSPrecovRate,100; }',NULL,NULL);
 #===================================================================
 # More Maces
 #===================================================================
@@ -9437,7 +9443,7 @@ REPLACE INTO `item_db_re` VALUES (18119,'Tanos_Bow','Tanos Bow',5,10,NULL,1300,'
 REPLACE INTO `item_db_re` VALUES (18120,'Bow_Of_Evil_Slayer','Bow Of Evil Slayer',5,10,NULL,1350,NULL,115,NULL,1,0x00020008,63,2,34,NULL,'100',1,11,'bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus bAtkRate,(.@r>=9)?(5):((.@r>=12)?(7):(0));',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18121,'Bow_of_Vicious_Mind','Bow of Vicious Mind',5,20,NULL,1700,'170',NULL,5,1,0x000A0808,63,2,34,4,'160',1,11,'bonus bAtk,pow(min(getrefine(),15),2);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18122,'Giant_Bow','Giant Bow',5,20,NULL,3000,'195',NULL,5,1,0x00000800,63,2,34,4,'130',1,11,'bonus bLongAtkRate,40; bonus bAspdRate,-15; bonus bHit,50;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18123,'Bow_of_Storms','Bow of Storms',5,20,NULL,1500,'160',NULL,5,1,0x00000800,63,2,34,4,'130',1,11,'bonus bLongAtkRate,30; bonus2 bSkillCooldown,"RA_ARROWSTORM",-20; bonus2 bSkillUseSP,"RA_ARROWSTORM",15;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18123,'Bow_of_Storms','Bow of Storms',5,20,NULL,1500,'160',NULL,5,1,0x00080800,63,2,34,4,'130',1,11,'bonus bLongAtkRate,30; bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",15;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18124,'Half_BF_Bow1','Half BF Bow1',5,20,NULL,0,'100',NULL,5,0,0x000A0848,63,2,34,3,'80',1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18125,'Arcus_Daemonicus','Arcus Daemonicus',5,20,NULL,1000,'130',NULL,5,2,0x00020008,63,2,34,4,'80',1,11,'/*Fix me: bonus bAtkRate,50; when equipped with shadow arrows*/ if(getrefine()>9){ bonus bAspd,1; bonus bUseSPrate,-20; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18126,'Blue_Bow','Blue Bow',5,10,NULL,1200,'150',NULL,5,1,0x00000800,56,2,2,3,'100',1,11,'bonus bAgi,5; bonus bDex,5;',NULL,NULL);
@@ -9689,7 +9695,7 @@ REPLACE INTO `item_db_re` VALUES (18747,'Eyes_Of_Ifrit','Eyes Of Ifrit',4,20,NUL
 REPLACE INTO `item_db_re` VALUES (18748,'Gold_Ingot_Poring_Hat','Gold Ingot Poring Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,887,'bonus bDex,2; bonus bLuk,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18749,'Majoruros_Horn','Majoruros Horn',4,20,NULL,500,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,888,'bonus bStr,2; bonus bMaxHP,100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18750,'Poker_Card_In_Mouth','Poker Card In Mouth',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'10',0,889,'bonus2 bAddRace,RC_DemiHuman,2;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18752,'Rideword_Hat_','Rideword Hat',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'99',1,890,'.@r = getrefine(); bonus2 bHPLossRate,500*.@r,5000; bonus2 bHPDrainRate,40,4+(.@r/2); bonus2 bSPDrainRate,10,1+(.@r/3);',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18752,'Cursed_Book','Cursed Book',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'99',1,890,'.@r = getrefine(); bonus2 bHPLossRate,.@r,5000; bonus2 bHPDrainRate,40,4+(.@r/2); bonus2 bSPDrainRate,10,1+(.@r/3);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18753,'Tw_Rice_Ball','Tw Rice Ball',4,20,NULL,100,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,892,'bonus bLuk,1; bonus2 bAddMonsterDropItem,564,100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18754,'Blood_Sucker','Blood Sucker',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'40',0,893,'bonus bUnbreakableHelm,1; bonus2 bHPDrainRate,30,5; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18755,'Feather_Beret_','Feather Beret',4,0,NULL,600,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,1,'1',1,224,'bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
@@ -9778,7 +9784,7 @@ REPLACE INTO `item_db_re` VALUES (18870,'Very_Sweet_Candy_Bar','Very Sweet Candy
 REPLACE INTO `item_db_re` VALUES (18871,'Very_Sweet_Candy','Very Sweet Candy',4,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',1,446,'bonus bAllStats,1; bonus bBaseAtk,5; bonus bMatk,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18872,'Snake_Hat','Snake Hat',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,986,'bonus bStr,3; bonus bInt,3; bonus bMdef,5; bonus bUnbreakableHelm,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18873,'Sweet_Valentine_Out','Sweet Valentine Out',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,865,'bonus bMaxHPrate,7; bonus bMaxSPrate,7;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18874,'Cyclops_Glasses','Cyclops Glasses',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',1,23,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18874,'Cyclops_Glasses','Cyclops Glasses',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',NULL,23,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18878,'Palace_Guard_Cap','Palace Guard Cap',4,10,NULL,1000,NULL,15,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,991,'.@r = getrefine(); bonus2 bAddEle,Ele_Neutral,4+.@r/6; bonus bLongAtkRate,4+.@r; bonus bUnbreakableHelm,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18879,'Angry_Scorpion_Hat','Angry Scorpion Hat',4,10,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,995,'bonus bMdef,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18880,'Advanced_Jao_King_Hat','Advanced Jao King Hat',4,10,NULL,1500,NULL,4,NULL,1,0xFFFFFFFF,63,2,256,NULL,'175',1,996,'bonus bAllStats,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5;',NULL,NULL);
@@ -9841,7 +9847,7 @@ REPLACE INTO `item_db_re` VALUES (19024,'Protect_Feathers','Protect Feathers',4,
 REPLACE INTO `item_db_re` VALUES (19026,'Aegir_Helm','Aegir Helm',4,10,NULL,800,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',1,870,'bonus bVit,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19030,'Pretty_Rabbit_Hood','Pretty Rabbit Hood',4,10,NULL,100,NULL,20,NULL,1,0xFFFFFFFF,63,2,769,NULL,'1',1,1085,'bonus bMaxHP,(15*BaseLevel);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19031,'Fallen_Angel_Blessing','Fallen Angel Blessing',4,0,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,NULL,1,1250,'bonus2 bAddRace,RC_Angel,5; bonus2 bSubRace,RC_Angel,5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19033,'Rift_Ancient_Decoration','Rift Ancient Decoration',4,20,NULL,20,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,376,'.@r = getrefine(); bonus bMaxHP,1000+(.@r >= 9 ? 1000 : .@r >=7 ? 400 : 0);',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19033,'Rift_Ancient_Decoration','Rift Ancient Decoration',4,20,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,376,'.@r = getrefine(); bonus bMaxHP,1000+(.@r >= 9 ? 1000 : .@r >=7 ? 400 : 0);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19038,'12_Anniversary_Crown_Of_Saint','12 Anniversary Crown of Saint',4,10,NULL,120,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,1117,'bonus bAllStats,2; bonus bMdef,12;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19039,'12_Anniversary_Elf_Ears','12 Anniversary Elf Ears',4,10,NULL,120,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',1,875,'bonus2 bSubRace,RC_All,4; bonus2 bSubRace,RC_Player,-4;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19047,'Angeling_KnitCap','Angeling KnitCap',4,0,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'20',1,953,'bonus2 bSPGainRace,RC_Angel,5; bonus bHPGainValue,100; .@r = getrefine(); if (.@r >= 5) { bonus2 bSubRace,RC_Angel,5+((.@r >= 7) ? 5 : 0); }',NULL,NULL);
@@ -9884,7 +9890,10 @@ REPLACE INTO `item_db_re` VALUES (19157,'Drooping_Rebellion_','Drooping Rebellio
 REPLACE INTO `item_db_re` VALUES (19158,'C_GeminiS58_Eyes_Blue','Costume GeminiS58 Eyes Blue',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'0',0,1456,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19159,'Barrel_Helm','Barrel Helm',4,20,NULL,420,NULL,59,NULL,1,0xFFFFFFFF,63,2,769,NULL,'60',1,1498,'bonus bVit,5; bonus bHPrecovRate,-10; .@r = getrefine(); if (.@r >= 7) { bonus bDef,100; skill "CR_AUTOGUARD",1; } if (.@r >= 8) { bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(BaseJob==Job_SuperNovice) { skill "CR_AUTOGUARD",5; } }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19162,'Scuba_Mask_','Scuba Mask',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,512,NULL,'40',1,400,'bonus bBaseAtk,5; bonus bMatk,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19164,'Para_Team_Hat100','Awakened Eden Group Hat I',4,20,NULL,0,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,1529,'autobonus "{ bonus bBaseAtk,15; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,15; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; .@r = getrefine(); if(.@r >= 7){ bonus bAtk,10; bonus bMatk,10; if(.@r >= 9){ bonus bAllStats,1; if(.@r >= 12){ bonus2 bRegenPercentSP,1,10000; } } }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19165,'Para_Team_Hat160','Awakened Eden Group Hat II',4,20,NULL,0,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'160',1,1530,'autobonus "{ bonus bBaseAtk,30; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; .@r = getrefine(); if(.@r >= 7){ bonus bAtk,15; bonus bMatk,15; if(.@r >= 9){ bonus bAllStats,2; if(.@r >= 12){ bonus2 bRegenPercentHP,2,10000; bonus2 bRegenPercentSP,1,10000; } } }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19166,'RO_Celebration_Hat','RO Celebration Hat',4,20,NULL,140,NULL,14,NULL,1,0xFFFFFFFF,63,2,256,NULL,'14',1,1541,'bonus bMaxSP,140; bonus2 bSPRegenRate,6,4000;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19168,'Band_Of_Kafra_','Kafra Staff Headband',4,20,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,106,'bonus2 bSubClass,Class_All,5; .@r = getrefine()*10; bonus2 bAddMonsterDropItem,23177,10+.@r; bonus2 bAddMonsterDropItem,7059,10+.@r; bonus2 bAddMonsterDropItem,7060,10+.@r;',NULL,NULL);
 #===================================================================
 # Costume System
 #===================================================================
@@ -10769,6 +10778,9 @@ REPLACE INTO `item_db_re` VALUES (20790,'Elegant_Doram_Manteau','Elegant Doram M
 REPLACE INTO `item_db_re` VALUES (20797,'Etran_Shirt','Etran Shirt',4,0,NULL,150,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,4,1,'1',1,NULL,'bonus bMdef,10; bonus bMaxHPrate,2; .@r = getrefine(); if (.@r >= 6) bonus bMaxHPrate,4; if (.@r >= 7) bonus bMaxHPrate,6; if (.@r >= 8) bonus bMaxHPrate,8; if (.@r >= 9) bonus bNoKnockback,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (20798,'C_Grim_Reaper_Protection','Costume Grim Reaper Protection',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1450,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (20819,'Oxygen_Bottle','Oxygen Bottle',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,63,2,4,NULL,'40',0,0,'bonus bFlee,12+getrefine(); bonus bHit,getrefine();',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (20823,'Para_Team_Manteau100','Awakened Eden Group Manteau I',4,0,NULL,0,NULL,20,NULL,0,0xFFFFFFFF,63,2,4,NULL,'100',1,0,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus bFlee2,2; if(.@r >= 9){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; } }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (20824,'Para_Team_Manteau130','Awakened Eden Group Manteau II',4,0,NULL,0,NULL,25,NULL,0,0xFFFFFFFF,63,2,4,NULL,'130',1,0,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; bonus bMaxHP,500; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; if(.@r >= 9){ bonus2 bSubEle,Ele_Neutral,5; } }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (20825,'Para_Team_Manteau160','Awakened Eden Group Manteau III',4,0,NULL,0,NULL,30,NULL,0,0xFFFFFFFF,63,2,4,NULL,'160',1,0,'bonus2 bSubEle,Ele_All,10; bonus bFlee,12; bonus bMaxHP,1000; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus2 bSubEle,Ele_Neutral,5; if(.@r >= 9){ skill "BS_GREED",1; } }',NULL,NULL);
 #===================================================================
 # More 2-Handed Swords
 #===================================================================
@@ -10832,6 +10844,11 @@ REPLACE INTO `item_db_re` VALUES (22083,'Private_Doram_Shoes','Private Doram Sho
 REPLACE INTO `item_db_re` VALUES (22084,'Luxury_Doram_Shoes','Luxury Doram Shoes',4,20,NULL,600,NULL,30,NULL,1,0x80000000,7,2,64,NULL,'140',1,NULL,'bonus bMaxHP,300; bonus bMaxSP,100; .@r = getrefine()/3; bonus bHPrecovRate,20*.@r; bonus bSPrecovRate,20*.@r;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22085,'Elegant_Doram_Shoes','Elegant Doram Shoes',4,20,NULL,700,NULL,35,NULL,1,0x80000000,7,2,64,NULL,'175',1,NULL,'bonus bMaxHPrate,10; bonus bMaxSPrate,5; .@r = getrefine()/2; bonus bMaxHP,100*.@r; bonus bMaxSP,20*.@r; if(.@r >= 4) bonus2 bSkillUseSP,"SU_LOPE",5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22103,'Excelion_Leg','Excelion Leg',4,0,NULL,500,NULL,13,NULL,0,0xFFFFFFFF,63,2,64,1,'100',1,NULL,'.@r = getrefine(); bonus bMaxHP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; bonus bMaxSP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22122,'Para_Team_Boots100','Awakened Eden Group Boots I',4,0,NULL,0,NULL,22,NULL,0,0xFFFFFFFF,63,2,64,NULL,'100',1,NULL,'bonus bAllStats,1; bonus bHPrecovRate,30; bonus bSPrecovRate,14;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22123,'Para_Team_Boots115','Awakened Eden Group Boots II',4,0,NULL,0,NULL,25,NULL,0,0xFFFFFFFF,63,2,64,NULL,'115',1,NULL,'bonus bAllStats,1; bonus bHPrecovRate,36; bonus bSPrecovRate,18;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22124,'Para_Team_Boots130','Awakened Eden Group Boots III',4,0,NULL,0,NULL,27,NULL,0,0xFFFFFFFF,63,2,64,NULL,'130',1,NULL,'bonus bAllStats,2; bonus bHPrecovRate,36; bonus bSPrecovRate,18;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22125,'Para_Team_Boots145','Awakened Eden Group Boots IV',4,0,NULL,0,NULL,30,NULL,0,0xFFFFFFFF,63,2,64,NULL,'145',1,NULL,'bonus bAllStats,2; bonus bHPrecovRate,40; bonus bSPrecovRate,20;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22126,'Para_Team_Boots160','Awakened Eden Group Boots V',4,0,NULL,0,NULL,30,NULL,0,0xFFFFFFFF,63,2,64,NULL,'160',1,NULL,'bonus bAllStats,2; bonus bHPrecovRate,40; bonus bSPrecovRate,20; bonus bUseSPrate,-5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22508,'Para_Team_Mark_','Eden Group Mark',11,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'unitskilluseid getcharid(3),"AL_TELEPORT",3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22507,'Worn-Out-Scroll','Worn-Out-Scroll',3,10,NULL,10,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22510,'King_Wolf_Scroll','King Wolf Scroll',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*TODO, confirm the rates*/ getitem callfunc("F_Rand",6635,19598,5658,6238,6239),1;',NULL,NULL);
@@ -10998,7 +11015,7 @@ REPLACE INTO `item_db_re` VALUES (22812,'Sealed_Dracula_Scroll','Sealed Dracula
 REPLACE INTO `item_db_re` VALUES (22813,'Bearer\'s_Shadow_Box','Bearer\'s Shadow Box',2,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",24180,24181,24182,24183,24184,24185),1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22814,'Cat_Hand_Ticket','Cat Hand Ticket',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22823,'Sealed_Sniper_Scroll','Sealed Sniper Scroll',2,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*getitem callfunc("F_Rand",4491,6228,6232,24196, Hasty Shadow Armor, 19882, 17474, 6635),1;*/',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22826,'Costume_Enchantment_Stone_Box_4','Costume Enchantment Stone Box 4',2,10,NULL,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22826,'Costume_Enchantment_Stone_Box_4','Costume Enchantment Stone Box 4',2,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22827,'Shadow_Cube','Shadow Cube',2,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*No Info*/',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22828,'Sealed_Album_Scroll','Sealed Album Scroll',2,10,NULL,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",22829,6232,6228,24208,24209,17474/*,Enchanted Letter*/),1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22829,'Sealed_Card_Album','Sealed Card Album',2,10,NULL,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",4488,4497,4486,4480,4485,4539,4487,4494,4538,4489,4490,4482,4503,4483,4491),1;',NULL,NULL);
@@ -11047,6 +11064,12 @@ REPLACE INTO `item_db_re` VALUES (22899,'Parchment_City','Parchment City',2,20,N
 REPLACE INTO `item_db_re` VALUES (22901,'Question_Old_Blue_Box','Question Old Blue Box',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*No info yet*/',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22902,'Sealed_Card_Album_Scroll_II','Sealed Card Album Scroll II',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",6238,6239,17474,22829,24243,24244,24245),1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22985,'Basil','Basil',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'bonus_script "{ bonus2 bSPRegenRate,5,10000; }",180,1,0,SI_DORAM_BUF_02;',NULL,NULL);
+#
+REPLACE INTO `item_db_re` VALUES (23177,'Kafra_Card_','Kafra Card',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashStore";',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (23191,'Varetyr_Spear_Scroll_1_5','Level 5 Varetyr Spear',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "SO_VARETYR_SPEAR",5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (23192,'Diamond_Dust_Scroll_1_5','Level 5 Diamond Dust',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "SO_DIAMONDDUST",5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (23193,'Crimson_Rock_Scroll_1_5','Level 5 Crimson Rock',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "WL_CRIMSONROCK",5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (23194,'Sienna_Execrate_Scroll_1_5','Level 5 Sienna Execrate',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "WL_SIENNAEXECRATE",5,true;',NULL,NULL);
 #===================================================================
 # Shadow Equipments
 #===================================================================
@@ -11305,6 +11328,9 @@ REPLACE INTO `item_db_re` VALUES (25147,'Well_Eatenl_Rabbit_Doll','Well Eatenl R
 REPLACE INTO `item_db_re` VALUES (25148,'Cute_Starved_Demon_Doll','Cute Starved Demon Doll',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (25149,'Doll_With_Warm_Scarf','Doll With Warm Scarf',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (25150,'Hugging_Alice_Pilow','Hugging Alice Pilow',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (25223,'Para_Team_Coin','Eden Group Coin',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (25238,'New_Normal_Lubricant','New Normal Lubricant',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (25239,'New_Advanced_Lubricant','New Advanced Lubricant',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #
 REPLACE INTO `item_db_re` VALUES (26100,'Paradise_Foxtail_Staff_II','Eden Group Foxtail Staff II',5,20,NULL,0,'135:165',NULL,1,0,0x80000000,7,2,2,2,'40',0,10,'bonus bDex,4; bonus bInt,4; bonus bLongAtkRate,6;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (26101,'Paradise_Foxtail_Staff_III','Eden Group Foxtail Staff III',5,20,NULL,0,'150:195',NULL,1,0,0x80000000,7,2,2,3,'60',0,10,'bonus bDex,5; bonus bInt,5; bonus bLongAtkRate,7;',NULL,NULL);
@@ -11379,6 +11405,37 @@ REPLACE INTO `item_db_re` VALUES (28421,'Greater_Rabbit_Talisman','Greater Rabbi
 REPLACE INTO `item_db_re` VALUES (28422,'Shiny_Branch_Talisman','Shiny Branch Talisman',4,0,NULL,100,NULL,1,NULL,1,0x80000000,63,2,136,NULL,'100',NULL,NULL,'bonus2 bVariableCastrate,"SU_SV_STEMSPEAR",-50; bonus2 bSkillAtk,"SU_SV_STEMSPEAR",(readparam(bInt)/2)+(20 * getskilllv("SU_SV_STEMSPEAR")); /* Need to confirm damage formula */',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28423,'Fresh_Tuna_Talisman','Fresh Tuna Talisman',4,0,NULL,100,NULL,1,NULL,1,0x80000000,63,2,136,NULL,'100',NULL,NULL,'bonus2 bSkillCooldown,"SU_TUNAPARTY",-5000; bonus3 bAutoSpellWhenHit,"SU_TUNAPARTY",max(1,getskilllv("SU_TUNAPARTY")),10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28424,'Chubby_Worm_Talisman','Chubby Worm Talisman',4,0,NULL,100,NULL,1,NULL,1,0x80000000,63,2,136,NULL,'100',NULL,NULL,'bonus2 bVariableCastrate,"SU_PICKYPECK",-50; bonus2 bSkillAtk,"SU_PICKYPECK",(readparam(bDex)/2)+(20 * getskilllv("SU_PICKYPECK")); /* Need to confirm damage formula */',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28443,'Para_Team_Str_Ring100','Awakened Eden Group Ring of Strength I',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'100',NULL,NULL,'bonus bAtkRate,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28444,'Para_Team_Str_Necklace100','Awakened Eden Group Necklace of Strength I',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'100',NULL,NULL,'bonus bStr,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28445,'Para_Team_Str_Ring115','Awakened Eden Group Ring of Strength II',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'115',NULL,NULL,'bonus bAtkRate,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28446,'Para_Team_Str_Necklace115','Awakened Eden Group Necklace of Strength II',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'115',NULL,NULL,'bonus bStr,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28447,'Para_Team_Str_Ring130','Awakened Eden Group Ring of Strength III',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'130',NULL,NULL,'bonus bAtkRate,4;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28448,'Para_Team_Str_Necklace130','Awakened Eden Group Necklace of Strength III',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'130',NULL,NULL,'bonus bStr,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28449,'Para_Team_Str_Ring145','Awakened Eden Group Ring of Strength IV',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'145',NULL,NULL,'bonus bAtkRate,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28450,'Para_Team_Str_Necklace145','Awakened Eden Group Necklace of Strength IV',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'145',NULL,NULL,'bonus bStr,4;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28451,'Para_Team_Str_Ring160','Awakened Eden Group Ring of Strength V',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,'bonus bAtkRate,5; skill "AL_HEAL",1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28452,'Para_Team_Str_Necklace160','Awakened Eden Group Necklace of Strength V',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,'bonus bStr,4; skill "AL_TELEPORT",1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28453,'Para_Team_Magic_Ring100','Awakened Eden Group Ring of Magic I',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'100',NULL,NULL,'bonus bMatkRate,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28454,'Para_Team_Magic_Necklace100','Awakened Eden Group Necklace of Magic I',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'100',NULL,NULL,'bonus bInt,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28455,'Para_Team_Magic_Ring115','Awakened Eden Group Ring of Magic II',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'115',NULL,NULL,'bonus bMatkRate,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28456,'Para_Team_Magic_Necklace115','Awakened Eden Group Necklace of Magic II',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'115',NULL,NULL,'bonus bInt,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28457,'Para_Team_Magic_Ring130','Awakened Eden Group Ring of Magic III',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'130',NULL,NULL,'bonus bMatkRate,4;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28458,'Para_Team_Magic_Necklace130','Awakened Eden Group Necklace of Magic III',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'130',NULL,NULL,'bonus bInt,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28459,'Para_Team_Magic_Ring145','Awakened Eden Group Ring of Magic IV',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'145',NULL,NULL,'bonus bMatkRate,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28460,'Para_Team_Magic_Necklace145','Awakened Eden Group Necklace of Magic IV',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'145',NULL,NULL,'bonus bInt,4;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28461,'Para_Team_Magic_Ring160','Awakened Eden Group Ring of Magic V',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,'bonus bMatkRate,5; skill "AL_HEAL",1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28462,'Para_Team_Magic_Necklace160','Awakened Eden Group Necklace of Magic V',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,'bonus bInt,4; skill "AL_TELEPORT",1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28463,'Para_Team_Agi_Ring100','Awakened Eden Group Ring of Agility I',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'100',NULL,NULL,'bonus bLongAtkRate,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28464,'Para_Team_Agi_Necklace100','Awakened Eden Group Necklace of Agility I',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'100',NULL,NULL,'bonus bDex,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28465,'Para_Team_Agi_Ring115','Awakened Eden Group Ring of Agility II',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'115',NULL,NULL,'bonus bLongAtkRate,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28466,'Para_Team_Agi_Necklace115','Awakened Eden Group Necklace of Agility II',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'115',NULL,NULL,'bonus bDex,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28467,'Para_Team_Agi_Ring130','Awakened Eden Group Ring of Agility III',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'130',NULL,NULL,'bonus bLongAtkRate,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28468,'Para_Team_Agi_Necklace130','Awakened Eden Group Necklace of Agility III',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'130',NULL,NULL,'bonus bDex,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28469,'Para_Team_Agi_Ring145','Awakened Eden Group Ring of Agility IV',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'145',NULL,NULL,'bonus bLongAtkRate,4;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28470,'Para_Team_Agi_Necklace145','Awakened Eden Group Necklace of Agility IV',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'145',NULL,NULL,'bonus bDex,4;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28471,'Para_Team_Agi_Ring160','Awakened Eden Group Ring of Agility V',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,'bonus bLongAtkRate,4; skill "AL_HEAL",1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28472,'Para_Team_Agi_Necklace160','Awakened Eden Group Necklace of Agility V',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,'bonus bDex,4; skill "AL_TELEPORT",1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28483,'Royal_Guardian_Ring','Royal Guardian Ring',4,0,NULL,10,NULL,1,NULL,1,0xFFFFFFFF,63,2,136,NULL,'99',NULL,NULL,'.@b = min(BaseLevel/25,7); bonus bMaxHPrate,.@b; bonus bMaxSPrate,.@b;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28600,'Blue_Book','Blue Book',5,10,NULL,500,'160',NULL,1,1,0x00000100,56,2,2,3,'100',1,15,'bonus bAgi,5; bonus bDex,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28601,'Ru_Gold_Book','Ru Gold Book',5,0,NULL,500,'160',NULL,1,2,0x00000008,63,2,2,3,'120',1,15,'bonus bVit,8; bonus bInt,8;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28602,'Demon_Hunting_Bible','Demon Hunting Bible',5,0,NULL,500,'30:170',NULL,1,2,0x00000008,63,2,2,3,'110',1,15,'bonus bInt,2; bonus bDex,2; .@b = readparam(bInt); bonus2 bSkillAtk,"PR_MAGNUS",30+min(.@b,120);',NULL,NULL);
@@ -11535,6 +11592,7 @@ REPLACE INTO `item_db_re` VALUES (31087,'C_Dwarf_Beard','Costume Dwarf Beard',4,
 REPLACE INTO `item_db_re` VALUES (31088,'C_Mad_Hatter','Costume Mad Hatter',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1421,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (31089,'C_Exploding_Crimson_Flame','Costume Exploding Crimson Flame',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1500,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (31090,'C_Angelring_Hat','Costume Angelring Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,348,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (31092,'C_Rabbit_Ribbon_Hat','Costume Bunny Ribbon Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,845,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (31093,'C_Under_Lamp','Costume Under Lamp',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1531,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (31105,'C_RO_Celebration_Hat','Costume RO Celebration Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1541,NULL,NULL,NULL);
 

+ 30 - 12
sql-files/mob_db_re.sql

@@ -1698,8 +1698,8 @@ REPLACE INTO `mob_db_re` VALUES (2475,'MG_CORRUPTION_ROOT','Root of Corruption',
 REPLACE INTO `mob_db_re` VALUES (2476,'MG_AMDARAIS','Amdarias','Amdarias',143,3283990,1,74288,77950,2,8860,10022,32,66,140,159,30,109,300,90,10,12,2,2,63,0x6283695,200,1152,1152,576,37144,617,5500,617,5000,616,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4601,1);
 
 #2477,NG_WANDER_MAN
-#2478,NG_RIDEWORD
-#2479,NG_MIMIC
+REPLACE INTO `mob_db_re` VALUES (2478,'NG_RIDEWORD','Nightmare Rideword','Nightmare Rideword',146,103220,1,10500,15840,1,2320,166,140,59,131,195,58,66,263,5,12,12,0,0,60,0x3695,150,864,500,192,0,0,0,0,0,0,0,1097,4850,1568,5,1569,5,1570,5,1571,5,7015,150,18752,1,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2479,'NG_MIMIC','Nightmare Mimic','Nightmare Mimic',143,24958,1,2768,2354,1,1787,159,139,46,145,162,10,49,213,57,10,12,1,0,60,0x3095,100,972,500,288,0,0,0,0,0,0,0,617,10,603,50,7940,1000,7938,1000,2626,10,757,270,0,0,0,0,0,0,0,0);
 #2480,NG_EVIL_DRUID
 #2481,NG_WRAITH_DEAD
 #2482,G_MG_KHALITZBURG
@@ -2136,14 +2136,14 @@ REPLACE INTO `mob_db_re` VALUES (2912,'C2_ACIDUS_','Solid Acidus','Solid Acidus'
 REPLACE INTO `mob_db_re` VALUES (2913,'C3_ACIDUS_','Acidus Ringleader','Acidus Ringleader',130,203590,203590,14690,30480,2,1660,2372,98,47,106,110,61,53,133,53,10,12,2,9,44,0x3095,180,168,768,360,0,0,0,0,0,0,0,505,150,1035,4000,2890,10,1036,3589,7446,800,996,20,7446,100,0,0,0,0,4379,1);
 #2914,E_GEFFEN_MAGE_3_1
 #2915,HIDDEN_MOB6
-#2916,BIG_BEN
-#2917,BIG_BELL
-#2918,TIME_KEEPER
-#2919,NEO_PUNK
-#2920,ARC_ELDER
-#2921,OWL_VISCOUNT
-#2922,G_OWL_VISCOUNT
-#2923,OWL_MARQUEES
+REPLACE INTO `mob_db_re` VALUES (2916,'BIG_BEN','Big Ben','Big Ben',150,220240,1,7447,7005,1,3101,212,125,43,102,58,69,75,131,49,10,12,1,0,42,0x91,200,1092,792,480,0,0,0,0,0,0,0,1095,3000,1019,500,509,950,568,160,757,100,22515,15,22515,15,0,0,0,0,4626,1);
+REPLACE INTO `mob_db_re` VALUES (2917,'BIG_BELL','Big Bell','Big Bell',163,166860,1,7513,8457,1,4785,192,138,53,102,104,72,57,98,57,10,12,1,0,60,0x3695,300,1020,500,768,0,0,0,0,0,0,0,1095,3000,2607,1,7005,750,984,100,912,750,22515,10,0,0,0,0,0,0,4627,1);
+REPLACE INTO `mob_db_re` VALUES (2918,'TIME_KEEPER','Time Keeper','Time Keeper',155,256000,1,7898,8869,3,2989,280,128,60,112,60,72,57,120,77,10,12,2,0,80,0x91,200,1072,672,384,0,0,0,0,0,0,0,1095,3000,7054,3000,999,250,520,425,2109,1,22515,1000,22515,1000,0,0,0,0,4630,1);
+REPLACE INTO `mob_db_re` VALUES (2919,'NEO_PUNK','Neo Punk','Neo Punk',155,154760,1,5874,6618,1,2051,216,99,55,98,39,30,35,95,45,10,12,0,3,24,0x3095,300,1500,500,1000,0,0,0,0,0,0,0,7001,3000,715,500,1061,500,1057,1500,2502,8,5110,50,0,0,0,0,0,0,4628,1);
+REPLACE INTO `mob_db_re` VALUES (2920,'ARC_ELDER','Arc Elder','Arc Elder',168,293640,1,9086,17532,3,2513,802,105,41,100,63,35,99,106,61,10,12,2,7,80,0x3885,165,1552,1152,336,0,0,0,0,0,0,0,7099,3000,7117,1000,1564,5,1473,1,616,2,22515,1500,7939,500,0,0,0,0,4629,1);
+REPLACE INTO `mob_db_re` VALUES (2921,'OWL_VISCOUNT','Owl Viscount','Owl Viscount',168,295240,1,9086,11089,1,4368,900,113,45,87,51,45,88,106,50,10,12,2,6,60,0x6203695,195,1345,824,440,0,0,0,0,0,0,0,7071,2500,7063,1000,18874,1,747,1,2971,2,16024,1,15089,1,0,0,0,0,4631,1);
+REPLACE INTO `mob_db_re` VALUES (2922,'G_OWL_VISCOUNT','Owl Viscount','Owl Viscount',168,295240,1,0,0,1,4368,900,113,45,87,51,45,88,106,50,10,12,2,6,60,0x6203695,195,1345,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2923,'OWL_MARQUEES','Owl Marquis','Owl Marquis',170,630000,1,21747,13806,2,1887,603,127,25,112,65,55,102,108,72,10,12,2,6,60,0x6203695,175,1345,824,440,0,0,0,0,0,0,0,7071,2000,7063,1500,1716,1,1472,1,15089,3,1668,1,18874,1,0,0,0,0,4632,1);
 REPLACE INTO `mob_db_re` VALUES (2924,'T_ELDER_WILOW','Elder Willow','Elder Willow',34,599,1,116,131,1,80,14,45,0,10,14,25,0,29,0,10,12,1,3,43,0x3095,200,1372,672,432,0,0,0,0,0,0,0,6067,500,7406,500,7407,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2925,'T_WILOW','Willow','Willow',8,91,1,31,23,1,13,5,38,2,13,3,8,5,12,5,10,12,1,3,22,0x81,200,1672,672,432,0,0,0,0,0,0,0,6065,500,6066,500,6067,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2926,'T_HARPY','Harpy','Harpy',83,4423,1,660,760,1,340,41,69,44,71,39,50,31,125,12,10,12,1,6,64,0x3885,155,972,672,470,0,0,0,0,0,0,0,7406,500,7407,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
@@ -2294,7 +2294,7 @@ REPLACE INTO `mob_db_re` VALUES (2936,'E_GHOSTRING','Ghostring','Ghostring',1,10
 #3071,PERE3
 #3072,PERE4
 #3073,GRAND_PERE
-#3074,TIMEHOLDER
+REPLACE INTO `mob_db_re` VALUES (3074,'TIMEHOLDER','Time Holder','Time Holder',170,25000000,1,2291250,1938750,1,5250,2100,288,265,224,152,251,257,402,77,10,12,2,6,80,0x6283695,100,398,384,288,2291250,0,0,0,0,0,0,1095,3000,2121,10,7054,3000,22515,3000,18874,20,16024,5,15089,3,0,0,0,0,4625,1);
 #3075,WA_TREASURE
 #3076,WA_MONSTER_1
 #3077,WA_MONSTER_2
@@ -2878,6 +2878,24 @@ REPLACE INTO `mob_db_re` VALUES (3246,'V_B_TRENTINI','Wanderer Trentini','Wander
 #
 #3656,B_THE_PAPER
 #3657,B_THE_PAPER2
-#
+#3658,MD_LICH_LORD_100
+#3659,MD_LICH_LORD_160
+#3660,MD_NIGHTMARE_100
+#3661,MD_NIGHTMARE_160
+#3662,MD_JAKK_100
+#3663,MD_JAKK_160
+#3664,MD_GHOUL_100
+#3665,MD_GHOUL_160
+#3666,MD_DRAINLIAR_100
+#3667,MD_DRAINLIAR_160
 #3668,B_KIEL_
+#3721,QE_PORING
+#3722,QE_POPORING
+#3723,QE_DROPS
+#3724,QE_LUNATIC
+#3725,QE_WILOW
+#3726,QE_PICKY
+#3727,QE_PICKY_
+#3728,QE_ZOMBIE
+#3729,QE_POISON_SPORE
 

+ 10 - 0
src/char/char.c

@@ -600,8 +600,13 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, int tabl
 			&&  items[i].card[2] == item.card[2]
 			&&  items[i].card[3] == item.card[3]
 			) {	//They are the same item.
+				int k;
+				
 				ARR_FIND( 0, MAX_SLOTS, j, items[i].card[j] != item.card[j] );
+				ARR_FIND( 0, MAX_ITEM_RDM_OPT, k, items[i].option[k].id != item.option[k].id || items[i].option[k].value != item.option[k].value || items[i].option[k].param != item.option[k].param );
+				
 				if( j == MAX_SLOTS &&
+					k == MAX_ITEM_RDM_OPT &&
 				    items[i].amount == item.amount &&
 				    items[i].equip == item.equip &&
 				    items[i].identify == item.identify &&
@@ -770,8 +775,13 @@ int char_inventory_to_sql(const struct item items[], int max, int char_id) {
 			   &&  items[i].card[2] == item.card[2]
 			   &&  items[i].card[3] == item.card[3]
 			   ) {	//They are the same item.
+				int k;
+				
 				ARR_FIND( 0, MAX_SLOTS, j, items[i].card[j] != item.card[j] );
+				ARR_FIND( 0, MAX_ITEM_RDM_OPT, k, items[i].option[k].id != item.option[k].id || items[i].option[k].value != item.option[k].value || items[i].option[k].param != item.option[k].param );
+				
 				if( j == MAX_SLOTS &&
+					k == MAX_ITEM_RDM_OPT &&
 					items[i].amount == item.amount &&
 					items[i].equip == item.equip &&
 					items[i].identify == item.identify &&

+ 6 - 3
src/map/atcommand.c

@@ -4163,6 +4163,8 @@ ACMD_FUNC(mapinfo) {
 		strcat(atcmd_output, " NoLockOn |");
 	if (map[m_id].flag.notomb)
 		strcat(atcmd_output, " NoTomb |");
+	if (map[m_id].flag.nocostume)
+		strcat(atcmd_output, " NoCostume |");
 	clif_displaymessage(fd, atcmd_output);
 
 	switch (list) {
@@ -8030,7 +8032,7 @@ ACMD_FUNC(mapflag) {
 		checkflag(nodrop);				checkflag(novending);			checkflag(loadevent);			checkflag(nochat);
 		checkflag(partylock);			checkflag(guildlock);			checkflag(reset);				checkflag(chmautojoin);
 		checkflag(nousecart);			checkflag(noitemconsumption);	checkflag(nosumstarmiracle);	checkflag(nomineeffect);
-		checkflag(nolockon);			checkflag(notomb);
+		checkflag(nolockon);			checkflag(notomb);				checkflag(nocostume);
 #ifdef ADJUST_SKILL_DAMAGE
 		checkflag(skill_damage);
 #endif
@@ -8054,7 +8056,7 @@ ACMD_FUNC(mapflag) {
 	setflag(nodrop);			setflag(novending);			setflag(loadevent);				setflag(nochat);
 	setflag(partylock);			setflag(guildlock);			setflag(reset);					setflag(chmautojoin);
 	setflag(nousecart);			setflag(noitemconsumption);	setflag(nosumstarmiracle);		setflag(nomineeffect);
-	setflag(nolockon);			setflag(notomb);
+	setflag(nolockon);			setflag(notomb);			setflag(nocostume);
 #ifdef ADJUST_SKILL_DAMAGE
 	setflag(skill_damage);
 #endif
@@ -8069,7 +8071,8 @@ ACMD_FUNC(mapflag) {
 	clif_displaymessage(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,");
 	clif_displaymessage(sd->fd,"fog, fireworks, sakura, leaves, nogo, nobaseexp, nojobexp, nomobloot, nomvploot,");
 	clif_displaymessage(sd->fd,"nightenabled, restricted, nodrop, novending, loadevent, nochat, partylock, guildlock,");
-	clif_displaymessage(sd->fd,"reset, chmautojoin, nousecart, noitemconsumption, nosumstarmiracle, nolockon, notomb");
+	clif_displaymessage(sd->fd,"reset, chmautojoin, nousecart, noitemconsumption, nosumstarmiracle, nolockon, notomb,");
+	clif_displaymessage(sd->fd,"nocostume");
 #ifdef ADJUST_SKILL_DAMAGE
 	clif_displaymessage(sd->fd,"skill_damage");
 #endif

+ 1 - 0
src/map/battle.c

@@ -8331,6 +8331,7 @@ static const struct _battle_data {
 	{ "mvp_exp_reward_message",             &battle_config.mvp_exp_reward_message,          0,      0,      1,              },
 	{ "can_damage_skill",                   &battle_config.can_damage_skill,                1,      0,      BL_ALL,         },
 	{ "atcommand_levelup_events",			&battle_config.atcommand_levelup_events,		0,		0,		1,				},
+	{ "block_account_in_same_party",		&battle_config.block_account_in_same_party,		1,		0,		1,				},
 
 #include "../custom/battle_config_init.inc"
 };

+ 1 - 0
src/map/battle.h

@@ -611,6 +611,7 @@ extern struct Battle_Config
 	int mvp_exp_reward_message;
 	int can_damage_skill; //Which BL types can damage traps
 	int atcommand_levelup_events;
+	int block_account_in_same_party;
 
 #include "../custom/battle_config_struct.inc"
 } battle_config;

+ 11 - 14
src/map/clif.c

@@ -6167,7 +6167,7 @@ void clif_maptypeproperty2(struct block_list *bl,enum send_target t) {
 		((map[bl->m].flag.pvp?1:0)<<5)| // COUNT_PK - Show the PvP counter
 		((map[bl->m].flag.partylock?1:0)<<6)| // NO_PARTY_FORMATION - Prevents party creation/modification (Might be used for instance dungeons)
 		((map[bl->m].flag.battleground?1:0)<<7)| // BATTLEFIELD - Unknown (Does something for battlegrounds areas)
-		((map[bl->m].flag.noitemconsumption?1:0)<<8)| // DISABLE_COSTUMEITEM - Unknown - (Prevents wearing of costume items?)
+		((map[bl->m].flag.nocostume?1:0)<<8)| // DISABLE_COSTUMEITEM - Disable costume sprites
 		((map[bl->m].flag.nousecart?0:1)<<9)| // USECART - Allow opening cart inventory (Well force it to always allow it)
 		((map[bl->m].flag.nosumstarmiracle?0:1)<<10); // SUNMOONSTAR_MIRACLE - Unknown - (Guessing it blocks Star Gladiator's Miracle from activating)
 		//(1<<11); // Unused bits. 1 - 10 is 0x1 length and 11 is 0x15 length. May be used for future settings.
@@ -7291,23 +7291,14 @@ void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 /// Party invite result.
 /// 00fd <nick>.24S <result>.B (ZC_ACK_REQ_JOIN_GROUP)
 /// 02c5 <nick>.24S <result>.L (ZC_PARTY_JOIN_REQ_ACK)
-/// result=0 : char is already in a party -> MsgStringTable[80]
-/// result=1 : party invite was rejected -> MsgStringTable[81]
-/// result=2 : party invite was accepted -> MsgStringTable[82]
-/// result=3 : party is full -> MsgStringTable[83]
-/// result=4 : char of the same account already joined the party -> MsgStringTable[608]
-/// result=5 : char blocked party invite -> MsgStringTable[1324] (since 20070904)
-/// result=7 : char is not online or doesn't exist -> MsgStringTable[71] (since 20070904)
-/// result=8 : (%s) TODO instance related? -> MsgStringTable[1388] (since 20080527)
-/// return=9 : TODO map prohibits party joining? -> MsgStringTable[1871] (since 20110205)
-void clif_party_inviteack(struct map_session_data* sd, const char* nick, int result)
+void clif_party_invite_reply(struct map_session_data* sd, const char* nick, enum e_party_invite_reply reply)
 {
 	int fd;
 	nullpo_retv(sd);
 	fd=sd->fd;
 
 #if PACKETVER < 20070904
-	if( result == 7 ) {
+	if( reply == PARTY_REPLY_OFFLINE ) {
 		clif_displaymessage(fd, msg_txt(sd,3));
 		return;
 	}
@@ -7317,13 +7308,13 @@ void clif_party_inviteack(struct map_session_data* sd, const char* nick, int res
 	WFIFOHEAD(fd,packet_len(0xfd));
 	WFIFOW(fd,0) = 0xfd;
 	safestrncpy((char*)WFIFOP(fd,2),nick,NAME_LENGTH);
-	WFIFOB(fd,26) = result;
+	WFIFOB(fd,26) = reply;
 	WFIFOSET(fd,packet_len(0xfd));
 #else
 	WFIFOHEAD(fd,packet_len(0x2c5));
 	WFIFOW(fd,0) = 0x2c5;
 	safestrncpy((char*)WFIFOP(fd,2),nick,NAME_LENGTH);
-	WFIFOL(fd,26) = result;
+	WFIFOL(fd,26) = reply;
 	WFIFOSET(fd,packet_len(0x2c5));
 #endif
 }
@@ -10091,6 +10082,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 #else
 	clif_changelook(&sd->bl,LOOK_WEAPON,0);
 #endif
+	pc_set_costume_view(sd);
 
 	if(sd->vd.cloth_color)
 		clif_refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
@@ -17214,7 +17206,11 @@ static void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd)
 ///     1 = "next" label to retrieve more results
 void clif_search_store_info_ack(struct map_session_data* sd)
 {
+#if PACKETVER >= 20150226
+	const unsigned int blocksize = MESSAGE_SIZE+26+5*MAX_ITEM_RDM_OPT;
+#else
 	const unsigned int blocksize = MESSAGE_SIZE+26;
+#endif
 	int fd = sd->fd;
 	unsigned int i, start, end;
 
@@ -17248,6 +17244,7 @@ void clif_search_store_info_ack(struct map_session_data* sd)
 		it.amount = ssitem->amount;
 
 		clif_addcards(WFIFOP(fd,i*blocksize+25+MESSAGE_SIZE), &it);
+		clif_add_random_options(WFIFOP(fd,i*blocksize+31+MESSAGE_SIZE), &it);
 	}
 
 	WFIFOSET(fd,WFIFOW(fd,2));

+ 14 - 1
src/map/clif.h

@@ -148,6 +148,19 @@ enum e_wip_block {
 	WIP_DISABLE_ALL = 0x3,
 };
 
+enum e_party_invite_reply {
+	PARTY_REPLY_JOIN_OTHER_PARTY = 0,   ///< result=0 : "The Character already joined another party." -> MsgStringTable[80]
+	PARTY_REPLY_REJECTED,			    ///< result=1 : "Request for party rejected." -> MsgStringTable[81]
+	PARTY_REPLY_ACCEPTED,			    ///< result=2 : "Request for party accepted." -> MsgStringTable[82]
+	PARTY_REPLY_FULL,				    ///< result=3 : "Party Capacity exceeded." -> MsgStringTable[83]
+	PARTY_REPLY_DUAL,				    ///< result=4 : "Character in the same account already joined." -> MsgStringTable[608]
+	PARTY_REPLY_JOINMSG_REFUSE,		    ///< result=5 : !TODO "The character blocked the party invitation." -> MsgStringTable[1324] (since 20070904)
+	PARTY_REPLY_UNKNOWN_ERROR,		    ///< result=6 : ??
+	PARTY_REPLY_OFFLINE,			    ///< result=7 : "The Character is not currently online or does not exist." -> MsgStringTable[71] (since 20070904)
+	PARTY_REPLY_INVALID_MAPPROPERTY,    ///< result=8 : !TODO "Unable to organize a party in this map" -> MsgStringTable[1388] (since 20080527)
+	PARTY_REPLY_INVALID_MAPPROPERTY_ME, ///< return=9 : !TODO "Cannot join a party in this map" -> MsgStringTable[1871] (since 20110205)
+};
+
 // packet_db[SERVER] is reserved for server use
 #define SERVER 0
 #define packet_len(cmd) packet_db[SERVER][cmd].len
@@ -705,7 +718,7 @@ void clif_party_created(struct map_session_data *sd,int result);
 void clif_party_member_info(struct party_data *p, struct map_session_data *sd);
 void clif_party_info(struct party_data* p, struct map_session_data *sd);
 void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd);
-void clif_party_inviteack(struct map_session_data* sd, const char* nick, int result);
+void clif_party_invite_reply(struct map_session_data* sd, const char* nick, enum e_party_invite_reply reply);
 void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag);
 void clif_party_withdraw(struct party_data* p, struct map_session_data* sd, uint32 account_id, const char* name, int flag);
 void clif_party_message(struct party_data* p, uint32 account_id, const char* mes, int len);

+ 2 - 1
src/map/map.h

@@ -469,7 +469,7 @@ enum _sp {
 	SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_ABSORB_DMG_MAXHP, SP_SUB_SKILL, SP_SUBDEF_ELE, // 2074-2078
 	SP_STATE_NORECOVER_RACE, SP_CRITICAL_RANGEATK, SP_MAGIC_ADDRACE2, SP_IGNORE_MDEF_RACE2_RATE, // 2079-2082
 	SP_WEAPON_ATK_RATE, SP_WEAPON_MATK_RATE, SP_DROP_ADDRACE, SP_DROP_ADDCLASS, SP_NO_MADO_FUEL, // 2083-2087
-	SP_IGNORE_DEF_CLASS_RATE, //2088
+	SP_IGNORE_DEF_CLASS_RATE, SP_REGEN_PERCENT_HP, SP_REGEN_PERCENT_SP, //2088-2091
 };
 
 enum _look {
@@ -662,6 +662,7 @@ struct map_data {
 		unsigned nomineeffect : 1; //allow /mineeffect
 		unsigned nolockon : 1;
 		unsigned notomb : 1;
+		unsigned nocostume : 1; // Disable costume sprites [Cydh]
 #ifdef ADJUST_SKILL_DAMAGE
 		unsigned skill_damage : 1;
 #endif

+ 4 - 0
src/map/npc.c

@@ -975,6 +975,8 @@ int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
 		case NPCTYPE_WARP:
 			if (pc_ishiding(sd) || (sd->sc.count && sd->sc.data[SC_CAMOUFLAGE]) || pc_isdead(sd))
 				break; // hidden or dead chars cannot use warps
+			if (!pc_job_can_entermap((enum e_job)sd->status.class_, map_mapindex2mapid(map[m].npc[i]->u.warp.mapindex), sd->group_level))
+				break;
 			if(sd->count_rewarp > 10){
 				ShowWarning("Prevented infinite warp loop for player (%d:%d). Please fix NPC: '%s', path: '%s'\n", sd->status.account_id, sd->status.char_id, map[m].npc[i]->exname, map[m].npc[i]->path);
 				sd->count_rewarp=0;
@@ -4087,6 +4089,8 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con
 		map[m].flag.nolockon = state;
 	else if (!strcmpi(w3,"notomb"))
 		map[m].flag.notomb = state;
+	else if (!strcmpi(w3,"nocostume"))
+		map[m].flag.nocostume = state;
 	else if (!strcmpi(w3,"skill_damage")) {
 #ifdef ADJUST_SKILL_DAMAGE
 		char skill[SKILL_NAME_LENGTH];

+ 17 - 8
src/map/party.c

@@ -353,6 +353,7 @@ int party_recv_info(struct party* sp, uint32 char_id)
 	return 0;
 }
 
+///! TODO: Party invitation cross map-server through inter-server, so does with the reply.
 int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 {
 	struct party_data *p;
@@ -371,11 +372,19 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 		return 0;
 	}
 
+	if (tsd && battle_config.block_account_in_same_party) {
+		ARR_FIND(0, MAX_PARTY, i, p->party.member[i].account_id == tsd->status.account_id);
+		if (i < MAX_PARTY) {
+			clif_party_invite_reply(sd, tsd->status.name, PARTY_REPLY_DUAL);
+			return 0;
+		}
+	}
+
 	// confirm if there is an open slot in the party
 	ARR_FIND(0, MAX_PARTY, i, p->party.member[i].account_id == 0);
 
 	if( i == MAX_PARTY ) {
-		clif_party_inviteack(sd, (tsd?tsd->status.name:""), 3);
+		clif_party_invite_reply(sd, (tsd?tsd->status.name:""), PARTY_REPLY_FULL);
 		return 0;
 	}
 
@@ -386,25 +395,25 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 	}
 
 	if( tsd == NULL) {
-		clif_party_inviteack(sd, "", 7);
+		clif_party_invite_reply(sd, "", PARTY_REPLY_OFFLINE);
 		return 0;
 	}
 
 	if(!battle_config.invite_request_check) {
 		if (tsd->guild_invite>0 || tsd->trade_partner || tsd->adopt_invite) {
-			clif_party_inviteack(sd,tsd->status.name,0);
+			clif_party_invite_reply(sd,tsd->status.name,PARTY_REPLY_JOIN_OTHER_PARTY);
 			return 0;
 		}
 	}
 
 	if (!tsd->fd) { //You can't invite someone who has already disconnected.
-		clif_party_inviteack(sd,tsd->status.name,1);
+		clif_party_invite_reply(sd,tsd->status.name,PARTY_REPLY_REJECTED);
 		return 0;
 	}
 
 	if( tsd->status.party_id > 0 || tsd->party_invite > 0 )
 	{// already associated with a party
-		clif_party_inviteack(sd,tsd->status.name,0);
+		clif_party_invite_reply(sd,tsd->status.name,PARTY_REPLY_JOIN_OTHER_PARTY);
 		return 0;
 	}
 
@@ -438,7 +447,7 @@ int party_reply_invite(struct map_session_data *sd,int party_id,int flag)
 		sd->party_invite_account = 0;
 
 		if( tsd != NULL )
-			clif_party_inviteack(tsd,sd->status.name,1);
+			clif_party_invite_reply(tsd,sd->status.name,PARTY_REPLY_REJECTED);
 	}
 
 	return 0;
@@ -497,7 +506,7 @@ int party_member_added(int party_id,uint32 account_id,uint32 char_id, int flag)
 
 	if( flag ) { // failed
 		if( sd2 != NULL )
-			clif_party_inviteack(sd2,sd->status.name,3);
+			clif_party_invite_reply(sd2,sd->status.name,PARTY_REPLY_FULL);
 		return 0;
 	}
 
@@ -508,7 +517,7 @@ int party_member_added(int party_id,uint32 account_id,uint32 char_id, int flag)
 	clif_party_info(p,sd);
 
 	if( sd2 != NULL )
-		clif_party_inviteack(sd2,sd->status.name,2);
+		clif_party_invite_reply(sd2,sd->status.name,PARTY_REPLY_ACCEPTED);
 
 	for( i = 0; i < ARRAYLENGTH(p->data); ++i ) { // hp of the other party members
 		sd2 = p->data[i].sd;

+ 111 - 89
src/map/pc.c

@@ -3395,6 +3395,18 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 			sd->hp_regen.rate = val;
 		}
 		break;
+	case SP_REGEN_PERCENT_HP: // bonus2 bRegenPercentHP,n,t;
+		if (sd->state.lr_flag != 2) {
+			sd->percent_hp_regen.value = type2;
+			sd->percent_hp_regen.rate = val;
+		}
+		break;
+	case SP_REGEN_PERCENT_SP: // bonus2 bRegenPercentSP,n,t;
+		if (sd->state.lr_flag != 2) {
+			sd->percent_sp_regen.value = type2;
+			sd->percent_sp_regen.rate = val;
+		}
+		break;
 	case SP_ADDRACE2: // bonus2 bAddRace2,mr,x;
 		PC_BONUS_CHK_RACE2(type2,SP_ADDRACE2);
 		if(sd->state.lr_flag != 2)
@@ -8581,12 +8593,15 @@ void pc_changelook(struct map_session_data *sd,int type,int val) {
 		break;
 	case LOOK_HEAD_BOTTOM:
 		sd->status.head_bottom = val;
+		sd->setlook_head_bottom = val;
 		break;
 	case LOOK_HEAD_TOP:
 		sd->status.head_top = val;
+		sd->setlook_head_top = val;
 		break;
 	case LOOK_HEAD_MID:
 		sd->status.head_mid = val;
+		sd->setlook_head_mid = val;
 		break;
 	case LOOK_HAIR_COLOR:	//Use the battle_config limits! [Skotlex]
 		val = cap_value(val, MIN_HAIR_COLOR, MAX_HAIR_COLOR);
@@ -8610,6 +8625,7 @@ void pc_changelook(struct map_session_data *sd,int type,int val) {
 		break;
 	case LOOK_ROBE:
 		sd->status.robe = val;
+		sd->setlook_robe = val;
 		break;
 	case LOOK_BODY2:
 		val = cap_value(val, MIN_BODY_STYLE, MAX_BODY_STYLE);
@@ -9656,60 +9672,10 @@ bool pc_equipitem(struct map_session_data *sd,short n,int req_pos)
 		pc_calcweapontype(sd);
 		clif_changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
 	}
-	//Added check to prevent sending the same look on multiple slots ->
-	//causes client to redraw item on top of itself. (suggested by Lupus)
-	if(pos & EQP_HEAD_LOW && pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) {
-		if(id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID)))
-			sd->status.head_bottom = id->look;
-		else
-			sd->status.head_bottom = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
-	}
-	if(pos & EQP_HEAD_TOP && pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) {
-		if(id)
-			sd->status.head_top = id->look;
-		else
-			sd->status.head_top = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
-	}
-	if(pos & EQP_HEAD_MID && pc_checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) {
-		if(id && !(pos&EQP_HEAD_TOP))
-			sd->status.head_mid = id->look;
-		else
-			sd->status.head_mid = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
-	}
-	if(pos & EQP_COSTUME_HEAD_TOP) {
-		if(id){
-			sd->status.head_top = id->look;
-		} else
-			sd->status.head_top = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
-	}
-	if(pos & EQP_COSTUME_HEAD_MID) {
-		if(id && !(pos&EQP_HEAD_TOP)){
-			sd->status.head_mid = id->look;
-		} else
-			sd->status.head_mid = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
-	}
-	if(pos & EQP_COSTUME_HEAD_LOW) {
-		if(id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID))){
-			sd->status.head_bottom = id->look;
-		} else
-			sd->status.head_bottom = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
-	}
 	if(pos & EQP_SHOES)
 		clif_changelook(&sd->bl,LOOK_SHOES,0);
-	if(pos&EQP_GARMENT && pc_checkequip(sd,EQP_COSTUME_GARMENT) == -1) {
-		sd->status.robe = id ? id->look : 0;
-		clif_changelook(&sd->bl, LOOK_ROBE, sd->status.robe);
-	}
-	if(pos & EQP_COSTUME_GARMENT) {
-		sd->status.robe = id ? id->look : 0;
-		clif_changelook(&sd->bl,LOOK_ROBE,sd->status.robe);
-	}
+
+	pc_set_costume_view(sd);
 
 	pc_checkallowskill(sd); //Check if status changes should be halted.
 	iflag = sd->npc_item_flag;
@@ -9819,48 +9785,12 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
 		pc_calcweapontype(sd);
 		clif_changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
 	}
-	if(sd->inventory.u.items_inventory[n].equip & EQP_HEAD_LOW && pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1 ) {
-		sd->status.head_bottom = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
-	}
-	if(sd->inventory.u.items_inventory[n].equip & EQP_HEAD_TOP && pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1 ) {
-		sd->status.head_top = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
-	}
-	if(sd->inventory.u.items_inventory[n].equip & EQP_HEAD_MID && pc_checkequip(sd,EQP_COSTUME_HEAD_MID) == -1 ) {
-		sd->status.head_mid = 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
-	}
-
-	if(sd->inventory.u.items_inventory[n].equip & EQP_COSTUME_HEAD_TOP) {
-		sd->status.head_top = ( pc_checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_TOP)]->look : 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
-	}
-
-	if(sd->inventory.u.items_inventory[n].equip & EQP_COSTUME_HEAD_MID) {
-		sd->status.head_mid = ( pc_checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_MID)]->look : 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
-	}
-
-	if(sd->inventory.u.items_inventory[n].equip & EQP_COSTUME_HEAD_LOW) {
-		sd->status.head_bottom = ( pc_checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_LOW)]->look : 0;
-		clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
-	}
 
 	if(sd->inventory.u.items_inventory[n].equip & EQP_SHOES)
 		clif_changelook(&sd->bl,LOOK_SHOES,0);
 
-	if(sd->inventory.u.items_inventory[n].equip&EQP_GARMENT && pc_checkequip(sd,EQP_COSTUME_GARMENT) == -1) {
-		sd->status.robe = 0;
-		clif_changelook(&sd->bl, LOOK_ROBE, 0);
-	}
-
-	if(sd->inventory.u.items_inventory[n].equip & EQP_COSTUME_GARMENT) {
-		sd->status.robe = ( pc_checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_GARMENT)]->look : 0;
-		clif_changelook(&sd->bl,LOOK_ROBE,sd->status.robe);
-	}
-
 	clif_unequipitemack(sd,n,sd->inventory.u.items_inventory[n].equip,1);
+	pc_set_costume_view(sd);
 
 	status_change_end(&sd->bl,SC_HEAT_BARREL,INVALID_TIMER);
 	// On weapon change (right and left hand)
@@ -10287,6 +10217,22 @@ void pc_regen (struct map_session_data *sd, unsigned int diff_tick)
 		}
 	}
 
+	if (sd->percent_hp_regen.value) {
+		sd->percent_hp_regen.tick += diff_tick;
+		while (sd->percent_hp_regen.tick >= sd->percent_hp_regen.rate) {
+			hp += (sd->percent_hp_regen.value * sd->status.max_hp);
+			sd->percent_hp_regen.tick -= sd->percent_hp_regen.rate;
+		}
+	}
+
+	if (sd->percent_sp_regen.value) {
+		sd->percent_sp_regen.tick += diff_tick;
+		while (sd->percent_sp_regen.tick >= sd->percent_sp_regen.rate) {
+			sp += (sd->percent_sp_regen.value * sd->status.max_sp);
+			sd->percent_sp_regen.tick -= sd->percent_sp_regen.rate;
+		}
+	}
+
 	if (hp > 0 || sp > 0)
 		status_heal(&sd->bl, hp, sp, 0);
 }
@@ -12224,6 +12170,82 @@ bool pc_job_can_entermap(enum e_job jobid, int m, int group_lv) {
 	return true;
 }
 
+/**
+ * Tells client about player's costume view on mapchange for checking 'nocostume' mapflag.
+ * @param sd
+ **/
+void pc_set_costume_view(struct map_session_data *sd) {
+	int i = -1, head_low = 0, head_mid = 0, head_top = 0, robe = 0;
+	struct item_data *id = NULL;
+
+	nullpo_retv(sd);
+
+	head_low = sd->status.head_bottom;
+	head_mid = sd->status.head_mid;
+	head_top = sd->status.head_top;
+	robe = sd->status.robe;
+
+	sd->status.head_bottom = sd->status.head_mid = sd->status.head_top = sd->status.robe = 0;
+
+	//Added check to prevent sending the same look on multiple slots ->
+	//causes client to redraw item on top of itself. (suggested by Lupus)
+	// Normal headgear checks
+	if ((i = sd->equip_index[EQI_HEAD_LOW]) != -1 && (id = sd->inventory_data[i])) {
+		if (!(id->equip&(EQP_HEAD_MID|EQP_HEAD_TOP)))
+			sd->status.head_bottom = id->look;
+		else
+			sd->status.head_bottom = 0;
+	}
+	if ((i = sd->equip_index[EQI_HEAD_MID]) != -1 && (id = sd->inventory_data[i])) {
+		if (!(id->equip&(EQP_HEAD_TOP)))
+			sd->status.head_mid = id->look;
+		else
+			sd->status.head_mid = 0;
+	}
+	if ((i = sd->equip_index[EQI_HEAD_TOP]) != -1 && (id = sd->inventory_data[i]))
+		sd->status.head_top = id->look;
+	if ((i = sd->equip_index[EQI_GARMENT]) != -1 && (id = sd->inventory_data[i]))
+		sd->status.robe = id->look;
+
+	// Costumes check
+	if (!map[sd->bl.m].flag.nocostume) {
+		if ((i = sd->equip_index[EQI_COSTUME_HEAD_LOW]) != -1 && (id = sd->inventory_data[i])) {
+			if (!(id->equip&(EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_TOP)))
+				sd->status.head_bottom = id->look;
+			else
+				sd->status.head_bottom = 0;
+		}
+		if ((i = sd->equip_index[EQI_COSTUME_HEAD_MID]) != -1 && (id = sd->inventory_data[i])) {
+			if (!(id->equip&EQP_COSTUME_HEAD_TOP))
+				sd->status.head_mid = id->look;
+			else
+				sd->status.head_mid = 0;
+		}
+		if ((i = sd->equip_index[EQI_COSTUME_HEAD_TOP]) != -1 && (id = sd->inventory_data[i]))
+			sd->status.head_top = id->look;
+		if ((i = sd->equip_index[EQI_COSTUME_GARMENT]) != -1 && (id = sd->inventory_data[i]))
+			sd->status.robe = id->look;
+	}
+
+	if (sd->setlook_head_bottom)
+		sd->status.head_bottom = sd->setlook_head_bottom;
+	if (sd->setlook_head_mid)
+		sd->status.head_mid = sd->setlook_head_mid;
+	if (sd->setlook_head_top)
+		sd->status.head_top = sd->setlook_head_top;
+	if (sd->setlook_robe)
+		sd->status.robe = sd->setlook_robe;
+
+	if (head_low != sd->status.head_bottom)
+		clif_changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.head_bottom);
+	if (head_mid != sd->status.head_mid)
+		clif_changelook(&sd->bl, LOOK_HEAD_MID, sd->status.head_mid);
+	if (head_top != sd->status.head_top)
+		clif_changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.head_top);
+	if (robe != sd->status.robe)
+		clif_changelook(&sd->bl, LOOK_ROBE, sd->status.robe);
+}
+
 /*==========================================
  * pc Init/Terminate
  *------------------------------------------*/

+ 4 - 1
src/map/pc.h

@@ -312,6 +312,7 @@ struct map_session_data {
 	time_t emotionlasttime; // to limit flood with emotion packets
 
 	short skillitem,skillitemlv;
+	bool skillitem_keep_requirement;
 	uint16 skill_id_old,skill_lv_old;
 	uint16 skill_id_dance,skill_lv_dance;
 	short cook_mastery; // range: [0,1999] [Inkfish]
@@ -400,7 +401,7 @@ struct map_session_data {
 		short value;
 		int rate;
 		int tick;
-	} hp_loss, sp_loss, hp_regen, sp_regen;
+	} hp_loss, sp_loss, hp_regen, sp_regen, percent_hp_regen, percent_sp_regen;
 	struct {
 		short class_, rate;
 	}	add_def[MAX_PC_BONUS], add_mdef[MAX_PC_BONUS], add_mdmg[MAX_PC_BONUS];
@@ -691,6 +692,7 @@ struct map_session_data {
 	} roulette;
 
 	unsigned short instance_id;
+	short setlook_head_top, setlook_head_mid, setlook_head_bottom, setlook_robe; ///< Stores 'setlook' script command values.
 
 #if PACKETVER >= 20150513
 	uint32* hatEffectIDs;
@@ -1111,6 +1113,7 @@ void pc_setriding(struct map_session_data* sd, int flag);
 void pc_setmadogear(struct map_session_data* sd, int flag);
 void pc_changelook(struct map_session_data *,int,int);
 void pc_equiplookall(struct map_session_data *sd);
+void pc_set_costume_view(struct map_session_data *sd);
 
 int pc_readparam(struct map_session_data *sd, int type);
 bool pc_setparam(struct map_session_data *sd, int type, int val);

+ 25 - 4
src/map/script.c

@@ -357,7 +357,8 @@ enum {
 	MF_NOMINEEFFECT,
 	MF_NOLOCKON,
 	MF_NOTOMB,
-	MF_SKILL_DAMAGE	//60
+	MF_SKILL_DAMAGE,	//60
+	MF_NOCOSTUME,
 };
 
 const char* script_op2name(int op)
@@ -9627,6 +9628,7 @@ BUILDIN_FUNC(itemskill)
 {
 	int id;
 	int lv;
+	bool keep_requirement;
 	TBL_PC* sd;
 	struct script_data *data;
 
@@ -9638,9 +9640,15 @@ BUILDIN_FUNC(itemskill)
 	get_val(st, data); // Convert into value in case of a variable
 	id = ( data_isstring(data) ? skill_name2id(script_getstr(st,2)) : script_getnum(st,2) );
 	lv = script_getnum(st,3);
+	if (script_hasdata(st, 4)) {
+		keep_requirement = (script_getnum(st, 4) != 0);
+	} else {
+		keep_requirement = false;
+	}
 
 	sd->skillitem=id;
 	sd->skillitemlv=lv;
+	sd->skillitem_keep_requirement = keep_requirement;
 	clif_item_skill(sd,id,lv);
 	return SCRIPT_CMD_SUCCESS;
 }
@@ -11902,6 +11910,7 @@ BUILDIN_FUNC(getmapflag)
 			case MF_NOMINEEFFECT:		script_pushint(st,map[m].flag.nomineeffect); break;
 			case MF_NOLOCKON:			script_pushint(st,map[m].flag.nolockon); break;
 			case MF_NOTOMB:				script_pushint(st,map[m].flag.notomb); break;
+			case MF_NOCOSTUME:			script_pushint(st,map[m].flag.nocostume); break;
 #ifdef ADJUST_SKILL_DAMAGE
 			case MF_SKILL_DAMAGE:
 				{
@@ -12025,6 +12034,7 @@ BUILDIN_FUNC(setmapflag)
 			case MF_NOMINEEFFECT:		map[m].flag.nomineeffect = 1 ; break;
 			case MF_NOLOCKON:			map[m].flag.nolockon = 1 ; break;
 			case MF_NOTOMB:				map[m].flag.notomb = 1; break;
+			case MF_NOCOSTUME:			map[m].flag.nocostume = 1; break;
 #ifdef ADJUST_SKILL_DAMAGE
 			case MF_SKILL_DAMAGE:
 				{
@@ -12136,6 +12146,7 @@ BUILDIN_FUNC(removemapflag)
 			case MF_NOMINEEFFECT:		map[m].flag.nomineeffect = 0 ; break;
 			case MF_NOLOCKON:			map[m].flag.nolockon = 0 ; break;
 			case MF_NOTOMB:				map[m].flag.notomb = 0; break;
+			case MF_NOCOSTUME:			map[m].flag.nocostume = 0; break;
 #ifdef ADJUST_SKILL_DAMAGE
 			case MF_SKILL_DAMAGE:
 				{
@@ -12446,7 +12457,7 @@ BUILDIN_FUNC(getcastledata)
 
 	if (gc == NULL) {
 		script_pushint(st,0);
-		ShowWarning("buildin_setcastledata: guild castle for map '%s' not found\n", mapname);
+		ShowWarning("buildin_getcastledata: guild castle for map '%s' not found\n", mapname);
 		return SCRIPT_CMD_FAILURE;
 	}
 
@@ -12475,7 +12486,7 @@ BUILDIN_FUNC(getcastledata)
 				break;
 			}
 			script_pushint(st,0);
-			ShowWarning("buildin_setcastledata: index = '%d' is out of allowed range\n", index);
+			ShowWarning("buildin_getcastledata: index = '%d' is out of allowed range\n", index);
 			return SCRIPT_CMD_FAILURE;
 	}
 	return SCRIPT_CMD_SUCCESS;
@@ -20291,6 +20302,7 @@ BUILDIN_FUNC(party_create)
  * @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
+ *	-5	- another character of the same account is in the party
  *	-4	- party is full
  *	-3	- party is not found
  *	-2	- player is in party already
@@ -20319,6 +20331,15 @@ BUILDIN_FUNC(party_addmember)
 		return SCRIPT_CMD_FAILURE;
 	}
 
+	if (battle_config.block_account_in_same_party) {
+		int i;
+		ARR_FIND(0, MAX_PARTY, i, party->party.member[i].account_id == sd->status.account_id);
+		if (i < MAX_PARTY) {
+			script_pushint(st,-5);
+			return SCRIPT_CMD_FAILURE;
+		}
+	}
+
 	if( party->party.count >= MAX_PARTY ) {
 		script_pushint(st,-4);
 		return SCRIPT_CMD_FAILURE;
@@ -21975,7 +21996,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(gettimestr,"si"),
 	BUILDIN_DEF(openstorage,""),
 	BUILDIN_DEF(guildopenstorage,""),
-	BUILDIN_DEF(itemskill,"vi"),
+	BUILDIN_DEF(itemskill,"vi?"),
 	BUILDIN_DEF(produce,"i"),
 	BUILDIN_DEF(cooking,"i"),
 	BUILDIN_DEF(monster,"siisii???"),

+ 3 - 0
src/map/script_constants.h

@@ -396,6 +396,7 @@
 	export_constant(MF_NOLOCKON);
 	export_constant(MF_NOTOMB);
 	export_constant(MF_SKILL_DAMAGE);
+	export_constant(MF_NOCOSTUME);
 
 	/* setcell types */
 	export_constant(CELL_WALKABLE);
@@ -664,6 +665,8 @@
 	script_set_constant("bDropAddClass", SP_DROP_ADDCLASS, false);
 	script_set_constant("bNoMadoFuel", SP_NO_MADO_FUEL, false);
 	script_set_constant("bIgnoreDefClassRate", SP_IGNORE_DEF_CLASS_RATE, false);
+	script_set_constant("bRegenPercentHP", SP_REGEN_PERCENT_HP, false);
+	script_set_constant("bRegenPercentSP", SP_REGEN_PERCENT_SP, false);
 
 	/* equip indices */
 	export_constant(EQI_HEAD_TOP);

+ 17 - 11
src/map/skill.c

@@ -645,7 +645,7 @@ bool skill_isNotOk(uint16 skill_id, struct map_session_data *sd)
 	 * It has been confirmed on a official server (thanks to Yommy) that item-cast skills bypass all the restrictions above
 	 * Also, without this check, an exploit where an item casting + healing (or any other kind buff) isn't deleted after used on a restricted map
 	 */
-	if( sd->skillitem == skill_id )
+	if( sd->skillitem == skill_id && !sd->skillitem_keep_requirement )
 		return false;
 	// Check skill restrictions [Celest]
 	if( (!map_flag_vs(m) && skill_get_nocast (skill_id) & 1) ||
@@ -2942,6 +2942,9 @@ void skill_attack_blow(struct block_list *src, struct block_list *dsrc, struct b
 			else
 				dir = map_calc_dir(target, skill_area_temp[4], skill_area_temp[5]);
 			break;
+		case HT_PHANTASMIC: // issue #1378
+			if (status_get_hp(target) - damage <= 0) return;
+			break;
 	}
 
 	// Blown-specific handling
@@ -6109,6 +6112,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 				sd->state.abra_flag = 1;
 				sd->skillitem = abra_skill_id;
 				sd->skillitemlv = abra_skill_lv;
+				sd->skillitem_keep_requirement = false;
 				clif_item_skill(sd, abra_skill_id, abra_skill_lv);
 			}
 			else
@@ -9993,6 +9997,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 				sd->state.abra_flag = 2;
 				sd->skillitem = improv_skill_id;
 				sd->skillitemlv = improv_skill_lv;
+				sd->skillitem_keep_requirement = false;
 				clif_item_skill(sd, improv_skill_id, improv_skill_lv);
 			} else {
 				struct unit_data *ud = unit_bl2ud(src);
@@ -11210,8 +11215,8 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data)
 				skill_blockpc_start(sd,BD_ADAPTATION,3000);
 		}
 
-		if( sd && ud->skill_id != SA_ABRACADABRA && ud->skill_id != WM_RANDOMIZESPELL ) // they just set the data so leave it as it is.[Inkfish]
-			sd->skillitem = sd->skillitemlv = 0;
+		if (sd && ud->skill_id != SA_ABRACADABRA && ud->skill_id != WM_RANDOMIZESPELL) // they just set the data so leave it as it is.[Inkfish]
+			sd->skillitem = sd->skillitemlv = sd->skillitem_keep_requirement = 0;
 
 		if (ud->skilltimer == INVALID_TIMER) {
 			if(md) md->skill_idx = -1;
@@ -11269,7 +11274,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data)
 	//sent in ALL cases, even cases where skill_check_condition fails
 	//which would lead to double 'skill failed' messages u.u [Skotlex]
 	if(sd)
-		sd->skillitem = sd->skillitemlv = 0;
+		sd->skillitem = sd->skillitemlv = sd->skillitem_keep_requirement = 0;
 	else if(md)
 		md->skill_idx = -1;
 	return 0;
@@ -11406,7 +11411,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data)
 			status_change_end(src, SC_CAMOUFLAGE, INVALID_TIMER); // Applies to the first skill if active
 
 		if( sd && sd->skillitem != AL_WARP ) // Warp-Portal thru items will clear data in skill_castend_map. [Inkfish]
-			sd->skillitem = sd->skillitemlv = 0;
+			sd->skillitem = sd->skillitemlv = sd->skillitem_keep_requirement = 0;
 
 		if (ud->skilltimer == INVALID_TIMER) {
 			if (md) md->skill_idx = -1;
@@ -11422,7 +11427,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data)
 		ud->canact_tick = tick;
 	ud->skill_id = ud->skill_lv = 0;
 	if(sd)
-		sd->skillitem = sd->skillitemlv = 0;
+		sd->skillitem = sd->skillitemlv = sd->skillitem_keep_requirement = 0;
 	else if(md)
 		md->skill_idx  = -1;
 	return 0;
@@ -12358,7 +12363,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char
 			}
 
 			skill_consume_requirement(sd,sd->menuskill_id,lv,2);
-			sd->skillitem = sd->skillitemlv = 0; // Clear data that's skipped in 'skill_castend_pos' [Inkfish]
+			sd->skillitem = sd->skillitemlv = sd->skillitem_keep_requirement = 0; // Clear data that's skipped in 'skill_castend_pos' [Inkfish]
 
 			if((group=skill_unitsetting(&sd->bl,skill_id,lv,wx,wy,0))==NULL) {
 				skill_failed(sd);
@@ -13139,7 +13144,7 @@ static int skill_unit_onplace(struct skill_unit *unit, struct block_list *bl, un
 					if( --count <= 0 )
 						skill_delunitgroup(sg);
 
-					if ( map_mapindex2mapid(sg->val3) == sd->bl.m && x == sd->bl.x && y == sd->bl.y )
+					if ( map_mapindex2mapid(m) == sd->bl.m && x == sd->bl.x && y == sd->bl.y )
 						working = 1;/* we break it because officials break it, lovely stuff. */
 
 					sg->val1 = (count<<16)|working;
@@ -14739,7 +14744,8 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
 			else if( sd->inventory.u.items_inventory[i].expire_time == 0 )
 				pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); // Rental usable items are not consumed until expiration
 		}
-		return true;
+		if(!sd->skillitem_keep_requirement)
+			return true;
 	}
 
 	if( pc_is90overweight(sd) ) {
@@ -15587,7 +15593,7 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
 			break;
 	}
 
-	if( sd->skillitem == skill_id ) // Casting finished (Item skill or Hocus-Pocus)
+	if( sd->skillitem == skill_id && !sd->skillitem_keep_requirement ) // Casting finished (Item skill or Hocus-Pocus)
 		return true;
 
 	if( pc_is90overweight(sd) ) {
@@ -15850,7 +15856,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
 	if( !sd )
 		return req;
 
-	if( sd->skillitem == skill_id )
+	if( sd->skillitem == skill_id && !sd->skillitem_keep_requirement )
 		return req; // Item skills and Hocus-Pocus don't have requirements.[Inkfish]
 
 	sc = &sd->sc;

+ 22 - 0
src/map/skill.h

@@ -1318,6 +1318,28 @@ enum e_skill {
 	NPC_REVERBERATION,
 	NPC_REVERBERATION_ATK,
 	NPC_LEX_AETERNA,
+	NPC_ARROWSTORM,
+	NPC_CHEAL,
+	NPC_SR_CURSEDCIRCLE,
+	NPC_DRAGONBREATH,
+	NPC_FATALMENACE,
+	NPC_MAGMA_ERUPTION,
+	NPC_MAGMA_ERUPTION_DOTDAMAGE,
+	NPC_MANDRAGORA,
+	NPC_PSYCHIC_WAVE,
+	NPC_RAYOFGENESIS,
+	NPC_VENOMIMPRESS,
+	NPC_CLOUD_KILL,
+	NPC_IGNITIONBREAK,
+	NPC_PHANTOMTHRUST,
+	NPC_POISON_BUSTER,
+	NPC_HALLUCINATIONWALK,
+	NPC_ELECTRICWALK,
+	NPC_FIREWALK,
+	NPC_WIDEDISPEL,
+	NPC_LEASH,
+	NPC_WIDELEASH,
+	NPC_WIDECRITICALWOUND,
 
 	KN_CHARGEATK = 1001,
 	CR_SHRINK,

+ 3 - 2
src/map/unit.c

@@ -407,10 +407,11 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data
 	map_foreachinmovearea(clif_insight, bl, AREA_SIZE, -dx, -dy, sd?BL_ALL:BL_PC, bl);
 	ud->walktimer = INVALID_TIMER;
 
-	if (ud->state.walk_script && bl->x == ud->to_x && bl->y == ud->to_y) {
+	if (bl->x == ud->to_x && bl->y == ud->to_y) {
 		if (ud->walk_done_event[0])
 			npc_event_do_id(ud->walk_done_event,bl->id);
-		ud->state.walk_script = 0;
+		if (ud->state.walk_script)
+			ud->state.walk_script = 0;
 	}
 
 	switch(bl->type) {