new syntax for animation lines, simplifies mainline WML quite a bit.

patch by Coffee
This commit is contained in:
Jérémy Rosen 2013-01-26 22:33:51 +00:00
parent 70351c6209
commit 5662cbcc38
46 changed files with 365 additions and 1729 deletions

View file

@ -71,7 +71,11 @@ Version 1.11.1+svn:
* Fixed bug #20401: [remove_unit_overlay] did not work when the image used an
image path function that took multiple parameters.
* Improved support for setting id= within a [variation].
* Miscellaneous and bug fixes:
* Added support for square bracket expansion in animation strings I.E
halo="pic[1-2,5]:[10,20,30]" expands to halo="pic1:10,pic2:20,pic5:30"
this is used for halos, team flags, animated terrains and unit animations
* Changed default unit halos and macros to use new square bracket expansion
Miscellaneous and bug fixes:
* The undo stack is preserved across a save-reload.
* Removed several unused private member variables.
* Fixed the present in-game command line autocompletion feature so it

View file

@ -10,42 +10,7 @@
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo1.png"
[/frame]
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo2.png"
[/frame]
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo3.png"
[/frame]
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo4.png"
[/frame]
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo5.png"
[/frame]
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo6.png"
[/frame]
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo7.png"
[/frame]
[frame]
duration=150
image="units/wose-shaman.png"
halo="halo/wose-stationary-halo8.png"
halo="halo/wose-stationary-halo[1-8].png:150"
[/frame]
[/standing_anim]
{DEFENSE_ANIM units/wose-shaman.png units/wose-shaman.png {SOUND_LIST:HUMAN_OLD_HIT}}

View file

@ -103,22 +103,9 @@
[/else]
[frame]
begin=0
end=75
image="units/dark-mage-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/dark-mage-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/dark-mage-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3-5].png:[75,75,50]
[/frame]
[frame]
begin=200
@ -198,21 +185,9 @@
[/frame]
[frame]
begin=0
end=75
image="units/dark-mage-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/dark-mage-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/dark-mage-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3-5].png:[75,75,50]
[/frame]
[frame]
begin=200

View file

@ -64,112 +64,14 @@
direction=n,ne,nw
[missile_frame]
duration=30
halo="halo/holy/light-beam-1.png"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-2.png"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-3.png"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-4.png"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-5.png"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-6.png"
[/missile_frame]
[missile_frame]
duration=130
halo="halo/holy/light-beam-7.png"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-6.png"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-5.png"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-4.png"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-3.png"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-2.png"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-1.png"
halo="halo/holy/light-beam-[1-7,6-1].png:[30,30,30,30,30,30,130,70,70,70,70,70,70]"
[/missile_frame]
[/if]
[else]
direction=s,se,sw
[missile_frame]
duration=30
halo="halo/holy/light-beam-1.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-2.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-3.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-4.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-5.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=30
halo="halo/holy/light-beam-6.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=130
halo="halo/holy/light-beam-7.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-6.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-5.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-4.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-3.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-2.png~FL(vert)"
[/missile_frame]
[missile_frame]
duration=70
halo="halo/holy/light-beam-1.png~FL(vert)"
halo="halo/holy/light-beam-[1-7,6-1].png~FL(vert):[30,30,30,30,30,30,130,70,70,70,70,70,70]"
[/missile_frame]
[/else]

View file

@ -8,19 +8,19 @@
[teleport_sparkle_1_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:400
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1,2,8,9].png,misc/blank-hex.png:400
halo_x=-10
halo_y=30~-30
[/teleport_sparkle_1_frame]
[teleport_sparkle_2_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:500
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1,8,9].png,misc/blank-hex.png:500
halo_x=0
halo_y=40~-40
[/teleport_sparkle_2_frame]
[teleport_sparkle_3_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:600
halo=misc/blank-hex.png:1,halo/teleport-[9,8,9].png,misc/blank-hex.png:600
halo_x=10
halo_y=30~-30
[/teleport_sparkle_3_frame]
@ -154,19 +154,9 @@
halo=halo/holy/halo1.png
[/frame]
[frame]
duration=75
duration=200
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo3.png
[/frame]
[frame]
duration=75
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo5.png
[/frame]
[frame]
duration=50
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo6.png
halo=halo/holy/halo[3,5,6].png:[75,75,50]
[/frame]
[frame]
duration=50
@ -206,19 +196,9 @@
halo=halo/holy/halo1.png
[/frame]
[frame]
duration=75
duration=200
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo3.png
[/frame]
[frame]
duration=75
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo5.png
[/frame]
[frame]
duration=50
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo6.png
halo=halo/holy/halo[3,5,6].png:[75,75,50]
[/frame]
[frame]
duration=50
@ -267,39 +247,8 @@
image="units/human-magi/white-mage-magic-2.png"
[/frame]
[frame]
duration=125
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo6.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo1.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo2.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo3.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo4.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo5.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo6.png
halo=halo/holy/halo[6,1-6].png:125
[/frame]
[frame]
duration=125
@ -331,39 +280,8 @@
image="units/human-magi/white-cleric-magic-2.png"
[/frame]
[frame]
duration=125
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo6.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo1.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo2.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo3.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo4.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo5.png
[/frame]
[frame]
duration=125
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo6.png
halo=halo/holy/halo[6,1-6].png:125
[/frame]
[frame]
duration=125

View file

@ -80,7 +80,7 @@
canrecruit=yes
team_name=undead
user_team_name=_"Undead"
#flag=flags/undead-flag-1.png,flags/undead-flag-2.png,flags/undead-flag-3.png,flags/undead-flag-4.png
#flag=flags/undead-flag-[1-4].png
{VOD_AI_PARMS}
{GOLD 200 320 440}

View file

@ -69,44 +69,9 @@
[/else]
[frame]
begin=-375
end=-300
image="units/human-queen.png"
halo=halo/elven/faerie-fire-halo2.png
halo_x,halo_y=0,-35
[/frame]
[frame]
begin=-300
end=-225
image="units/human-queen.png"
halo=halo/elven/faerie-fire-halo3.png
halo_x,halo_y=0,-35
[/frame]
[frame]
begin=-225
end=-150
image="units/human-queen.png"
halo=halo/elven/faerie-fire-halo4.png
halo_x,halo_y=0,-35
[/frame]
[frame]
begin=-150
end=-75
image="units/human-queen.png"
halo=halo/elven/faerie-fire-halo5.png
halo_x,halo_y=0,-35
[/frame]
[frame]
begin=-75
end=0
image="units/human-queen.png"
halo=halo/elven/faerie-fire-halo6.png
halo_x,halo_y=0,-35
[/frame]
[frame]
begin=-0
end=75
image="units/human-queen.png"
halo=halo/elven/faerie-fire-halo7.png
halo=halo/elven/faerie-fire-halo[2-7].png:75
halo_x,halo_y=0,-35
[/frame]
[/attack_anim]

View file

@ -47,7 +47,7 @@
[missile_frame]
begin=-200
end=0
halo=halo/mage-halo1.png,halo/mage-halo2.png,halo/mage-halo3.png,halo/mage-halo4.png,halo/mage-halo5.png
halo=halo/mage-halo[1-5].png
halo_x,halo_y=10,-14
[/missile_frame]
[frame]

View file

@ -60,7 +60,7 @@
begin=-500
end=50
image="units/human-outlaws/shadow-mage.png"
halo=halo/shadow-mage-halo1.png,halo/shadow-mage-halo2.png,halo/shadow-mage-halo3.png,halo/shadow-mage-halo4.png,halo/shadow-mage-halo5.png,halo/shadow-mage-halo6.png,halo/shadow-mage-halo7.png,halo/shadow-mage-halo8.png,halo/shadow-mage-halo9.png,halo/shadow-mage-halo10.png
halo=halo/shadow-mage-halo[1-10].png
halo_x,halo_y=12,-5
sound=magicmissile.wav
[/frame]

View file

@ -276,7 +276,7 @@
[item]
x,y=21,13
halo=projectiles/fire-burst-small-1.png:50,projectiles/fire-burst-small-2.png:50,projectiles/fire-burst-small-3.png:50,projectiles/fire-burst-small-4.png:50,projectiles/fire-burst-small-5.png:50,projectiles/fire-burst-small-6.png:50,projectiles/fire-burst-small-7.png:50,projectiles/fire-burst-small-8.png:50,misc/blank-hex.png:1000000
halo=projectiles/fire-burst-small-[1-8].png:50,misc/blank-hex.png:1000000
[/item]
[kill]
@ -292,7 +292,7 @@
[item]
x,y=$exploding_hexes[$i].x,$exploding_hexes[$i].y
halo=projectiles/fire-burst-small-1.png:50,projectiles/fire-burst-small-2.png:50,projectiles/fire-burst-small-3.png:50,projectiles/fire-burst-small-4.png:50,projectiles/fire-burst-small-5.png:50,projectiles/fire-burst-small-6.png:50,projectiles/fire-burst-small-7.png:50,projectiles/fire-burst-small-8.png:50,misc/blank-hex.png:1000000
halo=projectiles/fire-burst-small-[1-8].png:50,misc/blank-hex.png:1000000
[/item]
[kill]

View file

@ -49,7 +49,7 @@
[missile_frame]
begin=-200
end=200
halo="halo/elven/druid-healing8.png:50,halo/elven/druid-healing7.png:50,halo/elven/druid-healing6.png:50,halo/elven/druid-healing5.png:50,halo/elven/druid-healing4.png:50,halo/elven/druid-healing3.png:50,halo/elven/druid-healing2.png:50,halo/elven/druid-healing1.png:50"
halo="halo/elven/druid-healing[8-1].png:50"
offset=1.0~0.0
[/missile_frame]
[frame]

View file

@ -49,7 +49,7 @@
[missile_frame]
begin=-200
end=200
halo="halo/elven/druid-healing8.png:50,halo/elven/druid-healing7.png:50,halo/elven/druid-healing6.png:50,halo/elven/druid-healing5.png:50,halo/elven/druid-healing4.png:50,halo/elven/druid-healing3.png:50,halo/elven/druid-healing2.png:50,halo/elven/druid-healing1.png:50"
halo="halo/elven/druid-healing[8-1].png:50"
offset=1.0~0.0
[/missile_frame]
[frame]

View file

@ -49,7 +49,7 @@
[missile_frame]
begin=-200
end=200
halo="halo/elven/druid-healing8.png:50,halo/elven/druid-healing7.png:50,halo/elven/druid-healing6.png:50,halo/elven/druid-healing5.png:50,halo/elven/druid-healing4.png:50,halo/elven/druid-healing3.png:50,halo/elven/druid-healing2.png:50,halo/elven/druid-healing1.png:50"
halo="halo/elven/druid-healing[8-1].png:50"
offset=1.0~0.0
[/missile_frame]
[frame]

View file

@ -52,7 +52,7 @@
#enddef
#define BLACK_FLAG
flag=flags/black-flag-1.png:100,flags/black-flag-2.png:300,flags/black-flag-1.png:100,flags/black-flag-3.png:300
flag=flags/black-flag-[1,2,1,3].png:[100,300,100,300]
flag_icon=flags/black-flag-icon.png
#enddef

View file

@ -100,7 +100,7 @@
[missile_frame]
begin=0
end=300
halo="halo/elven/ice-halo1.png:50,halo/elven/ice-halo2.png:50,halo/elven/ice-halo3.png:50,halo/elven/ice-halo4.png:50,halo/elven/ice-halo5.png:50,halo/elven/ice-halo6.png:50"
halo="halo/elven/ice-halo[1-6].png:50"
offset=1.0~0.0:300
[/missile_frame]
[frame]

View file

@ -5,6 +5,6 @@
# and the generous advice of the collected fora.
#define CUSTOM_SG_FLAG
flag=flag/SG-flag-1.png:150,flag/SG-flag-2.png:150,flag/SG-flag-3.png:150,flag/SG-flag-4.png:150
flag=flag/SG-flag-[1-4].png:150
flag_icon=flag/SG-flag-icon.png
#enddef

View file

@ -147,32 +147,32 @@
[flame_burst_1_frame]
duration=800
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-1.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-2.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-3.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-4.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-5.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-6.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-7.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-8.png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-[1-8].png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo_x,halo_y=-9,17
[/flame_burst_1_frame]
[flame_burst_2_frame]
duration=800
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-1.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-2.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-3.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-4.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-5.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-6.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-7.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-8.png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-[1-8].png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo_x,halo_y=18,0
[/flame_burst_2_frame]
[flame_burst_3_frame]
duration=800
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-1.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-2.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-3.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-4.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-5.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-6.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-7.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-8.png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-[1-8].png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo_x,halo_y=-9,-18
[/flame_burst_3_frame]
[flame_burst_4_frame]
duration=800
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-1.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-2.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-3.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-4.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-5.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-6.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-7.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-8.png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-[1-8].png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo_x,halo_y=9,17
[/flame_burst_4_frame]
[flame_burst_5_frame]
duration=800
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-1.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-2.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-3.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-4.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-5.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-6.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-7.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-8.png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-[1-8].png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo_x,halo_y=8,-18
[/flame_burst_5_frame]
[flame_burst_6_frame]
duration=800
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-1.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-2.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-3.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-4.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-5.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-6.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-7.png~{OVERLAY_IMAGE_AFFIX}:50,halo/flame-burst-8.png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo=misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,halo/flame-burst-[1-8].png~{OVERLAY_IMAGE_AFFIX}:50,misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1
halo_x,halo_y=-18,0
[/flame_burst_6_frame]
@ -185,32 +185,32 @@
[explosion_1_frame]
duration=800
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-2.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-3.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-4.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-5.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-6.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-7.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-8.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-9.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-10.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-11.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-12.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-13.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-14.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-15.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-16.png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-[1,1-16].png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo_x,halo_y=-9,17
[/explosion_1_frame]
[explosion_2_frame]
duration=800
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-2.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-3.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-4.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-5.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-6.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-7.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-8.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-9.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-10.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-11.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-12.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-13.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-14.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-15.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-16.png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-[1,1-16].png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo_x,halo_y=18,0
[/explosion_2_frame]
[explosion_3_frame]
duration=800
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-2.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-3.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-4.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-5.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-6.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-7.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-8.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-9.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-10.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-11.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-12.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-13.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-14.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-15.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-16.png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-[1,1-16].png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo_x,halo_y=-9,-18
[/explosion_3_frame]
[explosion_4_frame]
duration=800
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-2.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-3.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-4.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-5.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-6.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-7.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-8.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-9.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-10.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-11.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-12.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-13.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-14.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-15.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-16.png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-[1,1-16].png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo_x,halo_y=9,17
[/explosion_4_frame]
[explosion_5_frame]
duration=800
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-2.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-3.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-4.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-5.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-6.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-7.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-8.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-9.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-10.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-11.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-12.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-13.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-14.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-15.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-16.png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-[1,1-16].png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo_x,halo_y=8,-18
[/explosion_5_frame]
[explosion_6_frame]
duration=800
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-1.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-2.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-3.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-4.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-5.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-6.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-7.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-8.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-9.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-10.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-11.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-12.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-13.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-14.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-15.png~{OVERLAY_IMAGE_AFFIX},projectiles/fireball-impact-16.png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo="misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1,projectiles/fireball-impact-[1,1-16].png~{OVERLAY_IMAGE_AFFIX},misc/blank-hex.png~{OVERLAY_IMAGE_AFFIX}:1"
halo_x,halo_y=-18,0
[/explosion_6_frame]

View file

@ -129,7 +129,7 @@ The unit will heal itself 6 HP per turn on sand or dirt terrain."
offset=1.0
begin=-200
end=120
halo="projectiles/sand-storm-1.png:40,projectiles/sand-storm-2.png:40,projectiles/sand-storm-3.png:40,projectiles/sand-storm-4.png:40,projectiles/sand-storm-5.png:40,projectiles/sand-storm-6.png:40,projectiles/sand-storm-7.png:40,projectiles/sand-storm-8.png:40"
halo="projectiles/sand-storm-[1-8].png:40"
[/missile_frame]
[/if]
[else]
@ -138,7 +138,7 @@ The unit will heal itself 6 HP per turn on sand or dirt terrain."
offset=1.0
begin=-200
end=120
halo="projectiles/sand-storm-1.png~FL(vert):40,projectiles/sand-storm-2.png~FL(vert):40,projectiles/sand-storm-3.png~FL(vert):40,projectiles/sand-storm-4.png~FL(vert):40,projectiles/sand-storm-5.png~FL(vert):40,projectiles/sand-storm-6.png~FL(vert):40,projectiles/sand-storm-7.png~FL(vert):40,projectiles/sand-storm-8.png~FL(vert):40"
halo="projectiles/sand-storm-[1-8].png~FL(vert):40"
[/missile_frame]
[/else]
[if]

View file

@ -935,6 +935,10 @@
[entry]
name = "Daniel Bruegmann"
[/entry]
[entry]
name = "David Mikos (Coffee)"
comment = "Coder, animation framework improvements."
[/entry]
[entry]
name= "Denny Vaccaro (endercoaster)"
[/entry]

File diff suppressed because it is too large Load diff

View file

@ -207,7 +207,7 @@
y=0
[image]
layer=0
name="misc/fire-A01.png:140,misc/fire-A02.png:140,misc/fire-A03.png:140,misc/fire-A04.png:140,misc/fire-A05.png:140,misc/fire-A06.png:140,misc/fire-A07.png:140,misc/fire-A08.png:140"
name="misc/fire-A[01-08].png:140"
[/image]
[/tile]
[/terrain_graphics]
@ -226,7 +226,7 @@
layer=0
# wmlscope: start ignoring
# FIXME: More implicit-path breakage
name="../items/brazier-lit1.png:140,../items/brazier-lit2.png:140,../items/brazier-lit3.png:140,../items/brazier-lit4.png:140,../items/brazier-lit5.png:140,../items/brazier-lit6.png:140,../items/brazier-lit7.png:140,../items/brazier-lit8.png:140"
name="../items/brazier-lit[1-8].png:140"
# wmlscope: stop ignoring
[/image]
[/tile]
@ -238,7 +238,7 @@
# long, undead, or wood-elvish. Use within a [side] block; only
# affects that side.
# wmlscope: start ignoring
flag=flags/{NAME}-flag-1.png:150,flags/{NAME}-flag-2.png:150,flags/{NAME}-flag-3.png:150,flags/{NAME}-flag-4.png:150
flag=flags/{NAME}-flag-[1-4].png:150
flag_icon=flags/{NAME}-flag-icon.png
# wmlscope: stop ignoring
#enddef
@ -271,7 +271,7 @@
center=92,138
# wmlscope: start ignoring
# FIXME: More implicit-path breakage
name="../scenery/mausoleum01.png:140,../scenery/mausoleum02.png:140,../scenery/mausoleum03.png:140,../scenery/mausoleum04.png:140,../scenery/mausoleum05.png:140,../scenery/mausoleum06.png:140,../scenery/mausoleum07.png:140,../scenery/mausoleum08.png:140,../scenery/mausoleum09.png:140,../scenery/mausoleum10.png:140,../scenery/mausoleum11.png:140,../scenery/mausoleum12.png:140,../scenery/mausoleum13.png:140,../scenery/mausoleum14.png:140,../scenery/mausoleum15.png:140,../scenery/mausoleum16.png:140,../scenery/mausoleum17.png:140,../scenery/mausoleum18.png:140"
name="../scenery/mausoleum[01-18].png:140"
# wmlscope: stop ignoring
[/image]
[/terrain_graphics]

View file

@ -57,19 +57,19 @@
[teleport_sparkle_1_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=-10
halo_y=30~-30
[/teleport_sparkle_1_frame]
[teleport_sparkle_2_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=0
halo_y=40~-40
[/teleport_sparkle_2_frame]
[teleport_sparkle_3_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=10
halo_y=30~-30
[/teleport_sparkle_3_frame]
@ -137,19 +137,19 @@
[teleport_sparkle_1_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=10
halo_y=-30~30
[/teleport_sparkle_1_frame]
[teleport_sparkle_2_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=0
halo_y=-40~40
[/teleport_sparkle_2_frame]
[teleport_sparkle_3_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=-10
halo_y=-30~30
[/teleport_sparkle_3_frame]

View file

@ -3,72 +3,35 @@
#define IMAGE_SINGLE IMAGESTEM POSTFIX
{IMAGESTEM}{POSTFIX}.png#enddef
#define ANIMATION_01_INTERNAL IMAGESTEM POSTFIX DURATION
{IMAGESTEM}-A01{POSTFIX}:{DURATION} #enddef
#define ANIMATION_02_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_01_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A02{POSTFIX}:{DURATION}#enddef
#define ANIMATION_03_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_02_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A03{POSTFIX}:{DURATION}#enddef
#define ANIMATION_04_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_03_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A04{POSTFIX}:{DURATION}#enddef
#define ANIMATION_05_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_04_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A05{POSTFIX}:{DURATION}#enddef
#define ANIMATION_06_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_05_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A06{POSTFIX}:{DURATION}#enddef
#define ANIMATION_07_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_06_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A07{POSTFIX}:{DURATION}#enddef
#define ANIMATION_08_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_07_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A08{POSTFIX}:{DURATION}#enddef
#define ANIMATION_09_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_08_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A09{POSTFIX}:{DURATION}#enddef
#define ANIMATION_10_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_09_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A10{POSTFIX}:{DURATION}#enddef
#define ANIMATION_11_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_10_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A11{POSTFIX}:{DURATION}#enddef
#define ANIMATION_12_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_11_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A12{POSTFIX}:{DURATION}#enddef
#define ANIMATION_13_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_12_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A13{POSTFIX}:{DURATION}#enddef
#define ANIMATION_14_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_13_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A14{POSTFIX}:{DURATION}#enddef
#define ANIMATION_15_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_14_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A15{POSTFIX}:{DURATION}#enddef
#define ANIMATION_16_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_15_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A16{POSTFIX}:{DURATION}#enddef
#define ANIMATION_17_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_16_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A17{POSTFIX}:{DURATION}#enddef
#define ANIMATION_18_INTERNAL IMAGESTEM POSTFIX DURATION
{ANIMATION_17_INTERNAL {IMAGESTEM} {POSTFIX} {DURATION}},{IMAGESTEM}-A18{POSTFIX}:{DURATION}#enddef
#define ANIMATION_01 IMAGESTEM POSTFIX
{ANIMATION_01_INTERNAL {IMAGESTEM} {POSTFIX}.png 100}#enddef
{IMAGESTEM}-A01{POSTFIX}.png:100#enddef
#define ANIMATION_03 IMAGESTEM POSTFIX
{ANIMATION_03_INTERNAL {IMAGESTEM} {POSTFIX}.png 200}#enddef
{IMAGESTEM}-A[01-03]{POSTFIX}.png:200#enddef
#define ANIMATION_04 IMAGESTEM POSTFIX
{ANIMATION_04_INTERNAL {IMAGESTEM} {POSTFIX}.png 100}#enddef
{IMAGESTEM}-A[01-04]{POSTFIX}.png:100#enddef
#define ANIMATION_08 IMAGESTEM POSTFIX
{ANIMATION_08_INTERNAL {IMAGESTEM} {POSTFIX}.png 200}#enddef
{IMAGESTEM}-A[01-08]{POSTFIX}.png:200#enddef
#define ANIMATION_10 IMAGESTEM POSTFIX
{ANIMATION_10_INTERNAL {IMAGESTEM} {POSTFIX}.png 100}#enddef
{IMAGESTEM}-A[01-10]{POSTFIX}.png:100#enddef
#define ANIMATION_15 IMAGESTEM POSTFIX
{ANIMATION_15_INTERNAL {IMAGESTEM} {POSTFIX}.png 110}#enddef
{IMAGESTEM}-A[01-15]{POSTFIX}.png:110#enddef
#define ANIMATION_15_SLOW IMAGESTEM POSTFIX
{ANIMATION_15_INTERNAL {IMAGESTEM} {POSTFIX}.png 150}#enddef
{IMAGESTEM}-A[01-15]{POSTFIX}.png:150#enddef
#define ANIMATION_04_140 IMAGESTEM POSTFIX
{ANIMATION_04_INTERNAL {IMAGESTEM} {POSTFIX}.png 140}#enddef
{IMAGESTEM}-A[01-04]{POSTFIX}.png:140#enddef
#define ANIMATION_18_70 IMAGESTEM POSTFIX
{ANIMATION_18_INTERNAL {IMAGESTEM} {POSTFIX}.png 130}#enddef
{IMAGESTEM}-A[01-18]{POSTFIX}.png:130#enddef
#define ANIMATION_06_150 IMAGESTEM POSTFIX
{ANIMATION_06_INTERNAL {IMAGESTEM} {POSTFIX}.png 300}#enddef
{IMAGESTEM}-A[01-06]{POSTFIX}.png:300#enddef
#define BUILD_IMAGE BUILDER IMAGESTEM POSTFIX
{{BUILDER} {IMAGESTEM} {POSTFIX}}#enddef

View file

@ -341,7 +341,7 @@
# we put [image] in [tile] for performance reason
# this assumes that the image fit into the hex
[image]
name={IMAGESTEM}-A01.png{IPF}:{TIME},{IMAGESTEM}-A02.png{IPF}:{TIME},{IMAGESTEM}-A03.png{IPF}:{TIME},{IMAGESTEM}-A04.png{IPF}:{TIME},{IMAGESTEM}-A05.png{IPF}:{TIME},{IMAGESTEM}-A06.png{IPF}:{TIME},{IMAGESTEM}-A07.png{IPF}:{TIME},{IMAGESTEM}-A08.png{IPF}:{TIME},{IMAGESTEM}-A09.png{IPF}:{TIME},{IMAGESTEM}-A10.png{IPF}:{TIME},{IMAGESTEM}-A11.png{IPF}:{TIME},{IMAGESTEM}-A12.png{IPF}:{TIME},{IMAGESTEM}-A13.png{IPF}:{TIME},{IMAGESTEM}-A14.png{IPF}:{TIME},{IMAGESTEM}-A15.png{IPF}:{TIME}
name={IMAGESTEM}-A[01-15].png{IPF}:{TIME}
layer=-1000
[/image]
[/tile]
@ -364,7 +364,7 @@
# we put [image] in [tile] for performance reason
# this assumes that the image fit into the hex
[image]
name={IMAGESTEM}-A01-@R0.png{IPF}:{TIME},{IMAGESTEM}-A02-@R0.png{IPF}:{TIME},{IMAGESTEM}-A03-@R0.png{IPF}:{TIME},{IMAGESTEM}-A04-@R0.png{IPF}:{TIME},{IMAGESTEM}-A05-@R0.png{IPF}:{TIME},{IMAGESTEM}-A06-@R0.png{IPF}:{TIME},{IMAGESTEM}-A07-@R0.png{IPF}:{TIME},{IMAGESTEM}-A08-@R0.png{IPF}:{TIME},{IMAGESTEM}-A09-@R0.png{IPF}:{TIME},{IMAGESTEM}-A10-@R0.png{IPF}:{TIME},{IMAGESTEM}-A11-@R0.png{IPF}:{TIME},{IMAGESTEM}-A12-@R0.png{IPF}:{TIME},{IMAGESTEM}-A13-@R0.png{IPF}:{TIME},{IMAGESTEM}-A14-@R0.png{IPF}:{TIME},{IMAGESTEM}-A15-@R0.png{IPF}:{TIME}
name={IMAGESTEM}-A[01-15]-@R0.png{IPF}:{TIME}
layer={LAYER}
[/image]
[/tile]

View file

@ -860,7 +860,7 @@
[/tile]
[image]
name={IMAGESTEM}01.png:{TIME},{IMAGESTEM}02.png:{TIME},{IMAGESTEM}03.png:{TIME}
name={IMAGESTEM}[01-03].png:{TIME}
layer=0
base=90,144
center=90,144
@ -884,7 +884,7 @@
[/tile]
[image]
name={IMAGESTEM}01.png:{TIME},{IMAGESTEM}02.png:{TIME},{IMAGESTEM}03.png:{TIME},{IMAGESTEM}04.png:{TIME}
name={IMAGESTEM}[01-04].png:{TIME}
layer=0
base=90,144
center=90,144

View file

@ -114,37 +114,9 @@
[/frame]
[frame]
begin=-300
end=-225
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo3.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-225
end=-150
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo4.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-150
end=-75
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo5.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-75
end=0
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo6.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-0
end=75
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo7.png
halo=halo/elven/faerie-fire-halo[3-7].png:75
halo_x,halo_y=-19,-14
[/frame]
[/attack_anim]
@ -173,37 +145,9 @@
[/frame]
[frame]
begin=-300
end=-225
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo3.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-225
end=-150
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo4.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-150
end=-75
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo5.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-75
end=0
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo6.png
halo_x,halo_y=-19,-14
[/frame]
[frame]
begin=-0
end=75
image="units/elves-wood/high-lord-magic-1.png"
halo=halo/elven/faerie-fire-halo7.png
halo=halo/elven/faerie-fire-halo[3-7].png:75
halo_x,halo_y=-19,-14
[/frame]
[/attack_anim]

View file

@ -81,37 +81,9 @@
[/frame]
[frame]
begin=-300
end=-225
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo3.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-225
end=-150
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo4.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-150
end=-75
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo5.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-75
end=0
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo6.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-0
end=75
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo7.png
halo=halo/elven/faerie-fire-halo[3-7].png:75
halo_x,halo_y=-19,-13
[/frame]
[/attack_anim]
@ -140,37 +112,9 @@
[/frame]
[frame]
begin=-300
end=-225
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo3.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-225
end=-150
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo4.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-150
end=-75
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo5.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-75
end=0
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo6.png
halo_x,halo_y=-19,-13
[/frame]
[frame]
begin=-0
end=75
image="units/elves-wood/lord-magic-1.png"
halo=halo/elven/faerie-fire-halo7.png
halo=halo/elven/faerie-fire-halo[3-7].png:75
halo_x,halo_y=-19,-13
[/frame]
[/attack_anim]

View file

@ -121,37 +121,16 @@ The healing abilities of the elves are also remarkable, and of capital use in ba
[/missile_frame]
[frame]
begin=-450
end=-375
image="units/elves-wood/shaman.png"
halo=halo/elven/nature-halo1.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-375
end=-300
image="units/elves-wood/shaman.png"
halo=halo/elven/nature-halo2.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-300
end=-225
image="units/elves-wood/shaman.png"
halo=halo/elven/nature-halo3.png
halo=halo/elven/nature-halo[1-3].png:75
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-225
end=-150
image="units/elves-wood/shaman-attack2.png"
halo=halo/elven/nature-halo4.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-150
end=-75
image="units/elves-wood/shaman-attack2.png"
halo=halo/elven/nature-halo5.png
halo=halo/elven/nature-halo[4,5].png:75
halo_x,halo_y=0,-12
[/frame]
{SOUND:SLOW}
@ -164,17 +143,10 @@ The healing abilities of the elves are also remarkable, and of capital use in ba
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-0
end=50
image="units/elves-wood/shaman.png"
halo=halo/elven/nature-halo7.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=50
begin=0
end=100
image="units/elves-wood/shaman.png"
halo=halo/elven/nature-halo8.png
halo=halo/elven/nature-halo[7,8].png:50
halo_x,halo_y=0,-12
[/frame]
[frame]

View file

@ -161,19 +161,19 @@ Silver magi are often more physically adept than other magi, and their skills ar
[teleport_sparkle_1_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=-10
halo_y=30~-30
[/teleport_sparkle_1_frame]
[teleport_sparkle_2_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=0
halo_y=40~-40
[/teleport_sparkle_2_frame]
[teleport_sparkle_3_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=10
halo_y=30~-30
[/teleport_sparkle_3_frame]
@ -226,19 +226,19 @@ Silver magi are often more physically adept than other magi, and their skills ar
[teleport_sparkle_1_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=10
halo_y=-30~30
[/teleport_sparkle_1_frame]
[teleport_sparkle_2_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=0
halo_y=-40~40
[/teleport_sparkle_2_frame]
[teleport_sparkle_3_frame]
duration=800
halo=misc/blank-hex.png:1,halo/teleport-9.png,halo/teleport-8.png,halo/teleport-1.png,halo/teleport-2.png,halo/teleport-3.png,halo/teleport-4.png,halo/teleport-5.png,halo/teleport-6.png,halo/teleport-7.png,halo/teleport-8.png,halo/teleport-9.png,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/teleport-[9,8,1-9].png,misc/blank-hex.png:1
halo_x=-10
halo_y=-30~30
[/teleport_sparkle_3_frame]

View file

@ -52,45 +52,9 @@ Though not trained for combat, they are a potent ally against magical or unnatur
[/frame]
[frame]
begin=-375
end=-300
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo6.png
[/frame]
[frame]
begin=-300
end=-225
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo1.png
[/frame]
[frame]
begin=-225
end=-150
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo2.png
[/frame]
[frame]
begin=-150
end=-75
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo3.png
[/frame]
[frame]
begin=-75
end=0
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo4.png
[/frame]
[frame]
begin=0
end=75
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo5.png
[/frame]
[frame]
begin=75
end=150
image="units/human-magi/white-mage-magic-3.png"
halo=halo/holy/halo6.png
halo=halo/holy/halo[6,1-6].png:75
[/frame]
[frame]
begin=150

View file

@ -55,45 +55,9 @@ Following a strict code of piety and honor, these men and women work tirelessly
[/frame]
[frame]
begin=-375
end=-300
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo6.png
[/frame]
[frame]
begin=-300
end=-225
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo1.png
[/frame]
[frame]
begin=-225
end=-150
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo2.png
[/frame]
[frame]
begin=-150
end=-75
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo3.png
[/frame]
[frame]
begin=-75
end=0
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo4.png
[/frame]
[frame]
begin=0
end=75
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo5.png
[/frame]
[frame]
begin=75
end=150
image="units/human-magi/white-cleric-magic-3.png"
halo=halo/holy/halo6.png
halo=halo/holy/halo[6,1-6].png:75
[/frame]
[frame]
begin=150

View file

@ -43,56 +43,17 @@
[healing_anim]
start_time=-525
[frame]
duration=75
duration=150
image="units/merfolk/diviner.png" ### magic-1
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo[6,1-6].png:75
[/frame]
[frame]
duration=150
image="units/merfolk/diviner.png" ### magic-2
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo6.png
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo1.png
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo2.png
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo3.png
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo4.png
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo5.png
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-3
halo=halo/holy/halo6.png
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-2
[/frame]
[frame]
duration=75
image="units/merfolk/diviner.png" ### magic-1
[/frame]
[/healing_anim]
[attack]
name=staff

View file

@ -40,56 +40,17 @@
[healing_anim]
start_time=-525
[frame]
duration=75
duration=150
image="units/merfolk/priestess.png" ### magic-1
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo[6,1-6].png:75
[/frame]
[frame]
duration=150
image="units/merfolk/priestess.png" ### magic-2
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo6.png
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo1.png
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo2.png
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo3.png
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo4.png
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo5.png
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-3
halo=halo/holy/halo6.png
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-2
[/frame]
[frame]
duration=75
image="units/merfolk/priestess.png" ### magic-1
[/frame]
[/healing_anim]
[attack]
name=staff

View file

@ -85,31 +85,31 @@
[flame_burst_1_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png~FL(vert):50,halo/flame-burst-2.png~FL(vert):50,halo/flame-burst-3.png~FL(vert):50,halo/flame-burst-4.png~FL(vert):50,halo/flame-burst-5.png~FL(vert):50,halo/flame-burst-6.png~FL(vert):50,halo/flame-burst-7.png~FL(vert):50,halo/flame-burst-8.png~FL(vert):48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png~FL(vert):[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=-22,0
offset=1.0
[/flame_burst_1_frame]
[flame_burst_2_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png~FL(vert):50,halo/flame-burst-2.png~FL(vert):50,halo/flame-burst-3.png~FL(vert):50,halo/flame-burst-4.png~FL(vert):50,halo/flame-burst-5.png~FL(vert):50,halo/flame-burst-6.png~FL(vert):50,halo/flame-burst-7.png~FL(vert):50,halo/flame-burst-8.png~FL(vert):48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png~FL(vert):[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=-14,9
offset=1.0
[/flame_burst_2_frame]
[flame_burst_3_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png~FL(vert):50,halo/flame-burst-2.png~FL(vert):50,halo/flame-burst-3.png~FL(vert):50,halo/flame-burst-4.png~FL(vert):50,halo/flame-burst-5.png~FL(vert):50,halo/flame-burst-6.png~FL(vert):50,halo/flame-burst-7.png~FL(vert):50,halo/flame-burst-8.png~FL(vert):48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png~FL(vert):[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=0,12
offset=1.0
[/flame_burst_3_frame]
[flame_burst_4_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png~FL(vert):50,halo/flame-burst-2.png~FL(vert):50,halo/flame-burst-3.png~FL(vert):50,halo/flame-burst-4.png~FL(vert):50,halo/flame-burst-5.png~FL(vert):50,halo/flame-burst-6.png~FL(vert):50,halo/flame-burst-7.png~FL(vert):50,halo/flame-burst-8.png~FL(vert):48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png~FL(vert):[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=14,9
offset=1.0
[/flame_burst_4_frame]
[flame_burst_5_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png~FL(vert):50,halo/flame-burst-2.png~FL(vert):50,halo/flame-burst-3.png~FL(vert):50,halo/flame-burst-4.png~FL(vert):50,halo/flame-burst-5.png~FL(vert):50,halo/flame-burst-6.png~FL(vert):50,halo/flame-burst-7.png~FL(vert):50,halo/flame-burst-8.png~FL(vert):48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png~FL(vert):[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=22,0
offset=1.0
[/flame_burst_5_frame]
@ -119,31 +119,31 @@
[flame_burst_1_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png:50,halo/flame-burst-2.png:50,halo/flame-burst-3.png:50,halo/flame-burst-4.png:50,halo/flame-burst-5.png:50,halo/flame-burst-6.png:50,halo/flame-burst-7.png:50,halo/flame-burst-8.png:48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png:[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=-22,0
offset=1.0
[/flame_burst_1_frame]
[flame_burst_2_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png:50,halo/flame-burst-2.png:50,halo/flame-burst-3.png:50,halo/flame-burst-4.png:50,halo/flame-burst-5.png:50,halo/flame-burst-6.png:50,halo/flame-burst-7.png:50,halo/flame-burst-8.png:48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png:[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=-14,9
offset=1.0
[/flame_burst_2_frame]
[flame_burst_3_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png:50,halo/flame-burst-2.png:50,halo/flame-burst-3.png:50,halo/flame-burst-4.png:50,halo/flame-burst-5.png:50,halo/flame-burst-6.png:50,halo/flame-burst-7.png:50,halo/flame-burst-8.png:48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png:[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=0,12
offset=1.0
[/flame_burst_3_frame]
[flame_burst_4_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png:50,halo/flame-burst-2.png:50,halo/flame-burst-3.png:50,halo/flame-burst-4.png:50,halo/flame-burst-5.png:50,halo/flame-burst-6.png:50,halo/flame-burst-7.png:50,halo/flame-burst-8.png:48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png:[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=14,9
offset=1.0
[/flame_burst_4_frame]
[flame_burst_5_frame]
duration=400
halo=misc/blank-hex.png:1,halo/flame-burst-1.png:50,halo/flame-burst-2.png:50,halo/flame-burst-3.png:50,halo/flame-burst-4.png:50,halo/flame-burst-5.png:50,halo/flame-burst-6.png:50,halo/flame-burst-7.png:50,halo/flame-burst-8.png:48,misc/blank-hex.png:1
halo=misc/blank-hex.png:1,halo/flame-burst-[1-8].png:[50,50,50,50,50,50,50,48],misc/blank-hex.png:1
halo_x,halo_y=22,0
offset=1.0
[/flame_burst_5_frame]

View file

@ -136,37 +136,9 @@ In such condition, their only weapon is the craft they have so committed themsel
[/frame]
[frame]
begin=-300
end=-250
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-1.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-250
end=-200
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-2.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-200
end=-150
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-3.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-150
end=-100
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-4.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-100
end=-50
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-5.png
halo=halo/undead/dark-magic-[1-5].png:50
halo_x,halo_y=0,-12
[/frame]
[if]
@ -233,37 +205,9 @@ In such condition, their only weapon is the craft they have so committed themsel
[/frame]
[frame]
begin=-300
end=-250
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-1.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-250
end=-200
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-2.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-200
end=-150
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-3.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-150
end=-100
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-4.png
halo_x,halo_y=0,-12
[/frame]
[frame]
begin=-100
end=-50
image="units/undead-necromancers/adept-magic-3.png"
halo=halo/undead/dark-magic-5.png
halo=halo/undead/dark-magic-[1-5].png:50
halo_x,halo_y=0,-12
[/frame]
[frame]
@ -332,18 +276,6 @@ In such condition, their only weapon is the craft they have so committed themsel
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-2.png"
[/frame]
@ -373,18 +305,6 @@ In such condition, their only weapon is the craft they have so committed themsel
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"
[/frame]
[if]
[frame]
image="units/undead-necromancers/adept+female-magic-3.png"

View file

@ -62,22 +62,9 @@ Despite any design they may have of using this to wrest their own immortality fr
[/frame]
[frame]
begin=0
end=75
image="units/undead-necromancers/dark-sorcerer-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/undead-necromancers/dark-sorcerer-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/undead-necromancers/dark-sorcerer-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3-5].png:[75,75,50]
[/frame]
[frame]
begin=200
@ -176,22 +163,9 @@ Despite any design they may have of using this to wrest their own immortality fr
[/else]
[frame]
begin=0
end=75
image="units/undead-necromancers/dark-sorcerer-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/undead-necromancers/dark-sorcerer-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/undead-necromancers/dark-sorcerer-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3-5].png:[75,75,50]
[/frame]
[frame]
begin=200
@ -288,12 +262,6 @@ Despite any design they may have of using this to wrest their own immortality fr
[frame]
image="units/undead-necromancers/dark-sorcerer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/dark-sorcerer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/dark-sorcerer+female-magic-3.png"
[/frame]
[frame]
begin=200
end=250
@ -337,12 +305,6 @@ Despite any design they may have of using this to wrest their own immortality fr
[frame]
image="units/undead-necromancers/dark-sorcerer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/dark-sorcerer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/dark-sorcerer+female-magic-3.png"
[/frame]
[frame]
begin=200
end=250

View file

@ -227,21 +227,9 @@ It is not known, save perhaps by the inner circles of necromancy, whether life i
[/frame]
[frame]
begin=0
end=75
image="units/undead-necromancers/lich-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/undead-necromancers/lich-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/undead-necromancers/lich-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3-5].png:[75,75,50]
[/frame]
[frame]
begin=200
@ -307,22 +295,9 @@ It is not known, save perhaps by the inner circles of necromancy, whether life i
[/else]
[frame]
begin=0
end=75
image="units/undead-necromancers/lich-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/undead-necromancers/lich-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/undead-necromancers/lich-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3-5].png:[75,75,50]
[/frame]
[frame]
begin=200

View file

@ -99,21 +99,9 @@ This ability, in all aspects, is the first step towards cheating death of its ul
[/frame]
[frame]
begin=0
end=75
image="units/undead-necromancers/necromancer-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/undead-necromancers/necromancer-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/undead-necromancers/necromancer-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3,4,5].png:[75,75,50]
[/frame]
[frame]
begin=200
@ -179,22 +167,9 @@ This ability, in all aspects, is the first step towards cheating death of its ul
[/else]
[frame]
begin=0
end=75
image="units/undead-necromancers/necromancer-magic-3.png"
halo=halo/undead/black-magic-3.png
[/frame]
[frame]
begin=75
end=150
image="units/undead-necromancers/necromancer-magic-3.png"
halo=halo/undead/black-magic-4.png
[/frame]
[frame]
begin=150
end=200
image="units/undead-necromancers/necromancer-magic-3.png"
halo=halo/undead/black-magic-5.png
halo=halo/undead/black-magic-[3-5].png:[75,75,50]
[/frame]
[frame]
begin=200
@ -288,12 +263,6 @@ This ability, in all aspects, is the first step towards cheating death of its ul
[frame]
image="units/undead-necromancers/necromancer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/necromancer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/necromancer+female-magic-3.png"
[/frame]
[frame]
begin=200
end=250
@ -336,12 +305,6 @@ This ability, in all aspects, is the first step towards cheating death of its ul
[frame]
image="units/undead-necromancers/necromancer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/necromancer+female-magic-3.png"
[/frame]
[frame]
image="units/undead-necromancers/necromancer+female-magic-3.png"
[/frame]
[frame]
begin=200
end=250

View file

@ -56,7 +56,7 @@
ally_orb="misc/orb-ally.png"
energy="misc/bar-energy.png"
flag="flags/flag-1.png:150,flags/flag-2.png:150,flags/flag-3.png:150,flags/flag-4.png:150"
flag="flags/flag-[1-4].png:150"
flag_icon="flags/flag-icon.png"
terrain_mask="terrain/alphamask.png"

View file

@ -44,7 +44,7 @@
[/item]
[item]
x,y=25,21
halo="units/human-magi/great-mage+female.png~RC(magenta>black)~FL():444,units/human-magi/great-mage+female-attack-magic-1.png~RC(magenta>black)~FL():444,units/human-magi/great-mage+female-attack-magic-2.png~RC(magenta>black)~FL():444,units/human-magi/great-mage+female-attack-magic-1.png~RC(magenta>black)~FL():444"
halo="units/human-magi/great-mage+female.png~RC(magenta>black)~FL():444,units/human-magi/great-mage+female-attack-magic-[1,2,1].png~RC(magenta>black)~FL():444"
[/item]
#define PLACE_HALO IMAGE X Y

View file

@ -359,7 +359,7 @@ bool terrain_builder::load_images(building_rule &rule)
BOOST_FOREACH(const std::string& var, var_strings)
{
/** @todo improve this, 99% of terrains are not animated. */
std::vector<std::string> frames = utils::parenthetical_split(var,',');
std::vector<std::string> frames = utils::square_parenthetical_split(var,',');
animated<image::locator> res;
BOOST_FOREACH(const std::string& frame, frames)

View file

@ -206,7 +206,7 @@ void display::init_flags() {
// Must recolor flag image
animated<image::locator> temp_anim;
std::vector<std::string> items = utils::split(flag);
std::vector<std::string> items = utils::square_parenthetical_split(flag);
std::vector<std::string>::const_iterator itor = items.begin();
for(; itor != items.end(); ++itor) {
const std::vector<std::string>& items = utils::split(*itor, ':');

View file

@ -278,7 +278,7 @@ int add(int x, int y, const std::string& image, const map_location& loc,
{
const int id = halo_id++;
animated<image::locator>::anim_description image_vector;
std::vector<std::string> items = utils::parenthetical_split(image, ',');
std::vector<std::string> items = utils::square_parenthetical_split(image, ',');
std::vector<std::string>::const_iterator itor = items.begin();
for(; itor != items.end(); ++itor) {
const std::vector<std::string>& items = utils::split(*itor, ':');

View file

@ -27,6 +27,7 @@
#include "serialization/string_utils.hpp"
#include "util.hpp"
#include <boost/array.hpp>
#include <boost/lexical_cast.hpp>
static lg::log_domain log_engine("engine");
#define ERR_GENERAL LOG_STREAM(err, lg::general)
@ -114,6 +115,152 @@ std::vector< std::string > split(std::string const &val, char c, int flags)
return res;
}
std::vector< std::string > square_parenthetical_split(std::string const &val,
const char separator, std::string const &left,
std::string const &right,int flags)
{
std::vector< std::string > res;
std::vector<char> part;
bool in_parenthesis = false;
std::vector<std::string::const_iterator> square_left;
std::vector<std::string::const_iterator> square_right;
std::vector< std::string > square_expansion;
std::string::const_iterator i1 = val.begin();
std::string::const_iterator i2 = val.begin();
std::string::const_iterator j1 = val.begin();
if (i1 == val.end()) return res;
std::string lp=left;
std::string rp=right;
if (!separator) {
ERR_GENERAL << "Separator must be specified for square bracket split funtion.\n";
return res;
}
if(left.size()!=right.size()){
ERR_GENERAL << "Left and Right Parenthesis lists not same length\n";
return res;
}
while (true) {
if(i2 == val.end() || (!in_parenthesis && *i2 == separator)) {
size_t size_square_exp = 0;
for (size_t i=0; i < square_left.size(); i++) {
std::string tmp_val(square_left[i]+1,square_right[i]);
std::vector< std::string > tmp = split(tmp_val);
std::vector<std::string>::const_iterator itor = tmp.begin();
for(; itor != tmp.end(); ++itor) {
size_t found = (*itor).find_first_of('-');
if (found == std::string::npos) {
std::string tmp = (*itor);
square_expansion.push_back(strip(tmp));
}
else { //expand number range
std::string s_begin = (*itor).substr(0,found);
s_begin = strip(s_begin);
int begin = atoi(s_begin.c_str());
int padding = 0;
while (padding<s_begin.size() && s_begin[padding]=='0') {
padding++;
}
std::string s_end = (*itor).substr(found+1);
s_end = strip(s_end);
int end = atoi(s_end.c_str());
if (padding==0) {
while (padding<s_end.size() && s_end[padding]=='0') {
padding++;
}
}
int increment = (end >= begin ? 1 : -1);
end+=increment; //include end in expansion
for (int k=begin; k!=end; k+=increment) {
std::string pb = boost::lexical_cast<std::string>(k);
for (int p=pb.size(); p<=padding; p++)
pb = std::string("0") + pb;
square_expansion.push_back(pb);
}
}
}
if (i*square_expansion.size() != (i+1)*size_square_exp ) {
std::string tmp(i1, i2);
ERR_GENERAL << "Square bracket lengths do not match up: "+tmp+"\n";
return res;
}
size_square_exp = square_expansion.size();
}
size_t j = 0;
size_t j_max = 0;
if (square_left.size() != 0)
j_max = square_expansion.size() / square_left.size();
do {
j1 = i1;
std::string new_val;
for (size_t i=0; i < square_left.size(); i++) {
std::string tmp_val(j1, square_left[i]);
new_val.append(tmp_val);
size_t k = j+i*j_max;
if (k < square_expansion.size())
new_val.append(square_expansion[k]);
j1 = square_right[i]+1;
}
std::string tmp_val(j1, i2);
new_val.append(tmp_val);
if (flags & STRIP_SPACES)
strip(new_val);
if (!(flags & REMOVE_EMPTY) || !new_val.empty())
res.push_back(new_val);
j++;
} while (j<j_max);
if (i2 == val.end()) //escape loop
break;
++i2;
if (flags & STRIP_SPACES) { //strip leading spaces
while (i2 != val.end() && *i2 == ' ')
++i2;
}
i1=i2;
square_left.clear();
square_right.clear();
square_expansion.clear();
continue;
}
if(!part.empty() && *i2 == part.back()) {
part.pop_back();
if (*i2 == ']') square_right.push_back(i2);
if (part.empty())
in_parenthesis = false;
++i2;
continue;
}
bool found=false;
for(size_t i=0; i < lp.size(); i++) {
if (*i2 == lp[i]){
if (*i2 == '[')
square_left.push_back(i2);
++i2;
part.push_back(rp[i]);
found=true;
break;
}
}
if(!found){
++i2;
} else
in_parenthesis = true;
}
if(!part.empty()){
ERR_GENERAL << "Mismatched parenthesis:\n"<<val<<"\n";;
}
return res;
}
std::vector< std::string > parenthetical_split(std::string const &val,
const char separator, std::string const &left,
std::string const &right,int flags)

View file

@ -79,6 +79,29 @@ std::vector< std::string > parenthetical_split(std::string const &val,
const char separator = 0 , std::string const &left="(",
std::string const &right=")",int flags = REMOVE_EMPTY | STRIP_SPACES);
/**
* Similar to parenthetical_split, but also expands embedded square brackets.
* Separator must be specified and number of entries in each square bracket
* must match in each section.
* Leading zeros are preserved if specified between square brackets.
*
* This is useful to expand animation WML code.
* Examples:
* square_parenthetical_split("a[1-3](1,[5,6,7]),b[8,9]",",") should return
* "a1(1,5)","a2(1,6)","a3(1,7)","b8","b9"
* square_parenthetical_split("abc[07-10]") should return
* "abc07,abc08,abc09,abc10"
* square_parenthetical_split("a[1,2]b[3-4]:c[5,6]") should return
* "a1b3:c5,a2b4:c6"
* square_parenthetical_split("abc[3,1].png") should return
* "abc3.png,abc2.png,abc1.png"
* square_parenthetical_split("abc[de,xyz]") should return
* "abcde,abcxyz"
*/
std::vector< std::string > square_parenthetical_split(std::string const &val,
const char separator = ',' , std::string const &left="([",
std::string const &right=")]",int flags = REMOVE_EMPTY | STRIP_SPACES);
/**
* Generates a new string joining container items in a list.
*

View file

@ -27,7 +27,7 @@ progressive_string::progressive_string(const std::string & data,int duration) :
data_(),
input_(data)
{
const std::vector<std::string> first_pass = utils::split(data);
const std::vector<std::string> first_pass = utils::square_parenthetical_split(data);
const int time_chunk = std::max<int>(duration / (first_pass.size()?first_pass.size():1),1);
std::vector<std::string>::const_iterator tmp;
@ -248,6 +248,9 @@ frame_builder::frame_builder(const config& cfg,const std::string& frame_string)
if (const config::attribute_value *v = cfg.get(frame_string + "duration")) {
duration(*v);
} else if (!cfg.get(frame_string + "end")) {
duration((progressive_string(halo_,1)).duration());
} else {
duration(cfg[frame_string + "end"].to_int() - cfg[frame_string + "begin"].to_int());
}
@ -461,7 +464,6 @@ void frame_parsed_parameters::override( int duration
, const std::string& layer
, const std::string& modifiers)
{
if(!highlight.empty()) {
highlight_ratio_ = progressive_double(highlight,duration);
} else if(duration != duration_){
@ -604,6 +606,7 @@ void unit_frame::redraw(const int frame_time,bool first_time,const map_location
orientation = halo::NORMAL;
break;
}
if(direction != map_location::SOUTH_WEST && direction != map_location::NORTH_WEST) {
*halo_id = halo::add(static_cast<int>(x+current_data.halo_x* game_display::get_singleton()->get_zoom_factor()),
static_cast<int>(y+current_data.halo_y* game_display::get_singleton()->get_zoom_factor()),