Ну я надеюсь, что это будет кому-нибудь полезно. По сути - разбор Kaleh.cfg. В любом случае, облегчит работу мододелам-новичкам.
Заранее предупреждаю - сей трактат не для совсем новичков. Для начала лучше почитать что-нибудь другое. Или хотя бы знать, как расшифровывается AMLA.
Ну начнём:
#define KALEH_LEVEL_BONUS
# We increase damage by one when we increase the level.
[effect] <-- это тег эффекта. ну вы поняли
apply_to=attack <-- указывает, что будем изменять. в данном случае - атаку
times=per level <-- указывает, сколько раз будет изменение. в данном случае - за каждый уровень бойца
increase_damage=1 <-- ну и наконец, указывает что произойдёт. в данном случае - увеличивает урон на единицу
[/effect]
#enddef
Что это такое? А это макрос, увеличивающий урон от оружия (причём, любого) за уровень. Обратите внимание, что все улучшения в дефайне. Вы же знаете, что это такое? I hope it so.
#define KALEH_ADVANCEMENT HP_INCREMENT XP_INCREMENT EFFECT_WML VARIATION_NAME
[advancement]
max_times=1
always_display=yes
[effect]
apply_to=hitpoints <-- будет увеличиваться количество жизней
increase_total={HP_INCREMENT} <-- увеличивает максимальное кол-во жизней
increase={HP_INCREMENT} <-- текущее кол-во тоже не в обиде
[/effect]
[effect]
apply_to=max_experience <-- увеличивает требуемое для улучшения кол-во опыта
increase={XP_INCREMENT} <-- собственно, это и увеличивает
[/effect]
[effect]
apply_to=variation
name={VARIATION_NAME}
[/effect]
{EFFECT_WML}
[/advancement]
#enddef
А это "скелет" улучшений. Тоже дефайн. Разъясню по ходу дела.
#define KALEH_LEADERSHIP VARIANT_NAME
{KALEH_ADVANCEMENT /запускает тот самый дефайн-скелет/ 3 /увеличивает кол-во жизней/ 8 /увеличивает кол-во опыта/(
id=leadership <-- айди улучшения.
description= _ "a leader in battle" <-- описание улучшения
image=units/elves-desert/kaleh-leading.png <-- иконка, которая будет справа от описания
require_amla="" <-- требуется улучшение. тут никакого не надо. но бывают такие, которым надо.
[effect]
apply_to=new_ability <-- будем добавлять способность
[filter]
level=2 <-- если боец 2 уровня, то
[/filter]
[abilities]
{ABILITY_LEADERSHIP_LEVEL_2} <-- оно и даёт способность
[/abilities]
[/effect]
[effect]
apply_to=new_ability <-- вариант для 3 уровня
[filter]
level=3
[/filter]
[abilities]
{ABILITY_LEADERSHIP_LEVEL_3}
[/abilities]
[/effect]
) {VARIANT_NAME}}
#enddef
И наконец, собственно первое улучшение. Даёт абилку лидерство.
#define KALEH_BOLAS VARIANT_NAME
{KALEH_ADVANCEMENT 4 6 (
id=bolas
description= _ "trained by Nym in using the bolas"
image=attacks/bolas.png
require_amla=""
[effect]
apply_to=new_attack <-- даёт новую атаку
name=bolas
description= _"bolas"
type=impact
range=ranged
damage=4
number=2
[specials]
{WEAPON_SPECIAL_SLOW}
[/specials]
icon=attacks/bolas.png
[/effect]
[effect]
apply_to=attack <-- за каждый уровень будет давать +1 к урону для атаки
name=bolas
times=per level
increase_damage=1
[/effect]
[effect]
apply_to=new_animation <-- анимация новой атаки
[attack_anim]
[filter_attack]
name=bolas
[/filter_attack]
[missile_frame]
begin=-150
end=0
image=projectiles/bolas-n.png
image_diagonal=projectiles/bolas-ne.png
[/missile_frame]
[if]
hits=yes
[frame]
begin=-300
end=-200
image=units/elves-desert/kaleh.png
sound=hatchet.wav
[/frame]
[/if]
[else]
hits=no
[frame]
begin=-300
end=-200
image=units/elves-desert/kaleh.png
sound=hatchet-miss.wav
[/frame]
[/else]
[frame]
begin=-200
end=0
image=units/elves-desert/kaleh.png
[/frame]
{SOUND:SLOW}
[/attack_anim]
[/effect]
) {VARIANT_NAME}}
#enddef
Новая атака.
#define KALEH_SUSTENANCE VARIANT_NAME
{KALEH_ADVANCEMENT 5 8 (
id=sustenance
description= _ "gain +20% resistance under the sun"
image=attacks/sand-storm.png
require_amla=bow
[effect]
apply_to=new_ability <-- новая способность
[abilities]
[resistance] <-- меняются резисты
id=sustenance <-- айди способности
add=20 <-- сколько добавляет
max_value=30 <-- какоймаксимум - больше этого не будет, если в общем счёте окажется больше, то добавка урежется
apply_to=blade,pierce,impact,fire,cold,arcane <-- к каким сопротивляемостям добавляется
[filter_base_value]
greater_than=-1
[/filter_base_value]
[filter_self]
[filter_location]
time_of_day=lawful <-- только днём
[/filter_location]
[/filter_self]
name= _ "sustenance" <-- название
description= _ "Sustenance:
This unit's resistances are increased by 20% in daylight, on defense and attack. Vulnerabilities are not affected." <-- описание
affect_self=yes
[/resistance]
[/abilities]
[/effect]
) {VARIANT_NAME}}
#enddef
Та дам, новая абилка. Совсем новая.
#define KALEH_BOW3 VARIANT_NAME
{KALEH_ADVANCEMENT 4 8 (
id=bow3
description= _ "a marksman with the bow"
image=attacks/bow-elven.png
require_amla=bow2
[effect]
apply_to=attack
name=bow
increase_damage=1
[set_specials] <-- добовляет особенность
{WEAPON_SPECIAL_MARKSMAN} <-- что за особенность добавляется
[/set_specials]
[/effect]
) {VARIANT_NAME}}
#enddef
На закуску - добавление особенности к атаке.
#define KALEH
id=Kaleh
race=elf
name= _ "Kaleh of the Quenoth Elves"
image=units/elves-desert/kaleh.png
movement_type=woodland
#desert elves move fast across the sands, but are not used to forests
#they are also a bit faster in caves
[movement_costs]
sand=1
forest=2
cave=2
frozen=3
[/movement_costs]
[defense]
sand=40
forest=50
[/defense]
movement=5
profile=portraits/kaleh.png
alignment=lawful
[leading_anim]
[frame]
begin=-150
end=150
image=units/elves-desert/kaleh-leading.png
[/frame]
[/leading_anim]
advances_to=null
cost=14
usage=fighter
description= _ "Kaleh is still a young Elf of the Quenoth, on the verge of adulthood. He trained with his father with the bow and sword, joining him in lighter expeditions and raids. When his father was lost, Kaleh became more serious and solemn than is usual for those who walk under the two suns. He turned inwards for answers and guidance, not knowing how much his people would look towards him for guidance in times to come."+{SPECIAL_NOTES}+{SPECIAL_NOTES_LEADERSHIP}+{SPECIAL_NOTES_MARKSMAN}+{SPECIAL_NOTES_SLOW}
die_sound={SOUND_LIST:ELF_HIT}
{DEFENSE_ANIM_RANGE "units/elves-desert/kaleh-defend.png" units/elves-desert/kaleh.png {SOUND_LIST:ELF_HIT} melee}
{DEFENSE_ANIM_RANGE "units/elves-desert/kaleh-ranged-defend.png" units/elves-desert/kaleh-ranged.png {SOUND_LIST:ELF_HIT} ranged}
# Melee damage increased by 1, ranged damage decreased by 1
[attack]
name=sword
description= _"sword"
type=blade
range=melee
damage=5
number=4
icon=attacks/sword-elven.png
[/attack]
[attack]
name=bow
description= _"bow"
type=pierce
range=ranged
damage=2
number=3
icon=attacks/bow-elven.png
[/attack]
[attack_anim]
[filter_attack]
name=bow
[/filter_attack]
[missile_frame]
begin=-100
end=0
image=projectiles/missile-n.png
image_diagonal=projectiles/missile-ne.png
[/missile_frame]
[frame]
begin=-445
end=-380
image="units/elves-desert/kaleh-ranged.png"
[/frame]
[if]
hits=yes
[frame]
begin=-380
end=-305
image="units/elves-desert/kaleh-ranged-1.png"
sound=bow.ogg
[/frame]
[/if]
[else]
hits=no
[frame]
begin=-380
end=-305
image="units/elves-desert/kaleh-ranged-1.png"
sound=bow-miss.ogg
[/frame]
[/else]
[frame]
begin=-305
end=-230
image="units/elves-desert/kaleh-ranged-2.png"
[/frame]
[frame]
begin=-230
end=-130
image="units/elves-desert/kaleh-ranged-3.png"
[/frame]
[frame]
begin=-130
end=-100
image="units/elves-desert/kaleh-ranged-4.png"
[/frame]
[frame]
begin=-100
end=0
image="units/elves-desert/kaleh-ranged-4.png"
[/frame]
[frame]
begin=0
end=65
image="units/elves-desert/kaleh-ranged.png"
[/frame]
[/attack_anim]
[attack_anim]
[filter_attack]
name=sword
[/filter_attack]
[frame]
begin=-200
end=-100
image=units/elves-desert/kaleh-melee-1.png
[/frame]
[if]
hits=yes
[frame]
begin=-100
end=100
image=units/elves-desert/kaleh-melee-2.png
sound={SOUND_LIST:SWORD_SWISH}
[/frame]
[/if]
[else]
hits=no
[frame]
begin=-100
end=100
image=units/elves-desert/kaleh-melee-2.png
sound={SOUND_LIST:MISS}
[/frame]
[/else]
[frame]
begin=100
end=200
image=units/elves-desert/kaleh.png
[/frame]
[/attack_anim]
#enddef
Собственно, сам боец. В дефайне, т.к. особые причины.
[unit_type] <-- ну вы поняли
{KALEH} <-- берёт дефайн нашего бойца. тот самый, да.
hitpoints=28
experience=22
level=1
[variation] <-- один из вариантов, стартовый.
{KALEH}
variation_name=Youth
inherit=no
level=1
hitpoints=28
experience=22
name= _ "Desert Youth"
{KALEH_SWORD_FIRST Fighter} <-- в кого превратиться наш боец, выбрав определённые улучшения
{KALEH_BOW_FIRST Fighter}
[/variation]
# Generic Fighter variation tree.
#define KALEH_FIGHTER VARIANT_NAME <-- доступные бойцу в определённой вариации улучшения
{KALEH_BOLAS {VARIANT_NAME}}
{KALEH_SWORD {VARIANT_NAME}}
{KALEH_BOW {VARIANT_NAME}}
{KALEH_BOW2 {VARIANT_NAME}}
{KALEH_BOW3 {VARIANT_NAME}}
{KALEH_CAMOUFLAGE {VARIANT_NAME}}
{KALEH_SUSTENANCE {VARIANT_NAME}}
{KALEH_ARMOR {VARIANT_NAME}}
{KALEH_STUN {VARIANT_NAME}}
#enddef
[variation]
{KALEH}
variation_name=Fighter
inherit=no
level=1
hitpoints=28
experience=28
name= _ "Desert Fighter"
{KALEH_LEADERSHIP Captain } <--
{KALEH_SWORD2 Hero } <-- ну понятно.
{KALEH_FIGHTER Fighter1} <--
[/variation]
[/unit_type]
Вот и особые причины. В зависимости от выбранных улучшений, боец будет изменяться. Также буддут заблокированы некоторые улучшения.
За сим заканчиваю свой труд, удачного мододельства. Полный вариант разобранного здесь файла лежит по адресу data/campaigns/Under_the_Burning_Suns/units/Kaleh.cfg
Если интересно, можете посмотреть.
P.S. Я надеюсь, что ничего не забыл. Если что - пишите.