В этой теме мы разберём, как работать с грейдами кристаллов, создавать новые грейды и изменять бонусы базовых характеристик игрока после заточки.
Формат: XML
Путь: gameserver/data/crystal_grades.xml
Нас интересует, какой грейд у оружия. В данном примере:
Также важны модифицируемые характеристики:
Теперь проверяем модификаторы для грейда S в data/crystal_grades.xml:
Для нашего лука используется модификатор:
Формула расчёта:
Добавьте новый грейд в скил игрока в data/stats/skills:
Если нужно добавить нужные уровни:
Создание нового уровня скила:
Создание скрола заточки:
Создание Soulshot:
В данном примере создаётся новый грейд, независимый от других.
Если есть вопросы или предложения, пишите в этой теме.
Формат: XML
Путь: gameserver/data/crystal_grades.xml
Параметры грейда
Пример:
XML:
<grade id="S" crystal="1462" crystalMod="250" externalOrdinal="5">
- id="S" - название грейда. Для новых может быть произвольное: S80, S84, R99, R999 и т.д.
- crystal="1462" - кристаллы, которые будут получены при кристаллизации предмета.
- crystalMod="250" - модификатор бонусов при кристаллизации.
- Формула для оружия: crystalMod / 10 * enchant_level
- Формула для брони: crystalMod / 5 * enchant_level
- Если уровень больше 3, то: crystalMod / 5
- externalOrdinal="5" - используется для определения родительского грейда. Например, S80 и S84 имеют родительский грейд S.
Бонусы характеристик при заточке
Изначально характеристики берутся из предметов: data/items
XML:
<weapon id="7575" name="Draconic Bow">
<!-- [draconic_bow] -->
<set name="atk_reuse" value="1500"/>
<set name="crystal_count" value="2440"/>
<set name="crystal_type" value="S"/>
<set name="crystallizable" value="true"/>
<set name="icon" value="icon.weapon_draconic_bow_i00"/>
<set name="mp_consume" value="6"/>
<set name="price" value="48800000"/>
<set name="rnd_dam" value="5"/>
<set name="soulshots" value="1"/>
<set name="spiritshots" value="1"/>
<set name="type" value="BOW"/>
<set name="weight" value="1650"/>
<equip>
<slot id="LEFT_RIGHT_HAND"/>
</equip>
<for>
<add stat="pAtk" order="0x10" value="581"/>
<add stat="mAtk" order="0x10" value="132"/>
<set stat="baseCrit" order="0x08" value="120"/>
<set stat="atkBaseSpeed" order="0x08" value="293"/>
<add stat="accCombat" order="0x10" value="-4.0000"/>
<enchant stat="pAtk" order="0x0C" value="0"/>
<enchant stat="mAtk" order="0x0C" value="0"/>
</for>
</weapon>
XML:
<set name="crystal_type" value="S"/>
XML:
<enchant stat="pAtk" order="0x0C" value="0"/>
<enchant stat="mAtk" order="0x0C" value="0"/>
Теперь проверяем модификаторы для грейда S в data/crystal_grades.xml:
XML:
<grade id="S" crystal="1462" crystalMod="250" externalOrdinal="5">
<enchant_mod stat="mAtk" multiplier="4"/>
<enchant_mod stat="sDef" multiplier="2"/>
<enchant_mod stat="mDef" multiplier="2"/>
<enchant_mod stat="pDef" multiplier="2"/>
<enchant_mod stat="pAtkBow" multiplier="10"/>
<enchant_mod stat="pAtkDoubleSword" multiplier="6"/>
<enchant_mod stat="pAtk" multiplier="5"/>
<enchant_mod stat="pAtkSpd" multiplier="1.5"/>
<enchant_mod stat="mAtkSpd" multiplier="1.5"/>
<enchant_mod stat="maxHp" multiplier="1.5"/>
<enchant_mod stat="maxMp" multiplier="1.5"/>
<enchant_mod stat="maxCp" multiplier="1.5"/>
</grade>
Для нашего лука используется модификатор:
XML:
<enchant_mod stat="pAtkBow" multiplier="10"/>
Формула расчёта:
XML:
overEnchant = Math.max(0, enchantLevel - 3);
grade.getPhysicAttackBow * (enchantLevel + overEnchant)
Добавление новых грейдов
Пример нового грейда S80 в data/crystal_grades.xml:
XML:
<grade id="S80" crystal="1462" crystalMod="250" externalOrdinal="5">
<enchant_mod stat="mAtk" multiplier="4"/>
<enchant_mod stat="sDef" multiplier="2"/>
<enchant_mod stat="mDef" multiplier="2"/>
<enchant_mod stat="pDef" multiplier="2"/>
<enchant_mod stat="pAtkBow" multiplier="10"/>
<enchant_mod stat="pAtkDoubleSword" multiplier="6"/>
<enchant_mod stat="pAtk" multiplier="5"/>
<enchant_mod stat="pAtkSpd" multiplier="1.5"/>
<enchant_mod stat="mAtkSpd" multiplier="1.5"/>
<enchant_mod stat="maxHp" multiplier="1.5"/>
<enchant_mod stat="maxMp" multiplier="1.5"/>
<enchant_mod stat="maxCp" multiplier="1.5"/>
</grade>
Добавьте новый грейд в скил игрока в data/stats/skills:
XML:
<skill id="239" levels="7" name="Expertise D">
<table name="#magicLevel">20 40 52 61 76 76 76</table>
<set name="icon" val="icon.skill0239"/>
<set name="magicLevel" val="#magicLevel"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="HARDCODED"/>
<set name="operateType" val="OP_PASSIVE"/>
<set name="canLearn" val=""/>
<set name="isCommon" val="true"/>
</skill>
Если нужно добавить нужные уровни:
XML:
<table name="#magicLevel">20 40 52 61 76 80 84</table>
Создание собственного грейда
Пример нового грейда R:
XML:
<grade id="R" crystal="17371" crystalMod="255" externalOrdinal="6">
<enchant_mod stat="mAtk" multiplier="4"/>
<enchant_mod stat="sDef" multiplier="2"/>
<enchant_mod stat="mDef" multiplier="2"/>
<enchant_mod stat="pDef" multiplier="2"/>
<enchant_mod stat="pAtkBow" multiplier="10"/>
<enchant_mod stat="pAtkDoubleSword" multiplier="6"/>
<enchant_mod stat="pAtk" multiplier="5"/>
<enchant_mod stat="pAtkSpd" multiplier="1.5"/>
<enchant_mod stat="mAtkSpd" multiplier="1.5"/>
<enchant_mod stat="maxHp" multiplier="1.5"/>
<enchant_mod stat="maxMp" multiplier="1.5"/>
<enchant_mod stat="maxCp" multiplier="1.5"/>
</grade>
Создание нового уровня скила:
XML:
<skill id="239" levels="8" name="Expertise D">
<table name="#magicLevel">20 40 52 61 76 80 84 86</table>
<set name="icon" val="icon.skill0239"/>
<set name="magicLevel" val="#magicLevel"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="HARDCODED"/>
<set name="operateType" val="OP_PASSIVE"/>
<set name="canLearn" val=""/>
<set name="isCommon" val="true"/>
</skill>
XML:
<scroll id="88888" infallible="false" reset_lvl="0" on_fail="RESET" chance_bonus="0" grade="R">
<levels min="0" max="20"/>
<items_restrict type="WEAPON"/>
<chances type="WEAPON">
<chance val="100"/>
<chance val="100"/>
<chance val="100"/>
<chance val="50"/>
<chance val="50"/>
<chance val="33"/>
<chance val="25"/>
<chance val="20"/>
<chance val="14"/>
<chance val="11"/>
<chance val="8"/>
<chance val="6"/>
<chance val="5"/>
<chance val="4"/>
<chance val="3"/>
<chance val="2"/>
<chance val="2"/>
<chance val="1"/>
<chance val="1"/>
<chance val="1"/>
</chances>
</scroll>
XML:
<etcitem id="88889" name="Soulshot: R-grade">
<!-- [soulshot_s] -->
<set name="class" value="CONSUMABLE"/>
<set name="crystal_type" value="R"/>
<set name="icon" value="icon.etc_spirit_bullet_gold_i00"/>
<set name="price" value="100"/>
<set name="stackable" value="true"/>
<set name="type" value="SHOT"/>
<set name="weight" value="2"/>
<skills>
<skill id="2154" level="1"/>
</skills>
</etcitem>
Если есть вопросы или предложения, пишите в этой теме.
Данная система работает для всех хроник и вы можете модифицировать грейды, делать новые, выдумывать свои и делать любые модификаторы под свои нужды!
Last edited: