Browse Source

* Added official Homunculus S mutation quest (previous file renamed).
* Added 'checkhomcall' & 'morphembryo' commands and updated 'hommutate' command, as required by the Hom-S quest. (code by Aleos/lighta)
* Modified 'gethominfo' to work for Homunculi in 'rest' state, also needed for the Hom-S quest to run properly.
* Updated spawns for Scaraba Hole (dic_dun) and Dewata (dew_fild, dew_dun).
* Minor update to some item scripts.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17220 54d463be-8e91-2dee-dedb-b68131a5f0ec

euphyy 12 years ago
parent
commit
5edd3e023a

+ 6 - 6
db/re/item_db.txt

@@ -700,7 +700,7 @@
 1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,4,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
 1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,4,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
 1381,N_Battle_Axe,Novice Battle Axe,4,0,,0,100,,1,3,0x000444A2,7,2,34,1,3,0,7,{},{},{}
 1381,N_Battle_Axe,Novice Battle Axe,4,0,,0,100,,1,3,0x000444A2,7,2,34,1,3,0,7,{},{},{}
 1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,4,20,,0,220,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-3,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{}
 1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,4,20,,0,220,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-3,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{}
-1383,Holy_Celestial_Axe,Celestial Axe,4,20,,1500,200,,1,0,0x000444A2,7,2,34,4,60,1,7,{ bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,50; },{},{}
+1383,Holy_Celestial_Axe,Celestial Axe,4,20,,1500,200,,1,0,0x000444A2,7,2,34,4,60,1,7,{ bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,30; },{},{}
 1384,Veteran_Axe,Veteran Axe,4,10000,,3000,250,,1,2,0x000444A2,7,2,34,3,80,1,7,{ if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2; },{},{}
 1384,Veteran_Axe,Veteran Axe,4,10000,,3000,250,,1,2,0x000444A2,7,2,34,3,80,1,7,{ if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2; },{},{}
 1385,Bradium_Stonehammer,Bradium Stone Hammer,4,20,,2700,210,,1,0,0x000444A2,2,2,34,4,75,1,7,{ bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine()); },{},{}
 1385,Bradium_Stonehammer,Bradium Stone Hammer,4,20,,2700,210,,1,0,0x000444A2,2,2,34,4,75,1,7,{ bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine()); },{},{}
 1386,Doom_Slayer_I,Doom Slayer,4,0,,0,20,,1,0,0x000444A2,7,2,34,4,0,0,7,{ if(readparam(bStr)>=95){ bonus bBaseAtk,400; bonus2 bAddEff,Eff_Stun,3000; bonus bAspdRate,-25; bonus bUseSPrate,100; bonus bBreakArmorRate,500; } },{},{}
 1386,Doom_Slayer_I,Doom Slayer,4,0,,0,20,,1,0,0x000444A2,7,2,34,4,0,0,7,{ if(readparam(bStr)>=95){ bonus bBaseAtk,400; bonus2 bAddEff,Eff_Stun,3000; bonus bAspdRate,-25; bonus bUseSPrate,100; bonus bBreakArmorRate,500; } },{},{}
@@ -743,7 +743,7 @@
 1426,Krieger_Onehand_Spear1,Glorious Spear,4,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{}
 1426,Krieger_Onehand_Spear1,Glorious Spear,4,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{}
 1427,Spear_Of_Excellent,Spear Of Excellent,4,20,,0,160,,3,0,0x00004082,7,2,2,3,0,0,4,{ bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2; },{},{}
 1427,Spear_Of_Excellent,Spear Of Excellent,4,20,,0,160,,3,0,0x00004082,7,2,2,3,0,0,4,{ bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2; },{},{}
 1428,Long_Horn_M,Long Horn,4,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
 1428,Long_Horn_M,Long Horn,4,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
-1429,Hunting_Spear_M,Hunting Spear,4,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500; },{},{}
+1429,Hunting_Spear_M,Hunting Spear,4,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100; },{},{}
 1430,Pike_C,Pike,4,0,,0,74,,3,0,0x00004082,7,2,2,1,1,0,4,{ bonus2 bAddSize,Size_Small,70; bonus2 bAddSize,Size_Medium,70; bonus2 bAddSize,Size_Large,70; },{},{}
 1430,Pike_C,Pike,4,0,,0,74,,3,0,0x00004082,7,2,2,1,1,0,4,{ bonus2 bAddSize,Size_Small,70; bonus2 bAddSize,Size_Medium,70; bonus2 bAddSize,Size_Large,70; },{},{}
 1431,F_Pole_Axe_C,Pole Axe,4,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
 1431,F_Pole_Axe_C,Pole Axe,4,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
 1432,E_Pole_Axe_C,Pole Axe,4,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
 1432,E_Pole_Axe_C,Pole Axe,4,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
@@ -1721,7 +1721,7 @@
 2705,Golden_Accessory2,Golden Accessories,5,20,,100,,4,,0,0xFFFFFFFF,7,2,136,,,,,{ bonus2 bAddMonsterDropItem,12018,500; },{},{}
 2705,Golden_Accessory2,Golden Accessories,5,20,,100,,4,,0,0xFFFFFFFF,7,2,136,,,,,{ bonus2 bAddMonsterDropItem,12018,500; },{},{}
 2706,Handcuff,Arrest Handcuffs,5,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
 2706,Handcuff,Arrest Handcuffs,5,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
 2707,GUSLI,GUSLI,5,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
 2707,GUSLI,GUSLI,5,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
-2708,Chinese_Handicraft,Chinese Handicraft,5,0,,50,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus3 bAutoSpell,"MG_FIREBOLT",5,300; },{},{}
+2708,Chinese_Handicraft,Chinese Handicraft,5,0,,50,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus3 bAutoSpell,"MG_FIREBOLT",5,50; },{},{}
 2709,5_Anniversary_Coin,5th Anniversary Coin,5,2,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; },{},{}
 2709,5_Anniversary_Coin,5th Anniversary Coin,5,2,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; },{},{}
 2710,Bloody_Iron_Ball_C,Bloody Iron Ball,5,1,,0,,0,,0,0xFFFFFFFE,7,2,136,,0,0,0,{ bonus bBaseAtk,30; },{},{}
 2710,Bloody_Iron_Ball_C,Bloody Iron Ball,5,1,,0,,0,,0,0xFFFFFFFE,7,2,136,,0,0,0,{ bonus bBaseAtk,30; },{},{}
 2711,Spiritual_Ring_C,Spiritual Ring,5,1,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bInt,2; bonus bDex,2; },{},{}
 2711,Spiritual_Ring_C,Spiritual Ring,5,1,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bInt,2; bonus bDex,2; },{},{}
@@ -2881,7 +2881,7 @@
 5255,Triple_Poring_Hat,Triple Poring Hat,5,20,,600,,3,,0,0xFFFFFFFF,7,2,256,,20,0,299,{ bonus bLuk,3; bonus3 bAutoSpell,"BS_GREED",1,50; },{},{}
 5255,Triple_Poring_Hat,Triple Poring Hat,5,20,,600,,3,,0,0xFFFFFFFF,7,2,256,,20,0,299,{ bonus bLuk,3; bonus3 bAutoSpell,"BS_GREED",1,50; },{},{}
 5256,Valkyrie_Feather_Band,Valkyrie Feather Band,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,20,1,300,{ bonus bInt,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10; },{},{}
 5256,Valkyrie_Feather_Band,Valkyrie Feather Band,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,20,1,300,{ bonus bInt,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10; },{},{}
 5257,Soulless_Wing,Soul Ring,5,20,,300,,2,,0,0xFFFFFFFE,7,2,256,,20,1,301,{ bonus bMdef,2; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,10; },{},{}
 5257,Soulless_Wing,Soul Ring,5,20,,300,,2,,0,0xFFFFFFFE,7,2,256,,20,1,301,{ bonus bMdef,2; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,10; },{},{}
-5258,Afro_Wig,Afro Wig,5,20,,100,,0,,1,0xFFFFFFFF,7,2,768,,10,1,302,{ bonus3 bAutoSpellWhenHit,"NV_FIRSTAID",1,300; bonus2 bSubEle,Ele_Neutral,1; },{},{}
+5258,Afro_Wig,Afro Wig,5,20,,100,,0,,1,0xFFFFFFFF,7,2,768,,10,1,302,{ bonus3 bAutoSpellWhenHit,"NV_FIRSTAID",1,100; bonus2 bSubEle,Ele_Neutral,1; },{},{}
 5259,Elephant_Hat_,Elephant Hat,5,20,,500,,3,,0,0xFFFFFFFF,7,2,256,,0,1,215,{ bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1; },{},{}
 5259,Elephant_Hat_,Elephant Hat,5,20,,500,,3,,0,0xFFFFFFFF,7,2,256,,0,1,215,{ bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1; },{},{}
 5260,Cookie_Hat,Cookie Hat,5,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,217,{ bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5; },{},{}
 5260,Cookie_Hat,Cookie Hat,5,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,217,{ bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5; },{},{}
 5261,Silver_Tiara_,Silver Tiara,5,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,218,{ bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2); },{},{}
 5261,Silver_Tiara_,Silver Tiara,5,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,218,{ bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2); },{},{}
@@ -3284,7 +3284,7 @@
 5658,Imp_Hat,Imp Hat,5,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,589,{ bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5; },{},{}
 5658,Imp_Hat,Imp Hat,5,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,589,{ bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5; },{},{}
 5659,Sleeper_Hat,Sleeper Hat,5,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,590,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5; },{},{}
 5659,Sleeper_Hat,Sleeper Hat,5,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,590,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5; },{},{}
 5660,Gryphon_Hat,Gryphon Hat,5,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,591,{ bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",1,5; },{},{}
 5660,Gryphon_Hat,Gryphon Hat,5,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,591,{ bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",1,5; },{},{}
-//5661,Red_Pirate_Bandana,Red Pirate Banada,5,0,,0,,3,,0,0xFFFFFFFF,7,2,256,,10,1,592,{ bonus bStr,1; bonus bDex,1; bonus bAspdRate,2; bonus bVariableCastrate,-2; bonus3 bAutoSpell,"MO_EXTREMITYFIST",1,30; },{},{}
+5661,Red_Pirate_Bandana,Red Pirate Bandana,5,0,,0,,3,,0,0xFFFFFFFF,7,2,256,,10,1,592,{ bonus bStr,1; bonus bDex,1; bonus bAspdRate,2; bonus bVariableCastrate,-2; bonus3 bAutoSpell,"MO_EXTREMITYFIST",1,3; },{},{}
 //5662,Libra_Crown,Libra Crown,5,10,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,593,{ bonus bDex,3; },{},{}
 //5662,Libra_Crown,Libra Crown,5,10,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,593,{ bonus bDex,3; },{},{}
 //5663,Libra_Diadem,Libra Diadem,5,10,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,594,{ bonus bDex,3; },{},{}
 //5663,Libra_Diadem,Libra Diadem,5,10,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,594,{ bonus bDex,3; },{},{}
 5664,Filir_Wing,Filir's Pinions,5,20,,100,,1,,0,0xFFFFFFFF,7,2,512,,70,1,595,{ bonus bAspdRate,2; bonus bVariableCastrate,-2; },{},{}
 5664,Filir_Wing,Filir's Pinions,5,20,,100,,1,,0,0xFFFFFFFF,7,2,512,,70,1,595,{ bonus bAspdRate,2; bonus bVariableCastrate,-2; },{},{}
@@ -6192,7 +6192,7 @@
 13417,Krieger_Onehand_Sword2,Glorious Rapier,4,20,,0,130:80,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5; },{},{}
 13417,Krieger_Onehand_Sword2,Glorious Rapier,4,20,,0,130:80,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5; },{},{}
 13418,Krieger_Onehand_Sword3,Glorious Holy Avenger,4,20,,0,130:80,,1,0,0x000444A2,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXDIVINA",1,1000; if(getrefine()>9) bonus bInt,5; },{},{}
 13418,Krieger_Onehand_Sword3,Glorious Holy Avenger,4,20,,0,130:80,,1,0,0x000444A2,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXDIVINA",1,1000; if(getrefine()>9) bonus bInt,5; },{},{}
 13419,Holy_Saber,Holy saber,4,20,,0,160,,1,0,0x000654E2,7,2,2,3,0,0,2,{},{},{}
 13419,Holy_Saber,Holy saber,4,20,,0,160,,1,0,0x000654E2,7,2,2,3,0,0,2,{},{},{}
-13420,Honglyun's_Sword,Honglyun's Sword,4,20,,1200,160,,1,1,0x000654E2,7,2,2,4,70,1,2,{ bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; },{},{}
+13420,Honglyun's_Sword,Honglyun's Sword,4,20,,1200,160,,1,1,0x000654E2,7,2,2,4,70,1,2,{ bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; bonus3 bAutoSpell,"WZ_METEOR",1,5; },{},{}
 13421,Ruber,Ruber,4,20,,1500,170,,1,1,0x000444A2,2,2,2,3,50,1,2,{ autobonus "{ bonus2 bSkillAtk,\"KN_BOWLINGBASH\",20; bonus2 bSkillAtk,\"SM_BASH\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
 13421,Ruber,Ruber,4,20,,1500,170,,1,1,0x000444A2,2,2,2,3,50,1,2,{ autobonus "{ bonus2 bSkillAtk,\"KN_BOWLINGBASH\",20; bonus2 bSkillAtk,\"SM_BASH\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
 13422,Flamberge_C,Flamberge,4,0,,0,185,,1,0,0x00004080,7,2,2,3,1,0,2,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
 13422,Flamberge_C,Flamberge,4,0,,0,185,,1,0,0x00004080,7,2,2,3,1,0,2,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
 13423,P_Sabre1,Eden Sabre I,4,0,,0,147,,1,0,0x000654E2,7,2,2,2,26,0,2,{},{},{}
 13423,P_Sabre1,Eden Sabre I,4,0,,0,147,,1,0,0x000654E2,7,2,2,2,26,0,2,{},{},{}

+ 1 - 0
db/re/item_trade.txt

@@ -1797,6 +1797,7 @@
 5758,475,100	// Resting Swan
 5758,475,100	// Resting Swan
 5760,475,100	// Driver Band
 5760,475,100	// Driver Band
 15002,507,100	// Rune Plate
 15002,507,100	// Rune Plate
+6415,507,100	// Strange Embryo
 
 
 // Episode 13.3
 // Episode 13.3
 2844,475,100	// Light Of El Discastes
 2844,475,100	// Light Of El Discastes

+ 4 - 3
doc/item_db.txt

@@ -86,9 +86,6 @@ Upper: Equippable upper-types. Uses the following bitmasks:
 Gender: Gender restriction. 0 is female, 1 is male, 2 for both.
 Gender: Gender restriction. 0 is female, 1 is male, 2 for both.
 
 
 Loc: Equipment's placement. Values are:
 Loc: Equipment's placement. Values are:
-	2^12 4096 = Costume Low Headgear
-	2^11 2048 = Costume Mid Headgear
-	2^10 1024 = Costume Top Headgear
 	2^8  256 = Upper Headgear
 	2^8  256 = Upper Headgear
 	2^9  512 = Middle Headgear
 	2^9  512 = Middle Headgear
 	2^0  001 = Lower Headgear
 	2^0  001 = Lower Headgear
@@ -99,6 +96,10 @@ Loc: Equipment's placement. Values are:
 	2^6  064 = Footgear
 	2^6  064 = Footgear
 	2^3  008 = Accessory 1
 	2^3  008 = Accessory 1
 	2^7  128 = Accessory 2
 	2^7  128 = Accessory 2
+	2^10 1024 = Costume Top Headgear
+	2^11 2048 = Costume Mid Headgear
+	2^12 4096 = Costume Low Headgear
+	2^13 8192 = Costume Garment/Robe
 
 
 wLV: Weapon level.
 wLV: Weapon level.
 
 

+ 41 - 8
doc/script_commands.txt

@@ -7696,23 +7696,56 @@ the homunculus must have above 91000 intimacy with its owner.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
+*morphembryo;
+
+This command will try to put the invoking player's Homunculus in an
+uncallable state, required for mutation into a Homunculus S. The player
+will also receive a Strange Embryo (ID 6415) in their inventory if
+successful, which is deleted upon mutation.
+
+The command will fail if the invoking player does not have an evolved
+Homunculus at level 99 or above. The /swt emotion is shown upon failure.
+
+Returns 1 upon success and 0 for all failures.
+
+---------------------------------------
+
 *hommutate {<ID>};
 *hommutate {<ID>};
 
 
-This command will try to evolve the current player's homunculus into the
-new Homunculus S. If it doesn't work, the /swt emotion is shown.
+This command will try to mutate the invoking player's Homunculus into
+a Homunculus S. The Strange Embryo (ID 6415) is deleted upon success.
+
+The command will fail if the invoking player does not have an evolved
+Homunculus at level 99 or above, if it is not in the embryo state
+(from the 'morphembryo' command), or if the invoking player does not
+possess a Strange Embryo. The /swt emotion is shown upon failure.
 
 
-To mutate a homunculus, the invoking player must have an evolved
-homunculus and it must be at least level 99.
+If the optional parameter <ID> is set, the invoking player's Homunculus
+will change into the specified Homunculus ID. Otherwise, a random Homunculus S
+will be chosen. See 'db/homunculus_db.txt' for a full list of IDs.
 
 
-If the optional parameter <ID> is set, the invoking player's homunculus will
-change into the given homunculus ID. Otherwise, a random Homunculus S
-will be chosen.
+Returns 1 upon success and 0 for all failures.
+
+---------------------------------------
+
+*checkhomcall()
+
+This function checks if the attached player's Homunculus is active,
+and will return the following values:
+ -1: The player has no Homunculus.
+  0: The player's Homunculus is active.
+  1: The player's Homunculus is vaporized.
+  2: The player's Homunculus is in morph state.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
 *gethominfo(<type>)
 *gethominfo(<type>)
 
 
-This function works as a direct counterpart of 'getpetinfo':
+This function will return Homunculus information for the Homunculus of the
+invoking character, regardless of its vaporize state. It returns zero or
+"null" if the player does not own a Homunculus.
+
+Valid types are:
  0 - Homunculus unique ID
  0 - Homunculus unique ID
  1 - Homunculus Class
  1 - Homunculus Class
  2 - Name
  2 - Name

+ 1 - 1
npc/quests/skills/alchemist_skills.txt

@@ -1205,7 +1205,7 @@ lhz_in01,224,140,3	script	Kellasus#qsk_al	57,{
 		mes "" + strcharinfo(0) + ".";
 		mes "" + strcharinfo(0) + ".";
 		next;
 		next;
 		set bioeth,13;
 		set bioeth,13;
-		skill 238,1,0;
+		skill "AM_BIOETHICS",1,0;
 		mes "[Kellasus]";
 		mes "[Kellasus]";
 		mes "Ah...";
 		mes "Ah...";
 		mes "" + strcharinfo(0) + ".";
 		mes "" + strcharinfo(0) + ".";

+ 10 - 9
npc/re/mobs/dungeons/dew_dun.txt

@@ -3,27 +3,28 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= Chilly
 //= Chilly
 //===== Current Version: =====================================
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //===== Compatible With: =====================================
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: =========================================
 //===== Description: =========================================
 //= Official kRO monster spawns
 //= Official kRO monster spawns
 //===== Additional Comments: =================================
 //===== Additional Comments: =================================
 //= 1.0 First Release
 //= 1.0 First Release
+//= 1.1 Updated spawn delays. [Euphy]
 //============================================================
 //============================================================
 
 
 //==================================================
 //==================================================
 // dew_dun01 - Volcanic Island of Krakatoa
 // dew_dun01 - Volcanic Island of Krakatoa
 //==================================================
 //==================================================
-dew_dun01,0,0,0,0	monster	Ancient Worm	1305,25,0,0,0
-dew_dun01,0,0,0,0	monster	Gullinbursti	1311,10,0,0,0
-dew_dun01,0,0,0,0	monster	Comodo	2152,70,0,0,0
-dew_dun01,0,0,0,0	boss_monster	Leak	2156,1,7200000,600000,1
+dew_dun01,0,0,0,0	monster	Comodo	2152,70,5000,0,0
+dew_dun01,0,0,0,0	monster	Ancient Worm	1305,25,5000,0,0
+dew_dun01,0,0,0,0	monster	Gullinbursti	1311,10,5000,0,0
+dew_dun01,0,0,0,0	boss_monster	Leak	2156,1,7200000,0,1
 
 
 //==================================================
 //==================================================
 // dew_dun02 - Tina Grace Cave
 // dew_dun02 - Tina Grace Cave
 //==================================================
 //==================================================
-dew_dun02,0,0,0,0	monster	Am Mut	1301,20,0,0,0
-dew_dun02,0,0,0,0	monster	Gajomart	1309,30,0,0,0
-dew_dun02,0,0,0,0	monster	Banaspaty	2154,50,0,0,0
-dew_dun02,0,0,0,0	monster	Butoijo	2155,30,0,0,0
+dew_dun02,0,0,0,0	monster	Banaspaty	2154,50,5000,0,0
+dew_dun02,0,0,0,0	monster	Gajomart	1309,30,5000,0,0
+dew_dun02,0,0,0,0	monster	Am Mut	1301,20,5000,0,0
+dew_dun02,0,0,0,0	monster	Butoijo	2155,30,5000,0,0

+ 21 - 20
npc/re/mobs/dungeons/dic_dun.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= Kisuka
 //= Kisuka
 //===== Current Version: =====================================
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //===== Compatible With: =====================================
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: =========================================
 //===== Description: =========================================
@@ -11,34 +11,35 @@
 //===== Additional Comments: =================================
 //===== Additional Comments: =================================
 //= 1.0 Official spawns from Aegis [Kisuka]
 //= 1.0 Official spawns from Aegis [Kisuka]
 //= 1.1 Added Nightmare Scaraba Hole [Chilly]
 //= 1.1 Added Nightmare Scaraba Hole [Chilly]
+//= 1.2 Updated Nightmare spawns and names. [Euphy]
 //============================================================
 //============================================================
 
 
 //==================================================
 //==================================================
 // dic_dun01 - Underground Passage Kamidal Tunnel
 // dic_dun01 - Underground Passage Kamidal Tunnel
 //==================================================
 //==================================================
-dic_dun01,0,0,0,0	monster	One-Horned Scarab	2083,50,5000,0,0
-dic_dun01,0,0,0,0	monster	Two-Horned Scarab	2084,45,5000,0,0
-dic_dun01,0,0,0,0	monster	Scarab Egg	2088,15,5000,0,0
-dic_dun01,0,0,0,0	monster	Scarab Egg	2089,15,5000,0,0
+dic_dun01,0,0,0,0	monster	One-Horned Scaraba	2083,50,5000,0,0
+dic_dun01,0,0,0,0	monster	Two-Horned Scaraba	2084,45,5000,0,0
+dic_dun01,0,0,0,0	monster	Scaraba Egg	2088,15,5000,0,0
+dic_dun01,0,0,0,0	monster	Scaraba Egg	2089,15,5000,0,0
 
 
 //==================================================
 //==================================================
-// dic_dun02 - Underground Nest Scarab Hole
+// dic_dun02 - Underground Nest Scaraba Hole
 //==================================================
 //==================================================
-dic_dun02,0,0,0,0	monster	Antler Scarab	2085,50,5000,0,0
-dic_dun02,0,0,0,0	monster	Rake Scarab	2086,45,5000,0,0
-dic_dun02,0,0,0,0	monster	Antler Scarab Egg	2090,15,5000,0,0
-dic_dun02,0,0,0,0	monster	Rake Scarab Egg	2091,15,5000,0,0
-dic_dun02,0,0,0,0	boss_monster	Scarab Queen	2087,1,7200000,0,0
+dic_dun02,0,0,0,0	monster	Antler Scaraba	2085,50,5000,0,0
+dic_dun02,0,0,0,0	monster	Rake Scaraba	2086,45,5000,0,0
+dic_dun02,0,0,0,0	monster	Antler Scaraba Egg	2090,15,5000,0,0
+dic_dun02,0,0,0,0	monster	Rake Scaraba Egg	2091,15,5000,0,0
+dic_dun02,0,0,0,0	boss_monster	Scaraba Queen	2087,1,7200000,0,1
 
 
 //==================================================
 //==================================================
 // dic_dun03 - Nightmare Scaraba Hole
 // dic_dun03 - Nightmare Scaraba Hole
 //==================================================
 //==================================================
-dic_dun03,0,0,0,0	monster	Gold One-Horn Scaraba	2161,50,0,0,0
-dic_dun03,0,0,0,0	monster	Gold Two-Horn Scaraba	2162,45,0,0,0
-dic_dun03,0,0,0,0	monster	Gold Antler Scaraba	2163,50,0,0,0
-dic_dun03,0,0,0,0	monster	Gold Rake Scaraba	2164,45,0,0,0
-dic_dun03,0,0,0,0	monster	Gold One-Horn Scaraba Egg	2166,15,0,0,0
-dic_dun03,0,0,0,0	monster	Gold Two-Horn Scaraba Egg	2167,15,0,0,0
-dic_dun03,0,0,0,0	monster	Gold Antler Scaraba Egg	2168,15,0,0,0
-dic_dun03,0,0,0,0	monster	Gold Rake Scaraba Egg	2169,15,0,0,0
-dic_dun03,0,0,0,0	boss_monster	Gold Queen Scaraba	2165,1,7200000,600000,1
+dic_dun03,0,0,0,0	monster	Gold One-Horn Scaraba Egg	2166,10,5000,0,0
+dic_dun03,0,0,0,0	monster	Gold Two-Horn Scaraba Egg	2167,10,5000,0,0
+dic_dun03,0,0,0,0	monster	Gold Antler Scaraba Egg	2168,10,5000,0,0
+dic_dun03,0,0,0,0	monster	Gold Rake Scaraba Egg	2169,10,5000,0,0
+dic_dun03,0,0,0,0	monster	Gold One-Horn Scaraba	2161,30,5000,0,0
+dic_dun03,0,0,0,0	monster	Gold Two-Horn Scaraba	2162,30,5000,0,0
+dic_dun03,0,0,0,0	monster	Gold Antler Scaraba	2163,40,5000,0,0
+dic_dun03,0,0,0,0	monster	Gold Rake Scaraba	2164,40,5000,0,0
+dic_dun03,0,0,0,0	boss_monster	Gold Queen Scaraba	2165,1,7200000,0,1

+ 5 - 4
npc/re/mobs/fields/dewata.txt

@@ -3,18 +3,19 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= Chilly
 //= Chilly
 //===== Current Version: =====================================
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //===== Compatible With: =====================================
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: =========================================
 //===== Description: =========================================
 //= Official kRO monster spawns
 //= Official kRO monster spawns
 //===== Additional Comments: =================================
 //===== Additional Comments: =================================
 //= 1.0 First Release
 //= 1.0 First Release
+//= 1.1 Updated spawn delays. [Euphy]
 //============================================================
 //============================================================
 
 
 //==================================================
 //==================================================
 // dew_fild01 - Dewata Field Tribal Village
 // dew_fild01 - Dewata Field Tribal Village
 //==================================================
 //==================================================
-dew_fild01,0,0,0,0	monster	Argiope	1099,45,0,0,0
-dew_fild01,0,0,0,0	monster	Alnoldi	2151,60,0,0,0
-dew_fild01,0,0,0,0	monster	Cendrawasih	2153,10,0,0,0
+dew_fild01,0,0,0,0	monster	Alnoldi	2151,60,5000,0,0
+dew_fild01,0,0,0,0	monster	Argiope	1099,45,5000,0,0
+dew_fild01,0,0,0,0	monster	Cendrawasih	2153,10,5000,0,0

+ 0 - 144
npc/re/quests/homu_s.txt

@@ -1,144 +0,0 @@
-//===== rAthena Script ======================================= 
-//= Homunculus S Quest
-//===== By: ================================================== 
-//= Masao
-//===== Current Version: ===================================== 
-//= 1.1
-//===== Compatible With: ===================================== 
-//= rAthena SVN
-//===== Description: ========================================= 
-//= Evolves an Homunculus which is at least Level 99 to the
-//= new Homunculus S Class.
-//===== Additional Comments: ================================= 
-//= 1.0 First Version. The actual changing dialog is currently
-//=     customized. [Masao]
-//= 1.1 Cleaning. [Euphy]
-//============================================================ 
-
-job3_gen01,12,44,4	script	Viorel#job3_gen01	542,{
-
-	if((Class != Job_Genetic) && (Class != Job_Genetic_T) && (Class != Job_Baby_Genetic)){
-		mes "[Viorel]";
-		mes "^FF4800Homunculus^000000 research requires a lot of time and funding.";
-		mes "However, I believe passion is the most important factor.";
-		next;
-		switch(select("End conversation.:What are you talking about?:Why are you always standing there?")) {
-		case 1:
-			mes "[Viorel]";
-			mes "So long~!";
-			close;
-		case 2:
-			mes "[Viorel]";
-			mes "You see, ^006400Alchemists^000000 have an inquisitive nature.";
-			mes "People like me, especially, even think of creating life itself.";
-			next;
-			mes "[Viorel]";
-			mes "You'd have to research ^FF4800Homunculus^000000 to understand.";
-			mes "Now, if you'll excuse me~!";
-			close;
-		case 3:
-			emotion 4,0;
-			mes "[Viorel]";
-			mes "What, is it so strange to see an Alchemist in their own lab?";
-			mes "How so?";
-			close;
-		}
-	}
-	mes "[Viorel]";
-	mes "Hello "+strcharinfo(0)+",";
-	mes "what can I do for a fellow Alchemist like you?";
-	next;
-	switch(select("I want to evolve my Homunculus:About Homunculus S:Cancel")){
-	case 1:
-		mes "[Viorel]";
-		if(!getskilllv("AM_BIOETHICS")){
-			mes "I'm sorry, but you must know the Skill Bioethics! Otherwise I can't let your Homunculus evolve into a Homunculus S.";
-			close;
-		}
-		if(!gethominfo(1)){
-			mes "You don't even have a Homunculus!";
-			close;
-		}
-		if(gethominfo(1) < 6009){
-			mes "You must have an evolved Homunculus, or you can't turn it into the new Homunculus S.";
-			close;
-		}
-		if(gethominfo(6) < 99){
-			mes "Your Homunculus must be level 99 to evolve into a Homuculus S!";
-			mes "Come back after you've trained your Homunculus a little bit more.";
-			close;
-		}
-		if(gethominfo(1) == 6048 || gethominfo(1) == 6049 || gethominfo(1) == 6050 || gethominfo(1) == 6051 || gethominfo(1) == 6052){
-			mes "Your Homunculus S looks great!";
-			mes "I hope you will experience many great adventures with it!";
-			close;
-		}
-		mes "Great, it seems like you're all ready to get your Homunculus to the next level!";
-		next;
-		mes "[Viorel]";
-		mes "Now you can either directly change your Homunculus to a random Homunculus S or you can donate a little fee of 50,000z";
-		mes "to the Alchemist Guild. For this you'll be able to change your Homunculus into your desired Homunculus S Class!";
-		mes "So, what do you think?";
-		next;
-		switch(Select("I want to donate.:I don't want to donate.:Cancel")){
-		case 1:
-			if(Zeny < 50000){
-				mes "[Viorel]";
-				mes "Haha, nice try my friend! But you don't even have the 50,000z to donate!";
-				mes "Come back if you have the Zeny.";
-				close;
-			}
-			mes "[Viorel]";
-			mes "Alright, now please tell me which Homunculus you'd like to have:";
-			next;
-			set .@i, select("Eira:Bayeri:Sera:Dieter:Elanor:Cancel");
-			if (.@i == 6) {
-				mes "[Viorel]";
-				mes "So long~!";
-				close;
-			}
-		case 2:
-			mes "[Viorel]";
-			mes "Ok, it's all set! Now just give me a moment!";
-			next;
-			mes "[Viorel]";
-			mes "Abra...";
-			next;
-			mes "[Viorel]";
-			mes "Kadabra...";
-			next;
-			mes "[Viorel]";
-			mes "Simsala!";
-			mes "...";
-			mes "Oh, sorry... wrong game!";
-			next;
-			mes "[Viorel]";
-			mes "Here you go! Your new Homunculus S!";
-			if (.@i) {
-				hommutate 6047+.@i;
-				set Zeny,Zeny - 50000;
-			}
-			else hommutate;
-			close;
-		case 3:
-			mes "[Viorel]";
-			mes "So long~!";
-			close;
-		}
-	case 2:
-		mes "[Viorel]";
-		mes "The Homunculus S are the new and improved versions of the current Homunculus you know.";
-		mes "These new Homunculus have been made because the monsters in our world keep getting stronger and";
-		mes "stronger, and our current Homunculus are just not able to keep up with them anymore.";
-		next;
-		mes "[Viorel]";
-		mes "But since we're Alchemists and we don't want to abandon our precious Homunculus, we've discovered a way";
-		mes "to improve their skills and strength in order to keep them by our side, and joining us once more";
-		mes "in battle! Isn't that great?";
-		close;
-	case 3:
-		mes "[Viorel]";
-		mes "So long~!";
-		close;
-	}
-}

+ 1361 - 0
npc/re/quests/homun_s.txt

@@ -0,0 +1,1361 @@
+//===== rAthena Script ======================================= 
+//= Homunculus S Mutation Quest
+//===== By: ================================================== 
+//= Euphy
+//===== Current Version: ===================================== 
+//= 1.2
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= Genetic quest to mutate a level 99 evolved Homunculus
+//= into a Homunculus S.
+//===== Additional Comments: ================================= 
+//= 1.0 First Version, entirely custom. [Masao]
+//= 1.1 Cleaning. [Euphy]
+//= 1.2 Replaced with official script. [Euphy]
+//============================================================ 
+
+// Main NPCs
+//============================================================
+job3_gen01,12,44,3	script	Viorel#job3_gen01	542,{
+	if (countitem(6415)) {
+		if (Class == Job_Genetic || Class == Job_Genetic_T || Class == Job_Baby_Genetic) {
+			disable_items;
+			if (checkquest(4159) == -1 && checkquest(4160) == -1) {
+				mes "[Viorel]";
+				mes "Why are you here?";
+				mes "Shouldn't you be at ^005DFFJeyna^000000's house?";
+				close2;
+				for(set .@i,4154; .@i<=4160; set .@i,.@i+1) {
+					if (checkquest(.@i) > -1)
+						erasequest .@i;
+				}
+				setquest 4154;
+				setquest 4159;
+				morphembryo;
+				if (countitem(6415) == 0)
+					getitem 6415,1; //Strange_Embryo
+				else if (countitem(6415) > 1)
+					delitem 6415, (countitem(6415) - 1); //Strange_Embryo
+				warp "que_house_s",63,41;
+				end;
+			}
+			enable_items;
+		} else if (Class == Job_Novice_High || Class == Job_Merchant_High || Class == Job_Alchemist || Class == Job_Creator) {
+			emotion e_what;
+			mes "[Viorel]";
+			mes "I don't know what's going on, but the way I remember it you were supposed to be qualified to research ^FF4800Homunculus^000000.";
+			next;
+			mes "[Viorel]";
+			mes "Whatever the reason, you're not able to continue the research on ^FF4800Homunculus^000000.";
+			mes "Come back after you become a ^005DFFGenetic^000000 and have obtained a ^0000FFBioethics^000000.";
+			close;
+		} else {
+			delitem 6415, countitem(6415); //Strange_Embryo
+			mes "[Viorel]";
+			mes "Wait, that embryo you have seems a little strange.";
+			next;
+			mes "[Viorel]";
+			mes "Unless you have a job researching ^FF4800Homunculus^000000....";
+			mes "It will be of no help to you what so ever.";
+			next;
+			mes "[Viorel]";
+			mes "I'm in charge of managing ^0000FFStrange Embryo^000000 so I'll take care of that for you.";
+			mes "No offense, and I'm not doing anything bad here.";
+			close;
+		}
+	}
+	if ((Class == Job_Genetic || Class == Job_Genetic_T || Class == Job_Baby_Genetic) && (checkquest(4154) > -1)) {
+		if ((checkquest(4155) > -1) || (checkquest(4160) > -1)) {
+			mes "[Viorel]";
+			mes "Weather's great.";
+			next;
+			callsub L_CheckHomunculus;
+			mes "[Viorel]";
+			mes "Ready to go to my house?";
+			next;
+			switch(select("Go to ^005DFFViorel^000000's house.:Don't go.")) {
+			case 1:
+				mes "[Viorel]";
+				mes "Good choice.";
+				mes "Now, close your eyes for a second...";
+				close2;
+				warp "que_house_s",19,42;
+				end;
+			case 2:
+				mes "[Viorel]";
+				mes "Come back when you're ready.";
+				mes "You must come with the ^FF4800Homunculus^000000.";
+				close;
+			}
+		} else {
+			mes "[Viorel]";
+			mes "Why are you here?";
+			mes "Shouldn't you be at ^005DFFJeyna^000000's house?";
+			next;
+			callsub L_CheckHomunculus;
+			mes "[Viorel]";
+			mes "Now, ready to go to ^005DFFJeyna^000000?";
+			next;
+			switch(select("Go to ^005DFFJeyna^000000's room.:Don't go.")) {
+			case 1:
+				mes "[Viorel]";
+				mes "Good choice.";
+				mes "Now, close your eyes for a second...";
+				close2;
+				warp "que_house_s",63,41;
+				end;
+			case 2:
+				mes "[Viorel]";
+				mes "Come back when you're ready.";
+				mes "You must come with the ^FF4800Homunculus^000000.";
+				close;
+			}
+		}
+	}
+	if (BaseJob == Job_Merchant) {
+		mes "[Viorel]";
+		mes "I used to be a merchant once, just like you.";
+		mes "I'm researching on ^FF4800Homunculus^000000.";
+		next;
+		mes "[Viorel]";
+		mes "If you're interested in ^FF4800Homunculus^000000, become an ^005DFFAlchemist^000000 or a ^005DFFCreator^000000.";
+		close;
+ 	} else if (BaseJob == Job_Alchemist && Class < Job_Genetic) {
+		mes "[Viorel]";
+		mes "I've spent lots of time and energy on Homunculus.";
+		mes "If you feel like you're at a dead end, come back next time with a ^FF4800Homunculus^000000.";
+		next;
+		mes "[Viorel]";
+		mes "Oh. Of course you need to have the suitable potentials. You could probably prove yourself once you become a ^FF4800Genetic^000000.";
+		close;
+	} else if (Class == Job_Genetic || Class == Job_Genetic_T || Class == Job_Baby_Genetic) {
+		if (gethominfo(6) >= 99 && (gethominfo(1) >= 6009 && gethominfo(1) <= 6016)) { // Level 99+ evolved Homunculus
+			mes "[Viorel]";
+			mes "Oh, great~!";
+			mes "You have a ^FF4800Homunculus^000000.";
+			mes "With passion invested in its research we can make them better.";
+			next;
+			mes "[Viorel]";
+			mes "I must speak to you in private. Would you mind going to my house with me?";
+			next;
+			switch(select("Go to ^005DFFViorel^000000's home.:Stay here.")) {
+			case 1:
+				mes "[Viorel]";
+				mes "Good choice.";
+				mes "Now, close your eyes for a second...";
+				close2;
+				setquest 4154;
+				setquest 4155;
+				warp "que_house_s",19,42;
+				end;
+			case 2:
+				mes "[Viorel]";
+				mes "If you feel like you're at a dead end, come back next time with a ^FF4800Homunculus^000000.";
+				close;
+			}
+		} else if (gethominfo(6) >= 99 && (gethominfo(1) >= 6048 && gethominfo(1) <= 6052)) { // Level 99+ mutated Homunculus-S
+			mes "[Viorel]";
+			mes "Hello again.";
+			mes "Perhaps you may be interested";
+			mes "in the newly created ^FF4800Homunculus^000000,";
+			mes "born from the new ^006400Homunculus Mutation System^000000?";
+			next;
+			switch(select("Nope. Good bye.:Please, I'm busy.:That's exactly what I wanted to hear.:Why are you always standing there?")) {
+			case 1:
+				emotion e_heh;
+				mes "[Viorel]";
+				mes "Okay.";
+				mes "Good seeing you.";
+				mes "Good bye then~!";
+				close;
+			case 2:
+				emotion e_omg;
+				mes "[Viorel]";
+				mes "!!!!";
+				mes "I... I see.";
+				mes "I thought you were here to see me.";
+				close;
+			case 3:
+				emotion e_ic;
+				mes "[Viorel]";
+				mes "Just as I thought.";
+				mes "Let's have a look at the notes my dear friend Jeyna left.";
+				next;
+				playbgm "30.mp3"; // One Step Closer
+				callfunc "F_HomMutateInfo","[Memo Pad Notes]";
+				mes "[Viorel]";
+				mes "Hmm.";
+				mes "Well, that's all there is to it.";
+				mes "It's up to you to find out more.";
+				close2;
+				playbgm "08.mp3"; // Theme of Prontera
+				end;
+			case 4:
+				emotion e_swt;
+				mes "[Viorel]";
+				mes "No, I do not stand here every day.";
+				mes "But why do YOU stand there every day?";
+				next;
+				mes "[Viorel]";
+				mes "What?";
+				mes "No, the way I see it";
+				mes "you seem to be here every time I'm here.";
+				close;
+			}
+		} else {
+			if (gethominfo(1) >= 6009) { // Evolved Homunculus
+				mes "[Viorel]";
+				mes "Hmm, you seem to have a special bond with your ^FF4800Homunculus^000000.";
+				next;
+				mes "[Viorel]";
+				mes "Come back to me when that ^FF4800Homunculus^000000 reaches ^0000FFlevel 99^000000.";
+				close;
+			} else {
+				mes "[Viorel]";
+				mes "You do not yet possess an evolved ^FF4800Homunculus^000000...";
+				mes "As you may well know about evolution:";
+				next;
+				mes "[Viorel]";
+				mes "Using the ^0000FFStone of Sage^000000 when intimacy level is above ^006400Intimate^000000, the ^FF4800Homunculus^000000 goes through ^006400Evolution^000000.";
+				close;
+			}
+		}
+	}
+	mes "[Viorel]";
+	mes "^FF4800Homunculus^000000 research requires a lot of time and funding.";
+	mes "However, I believe passion is the most important factor.";
+	next;
+	switch(select("End conversation.:What are you talking about?:Why are you always standing there?")) {
+	case 1:
+		mes "[Viorel]";
+		mes "So long~!";
+		close;
+	case 2:
+		mes "[Viorel]";
+		mes "You see, ^006400Alchemists^000000 have an inquisitive nature.";
+		mes "People like me, especially, even think of creating life itself.";
+		next;
+		mes "[Viorel]";
+		mes "You'd have to research ^FF4800Homunculus^000000 to understand.";
+		mes "Now, if you'll excuse me~!";
+		close;
+	case 3:
+		emotion e_swt;
+		mes "[Viorel]";
+		mes "What, is it so strange to see an Alchemist in their own lab?";
+		mes "How so?";
+		close;
+	}
+	end;
+L_CheckHomunculus:
+	if (gethominfo(6) < 99 || (gethominfo(1) < 6009 || gethominfo(1) > 6016)) { // Not level 99+ evolved Homunculus
+		mes "[Viorel]";
+		mes "Huh?";
+		mes "Where's the ^FF4800Homunculus^000000 you used to have?";
+		mes "Perhaps I've mistaken it for something else...";
+		next;
+		mes "[Viorel]";
+		mes ".......";
+		mes " ";
+		mes "(Seems to be thinking about something.)";
+		next;
+		emotion e_heh;
+		mes "[Viorel]";
+		mes "Ha ha~";
+		mes "I think I've mistaken you for someone else.";
+		mes "If you'll excuse me.";
+		close;
+	}
+	return;
+}
+
+que_house_s,24,47,3	script	Viorel#homun_s	542,{
+	if (checkquest(4155) > -1) {
+		emotion e_dum;
+		mes "[Viorel]";
+		mes "Good.";
+		mes "I see that you mean business.";
+		next;
+		playbgm "33.mp3"; // Yuna Song
+		mes "[Viorel]";
+		mes "Maybe you'll agree.";
+		mes "Currently, your ^FF4800Homunculus^000000 is not in its perfect state.";
+		next;
+		mes "[Viorel]";
+		mes "These days, studies on the growth of the ^FF4800Homunculus^000000 are actively taking place.";
+		mes "But, I do believe that I have found something special.";
+		next;
+		mes "[Viorel]";
+		mes "In order to break the current limitations of the ^FF4800Homunculus^000000, mutations need to happen.";
+		next;
+		switch(select("Like, biological experiments...?!:Well, yeah, naturally.:I don't want to hurt my Homunculus!")) {
+		case 1:
+			emotion e_swt2;
+			mes "[Viorel]";
+			mes "Don't look so surprised.";
+			mes "Ethics in biology are kind of blurry right now, right?";
+			mes "I mean...";
+			next;
+			mes "[Viorel]";
+			mes "It's my duty to study the true potential of the ^FF4800Homunculus^000000.";
+			next;
+			mes "[Viorel]";
+			mes "So far, Homunculus haven't demonstrated their full potential, but I know that I am close to a breakthrough.";
+			next;
+			break;
+		case 2:
+			emotion e_sigh;
+			mes "[Viorel]";
+			mes "Yes.";
+			mes "I'm glad you're not upset.";
+			mes "Mutation,";
+			mes "a word that sparks evil in the minds of the ordinary,";
+			mes "which made my research very difficult to proceed with.";
+			next;
+			mes "[Viorel]";
+			mes "Do you remember?";
+			mes "^005DFFKellasus^000000 of ^8B4513Lighthalzen^000000, the pioneer of ^FF4800Homunculus^000000 research.";
+			next;
+			mes "[Viorel]";
+			mes "I believe that this research fulfills the promise made with ^005DFFKellasus^000000, the giver of knowledge and belief.";
+			next;
+			break;
+		case 3:
+			emotion e_swt;
+			mes "[Viorel]";
+			mes "I understand your concern.";
+			mes "But I want to assure you that this Mutation does not harm or hurt your ^FF4800Homunculus^000000.";
+			next;
+			mes "[Viorel]";
+			mes "On the contrary, the ^FF4800Homunculus^000000 of today are in pain from imperfection, unable to live up to their supposed potentials.";
+			mes "Moreover, those ^FF4800Homunculus^000000 were often abandoned.";
+			next;
+			mes "[Viorel]";
+			mes "Don't get me wrong, I study the ^FF4800Homunculus^000000 because I love them.";
+			next;
+			break;
+		}
+		mes "[Viorel]";
+		mes "Well, by the way...";
+		mes "I have found this new mutation to be quite stable.";
+		next;
+		mes "[Viorel]";
+		mes "^006400The technology exists,";
+		mes "and they will likely have new";
+		mes "skills when mutated...^000000";
+		next;
+		mes "[Viorel]";
+		mes "The minor side effect...";
+		mes "^006400Their appearance will change^000000.";
+		mes "But I think you'll find that pretty satisfying.";
+		next;
+		mes "[Viorel]";
+		mes "I quote from ^005DFFKassibian^000000, an expert in ^FF4800Homunculus^000000 techniques,";
+		mes "^006400The truth is not in a single form~!^000000";
+		mes "Ha ha.";
+		next;
+		emotion e_flash;
+		mes "[Viorel]";
+		mes "I know it's a little abrupt, but...";
+		mes "How about changing your ^FF4800Homunculus^000000 into something incredible with my marvelous achievement, the ^006400Homunculus Mutation System^000000?";
+		next;
+		switch(select("Explore the ^006400Homunculus Mutation System^000000.:Cancel.")) {
+		case 1:
+			emotion e_no1;
+			mes "[Viorel]";
+			mes "Good choice.";
+			mes "Success lurks outside the box of conventional thinking, right?";
+			next;
+			mes "[Viorel]";
+			mes "The first person to help with the research is ^005DFFJeyna^000000.";
+			mes "I'll send you to ^005DFFJeyna^000000.";
+			mes "There, you'll learn more about the new ^0000FFHomunculus^000000.";
+			close2;
+			setquest 4156;
+			erasequest 4155;
+			warp "que_house_s",63,41;
+			end;
+		case 2:
+			emotion e_dots;
+			mes "[Viorel]";
+			mes "I don't see why you hesitate.";
+			mes "I am not trying to deceive you.";
+			mes "Maybe you need some time to think about it?";
+			next;
+			switch(select("Think about it.:I'm just going to walk away.")) {
+			case 1:
+				mes "[Viorel]";
+				mes "We'll talk in a bit then.";
+				close;
+			case 2:
+				emotion e_otl;
+				mes "[Viorel]";
+				mes "Shame.";
+				mes "However, I respect your opinion.";
+				mes "I'll send you back to the ^8B4513Laboratory^000000.";
+				close2;
+				erasequest 4154;
+				erasequest 4155;
+				warp "job3_gen01",12,47;
+				end;
+			}
+		}
+	} else if (checkquest(4160) > -1) {
+		playbgm "33.mp3"; // Yuna Song
+		mes "[Viorel]";
+		mes "The ^FF4800Homunculus^000000 I saw before has returned to its ^0000FFembryo^000000 state.";
+		mes "A little strange, but...";
+		mes "You don't have to worry about it.";
+		next;
+		mes "[Viorel]";
+		mes "By the way...";
+		mes "I forgot to tell you something.";
+		mes "In order to stabilize the Mutation process, I need some materials first.";
+		next;
+		mes "[Viorel]";
+		mes "Fortunately, you don't have to find them yourself because I have them here already..";
+		mes "But, I'll need ^FF000050,000 zeny^000000, you know, as a service fee.";
+		next;
+		mes "[Viorel]";
+		mes "I wish that I could do it for free but I'm not exactly made of money, you know.";
+		mes "That and I lack any investors to support my research at the moment.";
+		next;
+		mes "[Viorel]";
+		mes "In fact, if I had enough zeny to continue my research, then I could solve a lot of my problems...";
+		next;
+		mes "[Viorel]";
+		mes "Anyways, you can try to do this with or without the stabilization process. It's all up to you.";
+		next;
+		mes "[Viorel]";
+		mes "If you choose the unstable";
+		mes "mutation, I can't guarentee what kind of Homunculus you're going to get.";
+		mes "Anyways, it's up to you.";
+		next;
+		switch(select("Mutation stabilization (50,000 zeny):Unstable mutation")) {
+		case 1:
+			if (Zeny < 50000) {
+				mes "[Viorel]";
+				mes "I don't think you have ^FF000050 thousand Zeny^000000 with you right now.";
+				mes "Please bring enough Zeny.";
+				mes "I'll be waiting.";
+				mes "Want me to send you back to the ^8B4513Laboratory^000000?";
+				next;
+				switch(select("No thanks.:Yes. Send me back to the Lab.")) {
+				case 1:
+					mes "[Viorel]";
+					mes "Alright.";
+					mes "I'll see you in a bit.";
+					close;
+				case 2:
+					mes "[Viorel]";
+					mes "Alright.";
+					mes "I'll be waiting at the ^8B4513Laboratory^000000.";
+					close2;
+					warp "job3_gen01",12,47;
+					end;
+				}
+			}
+			emotion e_no1;
+			playbgm "19.mp3"; // Under the Ground
+			mes "[Viorel]";
+			mes "Good choice.";
+			mes "Choose from the different types of ^0000FFHomunculus^000000.";
+			next;
+			switch(select("Eira:Sera:Dieter:Bayeri:Eleanor")) {
+			case 1:
+				cutin "Mer_Eira_Card",3;
+				set .@Homunculus,6048; //MER_EIRA
+				break;
+			case 2:
+				cutin "Mer_Sera_Card",3;
+				set .@Homunculus,6050; //MER_SERA
+				break;
+			case 3:
+				cutin "Mer_Dieter_Card",3;
+				set .@Homunculus,6051; //MER_DIETER
+				break;
+			case 4:
+				cutin "Mer_Bayeri_Card",3;
+				set .@Homunculus,6049; //MER_BAYERI
+				break;
+			case 5:
+				cutin "Mer_Eleanor_Card",3;
+				set .@Homunculus,6052; //MER_ELEANOR
+				break;
+			}
+			mes "[Viorel]";
+			mes "Are you sure?";
+			next;
+			if(select("Yes.:No.") == 2) {
+				cutin "",255;
+				playbgm "33.mp3"; // Yuna Song
+				mes "[Viorel]";
+				mes "I see.";
+				mes "Give it more time to think.";
+				close;
+			}
+			cutin "",255;
+			mes "[Viorel]";
+			mes "Excellent!";
+			mes "Let's get on with it.";
+			next;
+			specialeffect2 EF_BASH;
+			mes "[Viorel]";
+			mes "Now focus~!";
+			mes "You... need...";
+			mes "... concentration.";
+			next;
+			specialeffect2 EF_PROVIDENCE;
+			mes "[Viorel]";
+			mes "Good. Almost done!";
+			next;
+			specialeffect2 EF_SUI_EXPLOSION;
+			set Zeny, Zeny - 50000;
+			hommutate .@Homunculus;
+			break;
+		case 2:
+			emotion e_hmm;
+			mes "[Viorel]";
+			mes "So, your choice is the Unstable Mutation Process.";
+			mes "You believe in destiny?";
+			mes "Seriously...";
+			mes "Do you really wish to proceed";
+			mes "with the process of random outcome?";
+			next;
+			if(select("Go ahead. (Random Mutation):Cancel.") == 2) {
+				playbgm "33.mp3"; // Yuna Song
+				mes "[Viorel]";
+				mes "I see.";
+				mes "Give it more time to think.";
+				close;
+			}
+			emotion e_dots;
+			mes "[Viorel]";
+			mes "Hmm...";
+			mes "The exploration of knowledge";
+			mes "is full of surprises.";
+			mes ".......";
+			next;
+			emotion e_heh;
+			mes "[Viorel]";
+			mes "Ha ha.";
+			mes "Hey, I feel like a Blacksmith!";
+			mes "Now let's get on with it.";
+			next;
+			specialeffect2 EF_BASH;
+			mes "[Viorel]";
+			mes "Now focus~!";
+			mes "You... need...";
+			mes "... concentration.";
+			next;
+			specialeffect2 EF_PRESSURE;
+			mes "[Viorel]";
+			mes "Concentrate a little more!";
+			next;
+			specialeffect2 EF_PROVIDENCE;
+			mes "[Viorel]";
+			mes "Good. Almost done!";
+			next;
+			specialeffect2 EF_SUI_EXPLOSION;
+			hommutate;
+			break;
+		}
+		erasequest 4160;
+		erasequest 4154;
+		emotion e_ho;
+		playbgm "64.mp3"; // One Fine Day
+		mes "[Viorel]";
+		mes "Okay, Mutation Complete.";
+		mes "Phew... Didn't skip a heartbeat, did you?";
+		next;
+		mes "[Viorel]";
+		mes "Remember what ^005DFFKellasus^000000 said?";
+		mes "To the doorstep of the truth...";
+		mes "We must see for ourselves";
+		mes "the path that leads to it.";
+		next;
+		mes "[Viorel]";
+		mes "^0000FF" + strcharinfo(0) + "^000000,";
+		mes "I haven't known you";
+		mes "for a very long time,";
+		mes "but I get the feeling that";
+		mes "you'll achieve great things.";
+		next;
+		mes "[Viorel]";
+		mes "Good luck on you adventures.";
+		mes "I hope that your new ^FF4800Homunculus^000000 will excel under your care.";
+		next;
+		mes "[Viorel]";
+		mes "And don't you forget.";
+		mes "Our research";
+		mes "has only just begun~!";
+		close;
+	} else {
+		for(set .@i,4154; .@i<=4160; set .@i,.@i+1) {
+			if (checkquest(.@i) > -1)
+				erasequest .@i;
+		}
+		mes "[Viorel]";
+		mes "Now that all the work is done, I ask you to take your leave.";
+		mes "I need to recuperate.";
+		close2;
+		warp "job3_gen01",12,47;
+		end;
+	}
+}
+
+que_house_s,80,42,3	script	Jeyna#homun_s	558,{
+	if (checkquest(4156) > -1) {
+		playbgm "28.mp3"; // You're in Ruins
+		emotion e_gasp;
+		mes "[Jeyna]";
+		mes "Welcome.";
+		mes "I just got word from ^005DFFViorel^000000 that you were coming.";
+		next;
+		emotion e_hmm;
+		mes "[Jeyna]";
+		mes "By the way...";
+		mes "Did he convince you to do something...?";
+		mes "He does have a way with words.";
+		next;
+		mes "[Jeyna]";
+		mes "He needs them because Alchemists are such awkward people.";
+		emotion e_sigh;
+		next;
+		mes "[Jeyna]";
+		mes "Anyways~";
+		mes "^0000FF"+strcharinfo(0)+"^000000 and ^005DFFViorel^000000 seem like two peas in a pod.";
+		next;
+		emotion e_heh;
+		mes "[Jeyna]";
+		mes "Hahaha~ No offense.";
+		mes "I think it's a good thing.";
+		mes "Oh, yes.";
+		mes "You're here for the ^FF4800Homunculus^000000 Mutation.";
+		next;
+		mes "[Jeyna]";
+		mes "While I do some preparation,";
+		mes "why don't you take a look at that board?";
+		mes "The ^006400Homunculus Mutation System^000000 has ^0000FF5 different types^000000 of new mutations.";
+		next;
+		emotion e_gasp,0,"Magic Board#homun_s";
+		mes "[Jeyna]";
+		mes "Your ^FF4800Homunculus^000000 can mutate into any of the 5 different forms.";
+		next;
+		emotion e_ic;
+		mes "[Jeyna]";
+		mes "Let's see...";
+		mes "The ^006400Homunculus Mutation System^000000 includes new evolutions of the normal ^0000FFHomunculus^000000.";
+		mes "After they mutate, all previously learned skills will also remain.";
+		next;
+		mes "[Jeyna]";
+		mes "In other words...";
+		mes "Even if you change the magic wielder ^FF4800Vanilmirth^000000 to a fighter type,";
+		mes "skills such as Caprice will be";
+		mes "^006400retained and usable even after Mutation^000000.";
+		next;
+		emotion e_gasp,0,"Magic Board#homun_s";
+		mes "[Jeyna]";
+		mes "Take a look at the Magic Board behind me and decide for yourself.";
+		close2;
+		setquest 4157;
+		erasequest 4156;
+		end;
+	} else if (checkquest(4157) > -1) {
+		emotion e_what;
+		mes "[Jeyna]";
+		mes "Take a look at the board behind me, on the right.";
+		close2;
+		emotion e_gasp,0,"Magic Board#homun_s";
+		end;
+	} else if (checkquest(4158) > -1) {
+		playbgm "28.mp3"; // You're in Ruins
+		disable_items;
+		mes "[Jeyna]";
+		mes "Okay, I'm ready too.";
+		mes "In order to revert the process now, I need the Homunculus in its embryo form.";
+		next;
+		callsub L_CheckHomunculus;
+		if (checkweight(6415,1) == 0) {
+			mes "[Jeyna]";
+			mes "But,";
+			mes "You don't have enough space to carry an ^0000FFembryo^000000.";
+			mes "Please come back with enough space in your bag.";
+			next;
+			mes "[Jeyna]";
+			mes "Please return to the ^8B4513Laboratory^000000.";
+			mes "You can find ^005DFFViorel^000000 at the ^8B4513Laboratory^000000 once you empty your bag.";
+			next;
+			mes "[Jeyna]";
+			mes "When you're done with emptying your bag, ask ^005DFFViorel^000000 to send you back here.";
+			mes "Go on and empty your bag~!";
+			close2;
+			warp "job3_gen01",12,47;
+			end;
+		}
+		mes "[Jeyna]";
+		mes "Now's about time for a decision.";
+		mes "To go through the Mutation to the new ^0000FFHomunculus^000000 with the Homunculus Mutation System,";
+		mes "you need to go through the process of regression to turn the Homunculus back to its ^0000FFembryo^000000 state.";
+		next;
+		mes "[Jeyna]";
+		mes "And...";
+		mes "^006400You cannot use the ability Call Homunculus until the process is complete.^000000";
+		mes "It won't take long, so don't wander off.";
+		next;
+		mes "[Jeyna]";
+		mes "So, please decide.";
+		mes "Do you want to proceed with the new ^0000FFHomunculus Mutation System^000000?";
+		next;
+		switch(select("Yes, I do.:I need to think more.")) {
+		case 1:
+			if (checkhomcall() == 1) {
+				mes "[Jeyna]";
+				mes "Oh, wait a minute.";
+				mes "To proceed with the Mutation, you need to wake up the Homunculus from the state of Vaporization.";
+				next;
+				mes "[Jeyna]";
+				mes "Come back after you've done that.";
+				close;
+			}
+			emotion e_no1;
+			mes "[Jeyna]";
+			mes "Good thinking.";
+			mes "It is unacceptable for Alchemists like us to fear challenge.";
+			next;
+			playbgm "01.mp3"; // Title
+			mes "[Jeyna]";
+			mes "Now I need you to focus.";
+			next;
+			specialeffect2 EF_ABSORBSPIRITS;
+			mes "[Jeyna]";
+			mes "We need to...";
+			mes "Stabilize a little more.";
+			mes ".......";
+			next;
+			specialeffect2 EF_CURE;
+			mes "[Jeyna]";
+			mes "In a few moments, the ^FF4800Homunculus^000000 will return to its embryo state.";
+			next;
+			specialeffect2 EF_HOLYHIT;
+			mes "[Jeyna]";
+			mes "Into a special embryo...";
+			next;
+			callsub L_CheckHomunculus;
+			specialeffect2 EF_BLESSING;
+			morphembryo;
+			setquest 4159;
+			erasequest 4158;
+			emotion e_ho;
+			mes "[Jeyna]";
+			mes "Phew~ All done.";
+			mes "Hmm, its state is a little strange.";
+			next;
+			emotion e_heh;
+			mes "[Jeyna]";
+			mes "I guess it'll be just fine.";
+			mes "Don't lose that ^0000FFStrange Embryo^000000.";
+			mes "Also...";
+			next;
+			mes "[Jeyna]";
+			mes "Don't do anything like changing jobs or anything like that before the process is over.";
+			mes "If so, you, ^0000FF"+strcharinfo(0)+"^000000 might lose all the abilities you have over the Homunculus.";
+			next;
+			mes "[Jeyna]";
+			mes "All that concentration made me tired.";
+			mes "I'll just take a glass of water.";
+			close;
+		case 2:
+			playbgm "28.mp3"; // You're in Ruins
+			emotion e_sigh;
+			mes "[Jeyna]";
+			mes "Maybe I shouldn't have asked in the first place.";
+			close;
+		}
+	} else if (checkquest(4159) > -1 || checkquest(4160) > -1) {
+		playbgm "28.mp3"; // You're in Ruins
+		mes "[Jeyna]";
+		mes "^005DFFViorel^000000 will finish the mutation process.";
+		mes "Now it's my time to say good bye.";
+		next;
+		mes "[Jeyna]";
+		mes "It was short, but it was nice to meet you.";
+		mes "We'll see each other again some time.";
+		next;
+		mes "[Jeyna]";
+		mes "Best of luck~!";
+		close2;
+		setquest 4160;
+		erasequest 4159;
+		warp "que_house_s",19,42;
+		end;
+	} else {
+		if (checkquest(4154) > -1)
+			erasequest 4154;
+		mes "[Jeyna]";
+		mes "Hey, how did you get in here?";
+		mes "Please get out. I'm changing~!";
+		close2;
+		warp "job3_gen01",12,47;
+		end;
+	}
+	end;
+L_CheckHomunculus:
+	if (gethominfo(6) < 99 || (gethominfo(1) < 6009 || gethominfo(1) > 6016)) { // Not level 99+ evolved Homunculus
+		mes "[Jeyna]";
+		mes "Hey, wait.";
+		mes "The condition of the ^FF4800Homunculus^000000 is not suitable.";
+		mes "That was close.";
+		next;
+		mes "[Jeyna]";
+		mes "To use the Homunculus Mutation System";
+		mes "to change to the new";
+		mes "^FF4800Homunculus^000000,";
+		mes "the ^006400Homunculus must be above level 99 and evolved^000000.";
+		next;
+		mes "[Jeyna]";
+		mes "Come back to ^005DFFViorel^000000 when you're ready.";
+		mes "I'll see you later then~!";
+		close2;
+		erasequest 4154;
+		erasequest 4158;
+		warp "job3_gen01",12,47;
+		end;
+	}
+	return;
+}
+
+// Magic Board
+//============================================================
+que_house_s,83,47,3	script	Magic Board#homun_s	857,{
+	playbgm "26.mp3"; // Everlasting Wanderers
+	callfunc "F_HomMutateInfo","[Magic Board Posts]";
+	mes "[Magic Board Posts]";
+	mes ":: ^0000FFHomunculus^000000 research is";
+ 	mes ":: so much fun.";
+	mes ":: Be an Alchemist";
+	mes ":: who always enjoys";
+	mes ":: one's research.";
+	next;
+	mes "[Magic Board Posts]";
+	mes ":: Oh, and Viorel...";
+	mes ":: About what you said";
+	mes "::  yesterday...";
+	mes "::";
+	mes "::";
+	next;
+	mes "--------------------------";
+	mes "The rest is sealed because it seems to be a private message.";
+	close2;
+	if (checkquest(4157) > -1) {
+		setquest 4158;
+		erasequest 4157;
+	}
+	end;
+}
+
+function	script	F_HomMutateInfo	{
+	mes getarg(0);
+	mes ":: The ability of the mutated";
+	mes ":: ^0000FFHomunculus^000000 clearly goes";
+	mes ":: beyond the previous state.";
+	mes ":: In addition, its appearance";
+	mes ":: will evolve as well.";
+	next;
+	mes getarg(0);
+	mes ":: ^0000FFHomunculus^000000 appearances of the";
+	mes ":: new types can be classified";
+	mes ":: based on different species.";
+	mes ":: Creatures of the same species";
+	mes ":: generally have a similar";
+	mes ":: appearance.";
+	next;
+	mes getarg(0);
+	mes ":: The category, appearance and";
+	mes ":: ability of the ^0000FFHomunculus^000000";
+	mes ":: via the Homunculus Mutation";
+	mes ":: System are as follows:";
+	next;
+	cutin "Mer_Eira_Card",3;
+	mes getarg(0);
+	mes ":: The first of the five";
+	mes ":: is called ^FF4800Eira^000000.";
+	mes ":: Beautiful and graceful.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Eira^000000 uses";
+	mes ":: ^006400Wind Element^000000 Magic Attacks and";
+	mes ":: Support Skills.";
+	mes ":: It even has the ability";
+	mes ":: to revive its";
+	mes ":: fallen master.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Eira^000000 eats";
+	mes ":: ^0000FFSmall Snow Flower^000000.";
+	mes ":: Surprising how it survives on";
+	mes ":: such a small amount.";
+	mes ":: ^0000FFSmall Snow Flower^000000 can be bought";
+	mes ":: from ^005DFFTaming Merchants^000000.";
+	next;
+	cutin "",255;
+	cutin "Mer_Sera_Card",3;
+	mes getarg(0);
+	mes ":: The second of the five";
+	mes ":: is known as ^FF4800Sera^000000.";
+	mes ":: It looks just like ^FF0000Mistress^000000 but";
+	mes ":: it doesn't run away.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Sera^000000";
+	mes ":: specializes in ^006400Poison Attacks^000000.";
+	mes ":: Also, it uses distinct";
+	mes ":: Support Skills using poisons.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Sera^000000 eats";
+	mes ":: ^0000FFApple Pudding^000000.";
+	mes ":: It prefers sweet food.";
+	mes ":: ^0000FFApple Pudding^000000 can be bought";
+	mes ":: from ^005DFFTaming Merchants^000000.";
+	next;
+	cutin "",255;
+	cutin "Mer_Dieter_Card",3;
+	mes getarg(0);
+	mes ":: The third of the five";
+	mes ":: is ^FF4800Dieter^000000.";
+	mes ":: It looks unusual but it";
+	mes ":: has a good demeanor.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Dieter^000000 uses";
+	mes ":: ^FF0000Fire^000000 based Attacks and";
+	mes ":: Support Skills.";
+	mes ":: It is just as fragile...";
+	mes ":: ah, reliable, as it looks.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Dieter^000000 eats";
+	mes ":: ^0000FFBig Cell^000000.";
+	mes ":: ^0000FFBig Cell^000000 can be bought";
+	mes ":: from ^005DFFTaming Merchants^000000.";
+	next;
+	cutin "",255;
+	cutin "Mer_Bayeri_Card",3;
+	mes getarg(0);
+	mes ":: The fourth of the five";
+	mes ":: is ^FF4800Bayeri^000000.";
+	mes ":: Bayeri has the form of a";
+	mes ":: unicorn.";
+	next;
+	mes getarg(0);
+	mes ":: It has a powerful dash skill";
+	mes ":: and uses ^006400Holy Element^000000 magic.";
+	mes ":: Unfortunately,";
+	mes ":: they won't let you ride them.";
+	mes ":: Not all four-legged creatures";
+	mes ":: can be ridden.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Bayeri^000000 eats";
+	mes ":: ^0000FFFresh Plant^000000.";
+	mes ":: No matter how hungry it";
+	mes ":: never feeds on rotten greens.";
+	mes ":: ^0000FFFresh Plant^000000 can be bought";
+	mes ":: from ^005DFFTaming Merchants^000000.";
+	next;
+	cutin "",255;
+	cutin "Mer_Eleanor_Card",3;
+	mes getarg(0);
+	mes ":: The last of the five";
+	mes ":: is ^FF4800Eleanor^000000.";
+	mes ":: It has a feminine appearance";
+	mes ":: and outstanding physical skill.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Eleanor^000000";
+	mes ":: uses ^006400Strike or Grapple Attacks^000000";
+	mes ":: sequentially in battle.";
+	mes ":: Absolutely stunning.";
+	next;
+	mes getarg(0);
+	mes ":: ^FF4800Eleanor^000000 eats";
+	mes ":: ^0000FFKid's Dumpling^000000.";
+	mes ":: Don't confuse it with a normal";
+	mes ":: dumpling.";
+	mes ":: ^0000FFKid's Dumpling^000000 can be bought";
+	mes ":: from ^005DFFTaming Merchants^000000.";
+	next;
+	cutin "",255;
+	return;
+}
+
+// Books
+//============================================================
+que_house_s,13,52,3	script	Open Book#01homun_s	111,{
+	switch(rand(1,7)) {
+	case 1:
+		mes "[Bookcase Notes]";
+		mes "Insanity and Genius are the same in concept in that they are both abnormal phenomenon.";
+		mes "Observing the chemist ^005DFFMorgenstein^000000 of ^8B4513Geffen^000000, I consider them equal.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "Once I had to visit...";
+		mes "the strange ^005DFFMorgenstein^000000 for research purposes.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "I had a meat stew before I met ^005DFFMorgenstein^000000,";
+		mes "surprisingly enough, he muttered that he smelled meat even before I was close.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "I never thought that chemists had a great sense of smell.";
+		mes "The next time I give";
+		mes "^005DFFMorgenstein^000000 a visit,";
+		mes "I'll eat some other meal.";
+		close;
+	case 2:
+		mes "[Bookcase Notes]";
+		mes "^005DFFDe Bris^000000 thinks the enthusiasm of Alchemists has lately dropped <Dramatically>...";
+		next;
+		mes "[Bookcase Notes]";
+		mes "He especially didn't like the fact that I was bound tightly to ^FF4800Homunculus^000000 research.";
+		mes "He didn't say such a thing when we studied together in ^8B4513Rune Midgarts^000000.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "One day, I'll show ^005DFFDe Bris^000000 my ^FF4800Homunculus^000000 research data.";
+		mes "I love watching him jump out of his skin.... I look forward to the day.";
+		close;
+	case 3:
+		mes "[Bookcase Notes]";
+		mes "^005DFFDe Bris^000000' passion for the ^57007FGenetic^000000 arts is amazing.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "Recently, the Alchemist Union offered me the chance to join the ^57007FGenetic^000000 through a letter.";
+		mes "I wonder what ^005DFFDe Bris^000000 said to the union...";
+		next;
+		mes "[Bookcase Notes]";
+		mes "Well, I appreciate it...";
+		mes "However, for me right now";
+		mes "my research is of utmost priority.";
+		close;
+	case 4:
+		mes "[Bookcase Notes]";
+		mes "There's something funny ^005DFFDarcia^000000 said to me.";
+		mes "It was about when ^005DFFJeyna^000000 first came to learn about potion combination......";
+		next;
+		mes "[Bookcase Notes]";
+		mes "She did good up to the stage of pouring water into the mixture.";
+		mes "She just had to put it into an empty bottle...";
+		next;
+		mes "[Bookcase Notes]";
+		mes "^005DFFDarcia^000000 watched what she would do with the last stage,";
+		mes "and the confused ^005DFFJeyna^000000 drank the mixture out of the bowl and told her that it healed well.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "To think that even ^005DFFJeyna^000000,";
+		mes "now a master of potion combination,";
+		mes "had her rookie mistakes";
+		mes "shows how hard it is to imagine";
+		mes "and forecast one's past and future.";
+		close;
+	case 5:
+		mes "[Bookcase Notes]";
+		mes "^005DFFVincent^000000, I think I did it.";
+		mes "I will never forget your words of courage ";
+		mes "and I am grateful that I now get to pay you back.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "It was indeed a long process.";
+		mes "When many of the union";
+		mes "considered my research insignificant";
+		mes "... Though I did not lose my belief";
+		mes "it did heart deep inside.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The few friends who believed me";
+		mes "especially ^005DFFJeyna^000000";
+		mes "and you ^005DFFVincent^000000 ...";
+		mes "I am sincerely thankful with all my soul.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "They say that,";
+		mes "the end justifies the means.";
+		mes "At first,";
+		mes "I did not know what it meant...";
+		next;
+		mes "[Bookcase Notes]";
+		mes "Now I know.";
+		mes "I know how important it is";
+		mes "to follow one's heart.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "I'll drop by very soon.";
+		mes "Be well until then.";
+		close;
+	case 6:
+		mes "[Bookcase Notes]";
+		mes "A game called ^0000FFThe Epic Battle 2^000000, similar to chess, was intriguing.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "Some time ago, I met a ^0000FFFruit Seller^000000 who excelled in The Epic Battle 2.";
+		mes "He even overcame the infamous ^006400Grizzly Shockwave Strategy^000000 and ^006400God of Death Terror^000000 with ease.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "To overcome those in the early stages of the battle of the ^0000FFPriest Faction^000000...";
+		mes "It is difficult for me, since I need to combine the pieces and use some luring skills.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "I wonder when I'll become a 3 Carat Diamond level player.";
+		close;
+	case 7:
+		mes "[Bookcase Notes]";
+		mes "There are many Alchemists who like the ^FF4800Vanilmirth^000000.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "But I prefer the ^FF4800Amistr^000000.";
+		mes "It's cute when it wags its tale with those shiny eyes.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "My Amistr Jonathan is clever and mellow, making it ever so lovable.";
+		mes "We're good friends, aren't we Jonathan?";
+		close;
+	}
+}
+
+que_house_s,16,52,3	script	Open Book#02homun_s	111,{
+	switch(rand(1,8)) {
+	case 1:
+		mes "[Bookcase Notes]";
+		mes "What should I write to ^005DFFDe Bris^000000.";
+		mes ":: To my noted ";
+		mes ":: Genetic friend De Bris.";
+		mes ":: How's Lighthalzen?";
+		mes ":: Do they have enough of those";
+		mes ":: cookies you oh so love?";
+		next;
+		mes "[Bookcase Notes]";
+		mes ":: I'll drop by soon";
+		mes ":: with some cookies.";
+		mes ":: When we meet,";
+		mes ":: I'll introduce you to my";
+		mes ":: ^006400New Homunculus^000000.";
+		next;
+		mes "[Bookcase Notes]";
+		mes ":: No need to be alert.";
+		mes ":: Unlike you,";
+		mes ":: they aren't interested in ";
+		mes ":: what others have to eat.";
+		mes ":: I'll see you soon~!";
+		mes ":: Dare close the door on me.";
+		close;
+	case 2:
+		mes "[Bookcase Notes]";
+		mes "The last time I visited the Alchemist Union, there was an interesting debate on the table.";
+		mes "I think it was something to do with ^006400Negligence of Homunculus in public places^000000.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "While the master dozed off,";
+		mes "one of the ^FF4800Homunculus^000000 off its leash";
+		mes "caused some sort of problem.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "I will make sure that my Homunculus Jonathan...";
+		mes "is trained well not to cause trouble around other people.";
+		close;
+	case 3:
+		mes "[Bookcase Notes]";
+		mes "There's a new toy me and ^005DFFJeyna^000000 have grown fond of.";
+		mes "It's relatively new,";
+		mes "called... ^0000FF'Helo'^000000, I think?";
+		next;
+		mes "[Bookcase Notes]";
+		mes "There was a related song to it, sung by some ^57007FMinstrel^000000.";
+		mes "The lyrics were something like ^006400'Ahhh~Ahh~Ahhhhhhhh'^000000.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The entertainment itself is fun,";
+		mes "but the music is also excellent,";
+		mes "and when I listen to it";
+		mes "it feels like my SP is restored significantly.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "I must say,";
+		mes "entertainment is crucial when resting";
+		mes "to boost morale for research.";
+		mes "^006400For Homunculus~!^000000";
+		close;
+	case 4:
+		mes "[Bookcase Notes]";
+		mes "From what I heard from the union member";
+		mes "^005DFFParmy^000000,";
+		mes "^005DFFRaspuchin^000000 is still his own weird self.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "It may not be such a good idea";
+		mes "to drive those energetic souls";
+		mes "coming to change jobs";
+		mes "with such enthusiasm.";
+		close;
+	case 5:
+		mes "[Bookcase Notes]";
+		mes "A friend of mine who was into painting,";
+		mes "suggested making a <Graphic Novel> called";
+		mes "^0000FFMUTATIONER^000000";
+		mes "after he heard about my research";
+		mes "and my works.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The story begins...";
+		mes "With an alien";
+		mes "^FF4800Homunculus^000000";
+		mes "visiting our world.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The visiting alien";
+		mes "^FF4800Homunculus^000000 can survive";
+		mes "without a master";
+		mes "and it could change into";
+		mes "various creatures that";
+		mes "roam our world.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "These alien^FF4800Homunculus^000000";
+		mes "have two opposing factions";
+		mes "divided by political differences.";
+		mes "In our world, we call them";
+		mes "^006400Aut-homun^000000 and ";
+		mes "^006400Decept-homun^000000";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The ^006400Aut-homun^000000 are our friends.";
+		mes "Their leader,";
+		mes "called ^005DFFOptimus Poring^000000,";
+		mes "is built and so cool";
+		mes "for a poring,";
+		mes "and it summons a cart at will!";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The opposing side, the ^006400Decept-homun^000000,";
+		mes "is led by ^005DFFMegatroll^000000";
+		mes "and they use all means ";
+		mes "to destroy our world.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The hero of this story";
+		mes "is one from ^8B4513Alberta^000000 called ^005DFFJam Wicky^000000,";
+		mes "who meets ^005DFFOptimus Poring^000000";
+		mes "while shopping for a cart,";
+		mes "as if it was his destiny.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "And so thus";
+		mes "unfolds an epic battle";
+		mes "in the ^8B4513Moroc Desert^000000";
+		mes "where the fate of our world";
+		mes "lies in his hands...";
+		next;
+		mes "[Bookcase Notes]";
+		mes "Enough of that~!";
+		mes "The rest of the story can be";
+		mes "checked in the published copy.";
+		mes "^0000FFMUTATIONER^000000";
+		mes "It's going to be awesome~!";
+		close;
+	case 6:
+		mes "[Bookcase Notes]";
+		mes "The Union sent a special gift to its members.";
+		mes "It's called a ^0000FFHigh Clip 4^000000.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "It is originally used as a tool to allow easy whispering between members, but it also has other useful functions.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "A guild invented this. I recall that their emblem had an image of an apple.";
+		close;
+	case 7:
+		mes "[Bookcase Notes]";
+		mes "Homunculus is indeed worthy.";
+		mes "However, like everyone else, I sometimes question its meaning and future.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "I believe that life given by nature was supposed to be used for oneself.";
+		mes "However...";
+		next;
+		mes "[Bookcase Notes]";
+		mes "The research to give the Homunculus life is, in reality, for the benefit of man.";
+		mes "Perhaps mankind is not ready ethically to create life.";
+		close;
+	case 8:
+		mes "[Bookcase Notes]";
+		mes "Some time ago, ^005DFFJeyna^000000 introduced me to someone.";
+		mes "She is from ^8B4513Geffen^000000,";
+		mes "and she introduced herself as a ^005DFFChicken Researcher^000000.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "She is an expert on something called the ^006400Legendary Bijofnil^000000.";
+		mes "She finds it offensive that people think that the Bijofnil is a hawk.";
+		next;
+		mes "[Bookcase Notes]";
+		mes "She said something about somewhere in ^8B4513Hvergilmir's Fountain^000000";
+		mes "there exists a ^005DFFtalking chicken^000000 and other stories...";
+		mes "Well, it went on like that";
+		mes "and it was interesting.";
+		close;
+	}
+}
+
+// Notifiers
+//============================================================
+que_house_s,11,52,3	script	#03homun_s	111,{
+	end;
+OnInit:
+	initnpctimer;
+	end;
+OnTimer6000:
+	emotion e_gasp;
+	end;
+OnTimer7000:
+	emotion e_gasp,0,"#04homun_s";
+	stopnpctimer;
+	initnpctimer;
+	end;
+}
+
+que_house_s,14,52,3	script	#04homun_s	111,{
+	end;
+}
+
+// Researcher's Pet
+//============================================================
+que_house_s,24,46,3	script	Jonathan#homun_s	6002,{
+	end;
+}
+
+que_house_s,23,46,3	script	#05homun_s	111,{
+	emotion e_no,0,"Jonathan#homun_s";
+	if (gethominfo(1) < 6048 || gethominfo(1) > 6052) { // Not mutated Homunculus-S
+		mes "[Jonathan]";
+		mes "Hwang~ Hwang!";
+		next;
+		mes ":: It seems to be Viorel's";
+		mes ":: Homunculus.";
+		mes ":: It is wearing a small necklace";
+		mes ":: with the name Jonathan engraved";
+		mes ":: on it.";
+		close;
+	} else {
+		mes "[Jonathan]";
+		mes "Hwang~?!";
+		next;
+		emotion e_swt2,0,"Jonathan#homun_s";
+		mes "[Jonathan]";
+		mes "*Sniff* ...";
+		next;
+		mes ":: This Amistr";
+		mes ":: called Jonathan";
+		mes ":: seems to be surprised by my";
+		mes ":: new Homunculus.";
+		close;
+	}
+}

+ 1 - 1
npc/re/scripts_athena.conf

@@ -78,7 +78,7 @@ npc: npc/re/quests/eden/eden_quests.txt
 npc: npc/re/quests/eden/eden_service.txt
 npc: npc/re/quests/eden/eden_service.txt
 // --------------------------------------------------------------
 // --------------------------------------------------------------
 //npc: npc/re/quests/cupet.txt
 //npc: npc/re/quests/cupet.txt
-npc: npc/re/quests/homu_s.txt
+npc: npc/re/quests/homun_s.txt
 npc: npc/re/quests/magic_books.txt
 npc: npc/re/quests/magic_books.txt
 npc: npc/re/quests/monstertamers.txt
 npc: npc/re/quests/monstertamers.txt
 npc: npc/re/quests/mrsmile.txt
 npc: npc/re/quests/mrsmile.txt

+ 6 - 6
sql-files/item_db_re.sql

@@ -731,7 +731,7 @@ REPLACE INTO `item_db_re` VALUES (1379,'BF_Two_Handed_Axe1','Valorous Insane Bat
 REPLACE INTO `item_db_re` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',4,20,NULL,0,'200',NULL,1,NULL,0x000444A2,7,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{bonus bBreakArmorRate,10000;}",20,3000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK;}"; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',4,20,NULL,0,'200',NULL,1,NULL,0x000444A2,7,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{bonus bBreakArmorRate,10000;}",20,3000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK;}"; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1381,'N_Battle_Axe','Novice Battle Axe',4,NULL,NULL,0,'100',NULL,1,3,0x000444A2,7,2,34,1,'3',NULL,7,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1381,'N_Battle_Axe','Novice Battle Axe',4,NULL,NULL,0,'100',NULL,1,3,0x000444A2,7,2,34,1,'3',NULL,7,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',4,20,NULL,0,'220',NULL,1,NULL,0x000444A2,7,2,34,4,'80',1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-3,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',4,20,NULL,0,'220',NULL,1,NULL,0x000444A2,7,2,34,4,'80',1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-3,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (1383,'Holy_Celestial_Axe','Celestial Axe',4,20,NULL,1500,'200',NULL,1,NULL,0x000444A2,7,2,34,4,'60',1,7,'bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (1383,'Holy_Celestial_Axe','Celestial Axe',4,20,NULL,1500,'200',NULL,1,NULL,0x000444A2,7,2,34,4,'60',1,7,'bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1384,'Veteran_Axe','Veteran Axe',4,10000,NULL,3000,'250',NULL,1,2,0x000444A2,7,2,34,3,'80',1,7,'if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1384,'Veteran_Axe','Veteran Axe',4,10000,NULL,3000,'250',NULL,1,2,0x000444A2,7,2,34,3,'80',1,7,'if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1385,'Bradium_Stonehammer','Bradium Stone Hammer',4,20,NULL,2700,'210',NULL,1,NULL,0x000444A2,2,2,34,4,'75',1,7,'bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine());',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1385,'Bradium_Stonehammer','Bradium Stone Hammer',4,20,NULL,2700,'210',NULL,1,NULL,0x000444A2,2,2,34,4,'75',1,7,'bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine());',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1386,'Doom_Slayer_I','Doom Slayer',4,NULL,NULL,0,'20',NULL,1,NULL,0x000444A2,7,2,34,4,NULL,NULL,7,'if(readparam(bStr)>=95){ bonus bBaseAtk,400; bonus2 bAddEff,Eff_Stun,3000; bonus bAspdRate,-25; bonus bUseSPrate,100; bonus bBreakArmorRate,500; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1386,'Doom_Slayer_I','Doom Slayer',4,NULL,NULL,0,'20',NULL,1,NULL,0x000444A2,7,2,34,4,NULL,NULL,7,'if(readparam(bStr)>=95){ bonus bBaseAtk,400; bonus2 bAddEff,Eff_Stun,3000; bonus bAspdRate,-25; bonus bUseSPrate,100; bonus bBreakArmorRate,500; }',NULL,NULL);
@@ -774,7 +774,7 @@ REPLACE INTO `item_db_re` VALUES (1425,'BF_Spear1','Assaulter Spear',4,20,NULL,0
 REPLACE INTO `item_db_re` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',4,20,NULL,0,'130',NULL,3,NULL,0x00004082,7,2,2,4,'80',1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',4,20,NULL,0,'130',NULL,3,NULL,0x00004082,7,2,2,4,'80',1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1427,'Spear_Of_Excellent','Spear Of Excellent',4,20,NULL,0,'160',NULL,3,NULL,0x00004082,7,2,2,3,NULL,NULL,4,'bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1427,'Spear_Of_Excellent','Spear Of Excellent',4,20,NULL,0,'160',NULL,3,NULL,0x00004082,7,2,2,3,NULL,NULL,4,'bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1428,'Long_Horn_M','Long Horn',4,20,NULL,1000,'150',NULL,3,1,0x00004082,2,2,2,4,'65',1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1428,'Long_Horn_M','Long Horn',4,20,NULL,1000,'150',NULL,3,1,0x00004082,2,2,2,4,'65',1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (1429,'Hunting_Spear_M','Hunting Spear',4,20,NULL,4200,'180',NULL,3,1,0x00004082,2,2,2,4,'60',1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (1429,'Hunting_Spear_M','Hunting Spear',4,20,NULL,4200,'180',NULL,3,1,0x00004082,2,2,2,4,'60',1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1430,'Pike_C','Pike',4,NULL,NULL,0,'74',NULL,3,NULL,0x00004082,7,2,2,1,'1',NULL,4,'bonus2 bAddSize,Size_Small,70; bonus2 bAddSize,Size_Medium,70; bonus2 bAddSize,Size_Large,70;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1430,'Pike_C','Pike',4,NULL,NULL,0,'74',NULL,3,NULL,0x00004082,7,2,2,1,'1',NULL,4,'bonus2 bAddSize,Size_Small,70; bonus2 bAddSize,Size_Medium,70; bonus2 bAddSize,Size_Large,70;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1431,'F_Pole_Axe_C','Pole Axe',4,1,NULL,4800,'195',NULL,3,NULL,0x00004082,7,2,2,3,'1',NULL,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1431,'F_Pole_Axe_C','Pole Axe',4,1,NULL,4800,'195',NULL,3,NULL,0x00004082,7,2,2,3,'1',NULL,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1432,'E_Pole_Axe_C','Pole Axe',4,1,NULL,4800,'195',NULL,3,NULL,0x00004082,7,2,2,3,'1',NULL,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1432,'E_Pole_Axe_C','Pole Axe',4,1,NULL,4800,'195',NULL,3,NULL,0x00004082,7,2,2,3,'1',NULL,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL);
@@ -1752,7 +1752,7 @@ REPLACE INTO `item_db_re` VALUES (2704,'Golden_Accessory','Golden Accessories',5
 REPLACE INTO `item_db_re` VALUES (2705,'Golden_Accessory2','Golden Accessories',5,20,NULL,100,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItem,12018,500;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2705,'Golden_Accessory2','Golden Accessories',5,20,NULL,100,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItem,12018,500;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2706,'Handcuff','Arrest Handcuffs',5,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2706,'Handcuff','Arrest Handcuffs',5,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2707,'GUSLI','GUSLI',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2707,'GUSLI','GUSLI',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2708,'Chinese_Handicraft','Chinese Handicraft',5,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,'bonus3 bAutoSpell,"MG_FIREBOLT",5,300;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2708,'Chinese_Handicraft','Chinese Handicraft',5,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,'bonus3 bAutoSpell,"MG_FIREBOLT",5,50;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2709,'5_Anniversary_Coin','5th Anniversary Coin',5,2,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,'bonus bAtkRate,5; bonus bMatkRate,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2709,'5_Anniversary_Coin','5th Anniversary Coin',5,2,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,'bonus bAtkRate,5; bonus bMatkRate,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2710,'Bloody_Iron_Ball_C','Bloody Iron Ball',5,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFE,7,2,136,NULL,NULL,NULL,0,'bonus bBaseAtk,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2710,'Bloody_Iron_Ball_C','Bloody Iron Ball',5,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFE,7,2,136,NULL,NULL,NULL,0,'bonus bBaseAtk,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2711,'Spiritual_Ring_C','Spiritual Ring',5,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,'bonus bInt,2; bonus bDex,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2711,'Spiritual_Ring_C','Spiritual Ring',5,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,'bonus bInt,2; bonus bDex,2;',NULL,NULL);
@@ -2912,7 +2912,7 @@ REPLACE INTO `item_db_re` VALUES (5254,'Deviling_Hat','Deviling Hat',5,20,NULL,5
 REPLACE INTO `item_db_re` VALUES (5255,'Triple_Poring_Hat','Triple Poring Hat',5,20,NULL,600,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'20',NULL,299,'bonus bLuk,3; bonus3 bAutoSpell,"BS_GREED",1,50;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5255,'Triple_Poring_Hat','Triple Poring Hat',5,20,NULL,600,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'20',NULL,299,'bonus bLuk,3; bonus3 bAutoSpell,"BS_GREED",1,50;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5256,'Valkyrie_Feather_Band','Valkyrie Feather Band',5,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,'20',1,300,'bonus bInt,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5256,'Valkyrie_Feather_Band','Valkyrie Feather Band',5,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,'20',1,300,'bonus bInt,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5257,'Soulless_Wing','Soul Ring',5,20,NULL,300,NULL,2,NULL,NULL,0xFFFFFFFE,7,2,256,NULL,'20',1,301,'bonus bMdef,2; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5257,'Soulless_Wing','Soul Ring',5,20,NULL,300,NULL,2,NULL,NULL,0xFFFFFFFE,7,2,256,NULL,'20',1,301,'bonus bMdef,2; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (5258,'Afro_Wig','Afro Wig',5,20,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,7,2,768,NULL,'10',1,302,'bonus3 bAutoSpellWhenHit,"NV_FIRSTAID",1,300; bonus2 bSubEle,Ele_Neutral,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5258,'Afro_Wig','Afro Wig',5,20,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,7,2,768,NULL,'10',1,302,'bonus3 bAutoSpellWhenHit,"NV_FIRSTAID",1,100; bonus2 bSubEle,Ele_Neutral,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5259,'Elephant_Hat_','Elephant Hat',5,20,NULL,500,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,215,'bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5259,'Elephant_Hat_','Elephant Hat',5,20,NULL,500,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,215,'bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5260,'Cookie_Hat','Cookie Hat',5,20,NULL,500,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,217,'bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5260,'Cookie_Hat','Cookie Hat',5,20,NULL,500,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,217,'bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5261,'Silver_Tiara_','Silver Tiara',5,20,NULL,500,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,218,'bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5261,'Silver_Tiara_','Silver Tiara',5,20,NULL,500,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,218,'bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2);',NULL,NULL);
@@ -3315,7 +3315,7 @@ REPLACE INTO `item_db_re` VALUES (5657,'Antique_Pipe_J','Captain\'s Pipe',5,20,N
 REPLACE INTO `item_db_re` VALUES (5658,'Imp_Hat','Imp Hat',5,20,NULL,400,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,589,'bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5658,'Imp_Hat','Imp Hat',5,20,NULL,400,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,589,'bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5659,'Sleeper_Hat','Sleeper Hat',5,20,NULL,400,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,590,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5659,'Sleeper_Hat','Sleeper Hat',5,20,NULL,400,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,590,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5660,'Gryphon_Hat','Gryphon Hat',5,20,NULL,400,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,591,'bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",1,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5660,'Gryphon_Hat','Gryphon Hat',5,20,NULL,400,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,591,'bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",1,5;',NULL,NULL);
-# REPLACE INTO `item_db_re` VALUES (5661,'Red_Pirate_Bandana','Red Pirate Banada',5,NULL,NULL,0,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'10',1,592,'bonus bStr,1; bonus bDex,1; bonus bAspdRate,2; bonus bVariableCastrate,-2; bonus3 bAutoSpell,"MO_EXTREMITYFIST",1,30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5661,'Red_Pirate_Bandana','Red Pirate Banada',5,NULL,NULL,0,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'10',1,592,'bonus bStr,1; bonus bDex,1; bonus bAspdRate,2; bonus bVariableCastrate,-2; bonus3 bAutoSpell,"MO_EXTREMITYFIST",1,3;',NULL,NULL);
 # REPLACE INTO `item_db_re` VALUES (5662,'Libra_Crown','Libra Crown',5,10,NULL,300,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,593,'bonus bDex,3;',NULL,NULL);
 # REPLACE INTO `item_db_re` VALUES (5662,'Libra_Crown','Libra Crown',5,10,NULL,300,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,593,'bonus bDex,3;',NULL,NULL);
 # REPLACE INTO `item_db_re` VALUES (5663,'Libra_Diadem','Libra Diadem',5,10,NULL,300,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,594,'bonus bDex,3;',NULL,NULL);
 # REPLACE INTO `item_db_re` VALUES (5663,'Libra_Diadem','Libra Diadem',5,10,NULL,300,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,594,'bonus bDex,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5664,'Filir_Wing','Filir\'s Pinions',5,20,NULL,100,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,512,NULL,'70',1,595,'bonus bAspdRate,2; bonus bVariableCastrate,-2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5664,'Filir_Wing','Filir\'s Pinions',5,20,NULL,100,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,512,NULL,'70',1,595,'bonus bAspdRate,2; bonus bVariableCastrate,-2;',NULL,NULL);
@@ -6224,7 +6224,7 @@ REPLACE INTO `item_db_re` VALUES (13416,'Krieger_Onehand_Sword1','Glorious Flamb
 REPLACE INTO `item_db_re` VALUES (13417,'Krieger_Onehand_Sword2','Glorious Rapier',4,20,NULL,0,'130:80',NULL,1,NULL,0x000654E3,7,2,2,4,'80',1,2,'bonus bInt,getrefine()-5; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13417,'Krieger_Onehand_Sword2','Glorious Rapier',4,20,NULL,0,'130:80',NULL,1,NULL,0x000654E3,7,2,2,4,'80',1,2,'bonus bInt,getrefine()-5; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13418,'Krieger_Onehand_Sword3','Glorious Holy Avenger',4,20,NULL,0,'130:80',NULL,1,NULL,0x000444A2,7,2,2,4,'80',1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXDIVINA",1,1000; if(getrefine()>9) bonus bInt,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13418,'Krieger_Onehand_Sword3','Glorious Holy Avenger',4,20,NULL,0,'130:80',NULL,1,NULL,0x000444A2,7,2,2,4,'80',1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXDIVINA",1,1000; if(getrefine()>9) bonus bInt,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13419,'Holy_Saber','Holy saber',4,20,NULL,0,'160',NULL,1,NULL,0x000654E2,7,2,2,3,NULL,NULL,2,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13419,'Holy_Saber','Holy saber',4,20,NULL,0,'160',NULL,1,NULL,0x000654E2,7,2,2,3,NULL,NULL,2,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (13420,'Honglyun\'s_Sword','Honglyun\'s Sword',4,20,NULL,1200,'160',NULL,1,1,0x000654E2,7,2,2,4,'70',1,2,'bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (13420,'Honglyun\'s_Sword','Honglyun\'s Sword',4,20,NULL,1200,'160',NULL,1,1,0x000654E2,7,2,2,4,'70',1,2,'bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; bonus3 bAutoSpell,"WZ_METEOR",1,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13421,'Ruber','Ruber',4,20,NULL,1500,'170',NULL,1,1,0x000444A2,2,2,2,3,'50',1,2,'autobonus "{bonus2 bSkillAtk,\\\"KN_BOWLINGBASH\\\",20; bonus2 bSkillAtk,\\\"SM_BASH\\\",20;}",5,15000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13421,'Ruber','Ruber',4,20,NULL,1500,'170',NULL,1,1,0x000444A2,2,2,2,3,'50',1,2,'autobonus "{bonus2 bSkillAtk,\\\"KN_BOWLINGBASH\\\",20; bonus2 bSkillAtk,\\\"SM_BASH\\\",20;}",5,15000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13422,'Flamberge_C','Flamberge',4,NULL,NULL,0,'185',NULL,1,NULL,0x00004080,7,2,2,3,'1',NULL,2,'bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13422,'Flamberge_C','Flamberge',4,NULL,NULL,0,'185',NULL,1,NULL,0x00004080,7,2,2,3,'1',NULL,2,'bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13423,'P_Sabre1','Eden Sabre I',4,NULL,NULL,0,'147',NULL,1,NULL,0x000654E2,7,2,2,2,'26',NULL,2,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13423,'P_Sabre1','Eden Sabre I',4,NULL,NULL,0,'147',NULL,1,NULL,0x000654E2,7,2,2,2,'26',NULL,2,NULL,NULL,NULL);

+ 8 - 5
src/map/homunculus.c

@@ -144,7 +144,7 @@ int merc_hom_dead(struct homun_data *hd)
 	return 3;
 	return 3;
 }
 }
 
 
-//Vaporize a character's homun. If flag, HP needs to be 80% or above.
+//Vaporize a character's homun. If flag == 1 then HP needs to be 80% or above, if flag == 2 then set to morph state.
 int merc_hom_vaporize(struct map_session_data *sd, int flag)
 int merc_hom_vaporize(struct map_session_data *sd, int flag)
 {
 {
 	struct homun_data *hd;
 	struct homun_data *hd;
@@ -158,13 +158,13 @@ int merc_hom_vaporize(struct map_session_data *sd, int flag)
 	if (status_isdead(&hd->bl))
 	if (status_isdead(&hd->bl))
 		return 0; //Can't vaporize a dead homun.
 		return 0; //Can't vaporize a dead homun.
 
 
-	if (flag && get_percentage(hd->battle_status.hp, hd->battle_status.max_hp) < 80)
+	if (flag == HOM_ST_REST && get_percentage(hd->battle_status.hp, hd->battle_status.max_hp) < 80)
 		return 0;
 		return 0;
 
 
 	hd->regen.state.block = 3; //Block regen while vaporized.
 	hd->regen.state.block = 3; //Block regen while vaporized.
 	//Delete timers when vaporized.
 	//Delete timers when vaporized.
 	merc_hom_hungry_timer_delete(hd);
 	merc_hom_hungry_timer_delete(hd);
-	hd->homunculus.vaporize = 1;
+	hd->homunculus.vaporize = flag ? flag : HOM_ST_REST;
 	if(battle_config.hom_setting&0x40)
 	if(battle_config.hom_setting&0x40)
 		memset(hd->blockskill, 0, sizeof(hd->blockskill));
 		memset(hd->blockskill, 0, sizeof(hd->blockskill));
 	clif_hominfo(sd, sd->hd, 0);
 	clif_hominfo(sd, sd->hd, 0);
@@ -810,8 +810,11 @@ int merc_call_homunculus(struct map_session_data *sd)
 	if (!hd->homunculus.vaporize)
 	if (!hd->homunculus.vaporize)
 		return 0; //Can't use this if homun wasn't vaporized.
 		return 0; //Can't use this if homun wasn't vaporized.
 
 
+	if (hd->homunculus.vaporize == HOM_ST_MORPH)
+		return 0; // Can't call homunculus (morph state).
+
 	merc_hom_init_timers(hd);
 	merc_hom_init_timers(hd);
-	hd->homunculus.vaporize = 0;
+	hd->homunculus.vaporize = HOM_ST_ACTIVE;
 	if (hd->bl.prev == NULL)
 	if (hd->bl.prev == NULL)
 	{	//Spawn him
 	{	//Spawn him
 		hd->bl.x = sd->bl.x;
 		hd->bl.x = sd->bl.x;
@@ -924,7 +927,7 @@ int merc_resurrect_homunculus(struct map_session_data* sd, unsigned char per, sh
 
 
 	hd = sd->hd;
 	hd = sd->hd;
 
 
-  	if (hd->homunculus.vaporize)
+  	if (hd->homunculus.vaporize == HOM_ST_REST)
 		return 0; // vaporized homunculi need to be 'called'
 		return 0; // vaporized homunculi need to be 'called'
 
 
 	if (!status_isdead(&hd->bl))
 	if (!status_isdead(&hd->bl))

+ 7 - 1
src/map/homunculus.h

@@ -27,6 +27,12 @@ enum { HOMUNCULUS_CLASS, HOMUNCULUS_FOOD };
 
 
 enum { MH_MD_FIGHTING=1, MH_MD_GRAPPLING };
 enum { MH_MD_FIGHTING=1, MH_MD_GRAPPLING };
 
 
+enum {
+	HOM_ST_ACTIVE	= 0,
+	HOM_ST_REST		= 1,
+	HOM_ST_MORPH	= 2,
+};
+
 enum {
 enum {
 	SP_ACK      = 0x0,
 	SP_ACK      = 0x0,
 	SP_INTIMATE = 0x1,
 	SP_INTIMATE = 0x1,
@@ -88,7 +94,7 @@ enum {
 #define homdb_checkid(id) (id >=  HM_CLASS_BASE && id <= HM_CLASS_MAX)
 #define homdb_checkid(id) (id >=  HM_CLASS_BASE && id <= HM_CLASS_MAX)
 
 
 // merc_is_hom_alive(struct homun_data *)
 // merc_is_hom_alive(struct homun_data *)
-#define merc_is_hom_active(x) (x && x->homunculus.vaporize != 1 && x->battle_status.hp > 0)
+#define merc_is_hom_active(x) (x && x->homunculus.vaporize == HOM_ST_ACTIVE && x->battle_status.hp > 0)
 int do_init_merc(void);
 int do_init_merc(void);
 int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag); //albator
 int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag); //albator
 struct view_data* merc_get_hom_viewdata(int class_);
 struct view_data* merc_get_hom_viewdata(int class_);

+ 1 - 0
src/map/itemdb.h

@@ -27,6 +27,7 @@ enum item_itemid {
 	ITEMID_RED_GEMSTONE = 716,
 	ITEMID_RED_GEMSTONE = 716,
 	ITEMID_BLUE_GEMSTONE = 717,
 	ITEMID_BLUE_GEMSTONE = 717,
 	ITEMID_TRAP = 1065,
 	ITEMID_TRAP = 1065,
+	ITEMID_STRANGE_EMBRYO = 6415,
 	ITEMID_STONE = 7049,
 	ITEMID_STONE = 7049,
 	ITEMID_SKULL_ = 7420,
 	ITEMID_SKULL_ = 7420,
 	ITEMID_TOKEN_OF_SIEGFRIED = 7621,
 	ITEMID_TOKEN_OF_SIEGFRIED = 7621,

+ 3 - 3
src/map/pc.c

@@ -6320,7 +6320,7 @@ int pc_resetskill(struct map_session_data* sd, int flag)
 			pc_setoption(sd, i);
 			pc_setoption(sd, i);
 
 
 		if( merc_is_hom_active(sd->hd) && pc_checkskill(sd, AM_CALLHOMUN) )
 		if( merc_is_hom_active(sd->hd) && pc_checkskill(sd, AM_CALLHOMUN) )
-			merc_hom_vaporize(sd, 0);
+			merc_hom_vaporize(sd, HOM_ST_ACTIVE);
 	}
 	}
 
 
 	for( i = 1; i < MAX_SKILL; i++ )
 	for( i = 1; i < MAX_SKILL; i++ )
@@ -6549,7 +6549,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
 
 
 	if (sd->status.hom_id > 0){
 	if (sd->status.hom_id > 0){
 	    if(battle_config.homunculus_auto_vapor && sd->hd && !sd->hd->sc.data[SC_LIGHT_OF_REGENE])
 	    if(battle_config.homunculus_auto_vapor && sd->hd && !sd->hd->sc.data[SC_LIGHT_OF_REGENE])
-		    merc_hom_vaporize(sd, 0);
+		    merc_hom_vaporize(sd, HOM_ST_ACTIVE);
 	}
 	}
 
 
 	if( sd->md )
 	if( sd->md )
@@ -7485,7 +7485,7 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 		pc_setoption(sd, i);
 		pc_setoption(sd, i);
 
 
 	if(merc_is_hom_active(sd->hd) && !pc_checkskill(sd, AM_CALLHOMUN))
 	if(merc_is_hom_active(sd->hd) && !pc_checkskill(sd, AM_CALLHOMUN))
-		merc_hom_vaporize(sd, 0);
+		merc_hom_vaporize(sd, HOM_ST_ACTIVE);
 
 
 	if(sd->status.manner < 0)
 	if(sd->status.manner < 0)
 		clif_changestatus(sd,SP_MANNER,sd->status.manner);
 		clif_changestatus(sd,SP_MANNER,sd->status.manner);

+ 86 - 8
src/map/script.c

@@ -10134,11 +10134,12 @@ BUILDIN_FUNC(homunculus_evolution)
 }
 }
 
 
 /*==========================================
 /*==========================================
- * [Xantara]
+ * Checks for vaporized morph state
+ * and deletes ITEMID_STRANGE_EMBRYO.
  *------------------------------------------*/
  *------------------------------------------*/
 BUILDIN_FUNC(homunculus_mutate)
 BUILDIN_FUNC(homunculus_mutate)
 {
 {
-	int homun_id, m_class, m_id;
+	int homun_id, m_class, m_id, i;
 	TBL_PC *sd;
 	TBL_PC *sd;
 
 
 	sd = script_rid2sd(st);
 	sd = script_rid2sd(st);
@@ -10150,15 +10151,66 @@ BUILDIN_FUNC(homunculus_mutate)
 	else
 	else
 		homun_id = 6048 + (rnd() % 4);
 		homun_id = 6048 + (rnd() % 4);
 
 
-	if(merc_is_hom_active(sd->hd)) {
+	if( sd->hd->homunculus.vaporize == HOM_ST_MORPH ) {
 		m_class = hom_class2mapid(sd->hd->homunculus.class_);
 		m_class = hom_class2mapid(sd->hd->homunculus.class_);
 		m_id    = hom_class2mapid(homun_id);
 		m_id    = hom_class2mapid(homun_id);
 
 
-		if ( m_class != -1 && m_id != -1 && m_class&HOM_EVO && m_id&HOM_S && sd->hd->homunculus.level >= 99 )
+		i = pc_search_inventory(sd, ITEMID_STRANGE_EMBRYO);
+
+		if ( m_class != -1 && m_id != -1 && m_class&HOM_EVO && m_id&HOM_S && sd->hd->homunculus.level >= 99 && i >= 0 ) {
+			sd->hd->homunculus.vaporize = HOM_ST_REST; // Remove morph state.
+			merc_call_homunculus(sd); // Respawn homunculus.
 			hom_mutate(sd->hd, homun_id);
 			hom_mutate(sd->hd, homun_id);
-		else
+			pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_SCRIPT);
+			script_pushint(st, 1);
+			return 0;
+		} else
+			clif_emotion(&sd->bl, E_SWT);
+	} else
+		clif_emotion(&sd->bl, E_SWT);
+
+	script_pushint(st, 0);
+
+	return 0;
+}
+
+/*==========================================
+ * Puts homunculus into morph state
+ * and gives ITEMID_STRANGE_EMBRYO.
+ *------------------------------------------*/
+BUILDIN_FUNC(morphembryo)
+{
+	struct item item_tmp;
+	int m_class, i;
+	TBL_PC *sd;
+	
+	sd = script_rid2sd(st);
+	if( sd == NULL )
+		return 0;
+
+	if( merc_is_hom_active(sd->hd) ) {
+		m_class = hom_class2mapid(sd->hd->homunculus.class_);
+
+		if ( m_class != -1 && m_class&HOM_EVO && sd->hd->homunculus.level >= 99 ) {
+			memset(&item_tmp, 0, sizeof(item_tmp));
+			item_tmp.nameid = ITEMID_STRANGE_EMBRYO;
+			item_tmp.identify = 1;
+
+			if( item_tmp.nameid==0 || (i = pc_additem(sd, &item_tmp, 1, LOG_TYPE_SCRIPT)) ) {
+				clif_additem(sd, 0, 0, i);
+				clif_emotion(&sd->bl, E_SWT); // Fail to avoid item drop exploit.
+			} else {
+				merc_hom_vaporize(sd, HOM_ST_MORPH);
+				script_pushint(st, 1);
+				return 0;
+			}
+		} else
 			clif_emotion(&sd->hd->bl, E_SWT);
 			clif_emotion(&sd->hd->bl, E_SWT);
-	}
+	} else
+		clif_emotion(&sd->bl, E_SWT);
+
+	script_pushint(st, 0);
+
 	return 0;
 	return 0;
 }
 }
 
 
@@ -10177,6 +10229,31 @@ BUILDIN_FUNC(homunculus_shuffle)
 	return 0;
 	return 0;
 }
 }
 
 
+/*==========================================
+ * Check for homunculus state.
+ * Return: -1 = No homunculus
+ *          0 = Homunculus is vaporized (rest)
+ *          1 = Homunculus is in morph state
+ *          2 = Homunculus is active
+ *------------------------------------------*/
+BUILDIN_FUNC(checkhomcall)
+{
+	TBL_PC *sd = script_rid2sd(st);
+	TBL_HOM *hd;
+
+	if( sd == NULL )
+		return 0;
+	
+	hd = sd->hd;
+
+	if( !hd )
+		script_pushint(st, -1);
+	else
+		script_pushint(st, hd->homunculus.vaporize);
+
+	return 0;
+}
+
 //These two functions bring the eA MAPID_* class functionality to scripts.
 //These two functions bring the eA MAPID_* class functionality to scripts.
 BUILDIN_FUNC(eaclass)
 BUILDIN_FUNC(eaclass)
 {
 {
@@ -12712,8 +12789,7 @@ BUILDIN_FUNC(gethominfo)
 	int type=script_getnum(st,2);
 	int type=script_getnum(st,2);
 
 
 	hd = sd?sd->hd:NULL;
 	hd = sd?sd->hd:NULL;
-	if(!merc_is_hom_active(hd))
-	{
+	if(!hd) {
 		if (type == 2)
 		if (type == 2)
 			script_pushconststr(st,"null");
 			script_pushconststr(st,"null");
 		else
 		else
@@ -17799,7 +17875,9 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(warpportal,"iisii"),
 	BUILDIN_DEF(warpportal,"iisii"),
 	BUILDIN_DEF2(homunculus_evolution,"homevolution",""),	//[orn]
 	BUILDIN_DEF2(homunculus_evolution,"homevolution",""),	//[orn]
 	BUILDIN_DEF2(homunculus_mutate,"hommutate","?"),
 	BUILDIN_DEF2(homunculus_mutate,"hommutate","?"),
+	BUILDIN_DEF(morphembryo,""),
 	BUILDIN_DEF2(homunculus_shuffle,"homshuffle",""),	//[Zephyrus]
 	BUILDIN_DEF2(homunculus_shuffle,"homshuffle",""),	//[Zephyrus]
+	BUILDIN_DEF(checkhomcall,""),
 	BUILDIN_DEF(eaclass,"?"),	//[Skotlex]
 	BUILDIN_DEF(eaclass,"?"),	//[Skotlex]
 	BUILDIN_DEF(roclass,"i?"),	//[Skotlex]
 	BUILDIN_DEF(roclass,"i?"),	//[Skotlex]
 	BUILDIN_DEF(checkvending,"?"),
 	BUILDIN_DEF(checkvending,"?"),

+ 1 - 1
src/map/skill.c

@@ -7496,7 +7496,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 
 
 	case AM_REST:
 	case AM_REST:
 		if (sd) {
 		if (sd) {
-			if (merc_hom_vaporize(sd,1))
+			if (merc_hom_vaporize(sd,HOM_ST_REST))
 				clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
 				clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
 			else
 			else
 				clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
 				clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);

+ 1 - 1
src/map/status.c

@@ -8324,7 +8324,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				if( pc_isridingwug(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_WUGRIDER);
 				if( pc_isridingwug(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_WUGRIDER);
 				if( pc_isfalcon(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_FALCON);
 				if( pc_isfalcon(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_FALCON);
 				if( sd->status.pet_id > 0 ) pet_menu(sd, 3);
 				if( sd->status.pet_id > 0 ) pet_menu(sd, 3);
-				if( merc_is_hom_active(sd->hd) ) merc_hom_vaporize(sd,1);
+				if( merc_is_hom_active(sd->hd) ) merc_hom_vaporize(sd,HOM_ST_REST);
 				if( sd->md ) merc_delete(sd->md,3);
 				if( sd->md ) merc_delete(sd->md,3);
 			}
 			}
 			break;
 			break;