mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-06 09:09:40 +02:00
convert line endings from CRLF (Windows) to LF (Linux/Unix)
Mixed line endings cause problems when exporting patches with git-format-patch and then trying to "git am" a patch with mixed and non-matching line endings. In such a situation git will fail to apply the patch. This commit runs the dos2unix tools on the remaining files with CRLF (\r\n) line endings to convert them to line-feeds (\n) only. Files that are Windows specific like *.vcxproj and *.props files were not converted. Closes: #3073
This commit is contained in:
File diff suppressed because it is too large
Load Diff
1144
config/bonuses.json
1144
config/bonuses.json
File diff suppressed because it is too large
Load Diff
@@ -1,239 +1,239 @@
|
||||
{
|
||||
"videos": [
|
||||
//Restoration of Erathia
|
||||
//Long live the Queen
|
||||
"GOOD1A.SMK", //Good1_a
|
||||
"GOOD1B.SMK", //Good1_b
|
||||
"GOOD1C.SMK", //Good1_c
|
||||
//Dungeons and devils
|
||||
"EVIL1A.SMK", //Evil1_a
|
||||
"EVIL1B.SMK", //Evil1_b
|
||||
"EVIL1C.SMK", //Evil1_c
|
||||
//Spoils of War
|
||||
"NEUTRALA.SMK", //Neutral1_a
|
||||
"NEUTRALB.SMK", //Neutral1_b
|
||||
"NEUTRALC.SMK", //Neutral1_c
|
||||
//Liberation
|
||||
"GOOD2A.SMK", //Good2_a
|
||||
"GOOD2B.SMK", //Good2_b
|
||||
"GOOD2C.SMK", //Good2_c
|
||||
"GOOD2D.SMK", //Good2_d
|
||||
//Long Live the King
|
||||
"EVIL2A.SMK", //Evil2_a
|
||||
"EVIL2AP1.SMK", //Evil2ap1
|
||||
"EVIL2B.SMK", //Evil2_b
|
||||
"EVIL2C.SMK", //Evil2_c
|
||||
"EVIL2D.SMK", //Evil2_d
|
||||
//Song for the Father
|
||||
"GOOD3A.SMK", //Good3_a
|
||||
"GOOD3B.SMK", //Good3_b
|
||||
"GOOD3C.SMK", //Good3_c
|
||||
//Seeds Of Discontent
|
||||
"SECRETA.SMK", //Secret_a
|
||||
"SECRETB.SMK", //Secret_b
|
||||
"SECRETC.SMK", //Secret_c
|
||||
//Armageddon's Blade
|
||||
//Armageddon's Blade
|
||||
"H3ABab1.smk", //ArmageddonsBlade_a
|
||||
"H3ABab2.smk", //ArmageddonsBlade_b
|
||||
"H3ABab3.smk", //ArmageddonsBlade_c
|
||||
"H3ABab4.smk", //ArmageddonsBlade_d
|
||||
"H3ABab5.smk", //ArmageddonsBlade_e
|
||||
"H3ABab6.smk", //ArmageddonsBlade_f
|
||||
"H3ABab7.smk", //ArmageddonsBlade_g
|
||||
"H3ABab8.smk", //ArmageddonsBlade_h
|
||||
"H3ABab9.smk", //ArmageddonsBlade_end
|
||||
//Dragon's Blood
|
||||
"H3ABdb1.smk", //DragonsBlood_a
|
||||
"H3ABdb2.smk", //DragonsBlood_b
|
||||
"H3ABdb3.smk", //DragonsBlood_c
|
||||
"H3ABdb4.smk", //DragonsBlood_d
|
||||
"H3ABdb5.smk", //DragonsBlood_end
|
||||
//Dragon Slayer
|
||||
"H3ABds1.smk", //DragonSlayer_a
|
||||
"H3ABds2.smk", //DragonSlayer_b
|
||||
"H3ABds3.smk", //DragonSlayer_c
|
||||
"H3ABds4.smk", //DragonSlayer_d
|
||||
"H3ABds5.smk", //DragonSlayer_end
|
||||
//Festival of Life
|
||||
"H3ABfl1.smk", //FestivalOfLife_a
|
||||
"H3ABfl2.smk", //FestivalOfLife_b
|
||||
"H3ABfl3.smk", //FestivalOfLife_c
|
||||
"H3ABfl4.smk", //FestivalOfLife_d
|
||||
"H3ABfl5.smk", //FestivalOfLife_end
|
||||
//Foolhardy Waywardness
|
||||
"H3ABfw1.smk", //FoolhardyWaywardness_a
|
||||
"H3ABfw2.smk", //FoolhardyWaywardness_b
|
||||
"H3ABfw3.smk", //FoolhardyWaywardness_c
|
||||
"H3ABfw4.smk", //FoolhardyWaywardness_d
|
||||
"H3ABfw5.smk", //FoolhardyWaywardness_end
|
||||
//Playing with Fire
|
||||
"H3ABpf1.smk", //PlayingWithFire_a
|
||||
"H3ABpf2.smk", //PlayingWithFire_b
|
||||
"3ABpf3.smk", //PlayingWithFire_c
|
||||
"H3ABpf4.smk", //PlayingWithFire_end
|
||||
//Shadow of Death Campaigns
|
||||
//Birth of a Barbarian
|
||||
"H3x2_BBa.smk", //BirthOfABarbarian_a
|
||||
"H3x2_BBb.smk", //BirthOfABarbarian_b
|
||||
"H3x2_BBc.smk", //BirthOfABarbarian_c
|
||||
"H3x2_BBd.smk", //BirthOfABarbarian_d
|
||||
"H3x2_BBe.smk", //BirthOfABarbarian_e
|
||||
"H3x2_BBf.smk", //BirthOfABarbarian_end
|
||||
//Elixir of Life
|
||||
"H3x2_Ela.smk", //ElixirOfLife_a
|
||||
"H3x2_Elb.smk", //ElixirOfLife_b
|
||||
"H3x2_Elc.smk", //ElixirOfLife_c
|
||||
"H3x2_Eld.smk", //ElixirOfLife_d
|
||||
"H3x2_Ele.smk", //ElixirOfLife_end
|
||||
//Hack and Slash
|
||||
"H3x2_HSa.smk", //HackAndSlash_a
|
||||
"EVIL2C.SMK", //HackAndSlash_b
|
||||
"H3x2_HSc.smk", //HackAndSlash_c
|
||||
"H3x2_HSd.smk", //HackAndSlash_d
|
||||
"H3x2_HSe.smk", //HackAndSlash_end
|
||||
//New Beginning
|
||||
"H3x2_NBa.smk", //NewBeginning_a
|
||||
"H3x2_NBb.smk", //NewBeginning_b
|
||||
"H3x2_Nbc.smk", //NewBeginning_c
|
||||
"H3x2_Nbd.smk", //NewBeginning_d
|
||||
"H3x2_Nbe.smk", //NewBeginning_end
|
||||
//Rise of the Necromancer
|
||||
"H3x2_RNa.smk", //RiseOfTheNecromancer_a
|
||||
"H3x2_RNb.smk", //RiseOfTheNecromancer_b
|
||||
"H3x2_RNc.smk", //RiseOfTheNecromancer_c
|
||||
"H3x2_RNd.smk", //RiseOfTheNecromancer_d
|
||||
"H3x2_RNe1.smk", //RiseOfTheNecromancer_end
|
||||
//Spectre of Power
|
||||
"H3x2_SPa.smk", //SpectreOfPower_a
|
||||
"H3x2_SPb.smk", //SpectreOfPower_b
|
||||
"H3x2_SPc.smk", //SpectreOfPower_c
|
||||
"H3x2_SPd.smk", //SpectreOfPower_d
|
||||
"H3x2_SPe.smk", //SpectreOfPower_end
|
||||
//Unholy Alliance
|
||||
"H3x2_UAa.smk", //UnholyAlliance_a
|
||||
"H3x2_UAb.smk", //UnholyAlliance_b
|
||||
"H3x2_UAc.smk", //UnholyAlliance_c
|
||||
"H3x2_UAd.smk", //UnholyAlliance_d
|
||||
"H3x2_UAe.smk", //UnholyAlliance_e
|
||||
"H3x2_UAf.smk", //UnholyAlliance_f
|
||||
"H3x2_UAg.smk", //UnholyAlliance_g
|
||||
"H3x2_UAh.smk", //UnholyAlliance_h
|
||||
"H3x2_UAi.smk", //UnholyAlliance_i
|
||||
"H3x2_UAj.smk", //UnholyAlliance_j
|
||||
"H3x2_UAk.smk", //UnholyAlliance_k
|
||||
"H3x2_UAl.smk", //UnholyAlliance_l
|
||||
"H3x2_UAm.smk", //UnholyAlliance_end //H3x2_UAm.bik?
|
||||
],
|
||||
|
||||
"music" : [
|
||||
// Use CmpMusic.txt from H3 instead
|
||||
],
|
||||
|
||||
"voice" : [
|
||||
//Restoration of Erathia
|
||||
"G1A", //Long live the Queen 1
|
||||
"G1B", //Long live the Queen 2
|
||||
"G1C", //Long live the Queen 3
|
||||
"E1A.wav", //Dungeons and Devils 1
|
||||
"E1B.wav", //Dungeons and Devils 2
|
||||
"E1C.wav", //Dungeons and Devils 3
|
||||
"N1A", //Spoils of War 1
|
||||
"N1B", //Spoils of War 2
|
||||
"N1C_D", //Spoils of War 3
|
||||
"G2A", //Liberation 1
|
||||
"G2B", //Liberation 2
|
||||
"G2C", //Liberation 3
|
||||
"G2D", //Liberation 4
|
||||
"E2A.wav", //Long live the King 1
|
||||
"E2AE.wav", //Long live the King 1end
|
||||
"E2B.wav", //Long live the King 2
|
||||
"E2C.wav", //Long live the King 3
|
||||
"E2D.wav", //Long live the King 4
|
||||
"G3A", //Song for the Father 1
|
||||
"G3B", //Song for the Father 2
|
||||
"G3C", //Song for the Father 3
|
||||
"S1A", //Seeds of discontent 1
|
||||
"S1B", //Seeds of discontent 2
|
||||
"S1C", //Seeds of discontent 3
|
||||
//Armageddon's Blade
|
||||
"ABvoAB1.wav", //Armageddon's Blade 1
|
||||
"ABvoAB2.wav", //Armageddon's Blade 2
|
||||
"ABvoAB3.wav", //Armageddon's blade 3
|
||||
"ABvoAB4.wav", //Armageddon's blade 4
|
||||
"ABvoAB5.wav", //Armageddon's blade 5
|
||||
"ABvoAB6.wav", //Armageddon's blade 6
|
||||
"ABvoAB7.wav", //Armageddon's blade 7
|
||||
"ABvoAB8.wav", //Armageddon's blade 8
|
||||
"ABvoAB9.wav", //Armageddon's blade 8end
|
||||
"ABvoDB1.wav", //Dragon's Blood 1
|
||||
"ABvoDB2.wav", //Dragon's Blood 2
|
||||
"ABvoDB3.wav", //Dragon's Blood 3
|
||||
"ABvoDB4.wav", //Dragon's Blood 4
|
||||
"ABvoDB5.wav", //Dragon's Blood 4end
|
||||
"ABvoDS1.wav", //Dragon Slayer 1
|
||||
"ABvoDS2.wav", //Dragon Slayer 2
|
||||
"ABvoDS3.wav", //Dragon Slayer 3
|
||||
"ABvoDS4.wav", //Dragon Slayer 4
|
||||
"ABvoDS5.wav", //Dragon Slayer 4end
|
||||
"ABvoFL1.wav", //Festival of Life 1
|
||||
"ABvoFL2.wav", //Festival of Life 2
|
||||
"ABvoFL3.wav", //Festival of Life 3
|
||||
"ABvoFL4.wav", //Festival of Life 4
|
||||
"ABvoFL5.wav", //Festival of Life 4end
|
||||
"ABvoFW1.wav", //Foolhardy Waywardness 1
|
||||
"ABvoFW2.wav", //Foolhardy Waywardness 2
|
||||
"ABvoFW3.wav", //Foolhardy Waywardness 3
|
||||
"ABvoFW4.wav", //Foolhardy Waywardness 4
|
||||
"ABvoFW5.wav", //Foolhardy Waywardness 4end
|
||||
"ABvoPF1.wav", //Playing with Fire 1
|
||||
"ABvoPF2.wav", //Playing with Fire 2
|
||||
"ABvoPF3.wav", //Playing with Fire 3
|
||||
"ABvoPF4.wav", //Playing with Fire 3end
|
||||
//Shadow of Death Campaigns
|
||||
"H3x2BBa", //Birth of a Barbarian 1
|
||||
"H3x2BBb", //Birth of a Barbarian 2
|
||||
"H3x2BBc", //Birth of a Barbarian 3
|
||||
"H3x2BBd", //Birth of a Barbarian 4
|
||||
"H3x2BBe", //Birth of a Barbarian 5
|
||||
"H3x2BBf", //Birth of a Barbarian 5end
|
||||
"H3x2ELa", //Elixir of life 1
|
||||
"H3x2ELb", //Elixir of life 2
|
||||
"H3x2ELc", //Elixir of life 3
|
||||
"H3x2ELd", //Elixir of life 4
|
||||
"H3x2ELe", //Elixir of life 4end
|
||||
"H3x2HSa", //Hack and Slash 1
|
||||
"H3x2HSb", //Hack and Slash 2
|
||||
"H3x2HSc", //Hack and Slash 3
|
||||
"H3x2HSd", //Hack and Slash 4
|
||||
"H3x2HSe", //Hack and Slash 4end
|
||||
"H3x2NBa", //New Beginning 1
|
||||
"H3x2NBb", //New Beginning 2
|
||||
"H3x2NBc", //New Beginning 3
|
||||
"H3x2NBd", //New Beginning 4
|
||||
"H3x2NBe", //New Beginning 4end
|
||||
"H3x2RNa", //Rise of the Necromancer 1
|
||||
"H3x2RNb", //Rise of the Necromancer 2
|
||||
"H3x2RNc", //Rise of the Necromancer 3
|
||||
"H3x2RNd", //Rise of the Necromancer 4
|
||||
"H3x2RNe", //Rise of the Necromancer 4end
|
||||
"H3x2SPa", //Spectre of Power 1
|
||||
"H3x2Spb", //Spectre of Power 2
|
||||
"H3x2Spc", //Spectre of Power 3
|
||||
"H3x2Spd", //Spectre of Power 4
|
||||
"H3x2Spe", //Spectre of Power 4end
|
||||
"H3x2UAa", //Unholy alliance 1
|
||||
"H3x2UAb", //Unholy alliance 2
|
||||
"H3x2UAc", //Unholy alliance 3
|
||||
"H3x2UAd", //Unholy alliance 4
|
||||
"H3x2UAe", //Unholy alliance 5
|
||||
"H3x2UAf", //Unholy alliance 6
|
||||
"H3x2UAg", //Unholy alliance 7
|
||||
"H3x2UAh", //Unholy alliance 8
|
||||
"H3x2UAi", //Unholy alliance 9
|
||||
"H3x2UAj", //Unholy alliance 10
|
||||
"H3x2UAk", //Unholy alliance 11
|
||||
"H3x2UAl", //Unholy alliance 12
|
||||
"H3x2UAm" //Unholy alliance 12end
|
||||
]
|
||||
}
|
||||
{
|
||||
"videos": [
|
||||
//Restoration of Erathia
|
||||
//Long live the Queen
|
||||
"GOOD1A.SMK", //Good1_a
|
||||
"GOOD1B.SMK", //Good1_b
|
||||
"GOOD1C.SMK", //Good1_c
|
||||
//Dungeons and devils
|
||||
"EVIL1A.SMK", //Evil1_a
|
||||
"EVIL1B.SMK", //Evil1_b
|
||||
"EVIL1C.SMK", //Evil1_c
|
||||
//Spoils of War
|
||||
"NEUTRALA.SMK", //Neutral1_a
|
||||
"NEUTRALB.SMK", //Neutral1_b
|
||||
"NEUTRALC.SMK", //Neutral1_c
|
||||
//Liberation
|
||||
"GOOD2A.SMK", //Good2_a
|
||||
"GOOD2B.SMK", //Good2_b
|
||||
"GOOD2C.SMK", //Good2_c
|
||||
"GOOD2D.SMK", //Good2_d
|
||||
//Long Live the King
|
||||
"EVIL2A.SMK", //Evil2_a
|
||||
"EVIL2AP1.SMK", //Evil2ap1
|
||||
"EVIL2B.SMK", //Evil2_b
|
||||
"EVIL2C.SMK", //Evil2_c
|
||||
"EVIL2D.SMK", //Evil2_d
|
||||
//Song for the Father
|
||||
"GOOD3A.SMK", //Good3_a
|
||||
"GOOD3B.SMK", //Good3_b
|
||||
"GOOD3C.SMK", //Good3_c
|
||||
//Seeds Of Discontent
|
||||
"SECRETA.SMK", //Secret_a
|
||||
"SECRETB.SMK", //Secret_b
|
||||
"SECRETC.SMK", //Secret_c
|
||||
//Armageddon's Blade
|
||||
//Armageddon's Blade
|
||||
"H3ABab1.smk", //ArmageddonsBlade_a
|
||||
"H3ABab2.smk", //ArmageddonsBlade_b
|
||||
"H3ABab3.smk", //ArmageddonsBlade_c
|
||||
"H3ABab4.smk", //ArmageddonsBlade_d
|
||||
"H3ABab5.smk", //ArmageddonsBlade_e
|
||||
"H3ABab6.smk", //ArmageddonsBlade_f
|
||||
"H3ABab7.smk", //ArmageddonsBlade_g
|
||||
"H3ABab8.smk", //ArmageddonsBlade_h
|
||||
"H3ABab9.smk", //ArmageddonsBlade_end
|
||||
//Dragon's Blood
|
||||
"H3ABdb1.smk", //DragonsBlood_a
|
||||
"H3ABdb2.smk", //DragonsBlood_b
|
||||
"H3ABdb3.smk", //DragonsBlood_c
|
||||
"H3ABdb4.smk", //DragonsBlood_d
|
||||
"H3ABdb5.smk", //DragonsBlood_end
|
||||
//Dragon Slayer
|
||||
"H3ABds1.smk", //DragonSlayer_a
|
||||
"H3ABds2.smk", //DragonSlayer_b
|
||||
"H3ABds3.smk", //DragonSlayer_c
|
||||
"H3ABds4.smk", //DragonSlayer_d
|
||||
"H3ABds5.smk", //DragonSlayer_end
|
||||
//Festival of Life
|
||||
"H3ABfl1.smk", //FestivalOfLife_a
|
||||
"H3ABfl2.smk", //FestivalOfLife_b
|
||||
"H3ABfl3.smk", //FestivalOfLife_c
|
||||
"H3ABfl4.smk", //FestivalOfLife_d
|
||||
"H3ABfl5.smk", //FestivalOfLife_end
|
||||
//Foolhardy Waywardness
|
||||
"H3ABfw1.smk", //FoolhardyWaywardness_a
|
||||
"H3ABfw2.smk", //FoolhardyWaywardness_b
|
||||
"H3ABfw3.smk", //FoolhardyWaywardness_c
|
||||
"H3ABfw4.smk", //FoolhardyWaywardness_d
|
||||
"H3ABfw5.smk", //FoolhardyWaywardness_end
|
||||
//Playing with Fire
|
||||
"H3ABpf1.smk", //PlayingWithFire_a
|
||||
"H3ABpf2.smk", //PlayingWithFire_b
|
||||
"3ABpf3.smk", //PlayingWithFire_c
|
||||
"H3ABpf4.smk", //PlayingWithFire_end
|
||||
//Shadow of Death Campaigns
|
||||
//Birth of a Barbarian
|
||||
"H3x2_BBa.smk", //BirthOfABarbarian_a
|
||||
"H3x2_BBb.smk", //BirthOfABarbarian_b
|
||||
"H3x2_BBc.smk", //BirthOfABarbarian_c
|
||||
"H3x2_BBd.smk", //BirthOfABarbarian_d
|
||||
"H3x2_BBe.smk", //BirthOfABarbarian_e
|
||||
"H3x2_BBf.smk", //BirthOfABarbarian_end
|
||||
//Elixir of Life
|
||||
"H3x2_Ela.smk", //ElixirOfLife_a
|
||||
"H3x2_Elb.smk", //ElixirOfLife_b
|
||||
"H3x2_Elc.smk", //ElixirOfLife_c
|
||||
"H3x2_Eld.smk", //ElixirOfLife_d
|
||||
"H3x2_Ele.smk", //ElixirOfLife_end
|
||||
//Hack and Slash
|
||||
"H3x2_HSa.smk", //HackAndSlash_a
|
||||
"EVIL2C.SMK", //HackAndSlash_b
|
||||
"H3x2_HSc.smk", //HackAndSlash_c
|
||||
"H3x2_HSd.smk", //HackAndSlash_d
|
||||
"H3x2_HSe.smk", //HackAndSlash_end
|
||||
//New Beginning
|
||||
"H3x2_NBa.smk", //NewBeginning_a
|
||||
"H3x2_NBb.smk", //NewBeginning_b
|
||||
"H3x2_Nbc.smk", //NewBeginning_c
|
||||
"H3x2_Nbd.smk", //NewBeginning_d
|
||||
"H3x2_Nbe.smk", //NewBeginning_end
|
||||
//Rise of the Necromancer
|
||||
"H3x2_RNa.smk", //RiseOfTheNecromancer_a
|
||||
"H3x2_RNb.smk", //RiseOfTheNecromancer_b
|
||||
"H3x2_RNc.smk", //RiseOfTheNecromancer_c
|
||||
"H3x2_RNd.smk", //RiseOfTheNecromancer_d
|
||||
"H3x2_RNe1.smk", //RiseOfTheNecromancer_end
|
||||
//Spectre of Power
|
||||
"H3x2_SPa.smk", //SpectreOfPower_a
|
||||
"H3x2_SPb.smk", //SpectreOfPower_b
|
||||
"H3x2_SPc.smk", //SpectreOfPower_c
|
||||
"H3x2_SPd.smk", //SpectreOfPower_d
|
||||
"H3x2_SPe.smk", //SpectreOfPower_end
|
||||
//Unholy Alliance
|
||||
"H3x2_UAa.smk", //UnholyAlliance_a
|
||||
"H3x2_UAb.smk", //UnholyAlliance_b
|
||||
"H3x2_UAc.smk", //UnholyAlliance_c
|
||||
"H3x2_UAd.smk", //UnholyAlliance_d
|
||||
"H3x2_UAe.smk", //UnholyAlliance_e
|
||||
"H3x2_UAf.smk", //UnholyAlliance_f
|
||||
"H3x2_UAg.smk", //UnholyAlliance_g
|
||||
"H3x2_UAh.smk", //UnholyAlliance_h
|
||||
"H3x2_UAi.smk", //UnholyAlliance_i
|
||||
"H3x2_UAj.smk", //UnholyAlliance_j
|
||||
"H3x2_UAk.smk", //UnholyAlliance_k
|
||||
"H3x2_UAl.smk", //UnholyAlliance_l
|
||||
"H3x2_UAm.smk", //UnholyAlliance_end //H3x2_UAm.bik?
|
||||
],
|
||||
|
||||
"music" : [
|
||||
// Use CmpMusic.txt from H3 instead
|
||||
],
|
||||
|
||||
"voice" : [
|
||||
//Restoration of Erathia
|
||||
"G1A", //Long live the Queen 1
|
||||
"G1B", //Long live the Queen 2
|
||||
"G1C", //Long live the Queen 3
|
||||
"E1A.wav", //Dungeons and Devils 1
|
||||
"E1B.wav", //Dungeons and Devils 2
|
||||
"E1C.wav", //Dungeons and Devils 3
|
||||
"N1A", //Spoils of War 1
|
||||
"N1B", //Spoils of War 2
|
||||
"N1C_D", //Spoils of War 3
|
||||
"G2A", //Liberation 1
|
||||
"G2B", //Liberation 2
|
||||
"G2C", //Liberation 3
|
||||
"G2D", //Liberation 4
|
||||
"E2A.wav", //Long live the King 1
|
||||
"E2AE.wav", //Long live the King 1end
|
||||
"E2B.wav", //Long live the King 2
|
||||
"E2C.wav", //Long live the King 3
|
||||
"E2D.wav", //Long live the King 4
|
||||
"G3A", //Song for the Father 1
|
||||
"G3B", //Song for the Father 2
|
||||
"G3C", //Song for the Father 3
|
||||
"S1A", //Seeds of discontent 1
|
||||
"S1B", //Seeds of discontent 2
|
||||
"S1C", //Seeds of discontent 3
|
||||
//Armageddon's Blade
|
||||
"ABvoAB1.wav", //Armageddon's Blade 1
|
||||
"ABvoAB2.wav", //Armageddon's Blade 2
|
||||
"ABvoAB3.wav", //Armageddon's blade 3
|
||||
"ABvoAB4.wav", //Armageddon's blade 4
|
||||
"ABvoAB5.wav", //Armageddon's blade 5
|
||||
"ABvoAB6.wav", //Armageddon's blade 6
|
||||
"ABvoAB7.wav", //Armageddon's blade 7
|
||||
"ABvoAB8.wav", //Armageddon's blade 8
|
||||
"ABvoAB9.wav", //Armageddon's blade 8end
|
||||
"ABvoDB1.wav", //Dragon's Blood 1
|
||||
"ABvoDB2.wav", //Dragon's Blood 2
|
||||
"ABvoDB3.wav", //Dragon's Blood 3
|
||||
"ABvoDB4.wav", //Dragon's Blood 4
|
||||
"ABvoDB5.wav", //Dragon's Blood 4end
|
||||
"ABvoDS1.wav", //Dragon Slayer 1
|
||||
"ABvoDS2.wav", //Dragon Slayer 2
|
||||
"ABvoDS3.wav", //Dragon Slayer 3
|
||||
"ABvoDS4.wav", //Dragon Slayer 4
|
||||
"ABvoDS5.wav", //Dragon Slayer 4end
|
||||
"ABvoFL1.wav", //Festival of Life 1
|
||||
"ABvoFL2.wav", //Festival of Life 2
|
||||
"ABvoFL3.wav", //Festival of Life 3
|
||||
"ABvoFL4.wav", //Festival of Life 4
|
||||
"ABvoFL5.wav", //Festival of Life 4end
|
||||
"ABvoFW1.wav", //Foolhardy Waywardness 1
|
||||
"ABvoFW2.wav", //Foolhardy Waywardness 2
|
||||
"ABvoFW3.wav", //Foolhardy Waywardness 3
|
||||
"ABvoFW4.wav", //Foolhardy Waywardness 4
|
||||
"ABvoFW5.wav", //Foolhardy Waywardness 4end
|
||||
"ABvoPF1.wav", //Playing with Fire 1
|
||||
"ABvoPF2.wav", //Playing with Fire 2
|
||||
"ABvoPF3.wav", //Playing with Fire 3
|
||||
"ABvoPF4.wav", //Playing with Fire 3end
|
||||
//Shadow of Death Campaigns
|
||||
"H3x2BBa", //Birth of a Barbarian 1
|
||||
"H3x2BBb", //Birth of a Barbarian 2
|
||||
"H3x2BBc", //Birth of a Barbarian 3
|
||||
"H3x2BBd", //Birth of a Barbarian 4
|
||||
"H3x2BBe", //Birth of a Barbarian 5
|
||||
"H3x2BBf", //Birth of a Barbarian 5end
|
||||
"H3x2ELa", //Elixir of life 1
|
||||
"H3x2ELb", //Elixir of life 2
|
||||
"H3x2ELc", //Elixir of life 3
|
||||
"H3x2ELd", //Elixir of life 4
|
||||
"H3x2ELe", //Elixir of life 4end
|
||||
"H3x2HSa", //Hack and Slash 1
|
||||
"H3x2HSb", //Hack and Slash 2
|
||||
"H3x2HSc", //Hack and Slash 3
|
||||
"H3x2HSd", //Hack and Slash 4
|
||||
"H3x2HSe", //Hack and Slash 4end
|
||||
"H3x2NBa", //New Beginning 1
|
||||
"H3x2NBb", //New Beginning 2
|
||||
"H3x2NBc", //New Beginning 3
|
||||
"H3x2NBd", //New Beginning 4
|
||||
"H3x2NBe", //New Beginning 4end
|
||||
"H3x2RNa", //Rise of the Necromancer 1
|
||||
"H3x2RNb", //Rise of the Necromancer 2
|
||||
"H3x2RNc", //Rise of the Necromancer 3
|
||||
"H3x2RNd", //Rise of the Necromancer 4
|
||||
"H3x2RNe", //Rise of the Necromancer 4end
|
||||
"H3x2SPa", //Spectre of Power 1
|
||||
"H3x2Spb", //Spectre of Power 2
|
||||
"H3x2Spc", //Spectre of Power 3
|
||||
"H3x2Spd", //Spectre of Power 4
|
||||
"H3x2Spe", //Spectre of Power 4end
|
||||
"H3x2UAa", //Unholy alliance 1
|
||||
"H3x2UAb", //Unholy alliance 2
|
||||
"H3x2UAc", //Unholy alliance 3
|
||||
"H3x2UAd", //Unholy alliance 4
|
||||
"H3x2UAe", //Unholy alliance 5
|
||||
"H3x2UAf", //Unholy alliance 6
|
||||
"H3x2UAg", //Unholy alliance 7
|
||||
"H3x2UAh", //Unholy alliance 8
|
||||
"H3x2UAi", //Unholy alliance 9
|
||||
"H3x2UAj", //Unholy alliance 10
|
||||
"H3x2UAk", //Unholy alliance 11
|
||||
"H3x2UAl", //Unholy alliance 12
|
||||
"H3x2UAm" //Unholy alliance 12end
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
|
||||
{
|
||||
//Commander receives these bonuses on level-up
|
||||
"bonusPerLevel":
|
||||
[
|
||||
["CREATURE_DAMAGE", 1, 1, 0 ], //+1 minimum damage
|
||||
["CREATURE_DAMAGE", 2, 2, 0 ], //+2 maximum damage
|
||||
["STACK_HEALTH", 5, 0, 0 ] //+5 hp
|
||||
],
|
||||
//Value of bonuses given by each skill level
|
||||
"skillLevels":
|
||||
[
|
||||
{"name": "ATTACK", "levels": [2, 5, 9, 15, 25]}, //0
|
||||
{"name": "DEFENSE", "levels": [4, 10, 18, 30, 50]}, //1
|
||||
{"name": "HEALTH", "levels": [10, 25, 45, 70, 100]}, //2
|
||||
{"name": "DAMAGE", "levels": [10, 25, 45, 70, 100]}, //3
|
||||
{"name": "SPEED", "levels": [1, 2, 3, 4, 6]}, //4
|
||||
{"name": "SPELL_POWER", "levels": [1, 3, 6, 14, 29]}, //5
|
||||
{"name": "CASTS", "levels": [1, 2, 3, 4, 5]},
|
||||
{"name": "RESISTANCE", "levels": [5, 15, 35, 60, 90]}
|
||||
],
|
||||
"abilityRequirements":
|
||||
//Two secondary skills needed for each special ability
|
||||
[
|
||||
{"ability": ["ENEMY_DEFENCE_REDUCTION", 50, 0, 0 ], "skills": [0, 1]},
|
||||
{"ability": ["FEAR", 0, 0, 0 ], "skills": [0, 2]},
|
||||
{"ability": ["ALWAYS_MAXIMUM_DAMAGE", 0, -1, 0 ], "skills": [0, 3]},
|
||||
{"ability": ["SHOOTER", 0, 0, 0 ], "skills": [0, 4]},
|
||||
{"ability": ["BLOCKS_RETALIATION", 0, 1, 0 ], "skills": [0,5]},
|
||||
{"ability": ["UNLIMITED_RETALIATIONS", 0, 0, 0 ], "skills": [1, 2]},
|
||||
{"ability": ["ATTACKS_ALL_ADJACENT", 0, 0, 0 ], "skills": [1, 3]},
|
||||
{"ability": ["NONE", 30, 0, 0 ], "skills": [1, 4]}, // TODO: Implement bonus that gives chance to completely block one enemy attack per turn
|
||||
{"ability": ["FIRE_SHIELD", 1, 1, 0 ], "skills": [1, 5]},
|
||||
{"ability": ["ADDITIONAL_ATTACK", 1, 0, 0 ], "skills": [2, 3]},
|
||||
{"ability": ["HP_REGENERATION", 50, 0, 0 ], "skills": [2, 4]},
|
||||
{"ability": ["SPELL_AFTER_ATTACK", 30, "spell.paralyze", 0 ], "skills": [2, 5]},
|
||||
{"ability": ["JOUSTING", 5, 0, 0 ], "skills": [3, 4]},
|
||||
{"ability": ["DEATH_STARE", 1, 1, 0 ], "skills": [3,5]},
|
||||
{"ability": ["FLYING", 0, 0, 0 ], "skills": [4,5]}
|
||||
]
|
||||
}
|
||||
|
||||
{
|
||||
//Commander receives these bonuses on level-up
|
||||
"bonusPerLevel":
|
||||
[
|
||||
["CREATURE_DAMAGE", 1, 1, 0 ], //+1 minimum damage
|
||||
["CREATURE_DAMAGE", 2, 2, 0 ], //+2 maximum damage
|
||||
["STACK_HEALTH", 5, 0, 0 ] //+5 hp
|
||||
],
|
||||
//Value of bonuses given by each skill level
|
||||
"skillLevels":
|
||||
[
|
||||
{"name": "ATTACK", "levels": [2, 5, 9, 15, 25]}, //0
|
||||
{"name": "DEFENSE", "levels": [4, 10, 18, 30, 50]}, //1
|
||||
{"name": "HEALTH", "levels": [10, 25, 45, 70, 100]}, //2
|
||||
{"name": "DAMAGE", "levels": [10, 25, 45, 70, 100]}, //3
|
||||
{"name": "SPEED", "levels": [1, 2, 3, 4, 6]}, //4
|
||||
{"name": "SPELL_POWER", "levels": [1, 3, 6, 14, 29]}, //5
|
||||
{"name": "CASTS", "levels": [1, 2, 3, 4, 5]},
|
||||
{"name": "RESISTANCE", "levels": [5, 15, 35, 60, 90]}
|
||||
],
|
||||
"abilityRequirements":
|
||||
//Two secondary skills needed for each special ability
|
||||
[
|
||||
{"ability": ["ENEMY_DEFENCE_REDUCTION", 50, 0, 0 ], "skills": [0, 1]},
|
||||
{"ability": ["FEAR", 0, 0, 0 ], "skills": [0, 2]},
|
||||
{"ability": ["ALWAYS_MAXIMUM_DAMAGE", 0, -1, 0 ], "skills": [0, 3]},
|
||||
{"ability": ["SHOOTER", 0, 0, 0 ], "skills": [0, 4]},
|
||||
{"ability": ["BLOCKS_RETALIATION", 0, 1, 0 ], "skills": [0,5]},
|
||||
{"ability": ["UNLIMITED_RETALIATIONS", 0, 0, 0 ], "skills": [1, 2]},
|
||||
{"ability": ["ATTACKS_ALL_ADJACENT", 0, 0, 0 ], "skills": [1, 3]},
|
||||
{"ability": ["NONE", 30, 0, 0 ], "skills": [1, 4]}, // TODO: Implement bonus that gives chance to completely block one enemy attack per turn
|
||||
{"ability": ["FIRE_SHIELD", 1, 1, 0 ], "skills": [1, 5]},
|
||||
{"ability": ["ADDITIONAL_ATTACK", 1, 0, 0 ], "skills": [2, 3]},
|
||||
{"ability": ["HP_REGENERATION", 50, 0, 0 ], "skills": [2, 4]},
|
||||
{"ability": ["SPELL_AFTER_ATTACK", 30, "spell.paralyze", 0 ], "skills": [2, 5]},
|
||||
{"ability": ["JOUSTING", 5, 0, 0 ], "skills": [3, 4]},
|
||||
{"ability": ["DEATH_STARE", 1, 1, 0 ], "skills": [3,5]},
|
||||
{"ability": ["FLYING", 0, 0, 0 ], "skills": [4,5]}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,70 +1,70 @@
|
||||
//Configured difficulty
|
||||
{
|
||||
"human":
|
||||
{
|
||||
"pawn":
|
||||
{
|
||||
"resources": { "wood" : 30, "mercury": 15, "ore": 30, "sulfur": 15, "crystal": 15, "gems": 15, "gold": 30000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"knight":
|
||||
{
|
||||
"resources": { "wood" : 20, "mercury": 10, "ore": 20, "sulfur": 10, "crystal": 10, "gems": 10, "gold": 20000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"rook":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 15000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"queen":
|
||||
{
|
||||
"resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"king":
|
||||
{
|
||||
"resources": { "wood" : 0, "mercury": 0, "ore": 0 , "sulfur": 0, "crystal": 0, "gems": 0, "gold": 0, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
}
|
||||
},
|
||||
"ai":
|
||||
{
|
||||
"pawn":
|
||||
{
|
||||
"resources": { "wood" : 5, "mercury": 2, "ore": 5, "sulfur": 2, "crystal": 2, "gems": 2, "gold": 5000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"knight":
|
||||
{
|
||||
"resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 7500, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"rook":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"queen":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"king":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
//Configured difficulty
|
||||
{
|
||||
"human":
|
||||
{
|
||||
"pawn":
|
||||
{
|
||||
"resources": { "wood" : 30, "mercury": 15, "ore": 30, "sulfur": 15, "crystal": 15, "gems": 15, "gold": 30000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"knight":
|
||||
{
|
||||
"resources": { "wood" : 20, "mercury": 10, "ore": 20, "sulfur": 10, "crystal": 10, "gems": 10, "gold": 20000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"rook":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 15000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"queen":
|
||||
{
|
||||
"resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"king":
|
||||
{
|
||||
"resources": { "wood" : 0, "mercury": 0, "ore": 0 , "sulfur": 0, "crystal": 0, "gems": 0, "gold": 0, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
}
|
||||
},
|
||||
"ai":
|
||||
{
|
||||
"pawn":
|
||||
{
|
||||
"resources": { "wood" : 5, "mercury": 2, "ore": 5, "sulfur": 2, "crystal": 2, "gems": 2, "gold": 5000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"knight":
|
||||
{
|
||||
"resources": { "wood" : 10, "mercury": 4, "ore": 10, "sulfur": 4, "crystal": 4, "gems": 4, "gold": 7500, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"rook":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"queen":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
},
|
||||
"king":
|
||||
{
|
||||
"resources": { "wood" : 15, "mercury": 7, "ore": 15, "sulfur": 7, "crystal": 7, "gems": 7, "gold": 10000, "mithril": 0 },
|
||||
"globalBonuses": [],
|
||||
"battleBonuses": []
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,98 +1,98 @@
|
||||
{
|
||||
"type" : "object",
|
||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||
"title" : "VCMI skill format",
|
||||
"description" : "Format used to replace bonuses provided by secondary skills in VCMI",
|
||||
"definitions" : {
|
||||
"skillBonus" : {
|
||||
"type" : "object",
|
||||
"description" : "Set of bonuses provided by skill at given level",
|
||||
"required" : ["description", "effects"],
|
||||
"properties" : {
|
||||
"description" : {
|
||||
"type" : "string",
|
||||
"description" : "localizable description"
|
||||
},
|
||||
"images" : {
|
||||
"type" : "object",
|
||||
"description" : "Skill icons of varying size",
|
||||
"properties" : {
|
||||
"small" : {
|
||||
"type" : "string",
|
||||
"description" : "32x32 skill icon",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"medium" : {
|
||||
"type" : "string",
|
||||
"description" : "44x44 skill icon",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"large" : {
|
||||
"type" : "string",
|
||||
"description" : "82x93 skill icon",
|
||||
"format" : "imageFile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"effects" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : {
|
||||
"$ref" : "bonus.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required" : ["name", "basic", "advanced", "expert"],
|
||||
"properties" : {
|
||||
"name" : {
|
||||
"type" : "string",
|
||||
"description" : "Mandatory, localizable skill name"
|
||||
},
|
||||
"index" : {
|
||||
"type" : "number",
|
||||
"description" : "Internal, numeric id of skill, required for existing skills"
|
||||
},
|
||||
"obligatoryMajor" : {
|
||||
"type" : "boolean",
|
||||
"description" : "This skill is major obligatory (like H3 Wisdom)"
|
||||
},
|
||||
"obligatoryMinor" : {
|
||||
"type" : "boolean",
|
||||
"description" : "This skill is minor obligatory (like H3 Magic school)"
|
||||
},
|
||||
"gainChance" : {
|
||||
"description" : "Chance for the skill to be offered on level-up (heroClass may override)",
|
||||
"type" : "object",
|
||||
"required" : ["might", "magic"],
|
||||
"properties" : {
|
||||
"might" : {
|
||||
"type" : "number",
|
||||
"description" : "Chance for hero classes with might affinity"
|
||||
},
|
||||
"magic" : {
|
||||
"type" : "number",
|
||||
"description" : "Chance for hero classes with magic affinity"
|
||||
}
|
||||
}
|
||||
},
|
||||
"base" : {
|
||||
"type" : "object",
|
||||
"description" : "will be merged with all levels",
|
||||
"additionalProperties" : true
|
||||
},
|
||||
"basic" : {
|
||||
"$ref" : "#/definitions/skillBonus"
|
||||
},
|
||||
"advanced" : {
|
||||
"$ref" : "#/definitions/skillBonus"
|
||||
},
|
||||
"expert" : {
|
||||
"$ref" : "#/definitions/skillBonus"
|
||||
}
|
||||
},
|
||||
"onlyOnWaterMap" : {
|
||||
"type" : "boolean",
|
||||
"description" : "It true, skill won't be available on a map without water"
|
||||
}
|
||||
}
|
||||
{
|
||||
"type" : "object",
|
||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||
"title" : "VCMI skill format",
|
||||
"description" : "Format used to replace bonuses provided by secondary skills in VCMI",
|
||||
"definitions" : {
|
||||
"skillBonus" : {
|
||||
"type" : "object",
|
||||
"description" : "Set of bonuses provided by skill at given level",
|
||||
"required" : ["description", "effects"],
|
||||
"properties" : {
|
||||
"description" : {
|
||||
"type" : "string",
|
||||
"description" : "localizable description"
|
||||
},
|
||||
"images" : {
|
||||
"type" : "object",
|
||||
"description" : "Skill icons of varying size",
|
||||
"properties" : {
|
||||
"small" : {
|
||||
"type" : "string",
|
||||
"description" : "32x32 skill icon",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"medium" : {
|
||||
"type" : "string",
|
||||
"description" : "44x44 skill icon",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"large" : {
|
||||
"type" : "string",
|
||||
"description" : "82x93 skill icon",
|
||||
"format" : "imageFile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"effects" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : {
|
||||
"$ref" : "bonus.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required" : ["name", "basic", "advanced", "expert"],
|
||||
"properties" : {
|
||||
"name" : {
|
||||
"type" : "string",
|
||||
"description" : "Mandatory, localizable skill name"
|
||||
},
|
||||
"index" : {
|
||||
"type" : "number",
|
||||
"description" : "Internal, numeric id of skill, required for existing skills"
|
||||
},
|
||||
"obligatoryMajor" : {
|
||||
"type" : "boolean",
|
||||
"description" : "This skill is major obligatory (like H3 Wisdom)"
|
||||
},
|
||||
"obligatoryMinor" : {
|
||||
"type" : "boolean",
|
||||
"description" : "This skill is minor obligatory (like H3 Magic school)"
|
||||
},
|
||||
"gainChance" : {
|
||||
"description" : "Chance for the skill to be offered on level-up (heroClass may override)",
|
||||
"type" : "object",
|
||||
"required" : ["might", "magic"],
|
||||
"properties" : {
|
||||
"might" : {
|
||||
"type" : "number",
|
||||
"description" : "Chance for hero classes with might affinity"
|
||||
},
|
||||
"magic" : {
|
||||
"type" : "number",
|
||||
"description" : "Chance for hero classes with magic affinity"
|
||||
}
|
||||
}
|
||||
},
|
||||
"base" : {
|
||||
"type" : "object",
|
||||
"description" : "will be merged with all levels",
|
||||
"additionalProperties" : true
|
||||
},
|
||||
"basic" : {
|
||||
"$ref" : "#/definitions/skillBonus"
|
||||
},
|
||||
"advanced" : {
|
||||
"$ref" : "#/definitions/skillBonus"
|
||||
},
|
||||
"expert" : {
|
||||
"$ref" : "#/definitions/skillBonus"
|
||||
}
|
||||
},
|
||||
"onlyOnWaterMap" : {
|
||||
"type" : "boolean",
|
||||
"description" : "It true, skill won't be available on a map without water"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,318 +1,318 @@
|
||||
{
|
||||
"type" : "object",
|
||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||
"title" : "VCMI spell format",
|
||||
"description" : "Format used to define new spells in VCMI",
|
||||
"definitions" : {
|
||||
"animationQueue" : {
|
||||
"type" : "array",
|
||||
"items" : {
|
||||
"anyOf" :[
|
||||
{
|
||||
//dummy animation, pause, Value - frame count
|
||||
"type" : "number"
|
||||
},
|
||||
{
|
||||
//assumed verticalPosition: top
|
||||
"type" : "string",
|
||||
"format" : "defFile"
|
||||
},
|
||||
{
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"verticalPosition" : {"type" : "string", "enum" :["top","bottom"]},
|
||||
"defName" : {"type" : "string", "format" : "defFile"},
|
||||
"effectName" : { "type" : "string" }
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"animation" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"affect" : {"$ref" : "#/definitions/animationQueue"},
|
||||
"hit" : {"$ref" : "#/definitions/animationQueue"},
|
||||
"cast" : {"$ref" : "#/definitions/animationQueue"},
|
||||
"projectile" : {
|
||||
"type" : "array",
|
||||
"items" : {
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"defName" : {"type" : "string", "format" : "defFile"},
|
||||
"minimumAngle" : {"type" : "number", "minimum" : 0}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : {
|
||||
"type" : "boolean"
|
||||
}
|
||||
},
|
||||
"levelInfo" : {
|
||||
"type" : "object",
|
||||
"required" :["range", "description", "cost", "power", "aiValue"],
|
||||
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"description" : {
|
||||
"type" : "string",
|
||||
"description" : "Localizable description. Use {xxx} for formatting"
|
||||
},
|
||||
"cost" : {
|
||||
"type" : "number",
|
||||
"description" : "Cost in mana points"
|
||||
},
|
||||
"power" : {
|
||||
"type" : "number"
|
||||
},
|
||||
"range" : {
|
||||
"type" : "string",
|
||||
"description" : "spell range description in SRSL"
|
||||
},
|
||||
"aiValue" : {
|
||||
"type" : "number"
|
||||
},
|
||||
"effects" : {
|
||||
"type" : "object",
|
||||
"description" : "Timed effects (updated by prolongation)",
|
||||
"additionalProperties" : {
|
||||
"$ref" : "bonus.json"
|
||||
}
|
||||
},
|
||||
"cumulativeEffects" : {
|
||||
"type" : "object",
|
||||
"description" : "Timed effects (updated by unique bonus)",
|
||||
"additionalProperties" : {
|
||||
"$ref" : "bonus.json"
|
||||
}
|
||||
},
|
||||
"battleEffects" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : {
|
||||
"type" : "object"
|
||||
}
|
||||
},
|
||||
"targetModifier" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"smart" : {
|
||||
"type" : "boolean",
|
||||
"description" : "true: friendly/hostile based on positiveness; false: all targets"
|
||||
},
|
||||
"clearTarget" :
|
||||
{
|
||||
"type" : "boolean",
|
||||
"description" : "LOCATION target only. Target hex/tile must be clear"
|
||||
},
|
||||
"clearAffected" :
|
||||
{
|
||||
"type" : "boolean",
|
||||
"description" : "LOCATION target only. All affected hexes/tile must be clear"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"texts" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false
|
||||
}
|
||||
},
|
||||
"required" : ["type", "name", "school", "level", "power","gainChance","flags","levels"],
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"index" : {
|
||||
"type" : "number",
|
||||
"description" : "numeric id of spell required only for original spells, prohibited for new spells"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "string",
|
||||
"description" : "Localizable name of this spell"
|
||||
},
|
||||
"type" : {
|
||||
"type" : "string",
|
||||
"enum" : ["adventure", "combat", "ability"],
|
||||
"description" : "Spell type"
|
||||
},
|
||||
"school" : {
|
||||
"type" : "object",
|
||||
"description" : "List of spell schools this spell belongs to",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"air" : {"type" : "boolean"},
|
||||
"fire" : {"type" : "boolean"},
|
||||
"earth" : {"type" : "boolean"},
|
||||
"water" : {"type" : "boolean"}
|
||||
}
|
||||
},
|
||||
"level" : {
|
||||
"type" : "number",
|
||||
"description" : "Spell level",
|
||||
"minimum" : 0,
|
||||
"maximum" : 5
|
||||
},
|
||||
"power" : {
|
||||
"type" : "number",
|
||||
"description" : "Base power of the spell"
|
||||
},
|
||||
"defaultGainChance" : {
|
||||
"type" : "number",
|
||||
"description" : "Gain chance by default for all factions"
|
||||
|
||||
},
|
||||
"gainChance" : {
|
||||
"type" : "object",
|
||||
"description" : "Chance for this spell to appear in Mage Guild of a specific faction",
|
||||
"additionalProperties" : {
|
||||
"type" : "number",
|
||||
"minimum" : 0
|
||||
}
|
||||
},
|
||||
"targetType" : {
|
||||
"type" : "string",
|
||||
"description" : "NO_TARGET - instant cast no aiming, default; CREATURE - target is unit; OBSTACLE - target is OBSTACLE; LOCATION - target is location",
|
||||
"enum" : ["NO_TARGET","CREATURE","OBSTACLE","LOCATION"]
|
||||
},
|
||||
"counters" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "Flags structure ids of countering spells"
|
||||
},
|
||||
"flags" : {
|
||||
"type" : "object",
|
||||
"description" : "Various flags",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"indifferent" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell is indifferent for target"
|
||||
},
|
||||
"negative" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell is negative for target"
|
||||
},
|
||||
"positive" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell is positive for target"
|
||||
},
|
||||
"damage" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell does damage (direct or indirect)"
|
||||
},
|
||||
"offensive" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell does direct damage (implicitly sets damage and negative)"
|
||||
},
|
||||
"rising" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Rising spell (implicitly sets positive)"
|
||||
},
|
||||
"special" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Special spell. Can be given only by BonusType::SPELL"
|
||||
},
|
||||
"nonMagical" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Non-magical ability. Usually used by some creatures. Should not be affected by sorcery and generic magic resistance. School resistances apply. Examples: dendroid bind, efreet fire shield."
|
||||
}
|
||||
}
|
||||
},
|
||||
"immunity" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names, any one of these bonus grants immunity"
|
||||
},
|
||||
"absoluteImmunity" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names. Any one of these bonus grants immunity, can't be negated"
|
||||
},
|
||||
"limit" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names, presence of all bonuses required to be affected by."
|
||||
},
|
||||
"absoluteLimit" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names, presence of all bonuses required to be affected by, can't be negated."
|
||||
},
|
||||
"targetCondition" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : true
|
||||
},
|
||||
"animation" : {"$ref" : "#/definitions/animation"},
|
||||
"graphics" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"iconBook" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for spellbook" ,
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconScroll" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for spell scrolls",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconEffect" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for spell effects during battle" ,
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconImmune" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for SPELL_IMMUNITY bonus (relative to DATA or SPRITES)",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconScenarioBonus" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for scenario bonus" ,
|
||||
"format" : "imageFile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sounds" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"cast" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of cast sound"
|
||||
}
|
||||
}
|
||||
},
|
||||
"levels" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"required" : ["none", "basic", "advanced", "expert"],
|
||||
"properties" : {
|
||||
"base" : {
|
||||
"type" : "object",
|
||||
"description" : "will be merged with all levels",
|
||||
"additionalProperties" : true
|
||||
},
|
||||
"none" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
},
|
||||
"basic" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
},
|
||||
"advanced" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
},
|
||||
"expert" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"onlyOnWaterMap" : {
|
||||
"type" : "boolean",
|
||||
"description" : "If true, spell won't be available on a map without water"
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"type" : "object",
|
||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||
"title" : "VCMI spell format",
|
||||
"description" : "Format used to define new spells in VCMI",
|
||||
"definitions" : {
|
||||
"animationQueue" : {
|
||||
"type" : "array",
|
||||
"items" : {
|
||||
"anyOf" :[
|
||||
{
|
||||
//dummy animation, pause, Value - frame count
|
||||
"type" : "number"
|
||||
},
|
||||
{
|
||||
//assumed verticalPosition: top
|
||||
"type" : "string",
|
||||
"format" : "defFile"
|
||||
},
|
||||
{
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"verticalPosition" : {"type" : "string", "enum" :["top","bottom"]},
|
||||
"defName" : {"type" : "string", "format" : "defFile"},
|
||||
"effectName" : { "type" : "string" }
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"animation" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"affect" : {"$ref" : "#/definitions/animationQueue"},
|
||||
"hit" : {"$ref" : "#/definitions/animationQueue"},
|
||||
"cast" : {"$ref" : "#/definitions/animationQueue"},
|
||||
"projectile" : {
|
||||
"type" : "array",
|
||||
"items" : {
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"defName" : {"type" : "string", "format" : "defFile"},
|
||||
"minimumAngle" : {"type" : "number", "minimum" : 0}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : {
|
||||
"type" : "boolean"
|
||||
}
|
||||
},
|
||||
"levelInfo" : {
|
||||
"type" : "object",
|
||||
"required" :["range", "description", "cost", "power", "aiValue"],
|
||||
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"description" : {
|
||||
"type" : "string",
|
||||
"description" : "Localizable description. Use {xxx} for formatting"
|
||||
},
|
||||
"cost" : {
|
||||
"type" : "number",
|
||||
"description" : "Cost in mana points"
|
||||
},
|
||||
"power" : {
|
||||
"type" : "number"
|
||||
},
|
||||
"range" : {
|
||||
"type" : "string",
|
||||
"description" : "spell range description in SRSL"
|
||||
},
|
||||
"aiValue" : {
|
||||
"type" : "number"
|
||||
},
|
||||
"effects" : {
|
||||
"type" : "object",
|
||||
"description" : "Timed effects (updated by prolongation)",
|
||||
"additionalProperties" : {
|
||||
"$ref" : "bonus.json"
|
||||
}
|
||||
},
|
||||
"cumulativeEffects" : {
|
||||
"type" : "object",
|
||||
"description" : "Timed effects (updated by unique bonus)",
|
||||
"additionalProperties" : {
|
||||
"$ref" : "bonus.json"
|
||||
}
|
||||
},
|
||||
"battleEffects" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : {
|
||||
"type" : "object"
|
||||
}
|
||||
},
|
||||
"targetModifier" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"smart" : {
|
||||
"type" : "boolean",
|
||||
"description" : "true: friendly/hostile based on positiveness; false: all targets"
|
||||
},
|
||||
"clearTarget" :
|
||||
{
|
||||
"type" : "boolean",
|
||||
"description" : "LOCATION target only. Target hex/tile must be clear"
|
||||
},
|
||||
"clearAffected" :
|
||||
{
|
||||
"type" : "boolean",
|
||||
"description" : "LOCATION target only. All affected hexes/tile must be clear"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"texts" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false
|
||||
}
|
||||
},
|
||||
"required" : ["type", "name", "school", "level", "power","gainChance","flags","levels"],
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"index" : {
|
||||
"type" : "number",
|
||||
"description" : "numeric id of spell required only for original spells, prohibited for new spells"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "string",
|
||||
"description" : "Localizable name of this spell"
|
||||
},
|
||||
"type" : {
|
||||
"type" : "string",
|
||||
"enum" : ["adventure", "combat", "ability"],
|
||||
"description" : "Spell type"
|
||||
},
|
||||
"school" : {
|
||||
"type" : "object",
|
||||
"description" : "List of spell schools this spell belongs to",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"air" : {"type" : "boolean"},
|
||||
"fire" : {"type" : "boolean"},
|
||||
"earth" : {"type" : "boolean"},
|
||||
"water" : {"type" : "boolean"}
|
||||
}
|
||||
},
|
||||
"level" : {
|
||||
"type" : "number",
|
||||
"description" : "Spell level",
|
||||
"minimum" : 0,
|
||||
"maximum" : 5
|
||||
},
|
||||
"power" : {
|
||||
"type" : "number",
|
||||
"description" : "Base power of the spell"
|
||||
},
|
||||
"defaultGainChance" : {
|
||||
"type" : "number",
|
||||
"description" : "Gain chance by default for all factions"
|
||||
|
||||
},
|
||||
"gainChance" : {
|
||||
"type" : "object",
|
||||
"description" : "Chance for this spell to appear in Mage Guild of a specific faction",
|
||||
"additionalProperties" : {
|
||||
"type" : "number",
|
||||
"minimum" : 0
|
||||
}
|
||||
},
|
||||
"targetType" : {
|
||||
"type" : "string",
|
||||
"description" : "NO_TARGET - instant cast no aiming, default; CREATURE - target is unit; OBSTACLE - target is OBSTACLE; LOCATION - target is location",
|
||||
"enum" : ["NO_TARGET","CREATURE","OBSTACLE","LOCATION"]
|
||||
},
|
||||
"counters" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "Flags structure ids of countering spells"
|
||||
},
|
||||
"flags" : {
|
||||
"type" : "object",
|
||||
"description" : "Various flags",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"indifferent" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell is indifferent for target"
|
||||
},
|
||||
"negative" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell is negative for target"
|
||||
},
|
||||
"positive" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell is positive for target"
|
||||
},
|
||||
"damage" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell does damage (direct or indirect)"
|
||||
},
|
||||
"offensive" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Spell does direct damage (implicitly sets damage and negative)"
|
||||
},
|
||||
"rising" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Rising spell (implicitly sets positive)"
|
||||
},
|
||||
"special" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Special spell. Can be given only by BonusType::SPELL"
|
||||
},
|
||||
"nonMagical" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Non-magical ability. Usually used by some creatures. Should not be affected by sorcery and generic magic resistance. School resistances apply. Examples: dendroid bind, efreet fire shield."
|
||||
}
|
||||
}
|
||||
},
|
||||
"immunity" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names, any one of these bonus grants immunity"
|
||||
},
|
||||
"absoluteImmunity" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names. Any one of these bonus grants immunity, can't be negated"
|
||||
},
|
||||
"limit" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names, presence of all bonuses required to be affected by."
|
||||
},
|
||||
"absoluteLimit" : {
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description" : "flags structure of bonus names, presence of all bonuses required to be affected by, can't be negated."
|
||||
},
|
||||
"targetCondition" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : true
|
||||
},
|
||||
"animation" : {"$ref" : "#/definitions/animation"},
|
||||
"graphics" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"iconBook" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for spellbook" ,
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconScroll" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for spell scrolls",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconEffect" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for spell effects during battle" ,
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconImmune" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for SPELL_IMMUNITY bonus (relative to DATA or SPRITES)",
|
||||
"format" : "imageFile"
|
||||
},
|
||||
"iconScenarioBonus" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of icon for scenario bonus" ,
|
||||
"format" : "imageFile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sounds" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"cast" : {
|
||||
"type" : "string",
|
||||
"description" : "Resourse path of cast sound"
|
||||
}
|
||||
}
|
||||
},
|
||||
"levels" : {
|
||||
"type" : "object",
|
||||
"additionalProperties" : false,
|
||||
"required" : ["none", "basic", "advanced", "expert"],
|
||||
"properties" : {
|
||||
"base" : {
|
||||
"type" : "object",
|
||||
"description" : "will be merged with all levels",
|
||||
"additionalProperties" : true
|
||||
},
|
||||
"none" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
},
|
||||
"basic" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
},
|
||||
"advanced" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
},
|
||||
"expert" : {
|
||||
"$ref" : "#/definitions/levelInfo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"onlyOnWaterMap" : {
|
||||
"type" : "boolean",
|
||||
"description" : "If true, spell won't be available on a map without water"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user