Today I will explain about how you may add a new fairy. As an example, you can use the Dragon Fairy Files from this archive.
https://mega.nz/folder/OUMUgTYb#jtCsqh7halK_O9uzWyaG0g/folder/KcdVQK6a
Add all the included item for client side into client.
Add iteminfo.txt and then compiled it for client bin.
Add '0' with tab after description depend on your iteminfo files version. Example here already have it.
XXXX Dragon Spirit n1921 10130005 0 0 0 0 0 0 59 0 0 0 0 0 1 1 1 1 1 1 0 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 10,10 0 240,240 5000,5000 0 0 0 0 0 0 0 0 0 0 0 0 0 YYYY,0 0 0 Dragon Fairy. 0
Place this with sceneffectinfo.txt and compile it for client bin.
YYYY xhlgua.par Dragon Class Sea Wave 1 0 0 -1 0 0 0 -1
XXXX = iteminfoID
YYYY = SceneffectinfoID -- replace also this inside the iteminfo.txt for dragon spirit.
Basically this is already a complete way to add a new model of fairy but you will not get the fairy effect or even possession fairy skill.
This guide I made only the portion where the check for pet marriage is ignored. ( Can find in other forum about this check, mine already removed if I'm not mistaken ).
Open skilleffect.lua and find this " Skill_JLFT_End ( ATKER , DEFER , sklv ) "
Try to make the equation after this code
local Item_ID = GetItemID ( item_elf )
With this code
if Item_ID==231 then
AddState( ATKER , ATKER , STATE_JLFT1, statelv , statetime )
elseif Item_ID==232 then
AddState( ATKER , ATKER , STATE_JLFT2, statelv , statetime )
elseif Item_ID==233 then
AddState( ATKER , ATKER , STATE_JLFT3, statelv , statetime )
elseif Item_ID==235 then
AddState( ATKER , ATKER , STATE_JLFT4, statelv , statetime )
elseif Item_ID==234 then
AddState( ATKER , ATKER , STATE_JLFT5, statelv , statetime )
elseif Item_ID==236 then
AddState( ATKER , ATKER , STATE_JLFT6, statelv , statetime )
elseif Item_ID==237 then
AddState( ATKER , ATKER , STATE_JLFT7, statelv , statetime )
elseif Item_ID==681 then
AddState( ATKER , ATKER , STATE_JLFT8, statelv , statetime )
elseif Item_ID==500 or Item_ID == 7362 or Item_ID == 7363 or Item_ID == 7364 or Item_ID == 7365 or Item_ID == 7353 then
AddState( ATKER , ATKER , STATE_JLFT8, statelv , statetime )
The default pet in most iteminfo.txt only have 231 until 500, the other ID mentioned here is based on your custom iteminfoID for your fairy.
This function declared a state for the respected fairy.
Find State_JLFT_Add ( role , sklv ) and below this code
local Part7 = GetNum_Part7 ( Num_JL )
add this code or make it similar to this code.
if Part1 == 1 then
local star = 0
local statelv = lv_JL * 0.025 * (sklv + 1) * 0.05 ----lv*1/40*(skilllv+1)/2*0.1
if Item_ID ==232 then
local star = lv_JL
SetCharaAttr(star, role, ATTR_STATEV_STR)
end
if Item_ID ==233 then
local star = lv_JL
SetCharaAttr(star, role, ATTR_STATEV_CON)
end
if Item_ID ==234 then
local star = lv_JL
SetCharaAttr(star, role, ATTR_STATEV_STA)
end
if Item_ID ==235 then
local star = lv_JL
SetCharaAttr(star, role, ATTR_STATEV_DEX)
end
if Item_ID ==236 then
local star = lv_JL
SetCharaAttr(star ,role , ATTR_STATEV_AGI)
end
if Item_ID == 681 or Item_ID == 231 or Item_ID == 237 then
if str~=nil and str~=0 then
SetCharaAttr(str ,role , ATTR_STATEV_STR)
end
if con~=nil and con~=0 then
SetCharaAttr(con ,role , ATTR_STATEV_CON)
end
if sta~=nil and sta~=0 then
SetCharaAttr(sta ,role , ATTR_STATEV_STA)
end
if dex~=nil and dex~=0 then
SetCharaAttr(dex ,role , ATTR_STATEV_DEX)
end
if agi~=nil and agi~=0 then
SetCharaAttr(agi ,role , ATTR_STATEV_AGI)
end
end
if Item_ID == 500 or Item_ID == 7362 or Item_ID == 7363 or Item_ID == 7364 or Item_ID == 7365 or Item_ID == 7353 then -- august pet 1 4 dan dragon pet
if str~=nil and str~=0 then
local star = str*1.2
SetCharaAttr(star ,role , ATTR_STATEV_STR)
end
if con~=nil and con~=0 then
local star = con*1.2
SetCharaAttr(star ,role , ATTR_STATEV_CON)
end
if sta~=nil and sta~=0 then
local star = sta*1.2
SetCharaAttr(star ,role , ATTR_STATEV_STA)
end
if dex~=nil and dex~=0 then
local star = dex*1.2
SetCharaAttr(star ,role , ATTR_STATEV_DEX)
end
if agi~=nil and agi~=0 then
local star = agi*1.2
SetCharaAttr(star ,role , ATTR_STATEV_AGI)
end
local star = GetChaAttr( role, ATTR_BMF ) * lv_JL * 0.05 --asal 0.02
local star2 = GetChaAttr( role, ATTR_BMF )
SetCharaAttr(star ,role , ATTR_BMF)
local star = GetChaAttr( role, ATTR_STATEV_PDEF ) + 3
SetCharaAttr(star ,role , ATTR_STATEV_PDEF)
end
end
end
ALLExAttrSet(role)
end
As previously mentioned, the additional iteminfoID for new fairy is added in such a way to declared the stats changes by multiplier. In my case the stats is 1.2 more than normal possession for certain pet.
local star = GetChaAttr( role, ATTR_BMF ) * lv_JL * 0.05
This part is the declaration part of drop rate during possession multiplier. You can play with the values but advise it to be low if you have higher level pet to ensure the drop rate is not too high if you aim for medium setting server. You can place this also with other fairy ID above since its a local declaration, you can simply called it with the same variables without conflict. Note to take, make sure all your fairyID have the same itemtype 59.
Credit to the script owner or any contributor to the script. I simply sort it out for guides.