merge trunk 2006-12-28T17:56:12Z!koraq@xs4all.nl..2007-01-02T20:21:22Z!david@torangan.de
73
changelog
|
@ -23,6 +23,53 @@ Version 1.3-terrain-branch: also read README.BRANCH
|
|||
and no longer makes assumptions about the internal format.
|
||||
|
||||
Version 1.3-svn:
|
||||
|
||||
Concise list of player-visible changes:
|
||||
* Graphics
|
||||
* Item graphic improvements including an animatable campfire.
|
||||
* Added visible peaks to the impassable mountains.
|
||||
* Added a recruit animation for Skeleton.
|
||||
* Fixed animation of gryphon units not being displayed in the center of
|
||||
the hex.
|
||||
* Fixed incorrect WML in some units causing female variations to use male
|
||||
images.
|
||||
* Improved hex grid.
|
||||
|
||||
* Sound
|
||||
* New sound effects: morning star.
|
||||
* Added an advanced sound tab to preferences, allowing one to specify the
|
||||
values used for sample rate and buffer size.
|
||||
|
||||
* Unit changes and balancing
|
||||
* New traits: healthy (+3HP, +4 rest healing), fearless (ignore unfavourable
|
||||
time of day).
|
||||
* Dark Adepts no longer get the 'strong' trait.
|
||||
* Added the 'skirmisher' ability to the Shadow line.
|
||||
* Increased the HP of the Longbowman from 45 to 51.
|
||||
* Decreased the XP requirement of the Longbowman from 80 to 68.
|
||||
* Increased the HP of the Master Bowman from 58 to 67.
|
||||
* Increased the XP requirement of the Guardsman from 42 to 47.
|
||||
* Increased the HP of the Stalwart from 48 to 54.
|
||||
* Increased the XP requirement of the Stalwart from 65 to 85.
|
||||
* Increased the HP of the Sentinel from 56 to 68.
|
||||
* Decreased cost of the Mudcrawler from 9 to 5.
|
||||
* Decreased the HP of the Shadow from 26 to 24.
|
||||
* Increased the HP of the Goblin Rouser from 26 to 31.
|
||||
* Increased the melee damage of the Goblin Rouser from 5-3 to 6-3.
|
||||
|
||||
* Multiplayer
|
||||
* Maps
|
||||
* New maps: The Manzivan Traps
|
||||
* Revised maps: Blitz
|
||||
|
||||
* Map editor
|
||||
* Maps can now be opened directly from a scenario file and saved back to it.
|
||||
|
||||
* Language and translations
|
||||
* Updated translations: German, Italian.
|
||||
* Fixed spelling mistakes in the default en_US language.
|
||||
|
||||
Detailed changelog and internal changes:
|
||||
* Campaignd
|
||||
* first argument is number of threads to use, defaults to 5
|
||||
* campaigns
|
||||
|
@ -44,12 +91,18 @@ Version 1.3-svn:
|
|||
* added peaks to the impassable mountains
|
||||
* unit art
|
||||
* added a recruit animation for Skeleton
|
||||
* fix gryphon not being in the center of their hex
|
||||
* Fixed incorrect WML in some units causing female variations to use male
|
||||
* language and i18n:
|
||||
* new/updated man pages:
|
||||
* updated translations: German, Italian
|
||||
* fixed huge list of spelling mistakes in the en_US version
|
||||
* multiplayer
|
||||
* game management
|
||||
* replace "Downloading next level..." by "Receiving data..."
|
||||
when scenario don't have next_scenario
|
||||
* replace "Downloading next level..." by "Downloading next scenario..."
|
||||
* fixed controler change not sended to all client (bug #8138)
|
||||
* client now tells the server if a game ended in victory or defeat
|
||||
* configurable castle size for random map generator (patch #598, FR #3232)
|
||||
* team names translation now supported
|
||||
|
@ -83,6 +136,7 @@ Version 1.3-svn:
|
|||
* healthy (+3HP, +4 rest healing), fearless (ignore unfavorable ToD)
|
||||
* new units
|
||||
* added the Armageddon Drake (not used in any mainline eras)
|
||||
* added a generic macro to have a standard filter for all idle anim
|
||||
* user interface
|
||||
* use "Save Replay" instead of "Save Game" when asking to save a replay (bug #7256)
|
||||
* fix enemy Gold show twice in debug mode in status table (bug #6895)
|
||||
|
@ -106,6 +160,7 @@ Version 1.3-svn:
|
|||
* add a friend list in MP lobby, they will display a special icon in lobby,
|
||||
and you can be warned when they join the lobby even when not receiving
|
||||
lobby joins
|
||||
* added option to have random time of day in begin of multiplayer game
|
||||
* WML engine
|
||||
* added prerecruit event that takes place after the unit is created but
|
||||
before it is displayed.
|
||||
|
@ -138,7 +193,7 @@ Version 1.3-svn:
|
|||
* units can now have a recruit animations that will be played on unit recruit
|
||||
* units now have idle animations, played when they've been idle for some time
|
||||
* units now have leveling up animations
|
||||
* units can now have victory animations, usable with the WML tag 'victory_anim'
|
||||
* units can now have victory animations, usable with the WML tag 'victory_anim'
|
||||
* units can now have healed animations, used when they get healed
|
||||
* units can now have poison animations, used when they suffer poison
|
||||
damage
|
||||
|
@ -152,11 +207,19 @@ Version 1.3-svn:
|
|||
* the filtered unit can be accessed in SUF using $_filtered_unit
|
||||
* the primary unit can be accessed in filter using $_primary_unit
|
||||
* the secondary unit can be accessed in filter using $_secondary_unit
|
||||
* added support for random_start_time in [scenario] (feature request #8024)
|
||||
* extended label to support team only and colors
|
||||
* gender-specific forms for trait names are now possible.
|
||||
* seting a WML variable to a random value now works correctly in MP games
|
||||
* sound
|
||||
* add advanced sound tab to pref allowing you to play with sample_rate and buffer_size options
|
||||
* misc:
|
||||
* --validcache runtime switch to force assumption that cache is valid
|
||||
* add two new debug command set_var and show_var to check variables within
|
||||
the game easily
|
||||
* better handling of SDL_ListModes return code (no user impact)
|
||||
* first turn of a game is saved again (fixes bug #7909 and bug #8117)
|
||||
* reduce CPU usage by removing calls to SDL_GetTicks for idle animations
|
||||
|
||||
Version 1.2:
|
||||
* campaigns:
|
||||
|
@ -219,7 +282,7 @@ Version 1.1.14:
|
|||
* fixed glitches with impassable moutains at the edges of maps
|
||||
* resolved all glitches with cave walls
|
||||
* units:
|
||||
* new teamcolored baseframes: Halberdier, Heavy Infanfantry, Pikeman,
|
||||
* new teamcolored baseframes: Halberdier, Heavy Infanfantry, Pikeman,
|
||||
Shocktrooper, Siegetrooper
|
||||
* new baseframe: Yeti
|
||||
* some new skulls for skeleton units
|
||||
|
@ -234,8 +297,8 @@ Version 1.1.14:
|
|||
* updated man-pages: French, German
|
||||
* updated translations: Czech, Esperanto, French, Greek, Italian, Russian
|
||||
* multiplayer maps:
|
||||
* revised multiplayer maps: 3p Morituri, 4p Morituri, Blue Water Province,
|
||||
Den of Onis, Hexcake, Isar's Cross, Merkwuerdigliebe, Meteor Lake,
|
||||
* revised multiplayer maps: 3p Morituri, 4p Morituri, Blue Water Province,
|
||||
Den of Onis, Hexcake, Isar's Cross, Merkwuerdigliebe, Meteor Lake,
|
||||
Sablestone Delta, Sulla's Ruins
|
||||
* misc:
|
||||
* fixed a crash in the recall event_handler
|
||||
|
@ -268,7 +331,7 @@ Version 1.1.13:
|
|||
* added descriptions to the weapons of some campaign units to make sure they
|
||||
are correctly translated
|
||||
* multiplayer maps:
|
||||
* revised multiplayer maps: Charge, Hamlets, Hornshark Island, Silverhead
|
||||
* revised multiplayer maps: Charge, Hamlets, Hornshark Island, Silverhead
|
||||
Crossing, Sulla's Ruins, 3p Morituri
|
||||
* misc bugfixes:
|
||||
* several minor bugs
|
||||
|
|
|
@ -296,31 +296,31 @@ paxed
|
|||
[about]
|
||||
title = _ "French Translation"
|
||||
text = "
|
||||
Aur<EFBFBD>lien Brevers (Breversa)
|
||||
Aurélien Brevers (Breversa)
|
||||
Arnaud Garoux (La vie en wose)
|
||||
Benoit Astruc
|
||||
Beno<EFBFBD>t Timbert (Noyga)
|
||||
Bruno F<EFBFBD>ve (PP)
|
||||
C<EFBFBD>dric Duval
|
||||
Benoît Timbert (Noyga)
|
||||
Bruno Fève (PP)
|
||||
Cédric Duval
|
||||
Damien Jacquot
|
||||
DaringTremayne
|
||||
Fran<EFBFBD>ois Mariage (Paquito)
|
||||
Fran<EFBFBD>ois Orieux
|
||||
Geoffroy Douilli<EFBFBD> (gdou)
|
||||
G<EFBFBD>rard Bodin
|
||||
François Mariage (Paquito)
|
||||
François Orieux
|
||||
Geoffroy Douillié (gdou)
|
||||
Gérard Bodin
|
||||
Guillaume Duwelz-Rebert
|
||||
Guillaume Massart (Piou2fois)
|
||||
Guillaume Melquiond (silene)
|
||||
Jean Privat (Tout)
|
||||
Jean-Luc Richard (Le Gnome)
|
||||
Jehan Hysseo (Jey)
|
||||
J<EFBFBD>r<EFBFBD>my Rosen (Boucman)
|
||||
Jérémy Rosen (Boucman)
|
||||
Julien Moncel
|
||||
Julien Tailleur
|
||||
Nicolas Boudin (Blurgk)
|
||||
Philippe Plantier (Ayin)
|
||||
S<EFBFBD>bastien Raynaud (Galactic turkey)
|
||||
William Dupr<EFBFBD>
|
||||
Sébastien Raynaud (Galactic turkey)
|
||||
William Dupré
|
||||
Yann Dirson
|
||||
Zas
|
||||
"
|
||||
|
@ -559,7 +559,7 @@ Selim Farsakoğlu
|
|||
[about]
|
||||
title = _ "Valencian Translation"
|
||||
text = "
|
||||
Mario Rodr<EFBFBD>guez (Mavorte)
|
||||
Mario Rodríguez (Mavorte)
|
||||
"
|
||||
[/about]
|
||||
|
||||
|
@ -583,6 +583,9 @@ Petr Sobotka (Pietro)
|
|||
Stéphane Gimenez (gim)
|
||||
Mark de Wever (Mordante/SkeletonCrew)
|
||||
Josef Reidinger (qk)
|
||||
Pauli Nieminen (coren/suokko)
|
||||
Jonas Lihnell (Roze)
|
||||
Miguel Zapico (elricz)
|
||||
"
|
||||
[/about]
|
||||
|
||||
|
|
|
@ -1,311 +0,0 @@
|
|||
#define DEFENSE_ANIM FRAME BASEFRAME HITSOUND
|
||||
[defend]
|
||||
start_time=-126
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[frame]
|
||||
duration=100
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[if]
|
||||
hits=hit
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
sound={HITSOUND}
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=miss,kill
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
|
||||
#define DEFENSE_ANIM_FILTERED FRAME BASEFRAME HITSOUND FILTER
|
||||
[defend]
|
||||
start_time=-126
|
||||
{FILTER}
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[frame]
|
||||
duration=100
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[if]
|
||||
hits=hit
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
sound={HITSOUND}
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=miss,kill
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
|
||||
#define DEFENSE_ANIM_RANGE FRAME BASEFRAME HITSOUND RANGE
|
||||
[defend]
|
||||
start_time=-126
|
||||
[attack_filter]
|
||||
range={RANGE}
|
||||
[/attack_filter]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[frame]
|
||||
duration=100
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[if]
|
||||
hits=hit
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
sound={HITSOUND}
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=miss,kill
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_WAIL
|
||||
[if]
|
||||
direction=n,ne,nw
|
||||
|
||||
[missile_frame]
|
||||
begin=-300
|
||||
end=-230
|
||||
image="projectiles/wailprojectile-n-1.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-1.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-230
|
||||
end=-160
|
||||
image="projectiles/wailprojectile-n-2.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-2.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-160
|
||||
end=0
|
||||
image="projectiles/wailprojectile-n-3.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-3.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=0
|
||||
end=40
|
||||
image="projectiles/wailprojectile-n-4.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-4.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=40
|
||||
end=80
|
||||
image="projectiles/wailprojectile-n-5.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-5.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=80
|
||||
end=120
|
||||
image="projectiles/wailprojectile-n-6.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-6.png"
|
||||
[/missile_frame]
|
||||
[/if]
|
||||
[else]
|
||||
direction=s,se,sw
|
||||
### The price of asymmetrical projectiles - here, we use a conditional because the game automatically flips the images for the south frame. We have a separate set of images for the south part, which are not only flipped vertically, but also have their angle corrected for the sw direction.
|
||||
|
||||
[missile_frame]
|
||||
begin=-300
|
||||
end=-230
|
||||
image="projectiles/wailprojectile-s-1.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-1.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-230
|
||||
end=-160
|
||||
image="projectiles/wailprojectile-s-2.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-2.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-160
|
||||
end=0
|
||||
image="projectiles/wailprojectile-s-3.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-3.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=0
|
||||
end=40
|
||||
image="projectiles/wailprojectile-s-4.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-4.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=40
|
||||
end=80
|
||||
image="projectiles/wailprojectile-s-5.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-5.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=80
|
||||
end=120
|
||||
image="projectiles/wailprojectile-s-6.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-6.png"
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_FIRE_BREATH N_OFFSET S_OFFSET N_DIAGONAL_OFFSET S_DIAGONAL_OFFSET
|
||||
[if]
|
||||
direction=n
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-n-1.png:80,projectiles/fire-breath-n-2.png:80,projectiles/fire-breath-n-3.png:80,projectiles/fire-breath-n-4.png:80,projectiles/fire-breath-n-5.png:80
|
||||
halo_x,halo_y={N_OFFSET}
|
||||
[/missile_frame]
|
||||
[/if]
|
||||
[else]
|
||||
direction=s
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-s-1.png:80,projectiles/fire-breath-s-2.png:80,projectiles/fire-breath-s-3.png:80,projectiles/fire-breath-s-4.png:80,projectiles/fire-breath-s-5.png:80
|
||||
halo_x,halo_y={S_OFFSET}
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
[else]
|
||||
direction=ne,nw
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-ne-1.png:80,projectiles/fire-breath-ne-2.png:80,projectiles/fire-breath-ne-3.png:80,projectiles/fire-breath-ne-4.png:80,projectiles/fire-breath-ne-5.png:80
|
||||
halo_x,halo_y={N_DIAGONAL_OFFSET}
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
[else]
|
||||
direction=se,sw
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-se-1.png:80,projectiles/fire-breath-se-2.png:80,projectiles/fire-breath-se-3.png:80,projectiles/fire-breath-se-4.png:80,projectiles/fire-breath-se-5.png:80
|
||||
halo_x,halo_y={S_DIAGONAL_OFFSET}
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_FAERIE_FIRE
|
||||
[missile_frame]
|
||||
begin=-500
|
||||
end=-350
|
||||
image="projectiles/icemissile-n-1.png"
|
||||
image_diagonal="projectiles/icemissile-ne-1.png"
|
||||
halo=halo/elven/ice-halo1.png:100,halo/elven/ice-halo2.png:100,halo/elven/ice-halo3.png:25
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-350
|
||||
end=-200
|
||||
image="projectiles/icemissile-n-2.png"
|
||||
image_diagonal="projectiles/icemissile-ne-2.png"
|
||||
halo=halo/elven/ice-halo3.png:75,halo/elven/ice-halo4.png:75
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-200
|
||||
end=-50
|
||||
image="projectiles/icemissile-n-3.png"
|
||||
image_diagonal="projectiles/icemissile-ne-3.png"
|
||||
halo=halo/elven/ice-halo5.png:100,halo/elven/ice-halo1.png:100,halo/elven/ice-halo2.png:50
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-50
|
||||
end=0
|
||||
image="projectiles/icemissile-n-4.png"
|
||||
image_diagonal="projectiles/icemissile-ne-4.png"
|
||||
halo=halo/elven/ice-halo6.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=25
|
||||
end=75
|
||||
image="projectiles/icemissile-n-5.png"
|
||||
image_diagonal="projectiles/icemissile-ne-5.png"
|
||||
halo=halo/elven/ice-halo7.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=75
|
||||
end=125
|
||||
image="projectiles/icemissile-n-6.png"
|
||||
image_diagonal="projectiles/icemissile-ne-6.png"
|
||||
halo=halo/elven/ice-halo8.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=125
|
||||
end=175
|
||||
image="projectiles/icemissile-n-7.png"
|
||||
image_diagonal="projectiles/icemissile-ne-7.png"
|
||||
halo=halo/elven/ice-halo9.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_FIREBALL
|
||||
[missile_frame]
|
||||
begin=-220
|
||||
end=-100
|
||||
image="projectiles/fireball-n-2.png"
|
||||
image_diagonal="projectiles/fireball-nw-2.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-100
|
||||
end=25
|
||||
image="projectiles/fireball-n.png"
|
||||
image_diagonal="projectiles/fireball-nw.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=25
|
||||
end=80
|
||||
image="projectiles/fireball-n-2.png"
|
||||
image_diagonal="projectiles/fireball-nw-2.png"
|
||||
[/missile_frame]
|
||||
#enddef
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 778 B |
Before Width: | Height: | Size: 941 B After Width: | Height: | Size: 1.3 KiB |
|
@ -133,7 +133,8 @@
|
|||
#define SG_STRONG
|
||||
[trait]
|
||||
id=strong
|
||||
name= _ "strong"
|
||||
male_name= _ "strong"
|
||||
female_name= _ "female^strong"
|
||||
[effect]
|
||||
apply_to=attack
|
||||
range=melee
|
||||
|
@ -150,7 +151,8 @@
|
|||
#define SG_RESILIENT
|
||||
[trait]
|
||||
id=resilient
|
||||
name= _ "resilient"
|
||||
male_name= _ "resilient"
|
||||
female_name= _ "female^resilient"
|
||||
[effect]
|
||||
apply_to=hitpoints
|
||||
increase_total=7
|
||||
|
@ -163,7 +165,8 @@
|
|||
#define SG_QUICK
|
||||
[trait]
|
||||
id=quick
|
||||
name= _ "quick"
|
||||
male_name= _ "quick"
|
||||
female_name= _ "female^quick"
|
||||
[effect]
|
||||
apply_to=movement
|
||||
increase=1
|
||||
|
@ -179,7 +182,8 @@
|
|||
#define SG_INTELLIGENT
|
||||
[trait]
|
||||
id=intelligent
|
||||
name= _ "intelligent"
|
||||
male_name= _ "intelligent"
|
||||
female_name= _ "female^intelligent"
|
||||
[effect]
|
||||
apply_to=max_experience
|
||||
increase=-20%
|
||||
|
@ -190,7 +194,8 @@
|
|||
#define SG_LOYAL
|
||||
[trait]
|
||||
id=loyal
|
||||
name= _ "loyal"
|
||||
male_name= _ "loyal"
|
||||
female_name= _ "female^loyal"
|
||||
[effect]
|
||||
apply_to=loyal
|
||||
[/effect]
|
||||
|
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 39 KiB |
|
@ -18,6 +18,15 @@ elves= _ "Elves"
|
|||
humans= _ "Humans"
|
||||
orcs= _ "Orcs"
|
||||
undead= _ "race^Undead"
|
||||
dwarves= _ "race^Dwarves"
|
||||
goblins= _ "race^Goblins"
|
||||
lizards= _ "race^Lizards"
|
||||
mechanical= _ "race^Mechanical"
|
||||
mermen= _ "race^Mermen"
|
||||
monsters= _ "race^Monsters"
|
||||
nagas= _ "race^Nagas"
|
||||
ogres= _ "race^Ogres"
|
||||
troll= _ "race^Troll"
|
||||
|
||||
#naming of terrain features
|
||||
bridge_name= _ "$name's Bridge,$name's Crossing"
|
||||
|
@ -37,4 +46,10 @@ village_name_mountain= _ "$name|ham,$name|bury,$name|ton,$name|mont,$name|mont,$
|
|||
#ranges
|
||||
range_melee= _ "melee"
|
||||
range_ranged= _ "ranged"
|
||||
|
||||
#units.wesnoth.org
|
||||
wesnoth_unit_list= _ "Wesnoth unit list"
|
||||
based_on_version= _ "Based on version"
|
||||
race= _ "Race"
|
||||
advance_from= _ "Advance from"
|
||||
[/language]
|
||||
|
|
140
data/game.cfg
|
@ -4,11 +4,7 @@
|
|||
|
||||
{traits.cfg}
|
||||
|
||||
{utils.cfg}
|
||||
|
||||
{sound-utils.cfg}
|
||||
|
||||
{animation-utils.cfg}
|
||||
{utils/}
|
||||
|
||||
{abilities.cfg}
|
||||
|
||||
|
@ -33,103 +29,103 @@
|
|||
{campaigns}
|
||||
|
||||
[advanced_preference]
|
||||
field=compress_saves
|
||||
name=_"Binary Saves"
|
||||
type=boolean
|
||||
default=yes
|
||||
field=compress_saves
|
||||
name=_"Binary Saves"
|
||||
type=boolean
|
||||
default=yes
|
||||
[/advanced_preference]
|
||||
|
||||
[advanced_preference]
|
||||
field=show_combat
|
||||
name=_"Show Combat"
|
||||
type=boolean
|
||||
default=yes
|
||||
field=show_combat
|
||||
name=_"Show Combat"
|
||||
type=boolean
|
||||
default=yes
|
||||
[/advanced_preference]
|
||||
|
||||
[advanced_preference]
|
||||
field=mouse_scrolling
|
||||
name=_"Mouse Scrolling"
|
||||
type=boolean
|
||||
default=yes
|
||||
field=mouse_scrolling
|
||||
name=_"Mouse Scrolling"
|
||||
type=boolean
|
||||
default=yes
|
||||
[/advanced_preference]
|
||||
|
||||
[game_config]
|
||||
base_income=2
|
||||
village_income=1
|
||||
poison_amount=8
|
||||
rest_heal_amount=2
|
||||
recall_cost=20
|
||||
kill_experience=8
|
||||
base_income=2
|
||||
village_income=1
|
||||
poison_amount=8
|
||||
rest_heal_amount=2
|
||||
recall_cost=20
|
||||
kill_experience=8
|
||||
|
||||
title="maps/wesnoth.png"
|
||||
logo="misc/logo.png"
|
||||
icon="wesnoth-icon.png"
|
||||
title_music="main_menu_new.ogg"
|
||||
anonymous_music="main_menu_new.ogg"
|
||||
victory_music="victory.ogg"
|
||||
defeat_music="defeat.ogg"
|
||||
title="maps/wesnoth.png"
|
||||
logo="misc/logo.png"
|
||||
icon="wesnoth-icon.png"
|
||||
title_music="main_menu_new.ogg"
|
||||
anonymous_music="main_menu_new.ogg"
|
||||
victory_music="victory.ogg"
|
||||
defeat_music="defeat.ogg"
|
||||
|
||||
buttons_x=760
|
||||
buttons_y=330
|
||||
buttons_padding=20
|
||||
tinygui_buttons_padding=4
|
||||
logo_x=292
|
||||
logo_y=120
|
||||
tip_x=100
|
||||
tip_y=500
|
||||
tip_width=495
|
||||
tip_padding=20
|
||||
tinygui_tip_padding=4
|
||||
buttons_x=760
|
||||
buttons_y=330
|
||||
buttons_padding=20
|
||||
tinygui_buttons_padding=4
|
||||
logo_x=292
|
||||
logo_y=120
|
||||
tip_x=100
|
||||
tip_y=500
|
||||
tip_width=495
|
||||
tip_padding=20
|
||||
tinygui_tip_padding=4
|
||||
|
||||
map_image="maps/wesnoth.png"
|
||||
sidebar_image="misc/rightside.png"
|
||||
sidebar_image_bottom="misc/rightside-bottom.png"
|
||||
map_image="maps/wesnoth.png"
|
||||
sidebar_image="misc/rightside.png"
|
||||
sidebar_image_bottom="misc/rightside-bottom.png"
|
||||
|
||||
energy_image="misc/bar-energy.png"
|
||||
moved_ball_image="misc/ball-moved.png"
|
||||
unmoved_ball_image="misc/ball-unmoved.png"
|
||||
partmoved_ball_image="misc/ball-partmoved.png"
|
||||
enemy_ball_image="misc/ball-enemy.png"
|
||||
ally_ball_image="misc/ball-ally.png"
|
||||
flag_image="terrain/flag-1.png:150,terrain/flag-2.png:150,terrain/flag-3.png:150,terrain/flag-4.png:150"
|
||||
flag_rgb=green
|
||||
energy_image="misc/bar-energy.png"
|
||||
moved_ball_image="misc/ball-moved.png"
|
||||
unmoved_ball_image="misc/ball-unmoved.png"
|
||||
partmoved_ball_image="misc/ball-partmoved.png"
|
||||
enemy_ball_image="misc/ball-enemy.png"
|
||||
ally_ball_image="misc/ball-ally.png"
|
||||
flag_image="terrain/flag-1.png:150,terrain/flag-2.png:150,terrain/flag-3.png:150,terrain/flag-4.png:150"
|
||||
flag_rgb=green
|
||||
|
||||
cross_image="misc/cross.png"
|
||||
dot_image="misc/dot.png"
|
||||
cross_image="misc/cross.png"
|
||||
dot_image="misc/dot.png"
|
||||
|
||||
footprint_left_nw=misc/foot-left-nw.png,misc/foot-left-nw-slow.png
|
||||
footprint_left_n=misc/foot-left-n.png,misc/foot-left-n-slow.png
|
||||
footprint_right_nw=misc/foot-right-nw.png,misc/foot-right-nw-slow.png
|
||||
footprint_right_n=misc/foot-right-n.png,misc/foot-right-n-slow.png
|
||||
footprint_left_nw=misc/foot-left-nw.png,misc/foot-left-nw-slow.png
|
||||
footprint_left_n=misc/foot-left-n.png,misc/foot-left-n-slow.png
|
||||
footprint_right_nw=misc/foot-right-nw.png,misc/foot-right-nw-slow.png
|
||||
footprint_right_n=misc/foot-right-n.png,misc/foot-right-n-slow.png
|
||||
|
||||
missile_n_image=projectiles/missile-n.png
|
||||
missile_ne_image=projectiles/missile-ne.png
|
||||
missile_n_image=projectiles/missile-n.png
|
||||
missile_ne_image=projectiles/missile-ne.png
|
||||
|
||||
terrain_mask_image=terrain/alphamask.png
|
||||
terrain_mask_image=terrain/alphamask.png
|
||||
|
||||
observer_image=misc/eye.png
|
||||
observer_image=misc/eye.png
|
||||
|
||||
download_campaign_image=""
|
||||
download_campaign_image=""
|
||||
|
||||
level_image="misc/icon-advance.png"
|
||||
level_image="misc/icon-advance.png"
|
||||
|
||||
ellipsis_image="misc/icon-ellipsis.png"
|
||||
ellipsis_image="misc/icon-ellipsis.png"
|
||||
|
||||
{team-colors.cfg}
|
||||
{team-colors.cfg}
|
||||
|
||||
[/game_config]
|
||||
|
||||
[textdomain]
|
||||
name="wesnoth"
|
||||
name="wesnoth"
|
||||
[/textdomain]
|
||||
[textdomain]
|
||||
name="wesnoth-lib"
|
||||
name="wesnoth-lib"
|
||||
[/textdomain]
|
||||
[textdomain]
|
||||
name="wesnoth-editor"
|
||||
name="wesnoth-editor"
|
||||
[/textdomain]
|
||||
[textdomain]
|
||||
name="wesnoth-tutorial"
|
||||
name="wesnoth-tutorial"
|
||||
[/textdomain]
|
||||
|
||||
{hotkeys.cfg}
|
||||
|
@ -139,10 +135,10 @@
|
|||
#ifdef TUTORIAL
|
||||
{tutorial/scenarios}
|
||||
[binary_path]
|
||||
path=data/tutorial
|
||||
path=data/tutorial
|
||||
[/binary_path]
|
||||
[+units]
|
||||
{tutorial/units}
|
||||
{tutorial/units}
|
||||
[/units]
|
||||
{tutorial/units}
|
||||
#endif
|
||||
|
|
|
@ -81,6 +81,11 @@
|
|||
key=" "
|
||||
shift=yes
|
||||
[/hotkey]
|
||||
[hotkey]
|
||||
command=labelteamterrain
|
||||
key=l
|
||||
shift=yes
|
||||
[/hotkey]
|
||||
[hotkey]
|
||||
command=labelterrain
|
||||
key=l
|
||||
|
@ -304,6 +309,11 @@
|
|||
key=" "
|
||||
shift=yes
|
||||
[/hotkey]
|
||||
[hotkey]
|
||||
command=labelteamterrain
|
||||
key=l
|
||||
shift=yes
|
||||
[/hotkey]
|
||||
[hotkey]
|
||||
command=labelterrain
|
||||
key=l
|
||||
|
|
|
@ -34,7 +34,7 @@ name=moveto
|
|||
|
||||
[message]
|
||||
speaker=narrator
|
||||
message= _ "You can come if you wish, but the leader is only interested in speaking to Baldras."
|
||||
message= "You can come if you wish, but the leader is only interested in speaking to Baldras."
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
|
@ -251,10 +251,10 @@ name=moveto
|
|||
[/filter]
|
||||
[object]
|
||||
id=bleach
|
||||
name= _ "Potion of bleach"
|
||||
name= "Potion of bleach"
|
||||
image=items/potion-red.png
|
||||
duration=level
|
||||
description= _ "Oooh tingly!!!"
|
||||
description= "Oooh tingly!!!"
|
||||
[effect]
|
||||
apply_to=image_mod
|
||||
add="RC(thief>blonde)"
|
||||
|
@ -280,7 +280,7 @@ name=moveto
|
|||
[message]
|
||||
speaker=narrator
|
||||
image=units/elves-wood/captain.png~RC(magenta>3)
|
||||
message=_ "Send me a thief to spy on the blondes"
|
||||
message="Send me a thief to spy on the blondes"
|
||||
[/message]
|
||||
[/event]
|
||||
|
||||
|
|
|
@ -86,3 +86,5 @@
|
|||
[/side]
|
||||
|
||||
[/multiplayer]
|
||||
|
||||
#undef SULLA_STATUE
|
||||
|
|
|
@ -14,27 +14,27 @@
|
|||
canrecruit=1
|
||||
controller=human
|
||||
team_name=East
|
||||
user_team_name= _ "teamname^East
|
||||
user_team_name= _ "teamname^East"
|
||||
[/side]
|
||||
[side]
|
||||
side=2
|
||||
canrecruit=1
|
||||
controller=human
|
||||
team_name=West
|
||||
user_team_name= _ "teamname^West
|
||||
user_team_name= _ "teamname^West"
|
||||
[/side]
|
||||
[side]
|
||||
side=3
|
||||
canrecruit=1
|
||||
controller=human
|
||||
team_name=West
|
||||
user_team_name= _ "teamname^West
|
||||
user_team_name= _ "teamname^West"
|
||||
[/side]
|
||||
[side]
|
||||
side=4
|
||||
canrecruit=1
|
||||
controller=human
|
||||
team_name=East
|
||||
user_team_name= _ "teamname^East
|
||||
user_team_name= _ "teamname^East"
|
||||
[/side]
|
||||
[/multiplayer]
|
||||
|
|
384
data/scenarios/multiplayer/6p_Team_Survival.cfg
Normal file
|
@ -0,0 +1,384 @@
|
|||
#define TS_MAP_DATA
|
||||
|
||||
W W
|
||||
WWwWW WWcWW
|
||||
WWwwGwcWW WWccIccWW
|
||||
WWwwYTmGGccWWWccTIPIGcwWW
|
||||
WWcwcwGhrGhTTcWcfGGJMJTccwwWW
|
||||
WWccGcdc/rTrrLGcWctggTrrrdcwYwwWW
|
||||
WcIIJTrrdccGrGkcWcghgrgggr\GhTGwW
|
||||
WcIPMrggccchrcfcWccfcrcZcdcrrmGwW
|
||||
WcTJTrgZsscT|cgcWcfkg|cssccTrGGcW
|
||||
WcGGgrrcccfcRckcWcggRRhccchGrhTcW
|
||||
Wcfghgc\RhbhRfgcWcghRfbfcTrrGLTcW
|
||||
WcctgfkgRfRRgggcWcgggRRhR/cckGccW
|
||||
WWcWWcccfghRgRChgcWcgfCRgRfcgfccWWcWW
|
||||
WWccTccWWccgggfC2CgcWcgC3ChggkccWWccfccWW
|
||||
WWwcGTLGkccWWccggCccccWccccCggccWWccgtgGTccWW
|
||||
WwGGGhrGcfgccWWccgcsWWlWWscgccWWccfcfhgGJIIcW
|
||||
WwTmrrGrrcckgccWWcWWWlWlWWWcWWccgggkcgrTMPIcW
|
||||
WwYhrTchT\RfgggccWllllWllllWccggghRg/rgrrJGcW
|
||||
WwwG|ccccchRghCgcWlWWW'WWWlWcgCfgRfRccZgrTccW
|
||||
WwccrdcscfbRRC7csWWlW'1'WlWWsc4CRRbhcscgrdcwW
|
||||
WwcdrgZschfRgCCccWllW'''WllWccCCgRhfcscd|cwwW
|
||||
WcGTrggc/RRRgfggcWlWlWWWlWlWcgghgRRcTcccrGYwW
|
||||
WcIJMrrrcgghggccWWWlWlWlWlWWWccggfc\rhGTrhTwW
|
||||
WcIPJTggfkfgccWWcccWWlllWWcccWWcckgccrrrGmGwW
|
||||
WccITGghgcccWWccggcscWWWcscggccWWccfkGLhGGwwW
|
||||
WWccGftccWWccgghC6cgcWcgc5CfggccWWccGTTccWW
|
||||
WWcccWWccgkfggCCCgcWcgCCCgghgfccWWcccWW
|
||||
WWWcckfccRRRRgfgcWcghgRRRRgkcgccWWW
|
||||
WcTGGcr/chbRRggcWcggRRbfRgcfhtfcW
|
||||
WcTLrrhTcfhfRhgcWckfRhfhc\rgggGcW
|
||||
WcGhrGccsccRggfcWcgc|cccscgrTGTcW
|
||||
WcGGrTcccsc|ckccWcfcrTcscZgrMJIcW
|
||||
WwGmhr\dgZgrgfgcWckcrhccdgrrJPIcW
|
||||
WwwTYGcrrgrrghtcWcGGrGTc/rdTGIccW
|
||||
WWwwwcdTrMTGgfcWcTLhrrrGcccccWW
|
||||
WWwwcGJPJTGccWccTGGmhYwwwWW
|
||||
WWccIIIccWW WWccGGTwwWW
|
||||
WWcccWW WWwwwWW
|
||||
WWW WWW
|
||||
|
||||
#enddef
|
||||
|
||||
#define TS_WALL_MASK_NORTH
|
||||
ccc
|
||||
Gcg
|
||||
ccg
|
||||
ggc
|
||||
mhg
|
||||
fgg
|
||||
ccg
|
||||
gkf
|
||||
gkg
|
||||
fcg
|
||||
cWc
|
||||
#enddef
|
||||
|
||||
#define TS_WALL_MASK_NORTH_EAST
|
||||
Gc
|
||||
gcccc
|
||||
fmgcgg
|
||||
gcghgc
|
||||
fgkcgg
|
||||
cckgf
|
||||
Wcg
|
||||
#enddef
|
||||
|
||||
#define TS_WALL_MASK_NORTH_WEST
|
||||
cg
|
||||
cccgc
|
||||
Gccggg
|
||||
gmhggf
|
||||
fcckgg
|
||||
ggkcc
|
||||
fcW
|
||||
#enddef
|
||||
|
||||
#define TS_WALL_MASK_SOUTH
|
||||
W
|
||||
ccc
|
||||
gkf
|
||||
gkg
|
||||
fcg
|
||||
ggc
|
||||
ghf
|
||||
ggm
|
||||
ccg
|
||||
gcc
|
||||
gcG
|
||||
c c
|
||||
#enddef
|
||||
|
||||
#define TS_WALL_MASK_SOUTH_EAST
|
||||
c
|
||||
Wcfg
|
||||
cgkkgc
|
||||
gfcgfm
|
||||
gghggc
|
||||
gcccGc
|
||||
ggc
|
||||
c
|
||||
#enddef
|
||||
|
||||
#define TS_WALL_MASK_SOUTH_WEST
|
||||
c
|
||||
ggcW
|
||||
gfkkfc
|
||||
gggcgg
|
||||
gcghfc
|
||||
cgccgm
|
||||
cGc
|
||||
c
|
||||
#enddef
|
||||
|
||||
#define TS_CASTLE_MASK
|
||||
g g
|
||||
CCf fCC
|
||||
gfg c gfg
|
||||
gfhmg
|
||||
cmfgCfgfc
|
||||
gf fhCCCCChm fg
|
||||
Cg ggCCKCCfg gC
|
||||
Cf mfCCCCCgf fC
|
||||
g chgCCCfhc g
|
||||
fgfhggm
|
||||
f mcf f
|
||||
gCgf fgCg
|
||||
Cg gC
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_MASK_NORTH_WEST
|
||||
|
||||
gc
|
||||
ch
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_MASK_NORTH_EAST
|
||||
ch
|
||||
gc
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_MASK_EAST
|
||||
c
|
||||
h
|
||||
g
|
||||
c
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_MASK_SOUTH_WEST
|
||||
|
||||
c
|
||||
gh
|
||||
c
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_MASK_SOUTH_EAST
|
||||
|
||||
c
|
||||
gh
|
||||
c
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_MASK_WEST
|
||||
c
|
||||
g
|
||||
h
|
||||
c
|
||||
#enddef
|
||||
|
||||
#define TS_SET_LABELS
|
||||
{SET_LABEL_PERSISTANT 24 18 (_ "Turn 2: Loyalists")}
|
||||
{SET_LABEL_PERSISTANT 27 20 (_ "Turn 5: Knalgans")}
|
||||
{SET_LABEL_PERSISTANT 27 23 (_ "Turn 8: Rebels")}
|
||||
{SET_LABEL_PERSISTANT 24 24 (_ "Turn 11: Northerners")}
|
||||
{SET_LABEL_PERSISTANT 21 23 (_ "Turn 14: Drakes")}
|
||||
{SET_LABEL_PERSISTANT 21 20 (_ "Turn 17: Undead")}
|
||||
{SET_LABEL_PERSISTANT 24 21 (_ "Tower of Doom")}
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_WALLS
|
||||
{EARTHQUAKE (
|
||||
{IF_ALLIED 7 2 ({MODIFY_TERRAIN_MASK 7 13 ("{TS_WALL_MASK_NORTH_WEST}") ()} )}
|
||||
{IF_ALLIED 2 3 ({MODIFY_TERRAIN_MASK 23 6 ("{TS_WALL_MASK_NORTH}") ()} )}
|
||||
{IF_ALLIED 3 4 ({MODIFY_TERRAIN_MASK 29 13 ("{TS_WALL_MASK_NORTH_EAST}") ()} )}
|
||||
{IF_ALLIED 4 5 ({MODIFY_TERRAIN_MASK 29 23 ("{TS_WALL_MASK_SOUTH_EAST}") ()} )}
|
||||
{IF_ALLIED 5 6 ({MODIFY_TERRAIN_MASK 23 26 ("{TS_WALL_MASK_SOUTH}") ()} )}
|
||||
{IF_ALLIED 6 7 ({MODIFY_TERRAIN_MASK 7 23 ("{TS_WALL_MASK_SOUTH_WEST}") ()} )}
|
||||
)}
|
||||
#enddef
|
||||
|
||||
#define TS_BUILD_CASTLE
|
||||
{EARTHQUAKE ({MODIFY_TERRAIN_MASK 17 15 ("{TS_CASTLE_MASK}") ()})}
|
||||
#enddef
|
||||
|
||||
#define TS_OPEN_CASTLE
|
||||
{EARTHQUAKE (
|
||||
{IF_ALIVE 2 ({MODIFY_TERRAIN_MASK 19 16 ("{TS_OPEN_MASK_NORTH_WEST}") ()} )}
|
||||
{IF_ALIVE 3 ({MODIFY_TERRAIN_MASK 25 17 ("{TS_OPEN_MASK_NORTH_EAST}") ()} )}
|
||||
{IF_ALIVE 4 ({MODIFY_TERRAIN_MASK 29 20 ("{TS_OPEN_MASK_EAST}") ()} )}
|
||||
{IF_ALIVE 5 ({MODIFY_TERRAIN_MASK 25 23 ("{TS_OPEN_MASK_SOUTH_EAST}") ()} )}
|
||||
{IF_ALIVE 6 ({MODIFY_TERRAIN_MASK 19 23 ("{TS_OPEN_MASK_SOUTH_WEST}") ()} )}
|
||||
{IF_ALIVE 7 ({MODIFY_TERRAIN_MASK 19 20 ("{TS_OPEN_MASK_WEST}") ()} )}
|
||||
)}
|
||||
#enddef
|
||||
|
||||
#define TS_SPAWN1 UNIT
|
||||
{IF_ALIVE 2 ({CREATE_UNIT 1 ({UNIT}) 12 10 () ()})}
|
||||
{IF_ALIVE 3 ({CREATE_UNIT 1 ({UNIT}) 29 7 () ()})}
|
||||
{IF_ALIVE 4 ({CREATE_UNIT 1 ({UNIT}) 41 18 () ()})}
|
||||
{IF_ALIVE 5 ({CREATE_UNIT 1 ({UNIT}) 36 32 () ()})}
|
||||
{IF_ALIVE 6 ({CREATE_UNIT 1 ({UNIT}) 19 36 () ()})}
|
||||
{IF_ALIVE 7 ({CREATE_UNIT 1 ({UNIT}) 7 25 () ()})}
|
||||
#enddef
|
||||
|
||||
#define TS_SPAWN2 UNIT
|
||||
{IF_ALIVE 2 ({CREATE_UNIT 1 ({UNIT}) 19 7 () ()})}
|
||||
{IF_ALIVE 3 ({CREATE_UNIT 1 ({UNIT}) 36 10 () ()})}
|
||||
{IF_ALIVE 4 ({CREATE_UNIT 1 ({UNIT}) 41 25 () ()})}
|
||||
{IF_ALIVE 5 ({CREATE_UNIT 1 ({UNIT}) 29 36 () ()})}
|
||||
{IF_ALIVE 6 ({CREATE_UNIT 1 ({UNIT}) 12 32 () ()})}
|
||||
{IF_ALIVE 7 ({CREATE_UNIT 1 ({UNIT}) 7 18 () ()})}
|
||||
#enddef
|
||||
|
||||
#define TS_SWAMP_SPAWN UNIT
|
||||
{IF_ALIVE 2 ({CREATE_UNIT 1 ({UNIT}) 15 6 () ()})}
|
||||
{IF_ALIVE 3 ({CREATE_UNIT 1 ({UNIT}) 35 7 () ()})}
|
||||
{IF_ALIVE 4 ({CREATE_UNIT 1 ({UNIT}) 44 22 () ()})}
|
||||
{IF_ALIVE 5 ({CREATE_UNIT 1 ({UNIT}) 33 37 () ()})}
|
||||
{IF_ALIVE 6 ({CREATE_UNIT 1 ({UNIT}) 13 36 () ()})}
|
||||
{IF_ALIVE 7 ({CREATE_UNIT 1 ({UNIT}) 4 20 () ()})}
|
||||
#enddef
|
||||
|
||||
#define TS_LAKE_SPAWN UNIT
|
||||
{IF_ALIVE 2 ({CREATE_UNIT 1 ({UNIT}) 17 10 () ()})}
|
||||
{IF_ALIVE 3 ({CREATE_UNIT 1 ({UNIT}) 32 10 () ()})}
|
||||
{IF_ALIVE 4 ({CREATE_UNIT 1 ({UNIT}) 39 22 () ()})}
|
||||
{IF_ALIVE 5 ({CREATE_UNIT 1 ({UNIT}) 31 33 () ()})}
|
||||
{IF_ALIVE 6 ({CREATE_UNIT 1 ({UNIT}) 16 32 () ()})}
|
||||
{IF_ALIVE 7 ({CREATE_UNIT 1 ({UNIT}) 9 21 () ()})}
|
||||
#enddef
|
||||
|
||||
#define TS_HOME_SPAWN UNIT
|
||||
{IF_ALIVE 2 ({CREATE_UNIT 1 ({UNIT}) 18 12 () ()})}
|
||||
{IF_ALIVE 3 ({CREATE_UNIT 1 ({UNIT}) 30 12 () ()})}
|
||||
{IF_ALIVE 4 ({CREATE_UNIT 1 ({UNIT}) 36 21 () ()})}
|
||||
{IF_ALIVE 5 ({CREATE_UNIT 1 ({UNIT}) 30 30 () ()})}
|
||||
{IF_ALIVE 6 ({CREATE_UNIT 1 ({UNIT}) 18 13 () ()})}
|
||||
{IF_ALIVE 7 ({CREATE_UNIT 1 ({UNIT}) 12 21 () ()})}
|
||||
#enddef
|
||||
|
||||
#define TS_SPAWNS
|
||||
{ON_TURN 2 (
|
||||
{TS_SPAWN1 "Footpad"}{TS_SPAWN1 "Peasant"}
|
||||
{TS_SPAWN2 "Bowman"}{TS_SPAWN2 "Cavalryman"}
|
||||
)}
|
||||
{ON_TURN 5 (
|
||||
{TS_SPAWN1 "Thief"}{TS_SPAWN1 "Poacher"}
|
||||
{TS_SPAWN2 "Dwarvish Guardsman"}{TS_SPAWN2 "Dwarvish Fighter"}
|
||||
)}
|
||||
{ON_TURN 8 (
|
||||
{TS_SPAWN1 "Elvish Archer"}{TS_SPAWN1 "Elvish Shaman"}
|
||||
{TS_LAKE_SPAWN "Merman Hunter"}
|
||||
{TS_SPAWN2 "Elvish Archer"}
|
||||
)}
|
||||
{ON_TURN 11 (
|
||||
{TS_SPAWN1 "Orcish Slayer"}
|
||||
{TS_LAKE_SPAWN "Naga Fighter"}
|
||||
{TS_SPAWN2 "Troll Hero"}{TS_SPAWN2 "Troll Whelp"}
|
||||
)}
|
||||
{ON_TURN 14 (
|
||||
{TS_SPAWN1 "Drake Warrior"}{TS_SPAWN1 "Drake Glider"}
|
||||
{TS_SPAWN2 "Fire Drake"}{TS_SPAWN2 "Drake Fighter"}
|
||||
)}
|
||||
{ON_TURN 17 (
|
||||
{TS_SPAWN1 "Death Knight"}{TS_SPAWN1 "Walking Corpse"}{TS_SPAWN1 "Walking Corpse"}{TS_SPAWN1 "Walking Corpse"}{TS_SPAWN1 "Vampire Bat"}
|
||||
{TS_SWAMP_SPAWN "Tentacle of the Deep"}
|
||||
{TS_SPAWN2 "Lich"}{TS_SPAWN2 "Walking Corpse"}{TS_SPAWN2 "Walking Corpse"}{TS_SPAWN2 "Walking Corpse"}{TS_SPAWN2 "Vampire Bat"}
|
||||
)}
|
||||
{ON_TURN 20 (
|
||||
{TS_SPAWN1 "Drake Enforcer"}
|
||||
{TS_LAKE_SPAWN "Mermaid Diviner"}{TS_LAKE_SPAWN "Merman Entangler"}
|
||||
{TS_SPAWN2 "Drake Enforcer"}
|
||||
)}
|
||||
{ON_TURN 23 (
|
||||
{TS_SPAWN1 "Dark Sorcerer"}
|
||||
{TS_LAKE_SPAWN "Shadow"}{TS_LAKE_SPAWN "Shadow"}{TS_LAKE_SPAWN "Shadow"}
|
||||
{TS_SPAWN2 "Dark Sorcerer"}
|
||||
)}
|
||||
{ON_TURN 26 (
|
||||
{TS_SPAWN1 "Goblin Rouser"}{TS_SPAWN1 "Goblin Spearman"}{TS_SPAWN1 "Goblin Spearman"}{TS_SPAWN1 "Goblin Spearman"}{TS_SPAWN1 "Goblin Spearman"}{TS_SPAWN1 "Goblin Spearman"}{TS_SPAWN1 "Goblin Spearman"}
|
||||
{TS_SWAMP_SPAWN "Cuttle Fish"}
|
||||
{TS_SPAWN2 "Goblin Rouser"}{TS_SPAWN2 "Goblin Spearman"}{TS_SPAWN2 "Goblin Spearman"}{TS_SPAWN2 "Goblin Spearman"}{TS_SPAWN2 "Goblin Spearman"}{TS_SPAWN2 "Goblin Spearman"}{TS_SPAWN2 "Goblin Spearman"}
|
||||
)}
|
||||
#enddef
|
||||
|
||||
[multiplayer]
|
||||
id=multiplayer_6p_Team_Survival
|
||||
name= _ "6p - Team Survival"
|
||||
map_data="{TS_MAP_DATA}"
|
||||
|
||||
description= _ "Scenario where the objective is to survive for as long as possible."
|
||||
experience_modifier=70
|
||||
turns=32
|
||||
turn_at=1
|
||||
victory_when_enemies_defeated=yes
|
||||
|
||||
{ON_PRESTART (
|
||||
{SET_OBJECTIVES 0 (_ "Survive for 32 turns.") (_ "Hint: Learning the enemy spawnpoints and types helps alot.") (
|
||||
{VICTORY_CONDITION (_ "Survival all enemy attacks.")}
|
||||
{DEFEAT_CONDITION (_ "Death of your team leaders.")}
|
||||
)}
|
||||
)}
|
||||
{ON_START (
|
||||
{TS_SET_LABELS}
|
||||
{TS_OPEN_WALLS}
|
||||
)}
|
||||
|
||||
{TS_SPAWNS}
|
||||
|
||||
{ON_TURN 25 {TS_BUILD_CASTLE}}
|
||||
{ON_TURN 26 {TS_OPEN_CASTLE}}
|
||||
{ON_TURN 32 (
|
||||
{IF_ALIVE 2 ({ENDGAME victory})}
|
||||
{IF_ALIVE 3 ({ENDGAME victory})}
|
||||
{IF_ALIVE 4 ({ENDGAME victory})}
|
||||
{IF_ALIVE 5 ({ENDGAME victory})}
|
||||
{IF_ALIVE 6 ({ENDGAME victory})}
|
||||
{IF_ALIVE 7 ({ENDGAME victory})}
|
||||
)}
|
||||
|
||||
{ON_VICTORY (
|
||||
{MESSAGE narrator (units/elves-wood/shyde.png) (Faery) (_ "Congratulations for surviving the map that so many people claim is impossible. Frankly, I don't got a clue to how you did it, so send me the replay by mail to: roze@roze.mine.nu. Thank You!")}
|
||||
)}
|
||||
{ON_DEFEAT (
|
||||
{MESSAGE narrator (units/undead/wraith.png) (Death) (_ "You have lost this game, but fear not. You can always try again. And again. And again. *Muahahaha*")}
|
||||
)}
|
||||
|
||||
{DEFAULT_MUSIC_PLAYLIST}
|
||||
|
||||
{DAWN}
|
||||
{MORNING}
|
||||
{AFTERNOON}
|
||||
{DUSK}
|
||||
{FIRST_WATCH}
|
||||
{SECOND_WATCH}
|
||||
|
||||
{SIDE_COMPUTER 1 Attacker (Attacker) 1000 47 () (
|
||||
leader_value=7.0
|
||||
aggression=1.0
|
||||
)}
|
||||
{SIDE_PLAYER 2 Defenders-1 (North-West) 125 -2 ()}
|
||||
{SIDE_PLAYER 3 Defenders-2 (North-East) 125 -2 ()}
|
||||
{SIDE_PLAYER 4 Defenders-3 (Middle-East) 125 -2 ()}
|
||||
{SIDE_PLAYER 5 Defenders-4 (South-East) 125 -2 ()}
|
||||
{SIDE_PLAYER 6 Defenders-5 (South-West) 125 -2 ()}
|
||||
{SIDE_PLAYER 7 Defenders-6 (Middle-West) 125 -2 ()}
|
||||
|
||||
[/multiplayer]
|
||||
|
||||
#undef TS_MAP_DATA
|
||||
#undef TS_WALL_MASK_NORTH
|
||||
#undef TS_WALL_MASK_NORTH_EAST
|
||||
#undef TS_WALL_MASK_NORTH_WEST
|
||||
#undef TS_WALL_MASK_SOUTH
|
||||
#undef TS_WALL_MASK_SOUTH_EAST
|
||||
#undef TS_WALL_MASK_SOUTH_WEST
|
||||
#undef TS_CASTLE_MASK
|
||||
#undef TS_OPEN_MASK_NORTH_WEST
|
||||
#undef TS_OPEN_MASK_NORTH_EAST
|
||||
#undef TS_OPEN_MASK_EAST
|
||||
#undef TS_OPEN_MASK_SOUTH_WEST
|
||||
#undef TS_OPEN_MASK_SOUTH_EAST
|
||||
#undef TS_OPEN_MASK_WEST
|
||||
#undef TS_SET_LABELS
|
||||
#undef TS_OPEN_WALLS
|
||||
#undef TS_BUILD_CASTLE
|
||||
#undef TS_OPEN_CASTLE
|
||||
#undef TS_SPAWN1
|
||||
#undef TS_SPAWN2
|
||||
#undef TS_SWAMP_SPAWN
|
||||
#undef TS_LAKE_SPAWN
|
||||
#undef TS_HOME_SPAWN
|
||||
#undef TS_SPAWNS
|
|
@ -98,7 +98,7 @@ height=768
|
|||
|
||||
[menu]
|
||||
is_context_menu=true
|
||||
items=undo,redo,describeunit,renameunit,createunit,changeside,labelterrain,clearlabels,speak,continue,recruit,recall,delayshroud,updateshroud,cycle,endturn
|
||||
items=undo,redo,describeunit,renameunit,createunit,changeside,labelteamterrain,labelterrain,clearlabels,speak,continue,recruit,recall,delayshroud,updateshroud,cycle,endturn
|
||||
[/menu]
|
||||
[mini_map]
|
||||
id=mini-map
|
||||
|
|
|
@ -119,7 +119,7 @@ height=768
|
|||
|
||||
[menu]
|
||||
is_context_menu=true
|
||||
items=undo,redo,describeunit,renameunit,createunit,changeside,labelterrain,clearlabels,speak,continue,recruit,recall,delayshroud,updateshroud,cycle,endturn
|
||||
items=undo,redo,describeunit,renameunit,createunit,changeside,labelteamterrain,labelterrain,clearlabels,speak,continue,recruit,recall,delayshroud,updateshroud,cycle,endturn
|
||||
[/menu]
|
||||
|
||||
[menu]
|
||||
|
|
|
@ -89,7 +89,7 @@ height=768
|
|||
|
||||
[menu]
|
||||
is_context_menu=true
|
||||
items=undo,redo,describeunit,renameunit,createunit,changeside,labelterrain,clearlables,speak,continue,recruit,recall,delayshroud,updateshroud,cycle,endturn
|
||||
items=undo,redo,describeunit,renameunit,createunit,changeside,labelteamterrain,labelterrain,clearlabels,speak,continue,recruit,recall,delayshroud,updateshroud,cycle,endturn
|
||||
[/menu]
|
||||
[mini_map]
|
||||
id=mini-map
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
#define TRAIT_LOYAL
|
||||
[trait]
|
||||
id=loyal
|
||||
name= _ "loyal"
|
||||
male_name= _ "loyal"
|
||||
female_name= _ "female^loyal"
|
||||
description= _ "Zero upkeep"
|
||||
[effect]
|
||||
apply_to=loyal
|
||||
|
@ -14,7 +15,8 @@
|
|||
#define TRAIT_UNDEAD
|
||||
[trait]
|
||||
id=undead
|
||||
name= _ "undead"
|
||||
male_name= _ "undead"
|
||||
female_name= _ "female^undead"
|
||||
description= _ "Immune to poison"
|
||||
[/trait]
|
||||
#enddef
|
||||
|
@ -22,7 +24,8 @@
|
|||
#define TRAIT_STRONG
|
||||
[trait]
|
||||
id=strong
|
||||
name= _ "strong"
|
||||
male_name= _ "strong"
|
||||
female_name= _ "female^strong"
|
||||
[effect]
|
||||
apply_to=attack
|
||||
range=melee
|
||||
|
@ -38,7 +41,8 @@
|
|||
#define TRAIT_DEXTROUS
|
||||
[trait]
|
||||
id=dextrous
|
||||
name= _ "dextrous"
|
||||
male_name= _ "dextrous"
|
||||
female_name= _ "female^dextrous"
|
||||
[effect]
|
||||
apply_to=attack
|
||||
range=ranged
|
||||
|
@ -50,7 +54,8 @@
|
|||
#define TRAIT_QUICK
|
||||
[trait]
|
||||
id=quick
|
||||
name= _ "quick"
|
||||
male_name= _ "quick"
|
||||
female_name= _ "female^quick"
|
||||
[effect]
|
||||
apply_to=movement
|
||||
increase=1
|
||||
|
@ -65,7 +70,8 @@
|
|||
#define TRAIT_INTELLIGENT
|
||||
[trait]
|
||||
id=intelligent
|
||||
name= _ "intelligent"
|
||||
male_name= _ "intelligent"
|
||||
female_name= _ "female^intelligent"
|
||||
[effect]
|
||||
apply_to=max_experience
|
||||
increase=-20%
|
||||
|
@ -76,7 +82,8 @@
|
|||
#define TRAIT_RESILIENT
|
||||
[trait]
|
||||
id=resilient
|
||||
name= _ "resilient"
|
||||
male_name= _ "resilient"
|
||||
female_name= _ "female^resilient"
|
||||
[effect]
|
||||
apply_to=hitpoints
|
||||
increase_total=10%
|
||||
|
@ -91,7 +98,8 @@
|
|||
#define TRAIT_HEALTHY
|
||||
[trait]
|
||||
id=healthy
|
||||
name= _ "healthy"
|
||||
male_name= _ "healthy"
|
||||
female_name= _ "female^healthy"
|
||||
description= _ "Heals faster if resting"
|
||||
[effect]
|
||||
apply_to=hitpoints
|
||||
|
@ -103,7 +111,8 @@
|
|||
#define TRAIT_FEARLESS
|
||||
[trait]
|
||||
id=fearless
|
||||
name= _ "fearless"
|
||||
male_name= _ "fearless"
|
||||
female_name= _ "female^fearless"
|
||||
description= _ "Fights normally during unfavorable times of day/night"
|
||||
[/trait]
|
||||
#enddef
|
||||
|
|
|
@ -99,6 +99,7 @@ Special Notes:"+{SPECIAL_NOTES_BERSERK}
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -96,6 +96,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -120,6 +120,7 @@ Special Notes:"+{SPECIAL_NOTES_STEADFAST}
|
|||
[/attack]
|
||||
{DEFENSE_ANIM "units/dwarves/guard-defend.png" "units/dwarves/guard.png" {SOUND_LIST:DWARF_HIT} }
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -80,6 +80,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -98,6 +98,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -68,6 +68,7 @@ Special Notes:"+{SPECIAL_NOTES_BERSERK}
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -209,29 +209,16 @@
|
|||
[frame]
|
||||
image="units/elves-wood/archer+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/elves-wood/archer+female-bow-attack2.png"
|
||||
[/frame]
|
||||
|
@ -250,6 +237,7 @@
|
|||
{DEFENSE_ANIM_RANGE "units/elves-wood/archer+female-bow-defend.png" "units/elves-wood/archer+female-bow.png" {SOUND_LIST:ELF_FEMALE_HIT} ranged}
|
||||
[/female]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -220,29 +220,16 @@ Special Notes:"+{SPECIAL_NOTES_AMBUSH}
|
|||
[frame]
|
||||
image="units/elves-wood/avenger+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-bow.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/elves-wood/avenger+female-attack2.png"
|
||||
[/frame]
|
||||
|
|
|
@ -186,17 +186,6 @@ Special Notes:"+{SPECIAL_NOTES_SLOW}+{SPECIAL_NOTES_CURES}
|
|||
[/frame]
|
||||
|
||||
[if]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=0
|
||||
end=75
|
||||
image="units/elves-wood/druid-magic-4.png"
|
||||
halo="halo/elven/nature-halo5.png"
|
||||
sound=magic-thorns-miss-1.ogg,magic-thorns-miss-2.ogg
|
||||
halo_x,halo_y=0,-12
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=0
|
||||
|
@ -206,6 +195,17 @@ Special Notes:"+{SPECIAL_NOTES_SLOW}+{SPECIAL_NOTES_CURES}
|
|||
sound=magic-thorns-1.ogg,magic-thorns-2.ogg
|
||||
halo_x,halo_y=0,-12
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=0
|
||||
end=75
|
||||
image="units/elves-wood/druid-magic-4.png"
|
||||
halo="halo/elven/nature-halo5.png"
|
||||
sound=magic-thorns-miss-1.ogg,magic-thorns-miss-2.ogg
|
||||
halo_x,halo_y=0,-12
|
||||
[/frame]
|
||||
[/else]
|
||||
|
||||
[frame]
|
||||
|
|
|
@ -22,28 +22,33 @@ This prodigious skill does come with one cost, that being a lack of practice wit
|
|||
|
||||
Special Notes:"+{SPECIAL_NOTES_MARKSMAN}
|
||||
die_sound={SOUND_LIST:ELF_HIT}
|
||||
# [death]
|
||||
# [frame]
|
||||
# begin=0
|
||||
# end=100
|
||||
# image="units/elves-wood/marksman-die1.png"
|
||||
# [/frame]
|
||||
# [frame]
|
||||
# begin=100
|
||||
# end=200
|
||||
# image="units/elves-wood/marksman-die2.png"
|
||||
# [/frame]
|
||||
# [frame]
|
||||
# begin=200
|
||||
# end=300
|
||||
# image="units/elves-wood/marksman-die3.png"
|
||||
# [/frame]
|
||||
# [frame]
|
||||
# begin=300
|
||||
# end=400
|
||||
# image="units/elves-wood/marksman-die4.png"
|
||||
# [/frame]
|
||||
# [/death]
|
||||
[death]
|
||||
[frame]
|
||||
begin=0
|
||||
end=160
|
||||
image="units/elves-wood/marksman-die-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
begin=160
|
||||
end=400
|
||||
image="units/elves-wood/marksman-die-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
begin=400
|
||||
end=580
|
||||
image="units/elves-wood/marksman-die-3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
begin=580
|
||||
end=780
|
||||
image="units/elves-wood/marksman-die-4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
begin=780
|
||||
end=1000
|
||||
image="units/elves-wood/marksman-die-5.png"
|
||||
[/frame]
|
||||
[/death]
|
||||
[attack]
|
||||
name=sword
|
||||
icon=attacks/sword-elven.png
|
||||
|
@ -163,20 +168,23 @@ Special Notes:"+{SPECIAL_NOTES_MARKSMAN}
|
|||
die_sound={SOUND_LIST:ELF_FEMALE_HIT}
|
||||
{DEFENSE_ANIM_RANGE "units/elves-wood/marksman+female-sword-defend.png" "units/elves-wood/marksman+female-sword.png" {SOUND_LIST:ELF_FEMALE_HIT} melee}
|
||||
{DEFENSE_ANIM_RANGE "units/elves-wood/marksman+female-bow-defend.png" "units/elves-wood/marksman+female-bow.png" {SOUND_LIST:ELF_FEMALE_HIT} ranged}
|
||||
# [death]
|
||||
# [frame]
|
||||
# image="units/elves-wood/marksman-die1.png"
|
||||
# [/frame]
|
||||
# [frame]
|
||||
# image="units/elves-wood/marksman-die2.png"
|
||||
# [/frame]
|
||||
# [frame]
|
||||
# image="units/elves-wood/marksman-die3.png"
|
||||
# [/frame]
|
||||
# [frame]
|
||||
# image="units/elves-wood/marksman-die4.png"
|
||||
# [/frame]
|
||||
# [/death]
|
||||
[death]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-die-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-die-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-die-3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman-die-4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman-die-5.png"
|
||||
[/frame]
|
||||
[/death]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
|
@ -210,29 +218,16 @@ Special Notes:"+{SPECIAL_NOTES_MARKSMAN}
|
|||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/elves-wood/marksman+female-bow-attack2.png"
|
||||
[/frame]
|
||||
|
|
|
@ -185,35 +185,46 @@ Special Notes:"+{SPECIAL_NOTES_AMBUSH}
|
|||
# [/frame]
|
||||
# [/death]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-sword.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-sword-1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-sword-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-sword-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-sword-3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-sword.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[/attack]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/elves-wood/ranger+female-bow-attack2.png"
|
||||
[/frame]
|
||||
|
|
|
@ -221,29 +221,6 @@ Special Notes:"+{SPECIAL_NOTES_MARKSMAN}
|
|||
image="units/elves-wood/sharpshooter+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/elves-wood/sharpshooter+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/sharpshooter+female-bow-attack1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/sharpshooter+female-bow-attack2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/sharpshooter+female-bow-attack3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/sharpshooter+female-bow-attack4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/sharpshooter+female-bow.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/elves-wood/sharpshooter+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[/attack]
|
||||
[/female]
|
||||
[/unit]
|
||||
|
|
|
@ -184,7 +184,6 @@ Special Notes:"+{SPECIAL_NOTES_SLOW}+{SPECIAL_NOTES_CURES}
|
|||
halo=halo/elven/nature-halo5.png
|
||||
halo_x,halo_y=0,-12
|
||||
[/frame]
|
||||
|
||||
[if]
|
||||
hits=yes
|
||||
[frame]
|
||||
|
@ -204,12 +203,11 @@ Special Notes:"+{SPECIAL_NOTES_SLOW}+{SPECIAL_NOTES_CURES}
|
|||
end=0
|
||||
image="units/elves-wood/shyde-ftouch-attack3.png"
|
||||
sound=magic-thorns-miss-1.ogg,magic-thorns-miss-2.ogg
|
||||
|
||||
|
||||
halo=halo/elven/nature-halo6.png
|
||||
halo_x,halo_y=0,-12
|
||||
[/frame]
|
||||
[/else]
|
||||
|
||||
[frame]
|
||||
begin=-0
|
||||
end=75
|
||||
|
|
|
@ -156,7 +156,7 @@ Special Notes:"+{SPECIAL_NOTES_SLOW}
|
|||
end=-375
|
||||
image="units/elves-wood/sylph-magic.png"
|
||||
sound=magic-faeriefire-miss.ogg
|
||||
|
||||
|
||||
halo=halo/elven/faerie-fire-halo1.png
|
||||
halo_x,halo_y=0,-28
|
||||
[/frame]
|
||||
|
|
|
@ -148,6 +148,7 @@ Special Notes:"+{SPECIAL_NOTES_POISON}
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -276,6 +276,7 @@ Some speculate that the existence of these creatures is the beginning of a failu
|
|||
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=150
|
||||
|
|
|
@ -79,6 +79,7 @@ Wolves, likely, could never support the weight of a man in plate, but a goblin i
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -144,6 +144,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -169,6 +169,7 @@ Special Notes:"+{SPECIAL_NOTES_SKIRMISHER}
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -258,6 +258,7 @@ Special Notes:"+{SPECIAL_NOTES_FIRSTSTRIKE}
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -107,6 +107,7 @@ Special Notes:"+{SPECIAL_NOTES_LEADERSHIP}
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -118,6 +118,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=1000
|
||||
|
|
|
@ -111,6 +111,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -24,29 +24,29 @@
|
|||
damage=18
|
||||
number=2
|
||||
[animation]
|
||||
[frame]
|
||||
begin=-260
|
||||
end=-100
|
||||
image="units/human-loyalists/shocktrooper-attack-1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-100
|
||||
end=100
|
||||
image="units/human-loyalists/shocktrooper-attack-2.png"
|
||||
sound=mace.wav
|
||||
begin=-260
|
||||
end=-100
|
||||
image="units/human-loyalists/shocktrooper-attack-1.png"
|
||||
sound=flail.ogg
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-100
|
||||
end=100
|
||||
image="units/human-loyalists/shocktrooper-attack-2.png"
|
||||
sound={SOUND_LIST:MISS}
|
||||
begin=-260
|
||||
end=-100
|
||||
image="units/human-loyalists/shocktrooper-attack-1.png"
|
||||
sound=flail-miss.ogg
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
begin=-100
|
||||
end=100
|
||||
image="units/human-loyalists/shocktrooper-attack-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
begin=100
|
||||
end=200
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -184,26 +184,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}
|
|||
[frame]
|
||||
image="units/human-magi/mage+female-attack-staff-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-staff-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-magic1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-staff-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-staff-2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-staff-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-staff-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-magic1.png"
|
||||
[/frame]
|
||||
|
@ -232,9 +222,6 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}
|
|||
image="units/human-magi/mage+female-attack-magic2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-magic2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/mage+female-attack-magic1.png"
|
||||
[/frame]
|
||||
|
|
|
@ -145,26 +145,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}
|
|||
[frame]
|
||||
image="units/human-magi/arch-mage+female-staff-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female-defend.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female-staff-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/arch-mage+female-defend.png"
|
||||
[/frame]
|
||||
|
|
|
@ -126,26 +126,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}
|
|||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/great-mage+female-staff-1.png"
|
||||
[/frame]
|
||||
|
|
|
@ -161,26 +161,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}
|
|||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/red-mage+female-attack-staff1.png"
|
||||
[/frame]
|
||||
|
|
|
@ -113,9 +113,9 @@ Special Notes: Silver Magi are well-attuned to their magical natures and are hig
|
|||
[else]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-250
|
||||
end=-200
|
||||
image="units/human-magi/silver-mage.png"
|
||||
begin=-100
|
||||
end=100
|
||||
image="units/human-magi/silver-mage-attack-melee.png"
|
||||
sound={SOUND_LIST:MISS}
|
||||
[/frame]
|
||||
[/else]
|
||||
|
@ -212,23 +212,16 @@ Special Notes: Silver Magi are well-attuned to their magical natures and are hig
|
|||
[/teleport_anim]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-attack-melee.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-teleport1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-attack-melee.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-attack-magic1.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-attack-melee.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-attack-melee.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-attack-melee.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/silver-mage+female-teleport1.png"
|
||||
[/frame]
|
||||
|
|
|
@ -240,32 +240,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}+{SPECIAL_NOTES_HOLY}+{SPECIAL_NOTES_CURE
|
|||
[frame]
|
||||
image="units/human-magi/white-mage-melee-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-5.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-6.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-3.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-3.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-3.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage-melee-4.png"
|
||||
[/frame]
|
||||
|
@ -279,20 +263,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}+{SPECIAL_NOTES_HOLY}+{SPECIAL_NOTES_CURE
|
|||
[/attack]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage+female-magic1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage+female-magic3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage+female-magic5.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage+female-magic1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage+female-magic1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage+female-magic1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/white-mage+female-magic3.png"
|
||||
[/frame]
|
||||
|
|
|
@ -193,26 +193,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}+{SPECIAL_NOTES_HOLY}+{SPECIAL_NOTES_CURE
|
|||
[frame]
|
||||
image="units/human-magi/white-cleric+female-defend.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-attack-melee.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-defend.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-defend.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-attack-melee.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-attack-melee.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-attack-melee.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-defend.png"
|
||||
[/frame]
|
||||
|
@ -226,20 +216,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}+{SPECIAL_NOTES_HOLY}+{SPECIAL_NOTES_CURE
|
|||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic5.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic3.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic3.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic3.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-magi/white-cleric+female-magic5.png"
|
||||
[/frame]
|
||||
|
|
|
@ -104,20 +104,16 @@
|
|||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-3.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-melee-3.png"
|
||||
[/frame]
|
||||
|
@ -125,17 +121,16 @@
|
|||
[/attack]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-attack1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-attack2.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-attack1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-attack1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-attack1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/outlaw+female-attack2.png"
|
||||
[/frame]
|
||||
|
@ -143,6 +138,7 @@
|
|||
[/attack]
|
||||
[/female]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -123,22 +123,22 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}+{SPECIAL_NOTES_POISON}+{SPECIAL_NOTES_S
|
|||
image_diagonal="projectiles/dagger-ne.png"
|
||||
[/missile_frame]
|
||||
[if]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-350
|
||||
end=-100
|
||||
image="units/human-outlaws/assassin-throwknife1.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-350
|
||||
end=-100
|
||||
image="units/human-outlaws/assassin-throwknife1.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-350
|
||||
end=-100
|
||||
image="units/human-outlaws/assassin-throwknife1.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-350
|
||||
end=-100
|
||||
image="units/human-outlaws/assassin-throwknife1.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
begin=-100
|
||||
|
@ -166,23 +166,16 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}+{SPECIAL_NOTES_POISON}+{SPECIAL_NOTES_S
|
|||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-1-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-1-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-1-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-1-2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-1-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-1-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female.png"
|
||||
[/frame]
|
||||
|
@ -194,23 +187,16 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}+{SPECIAL_NOTES_POISON}+{SPECIAL_NOTES_S
|
|||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-2-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-2-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-2-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-2-2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-2-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-melee-2-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female.png"
|
||||
[/frame]
|
||||
|
@ -218,20 +204,16 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}+{SPECIAL_NOTES_POISON}+{SPECIAL_NOTES_S
|
|||
[/attack]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-throwknife1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-throwknife2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-throwknife1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-throwknife1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-throwknife1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/assassin+female-throwknife2.png"
|
||||
[/frame]
|
||||
|
|
|
@ -117,26 +117,16 @@
|
|||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-4.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-2.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-2.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-melee-3.png"
|
||||
[/frame]
|
||||
|
@ -147,17 +137,16 @@
|
|||
[/attack]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-attack1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-attack2.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-attack1.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-attack1.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-attack1.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/footpad+female-attack2.png"
|
||||
[/frame]
|
||||
|
@ -165,6 +154,7 @@
|
|||
[/attack]
|
||||
[/female]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
start_time=0
|
||||
[frame]
|
||||
duration=100
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
cost=14
|
||||
usage=archer
|
||||
unit_description= _ "Though not trained as warriors, the skills possessed by a hunter, especially those of archery, are useful in battle. Turning these skills against their fellow man can happen for any number of reasons, be they mercenary or vigilante in nature. Any group of bandits will need a few poachers in their employ, culling the night's meal from surrounding farmland, and often lending a hand in any serious fight.
|
||||
|
||||
Because of their experience, these hunters are unusually capable at night, and in forests and swamps."
|
||||
|
||||
Because of their experience, these hunters are unusually capable at night, and in forests and swamps."
|
||||
#Poachers are better than normal units at woods and swamps
|
||||
die_sound={SOUND_LIST:HUMAN_DIE}
|
||||
{DEFENSE_ANIM_RANGE "units/human-outlaws/poacher-defend.png" "units/human-outlaws/poacher.png" {SOUND_LIST:HUMAN_HIT} melee }
|
||||
|
|
|
@ -79,22 +79,22 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}+{SPECIAL_NOTES_SKIRMISHER}
|
|||
image_diagonal="projectiles/dagger-ne.png"
|
||||
[/missile_frame]
|
||||
[if]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/human-outlaws/rogue-ranged.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/human-outlaws/rogue-ranged.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/human-outlaws/rogue-ranged.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/human-outlaws/rogue-ranged.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
begin=-100
|
||||
|
@ -114,20 +114,16 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}+{SPECIAL_NOTES_SKIRMISHER}
|
|||
[frame]
|
||||
image="units/human-outlaws/rogue+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-attack.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-attack.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-attack.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-attack.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female.png"
|
||||
[/frame]
|
||||
|
@ -135,11 +131,16 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}+{SPECIAL_NOTES_SKIRMISHER}
|
|||
[/attack]
|
||||
[attack]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-ranged.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-ranged.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-ranged.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/rogue+female-ranged.png"
|
||||
[/frame]
|
||||
|
|
|
@ -267,20 +267,16 @@ Special Notes:"+{SPECIAL_NOTES_BACKSTAB}
|
|||
[frame]
|
||||
image="units/human-outlaws/thief+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/thief+female-attack.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/thief+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/human-outlaws/thief+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/human-outlaws/thief+female-attack.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/human-outlaws/thief+female-attack.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/human-outlaws/thief+female-attack.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/human-outlaws/thief+female.png"
|
||||
[/frame]
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
cost=27
|
||||
usage=archer
|
||||
unit_description= _ "Master woodsmen are useful allies to any army, and indispensable for any sizable group of bandits. They can track both man and beast, notice things most others would overlook, and are often the only ones who can find food for the table, be it animal or vegetable.
|
||||
|
||||
Their skill at hunting is very useful in combat, and also leaves them unusually competent at night, and in forests and swamps."
|
||||
|
||||
Their skill at hunting is very useful in combat, and also leaves them unusually competent at night, and in forests and swamps."
|
||||
#Trappers are better than normal units at woods and swamps
|
||||
die_sound={SOUND_LIST:HUMAN_DIE}
|
||||
{DEFENSE_ANIM_RANGE "units/human-outlaws/trapper-defend.png" "units/human-outlaws/trapper.png" {SOUND_LIST:HUMAN_HIT} melee }
|
||||
|
|
|
@ -102,6 +102,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -68,20 +68,16 @@
|
|||
[frame]
|
||||
image="units/nagas/fighter+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/fighter+female-attack.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/fighter+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/nagas/fighter+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/fighter+female-attack.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/nagas/fighter+female-attack.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/nagas/fighter+female-attack.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/nagas/fighter+female.png"
|
||||
[/frame]
|
||||
|
@ -89,6 +85,7 @@
|
|||
[/attack]
|
||||
[/female]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -73,20 +73,16 @@
|
|||
[frame]
|
||||
image="units/nagas/myrmidon+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/myrmidon+female-attack.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/myrmidon+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/nagas/myrmidon+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/myrmidon+female-attack.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/nagas/myrmidon+female-attack.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/nagas/myrmidon+female-attack.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/nagas/myrmidon+female.png"
|
||||
[/frame]
|
||||
|
|
|
@ -71,20 +71,16 @@
|
|||
[frame]
|
||||
image="units/nagas/warrior+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/warrior+female-attack.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/warrior+female.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/nagas/warrior+female.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/nagas/warrior+female-attack.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/nagas/warrior+female-attack.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/nagas/warrior+female-attack.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/nagas/warrior+female.png"
|
||||
[/frame]
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
[/attack]
|
||||
{DEFENSE_ANIM "units/ogres/ogre-defend.png" "units/ogres/ogre.png" ogre-hit.wav }
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -292,6 +292,7 @@
|
|||
[/animation]
|
||||
[/attack]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
|
@ -76,22 +76,22 @@ Special Notes:"+{SPECIAL_NOTES_POISON}
|
|||
image_diagonal="projectiles/dagger-ne.png"
|
||||
[/missile_frame]
|
||||
[if]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/orcs/assassin-ranged1.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/orcs/assassin-ranged1.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/orcs/assassin-ranged1.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-200
|
||||
end=-100
|
||||
image="units/orcs/assassin-ranged1.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
begin=-100
|
||||
|
|
|
@ -129,22 +129,22 @@ Special Notes:"+{SPECIAL_NOTES_POISON}
|
|||
image_diagonal="projectiles/dagger-ne.png"
|
||||
[/missile_frame]
|
||||
[if]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-150
|
||||
end=-100
|
||||
image="units/orcs/slayer-ranged1.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-150
|
||||
end=-100
|
||||
image="units/orcs/slayer-ranged1.png"
|
||||
sound=throwing-knife.ogg
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-150
|
||||
end=-100
|
||||
image="units/orcs/slayer-ranged1.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-150
|
||||
end=-100
|
||||
image="units/orcs/slayer-ranged1.png"
|
||||
sound=throwing-knife-miss.ogg
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
begin=-100
|
||||
|
|
|
@ -26,32 +26,42 @@
|
|||
number=3
|
||||
[animation]
|
||||
[frame]
|
||||
begin=-200
|
||||
begin=-225
|
||||
end=-150
|
||||
image="units/orcs/warrior.png"
|
||||
image="units/orcs/warrior-attack-w1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
begin=-150
|
||||
end=-50
|
||||
image="units/orcs/warrior-attack-w2.png"
|
||||
[/frame]
|
||||
[if]
|
||||
hits=yes
|
||||
hits=no
|
||||
[frame]
|
||||
begin=-150
|
||||
end=100
|
||||
image="units/orcs/warrior-melee1.png"
|
||||
sound={SOUND_LIST:SWORD_SWISH}
|
||||
begin=-50
|
||||
end=50
|
||||
image="units/orcs/warrior-attack-w3.png"
|
||||
sound={SOUND_LIST:MISS}
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=no
|
||||
hits=yes
|
||||
[frame]
|
||||
begin=-150
|
||||
end=100
|
||||
image="units/orcs/warrior-melee1.png"
|
||||
sound={SOUND_LIST:MISS}
|
||||
begin=-50
|
||||
end=50
|
||||
image="units/orcs/warrior-attack-w3.png"
|
||||
sound={SOUND_LIST:SWORD_SWISH}
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
begin=100
|
||||
begin=50
|
||||
end=150
|
||||
image="units/orcs/warrior-attack-w4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
begin=150
|
||||
end=200
|
||||
image="units/orcs/warrior.png"
|
||||
image="units/orcs/warrior-attack-w5.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[/attack]
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
cost=46
|
||||
usage=scout
|
||||
unit_description= _ "Saurian warriors are generally weaker in frame than their elven, or human counterparts. This is of course a relative term, and they can still become considerably powerful, whilst losing none of their natural mobility. This is very dangerous in combat, as a careless enemy can soon find their support troops flanked by these creatures.
|
||||
|
||||
|
||||
Special Notes:"+{SPECIAL_NOTES_SKIRMISHER}
|
||||
die_sound=hiss-die.wav
|
||||
{DEFENSE_ANIM "units/saurians/flanker-defend.png" "units/saurians/flanker.png" hiss-hit.wav }
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
undead_variation=saurian
|
||||
cost=27
|
||||
usage=archer
|
||||
unit_description= _ "Certain saurians are seen, dressed in considerable regalia, and covered head to toe in horrifing, esoteric shapes and markings, both with paint and tattoo. Some suspect them to be visionaries, or oracles amongst their ilk. But whatever 'societal' function they may have, they are undeniably powerful in the strange magics their kind possess, and are a thing to be wary of if ever seen.
|
||||
unit_description= _ "Certain saurians are seen, dressed in considerable regalia, and covered head to toe in horrifing, esoteric shapes and markings, both with paint and tattoo. Some suspect them to be visionaries, or oracles amongst their ilk. But whatever 'societal' function they may have, they are undeniably powerful in the strange magics their kind possess, and are a thing to be wary of if ever seen.
|
||||
|
||||
Special Notes:"+{SPECIAL_NOTES_MAGICAL}+{SPECIAL_NOTES_HEALS}
|
||||
die_sound=hiss-die.wav
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
undead_variation=saurian
|
||||
cost=15
|
||||
usage=scout
|
||||
unit_description= _ "Saurians are very small of frame, and though they are somewhat frail because of this, they are very, very agile. In combat, their size allows them to dart past defenses that would hold any grown man at bay, making them a tricky foe to deal with.
|
||||
|
||||
Spears are their preferred weapon, as their powerful hind legs can drive a spear with enough force to do considerable damage, either in hand or thrown.
|
||||
unit_description= _ "Saurians are very small of frame, and though they are somewhat frail because of this, they are very, very agile. In combat, their size allows them to dart past defenses that would hold any grown man at bay, making them a tricky foe to deal with.
|
||||
|
||||
Spears are their preferred weapon, as their powerful hind legs can drive a spear with enough force to do considerable damage, either in hand or thrown.
|
||||
|
||||
Special Notes:"+{SPECIAL_NOTES_SKIRMISHER}
|
||||
die_sound=hiss-die.wav
|
||||
|
|
|
@ -28,7 +28,6 @@ Special Notes:"+{SPECIAL_NOTES_REGENERATES}
|
|||
range=melee
|
||||
damage=14
|
||||
number=2
|
||||
|
||||
[animation]
|
||||
[frame]
|
||||
begin=-300
|
||||
|
|
|
@ -149,32 +149,16 @@ Special Notes:"+{SPECIAL_NOTES_MAGICAL}
|
|||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-5.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-6.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-7.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-8.png"
|
||||
[/frame]
|
||||
[/animation]
|
||||
[animation]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-1.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-2.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-3.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-4.png"
|
||||
[/frame]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-5.png"
|
||||
[/frame]
|
||||
[if]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-6.png"
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-6.png"
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
image="units/undead-necromancers/adept+female-ranged-6.png"
|
||||
[/frame]
|
||||
|
|
|
@ -177,6 +177,7 @@ Special Notes:"+{SPECIAL_NOTES_SUBMERGE}
|
|||
[/frame]
|
||||
[/death]
|
||||
[idle_anim]
|
||||
{STANDARD_IDLE_FILTER}
|
||||
[frame]
|
||||
begin=0
|
||||
end=100
|
||||
|
|
363
data/utils/animation-utils.cfg
Normal file
|
@ -0,0 +1,363 @@
|
|||
#define DEFENSE_ANIM FRAME BASEFRAME HITSOUND
|
||||
[defend]
|
||||
start_time=-126
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[frame]
|
||||
duration=100
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[if]
|
||||
hits=hit
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
sound={HITSOUND}
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=miss,kill
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
|
||||
#define DEFENSE_ANIM_FILTERED FRAME BASEFRAME HITSOUND FILTER
|
||||
[defend]
|
||||
start_time=-126
|
||||
{FILTER}
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[frame]
|
||||
duration=100
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[if]
|
||||
hits=hit
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
sound={HITSOUND}
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=miss,kill
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
|
||||
#define DEFENSE_ANIM_RANGE FRAME BASEFRAME HITSOUND RANGE
|
||||
[defend]
|
||||
start_time=-126
|
||||
[attack_filter]
|
||||
range={RANGE}
|
||||
[/attack_filter]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[frame]
|
||||
duration=100
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[if]
|
||||
hits=hit
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
sound={HITSOUND}
|
||||
[/frame]
|
||||
[/if]
|
||||
[else]
|
||||
hits=miss,kill
|
||||
[frame]
|
||||
duration=150
|
||||
image={FRAME}
|
||||
[/frame]
|
||||
[/else]
|
||||
[frame]
|
||||
duration=1
|
||||
image={BASEFRAME}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
|
||||
# These are included for backwards-compatibility mainly; they aren't and
|
||||
# shouldn't be used for mainline units.
|
||||
|
||||
#define IMAGE_DEFENSIVE IMAGE_FILE
|
||||
[defend]
|
||||
[frame]
|
||||
begin=-150
|
||||
end=150
|
||||
image={IMAGE_FILE}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
#define IMAGE_DEFENSIVE_RANGE IMAGE_FILE
|
||||
[defend]
|
||||
range=ranged
|
||||
[frame]
|
||||
begin=-150
|
||||
end=150
|
||||
image={IMAGE_FILE}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
#define IMAGE_DEFENSIVE_SHORT IMAGE_FILE
|
||||
[defend]
|
||||
range=melee
|
||||
[frame]
|
||||
begin=-150
|
||||
end=150
|
||||
image={IMAGE_FILE}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_WAIL
|
||||
[if]
|
||||
direction=n,ne,nw
|
||||
|
||||
[missile_frame]
|
||||
begin=-300
|
||||
end=-230
|
||||
image="projectiles/wailprojectile-n-1.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-1.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-230
|
||||
end=-160
|
||||
image="projectiles/wailprojectile-n-2.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-2.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-160
|
||||
end=0
|
||||
image="projectiles/wailprojectile-n-3.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-3.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=0
|
||||
end=40
|
||||
image="projectiles/wailprojectile-n-4.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-4.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=40
|
||||
end=80
|
||||
image="projectiles/wailprojectile-n-5.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-5.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=80
|
||||
end=120
|
||||
image="projectiles/wailprojectile-n-6.png"
|
||||
image_diagonal="projectiles/wailprojectile-ne-6.png"
|
||||
[/missile_frame]
|
||||
[/if]
|
||||
[else]
|
||||
direction=s,se,sw
|
||||
### The price of asymmetrical projectiles - here, we use a conditional because the game automatically flips the images for the south frame. We have a separate set of images for the south part, which are not only flipped vertically, but also have their angle corrected for the sw direction.
|
||||
|
||||
[missile_frame]
|
||||
begin=-300
|
||||
end=-230
|
||||
image="projectiles/wailprojectile-s-1.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-1.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-230
|
||||
end=-160
|
||||
image="projectiles/wailprojectile-s-2.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-2.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-160
|
||||
end=0
|
||||
image="projectiles/wailprojectile-s-3.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-3.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=0
|
||||
end=40
|
||||
image="projectiles/wailprojectile-s-4.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-4.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=40
|
||||
end=80
|
||||
image="projectiles/wailprojectile-s-5.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-5.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=80
|
||||
end=120
|
||||
image="projectiles/wailprojectile-s-6.png"
|
||||
image_diagonal="projectiles/wailprojectile-se-6.png"
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_FIRE_BREATH N_OFFSET S_OFFSET N_DIAGONAL_OFFSET S_DIAGONAL_OFFSET
|
||||
[if]
|
||||
direction=n
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-n-1.png:80,projectiles/fire-breath-n-2.png:80,projectiles/fire-breath-n-3.png:80,projectiles/fire-breath-n-4.png:80,projectiles/fire-breath-n-5.png:80
|
||||
halo_x,halo_y={N_OFFSET}
|
||||
[/missile_frame]
|
||||
[/if]
|
||||
[else]
|
||||
direction=s
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-s-1.png:80,projectiles/fire-breath-s-2.png:80,projectiles/fire-breath-s-3.png:80,projectiles/fire-breath-s-4.png:80,projectiles/fire-breath-s-5.png:80
|
||||
halo_x,halo_y={S_OFFSET}
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
[else]
|
||||
direction=ne,nw
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-ne-1.png:80,projectiles/fire-breath-ne-2.png:80,projectiles/fire-breath-ne-3.png:80,projectiles/fire-breath-ne-4.png:80,projectiles/fire-breath-ne-5.png:80
|
||||
halo_x,halo_y={N_DIAGONAL_OFFSET}
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
[else]
|
||||
direction=se,sw
|
||||
|
||||
[missile_frame]
|
||||
begin=-400
|
||||
end=100
|
||||
halo=projectiles/fire-breath-se-1.png:80,projectiles/fire-breath-se-2.png:80,projectiles/fire-breath-se-3.png:80,projectiles/fire-breath-se-4.png:80,projectiles/fire-breath-se-5.png:80
|
||||
halo_x,halo_y={S_DIAGONAL_OFFSET}
|
||||
[/missile_frame]
|
||||
[/else]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_FAERIE_FIRE
|
||||
[missile_frame]
|
||||
begin=-500
|
||||
end=-350
|
||||
image="projectiles/icemissile-n-1.png"
|
||||
image_diagonal="projectiles/icemissile-ne-1.png"
|
||||
halo=halo/elven/ice-halo1.png:100,halo/elven/ice-halo2.png:100,halo/elven/ice-halo3.png:25
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-350
|
||||
end=-200
|
||||
image="projectiles/icemissile-n-2.png"
|
||||
image_diagonal="projectiles/icemissile-ne-2.png"
|
||||
halo=halo/elven/ice-halo3.png:75,halo/elven/ice-halo4.png:75
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-200
|
||||
end=-50
|
||||
image="projectiles/icemissile-n-3.png"
|
||||
image_diagonal="projectiles/icemissile-ne-3.png"
|
||||
halo=halo/elven/ice-halo5.png:100,halo/elven/ice-halo1.png:100,halo/elven/ice-halo2.png:50
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-50
|
||||
end=0
|
||||
image="projectiles/icemissile-n-4.png"
|
||||
image_diagonal="projectiles/icemissile-ne-4.png"
|
||||
halo=halo/elven/ice-halo6.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=25
|
||||
end=75
|
||||
image="projectiles/icemissile-n-5.png"
|
||||
image_diagonal="projectiles/icemissile-ne-5.png"
|
||||
halo=halo/elven/ice-halo7.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=75
|
||||
end=125
|
||||
image="projectiles/icemissile-n-6.png"
|
||||
image_diagonal="projectiles/icemissile-ne-6.png"
|
||||
halo=halo/elven/ice-halo8.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=125
|
||||
end=175
|
||||
image="projectiles/icemissile-n-7.png"
|
||||
image_diagonal="projectiles/icemissile-ne-7.png"
|
||||
halo=halo/elven/ice-halo9.png
|
||||
halo_x,halo_y=0,0
|
||||
[/missile_frame]
|
||||
#enddef
|
||||
|
||||
#define MISSILE_FRAME_FIREBALL
|
||||
[missile_frame]
|
||||
begin=-220
|
||||
end=-100
|
||||
image="projectiles/fireball-n-2.png"
|
||||
image_diagonal="projectiles/fireball-nw-2.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=-100
|
||||
end=25
|
||||
image="projectiles/fireball-n.png"
|
||||
image_diagonal="projectiles/fireball-nw.png"
|
||||
[/missile_frame]
|
||||
[missile_frame]
|
||||
begin=25
|
||||
end=80
|
||||
image="projectiles/fireball-n-2.png"
|
||||
image_diagonal="projectiles/fireball-nw-2.png"
|
||||
[/missile_frame]
|
||||
#enddef
|
||||
|
||||
|
||||
#this macro is called on top of every idle animation, to provide a standard set of
|
||||
#conditions to play the idle animation
|
||||
|
||||
#define STANDARD_IDLE_FILTER
|
||||
|
||||
#poisoned units hould have no idle animation
|
||||
[unit_filter]
|
||||
[not]
|
||||
[wml_filter]
|
||||
[status]
|
||||
poisoned="yes"
|
||||
[/status]
|
||||
[/wml_filter]
|
||||
[/not]
|
||||
[/unit_filter]
|
||||
#enddef
|
314
data/utils/event-utils.cfg
Normal file
|
@ -0,0 +1,314 @@
|
|||
# This file contains shortcuts for common WML events (such as prestart, side
|
||||
# turn, and such), which can be used to write events faster and in less space.
|
||||
#
|
||||
# It is recommended that you only use these if you're confident you could write
|
||||
# the expanded form as well; these are mostly intended as shortcuts for
|
||||
# experienced WML authors.
|
||||
|
||||
|
||||
# Creates a generic event, only intended to be used when no other event can be
|
||||
# used.
|
||||
|
||||
#define ON_EVENT NAME ACTION
|
||||
[event]
|
||||
name={NAME}
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
|
||||
# Creates an event that triggers when the scenario starts but before the user
|
||||
# gets any visible output.
|
||||
#
|
||||
# For example, you can make side 2 start the scenario with ownership of the
|
||||
# village at 13,15:
|
||||
#
|
||||
# {ON_PRESTART (
|
||||
# [capture_village]
|
||||
# side=2
|
||||
# x,y=13,15
|
||||
# [/capture_village]
|
||||
# )}
|
||||
|
||||
#define ON_PRESTART ACTION
|
||||
[event]
|
||||
name=prestart
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
|
||||
# Creates an event that triggers when the scenario starts, after the map is
|
||||
# displayed but before the player can act.
|
||||
#
|
||||
# For example you could display some dialogue when the scenario starts:
|
||||
#
|
||||
# {ON_START (
|
||||
# [message]
|
||||
# speaker=Konrad
|
||||
# message= _ "Hey, I can see some enemies up ahead!"
|
||||
# [/message]
|
||||
#
|
||||
# [message]
|
||||
# speaker=Delfador
|
||||
# message= _ "Yes, so it would seem. Charge!"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_START ACTION
|
||||
[event]
|
||||
name=start
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
|
||||
# Creates an event that triggers at the end of every turn.
|
||||
#
|
||||
# For example, you could give a player some gold at the end every turn:
|
||||
#
|
||||
# {ON_NEXT_TURN (
|
||||
# [gold]
|
||||
# amount=35
|
||||
# side=1
|
||||
# [/gold]
|
||||
# )}
|
||||
|
||||
#define ON_NEXT_TURN ACTION
|
||||
[event]
|
||||
name=new turn
|
||||
first_time_only=no
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers at the end of the current turn.
|
||||
# For example you could give a player some gold before his/hers next turn.:
|
||||
# {ON_NEXT_TURN (
|
||||
# [gold]
|
||||
# amount=100
|
||||
# side=1
|
||||
# [/gold]
|
||||
# )}
|
||||
|
||||
#define ON_NEXT_TURN_ONCE ACTION
|
||||
[event]
|
||||
name=new turn
|
||||
first_time_only=yes
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers at the start of every players turn
|
||||
# For example you could set each players gold to a fixed amount every turn.
|
||||
# {ON_SIDETURN (
|
||||
# [modify_side]
|
||||
# side=3
|
||||
# gold=0
|
||||
# [/modify_side]
|
||||
# )}
|
||||
|
||||
#define ON_SIDETURN ACTION
|
||||
[event]
|
||||
name=side turn
|
||||
first_time_only=no
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers at the start of turn TURN
|
||||
# For example you can create a Wose belonging to player 1 at turn 3:
|
||||
# {ON_TURN 3 (
|
||||
# [unit]
|
||||
# side=1
|
||||
# type=wose
|
||||
# x,y=12,4
|
||||
# [/unit]
|
||||
# )}
|
||||
|
||||
#define ON_TURN TURN ACTION
|
||||
[event]
|
||||
name=turn {TURN}
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers when the last turn ends.
|
||||
# For example you could display a message saying they suck:
|
||||
# {ON_LAST_TURN (
|
||||
# [message]
|
||||
# speaker=narrator
|
||||
# message="They suck!"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_LAST_TURN ACTION
|
||||
[event]
|
||||
name=time over
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers when a player wins the game, before the game ends.
|
||||
# For example you could congratulate the player:
|
||||
# {ON_VICTORY (
|
||||
# [message]
|
||||
# speaker=narrator
|
||||
# message="Congratulations!"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_VICTORY ACTION
|
||||
[event]
|
||||
name=victory
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers when a player wins the game, before the game ends.
|
||||
# For example you could suggest an easier difficulty the player:
|
||||
# {ON_DEFEAT (
|
||||
# [message]
|
||||
# speaker=narrator
|
||||
# message="Aww.. you lost. Try again with 800g and +40g income?"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_DEFEAT ACTION
|
||||
[event]
|
||||
name=defeat
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers anytime a unit steps on a given tile.
|
||||
# The filter can be used to only affect special units, or units of a given player.
|
||||
# For example we could make a tree where the first players leader can read a note, but noone else:
|
||||
# {ON_TILE 5 7 (
|
||||
# side=1
|
||||
# canrecruit=1
|
||||
# ) (
|
||||
# [message]
|
||||
# speaker=narrator
|
||||
# message="This is a note."
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_TILE X Y FILTER ACTION
|
||||
[event]
|
||||
name=moveto
|
||||
first_time_only=no
|
||||
[filter]
|
||||
x={X}
|
||||
y={Y}
|
||||
{FILTER}
|
||||
[/filter]
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers the first time a unit steps on a given tile.
|
||||
# The filter can be used to only affect special units, or units of a given player.
|
||||
# For example we could make a text-message that is only readable once:
|
||||
# {ON_TILE_ONCE 5 7 () (
|
||||
# [message]
|
||||
# speaker=narrator
|
||||
# message="This is a note."
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_TILE_ONCE X Y FILTER ACTION
|
||||
[event]
|
||||
name=moveto
|
||||
first_time_only=yes
|
||||
[filter]
|
||||
x={X}
|
||||
y={Y}
|
||||
{FILTER}
|
||||
[/filter]
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers anytime a unit matching FILTER dies.
|
||||
# For example we can make all units scream in pain upon death:
|
||||
# {ON_DEATH () (
|
||||
# [message]
|
||||
# speaker=unit
|
||||
# message="AAaaaaAAaaAAaarrrghh!!!"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_DEATH FILTER ACTION
|
||||
[event]
|
||||
name=die
|
||||
first_time_only=no
|
||||
[filter]
|
||||
{FILTER}
|
||||
[/filter]
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers the first time a unit matching FILTER dies.
|
||||
# For example we can make only player 3s leader units scream in pain upon death:
|
||||
# {ON_DEATH (
|
||||
# side=3
|
||||
# canrecruit=1
|
||||
# ) (
|
||||
# [message]
|
||||
# speaker=unit
|
||||
# message="AAaaaaAAaaAAaarrrghh!!!"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_DEATH_ONCE FILTER ACTION
|
||||
[event]
|
||||
name=die
|
||||
first_time_only=yes
|
||||
[filter]
|
||||
{FILTER}
|
||||
[/filter]
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers before any unit matching FILTER advances to a new class.
|
||||
# For example we could make it smile:
|
||||
# {ON_ADVANCEMENT () (
|
||||
# [message]
|
||||
# speaker=unit
|
||||
# message=":D"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_ADVANCEMENT FILTER ACTION
|
||||
[event]
|
||||
name=advance
|
||||
first_time_only=no
|
||||
[filter]
|
||||
{FILTER}
|
||||
[/filter]
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
# Creates an event that triggers after any unit matching FILTER advanced to a new class.
|
||||
# For example we could make it claim to be the strongest one alive:
|
||||
# {ON_POSTADVANCEMENT () (
|
||||
# [message]
|
||||
# speaker=unit
|
||||
# message="I'm the strongest one alive!"
|
||||
# [/message]
|
||||
# )}
|
||||
|
||||
#define ON_POSTADVANCEMENT FILTER ACTION
|
||||
[event]
|
||||
name=post_advance
|
||||
first_time_only=no
|
||||
[filter]
|
||||
{FILTER}
|
||||
[/filter]
|
||||
{ACTION}
|
||||
[/event]
|
||||
#enddef
|
217
data/utils/interface-utils.cfg
Normal file
|
@ -0,0 +1,217 @@
|
|||
# Displays a text message spoken by SPEAKER.
|
||||
# Speaker can be any of: narrator, unit and second_unit
|
||||
# For example, lets have the narrator, which looks like a feary
|
||||
# express some feelings on the undead:
|
||||
# {MESSAGE narrator "units/elves-wood/shyde.png" _ "Faery" _ "Aarr! Them be undeadies! Loooks at them.."}
|
||||
|
||||
#define MESSAGE SPEAKER IMAGE CAPTION TEXT
|
||||
[message]
|
||||
speaker={SPEAKER}
|
||||
message={TEXT}
|
||||
image={IMAGE}
|
||||
caption={CAPTION}
|
||||
[/message]
|
||||
#enddef
|
||||
|
||||
# Changes the currently playing track to the one specified
|
||||
# For example we could switch to underground.ogg:
|
||||
# {MUSIC_PLAY underground}
|
||||
|
||||
#define MUSIC_PLAY SONG
|
||||
[music]
|
||||
name={SONG}.ogg
|
||||
[/music]
|
||||
#enddef
|
||||
|
||||
# Adds the given song to the end of the current playlist.
|
||||
# For example, lets add wesnoth-01 to the end of the playlist:
|
||||
# {MUSIC_APPEND wesnoth-01}
|
||||
|
||||
#define MUSIC_APPEND SONG
|
||||
[music]
|
||||
name={SONG}.ogg
|
||||
append=yes
|
||||
[/music]
|
||||
#enddef
|
||||
|
||||
# Scrolls the screen to the given coordinates.
|
||||
# For example, lets focus on 26,35:
|
||||
# {SCROLL 26 35}
|
||||
|
||||
# Puts a label on the map at x,y
|
||||
# example:
|
||||
# {SET_LABEL 4 7 _ "There be dragons here!"}
|
||||
|
||||
#define SET_LABEL X Y TEXT
|
||||
[label]
|
||||
x={X}
|
||||
y={Y}
|
||||
text={TEXT}
|
||||
[/label]
|
||||
#enddef
|
||||
|
||||
# Removes a label from a given tile
|
||||
# Exameple, remove it from 4,7
|
||||
# {REMOVE_LABEL 4 7}
|
||||
|
||||
#define REMOVE_LABEL X Y
|
||||
[label]
|
||||
x={X}
|
||||
y={Y}
|
||||
text=""
|
||||
[/label]
|
||||
#enddef
|
||||
|
||||
# Sets a label on tile x,y that gets reset every sideturn in case
|
||||
# someone clears it.
|
||||
# Example:
|
||||
# {SET_LABEL_PERSISTANT 4 7 _ "There really will be dragons here!!"}
|
||||
|
||||
#define SET_LABEL_PERSISTANT X Y TEXT
|
||||
{SET_LABEL {X} {Y} ({TEXT}) }
|
||||
{ON_SIDETURN (
|
||||
{SET_LABEL {X} {Y} ({TEXT}) }
|
||||
)}
|
||||
#enddef
|
||||
|
||||
# Places an image at a given tile, shrinking it to fit the tile
|
||||
# For example, lets put a tent on tile 14,5
|
||||
# {SET_IMAGE 14 5 "terrain/tent.png"}
|
||||
|
||||
#define SET_IMAGE X Y IMAGE
|
||||
[item]
|
||||
x,y={X},{Y}
|
||||
image={IMAGE}
|
||||
[/item]
|
||||
#enddef
|
||||
|
||||
# Removes a previously set image from a tile
|
||||
# Example:
|
||||
# {REMOVE_IMAGE 14 5}
|
||||
|
||||
#define REMOVE_IMAGE X Y
|
||||
[removeitem]
|
||||
x,y={X},{Y}
|
||||
[/removeitem]
|
||||
#enddef
|
||||
|
||||
# Shorthand for setting both an image and a label at once.
|
||||
|
||||
#define SET_IMAGE_AND_LABEL X Y IMAGE TEXT
|
||||
{SET_LABEL {X} {Y} ({TEXT}) }
|
||||
{SET_IMAGE {X} {Y} ({IMAGE}) }
|
||||
#enddef
|
||||
|
||||
# Shorthand for setting both a persistant label and image at once.
|
||||
|
||||
#define SET_IMAGE_AND_LABEL_PERSISTANT X Y IMAGE TEXT
|
||||
{SET_LABEL_PERSISTANT {X} {Y} ({TEXT}) }
|
||||
{SET_IMAGE {X} {Y} ({IMAGE}) }
|
||||
#enddef
|
||||
|
||||
# Shorthand for removing both image and label at once
|
||||
|
||||
#define REMOVE_IMAGE_AND_LABEL X Y
|
||||
{REMOVE_IMAGE {X} {Y}}
|
||||
{REMOVE_LABEL {X} {Y}}
|
||||
#enddef
|
||||
|
||||
#define SCROLL X Y
|
||||
[scroll]
|
||||
x={X}
|
||||
y={Y}
|
||||
[/scroll]
|
||||
#enddef
|
||||
|
||||
# Creates an earthquake-effect while performing ACTION
|
||||
# For example we could kill all non-leader units in the earthquake:
|
||||
# {EARTHQUAKE (
|
||||
# [kill]
|
||||
# canrecruit=0
|
||||
# animate=yes
|
||||
# [/kill]
|
||||
# )}
|
||||
|
||||
#define EARTHQUAKE ACTION
|
||||
[sound]
|
||||
name=lightning.wav
|
||||
[/sound]
|
||||
{SCROLL 2 1}
|
||||
{SCROLL -1 -3}
|
||||
{SCROLL -3 1}
|
||||
{ACTION}
|
||||
{SCROLL 1 3}
|
||||
{SCROLL 1 -2}
|
||||
#enddef
|
||||
|
||||
# adjusts the color of the screen by a tint or red, green and blue
|
||||
# for example, lets make it very blueish:
|
||||
# {COLOR_ADJUST 0 0 100}
|
||||
|
||||
#define COLOR_ADJUST RED GREEN BLUE
|
||||
[colour_adjust]
|
||||
red={RED}
|
||||
green={GREEN}
|
||||
blue={BLUE}
|
||||
[/colour_adjust]
|
||||
#enddef
|
||||
|
||||
# Flashes the screen with a given color performing ACTION
|
||||
# These macros come in WHITE, RED, GREEN and BLUE and can
|
||||
# easily be expanded for ORANGE, PURPLE etc.
|
||||
# Example, Flash the screen to scare the player:
|
||||
# {FLASH_GREEN ()}
|
||||
# {FLASH_RED ()}
|
||||
# {FLASH_BLUE ()}
|
||||
# {FLASH_WHITE ()}
|
||||
|
||||
#define FLASH_WHITE ACTION
|
||||
{COLOR_ADJUST 67 67 67}
|
||||
{COLOR_ADJUST 100 100 100}
|
||||
{ACTION}
|
||||
{COLOR_ADJUST 33 33 33}
|
||||
{COLOR_ADJUST 0 0 0}
|
||||
#enddef
|
||||
|
||||
#define FLASH_RED ACTION
|
||||
{COLOR_ADJUST 67 0 0}
|
||||
{COLOR_ADJUST 100 0 0}
|
||||
{ACTION}
|
||||
{COLOR_ADJUST 33 0 0}
|
||||
{COLOR_ADJUST 0 0 0}
|
||||
#enddef
|
||||
|
||||
#define FLASH_GREEN ACTION
|
||||
{COLOR_ADJUST 0 67 0}
|
||||
{COLOR_ADJUST 0 100 0}
|
||||
{ACTION}
|
||||
{COLOR_ADJUST 0 33 0}
|
||||
{COLOR_ADJUST 0 0 0}
|
||||
#enddef
|
||||
|
||||
#define FLASH_BLUE ACTION
|
||||
{COLOR_ADJUST 0 0 67}
|
||||
{COLOR_ADJUST 0 0 100}
|
||||
{ACTION}
|
||||
{COLOR_ADJUST 0 0 33}
|
||||
{COLOR_ADJUST 0 0 0}
|
||||
#enddef
|
||||
|
||||
# Creates a flashlike-effect while performing ACTION
|
||||
# For example, player 3 might disappear in the flash of a lightning:
|
||||
# {THUNDER (
|
||||
# [store_unit]
|
||||
# [filter]
|
||||
# side=3
|
||||
# [/filter]
|
||||
# variable=player3
|
||||
# kill=yes
|
||||
# [/store_unit]
|
||||
# )}
|
||||
|
||||
#define THUNDER ACTION
|
||||
[sound]
|
||||
name=lightning.wav
|
||||
[/sound]
|
||||
{FLASH_WHITE ({ACTION}) }
|
||||
#enddef
|
80
data/utils/scenario-utils.cfg
Normal file
|
@ -0,0 +1,80 @@
|
|||
# Sets the objectives for a given player
|
||||
# Side 0 means every player. Does not affect gameplay except tells the player what the objectives of a scenario are.
|
||||
# For example, we could set the objective for all players to: "survive for 3 turns".
|
||||
# {SET_OBJECTIVES 0 "Survive for 3 turns" () ()}
|
||||
#
|
||||
#define SET_OBJECTIVES SIDE SUMMARY NOTE CONDITIONS
|
||||
[objectives]
|
||||
side = {SIDE}
|
||||
summary = {SUMMARY}
|
||||
note = {NOTE}
|
||||
{CONDITIONS}
|
||||
[/objectives]
|
||||
#enddef
|
||||
|
||||
# Used in conjunction with SET_OBJECTIVES this sets a victory condition (marked green)
|
||||
# For example we could tell player 2 to win by killing all other players
|
||||
# {SET_OBJECTIVES 0 "Kill eachother." (
|
||||
# {VICTORY_CONDITION "Kill all other players."}
|
||||
# )}
|
||||
#
|
||||
#define VICTORY_CONDITION DESCRIPTION
|
||||
[objective]
|
||||
condition = "win"
|
||||
description = {DESCRIPTION}
|
||||
[/objective]
|
||||
#enddef
|
||||
|
||||
# Used in conjunction with SET_OBJECTIVES this sets a defeat condition (marked red)
|
||||
# For example we could tell all players that they lose if they die.
|
||||
# {SET_OBJECTIVES 0 "Survive." (
|
||||
# {DEFEAT_CONDITION "Death of your leader."}
|
||||
# )}
|
||||
#
|
||||
#define DEFEAT_CONDITION DESCRIPTION
|
||||
[objective]
|
||||
condition = "lose"
|
||||
description = {DESCRIPTION}
|
||||
[/objective]
|
||||
#enddef
|
||||
|
||||
# Defines a multiplayer side in a scenario that is controllable by the player.
|
||||
# For example we can set side 1 to be a player belonging to team "Good Guys" starting with 200g and no income.
|
||||
# {SIDE_PLAYER 1 "Good Guys" "Good Guy #1" 200 -2 ()}
|
||||
#
|
||||
#define SIDE_PLAYER SIDE TEAM DESCRIPTION GOLD INCOME SIDE_PARMS
|
||||
[side]
|
||||
description={DESCRIPTION}
|
||||
side={SIDE}
|
||||
team_name={TEAM}
|
||||
canrecruit=1
|
||||
controller=human
|
||||
gold={GOLD}
|
||||
income={INCOME}
|
||||
{SIDE_PARMS}
|
||||
[/side]
|
||||
#enddef
|
||||
|
||||
# Defines a multiplayer side in a scenario that is controllad by the computer.
|
||||
# For example we can set side 4 to be a computer belonging to team "Evil Guys" starting with 666g and no 99 income.
|
||||
# We also makes it more aggressive:
|
||||
# {SIDE_COMPUTER 4 "Evil Guys" "Evil One" 666 99 (
|
||||
# aggression=0.95
|
||||
# )}
|
||||
#
|
||||
#define SIDE_COMPUTER SIDE TEAM DESCRIPTION GOLD INCOME SIDE_PARMS AI_PARMS
|
||||
[side]
|
||||
description={DESCRIPTION}
|
||||
side={SIDE}
|
||||
team_name={TEAM}
|
||||
canrecruit=1
|
||||
controller=ai
|
||||
allow_player=no
|
||||
gold={GOLD}
|
||||
income={INCOME}
|
||||
{SIDE_PARMS}
|
||||
[ai]
|
||||
{AI_PARMS}
|
||||
[/ai]
|
||||
[/side]
|
||||
#enddef
|
|
@ -1,102 +1,102 @@
|
|||
# For some animations some units use a list of sounds, from which one is
|
||||
# randomly picked every time, instead of a single sound. Here the most commonly
|
||||
# used lists are wrapped inside macros.
|
||||
#
|
||||
# These are used in unit .cfg's for example like this:
|
||||
#
|
||||
# [animation]
|
||||
# hits=no
|
||||
#
|
||||
# [frame]
|
||||
# begin=-200
|
||||
# end=0
|
||||
# sound={SOUND_LIST:MISS}
|
||||
# image="units/dwarves/warrior-attack.png"
|
||||
# [/frame]
|
||||
|
||||
#define SOUND_LIST:HOLY
|
||||
magic-holy-1.ogg,magic-holy-2.ogg,magic-holy-3.ogg,magic-holy-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HOLY_MISS
|
||||
magic-holy-miss-1.ogg,magic-holy-miss-2.ogg,magic-holy-miss-3.ogg,magic-holy-miss-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:MISS
|
||||
miss-1.ogg,miss-2.ogg,miss-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:SWORD_SWISH
|
||||
sword-1.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:DRAKE_HIT
|
||||
drake-hit-1.ogg,drake-hit-2.ogg,drake-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:DWARF_HIT
|
||||
dwarf-hit-1.ogg,dwarf-hit-2.ogg,dwarf-hit-3.ogg,dwarf-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:DWARF_DIE
|
||||
dwarf-die-1.ogg,dwarf-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ELF_HIT
|
||||
human-hit-1.ogg,human-hit-2.ogg,human-hit-3.ogg,human-hit-4.ogg,elf-hit-2.ogg,elf-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ELF_FEMALE_HIT
|
||||
human-female-hit-1.ogg,human-female-hit-2.ogg,human-female-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GOBLIN_HIT
|
||||
goblin-hit-1.ogg,goblin-hit-2.ogg,goblin-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GOBLIN_DIE
|
||||
goblin-die-1.ogg,goblin-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GRYPHON_HIT
|
||||
gryphon-hit-1.ogg,gryphon-hit-2.ogg,gryphon-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GRYPHON_DIE
|
||||
gryphon-die-1.ogg,gryphon-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HORSE_HIT
|
||||
horse-hit-1.ogg,horse-hit-2.ogg,horse-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_HIT
|
||||
human-hit-1.ogg,human-hit-2.ogg,human-hit-3.ogg,human-hit-4.ogg,human-hit-5.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_FEMALE_HIT
|
||||
human-female-hit-1.ogg,human-female-hit-2.ogg,human-female-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_OLD_HIT
|
||||
human-old-hit-1.ogg,human-old-hit-2.ogg,human-old-hit-3.ogg,human-old-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_OLD_DIE
|
||||
human-old-die-1.ogg,human-old-die-2.ogg,human-old-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_DIE
|
||||
human-die-1.ogg,human-die-2.ogg,human-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_FEMALE_DIE
|
||||
human-female-die-1.ogg,human-female-die-2.ogg,human-female-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:LICH_HIT
|
||||
lich-hit-1.ogg,lich-hit-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:NAGA_HIT
|
||||
naga-hit-1.ogg,naga-hit-2.ogg,naga-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_HIT
|
||||
orc-hit-1.ogg,orc-hit-2.ogg,orc-hit-3.ogg,orc-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_DIE
|
||||
orc-die-1.ogg,orc-die-2.ogg,orc-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_SMALL_HIT
|
||||
orc-small-hit-1.ogg,orc-small-hit-2.ogg,orc-small-hit-3.ogg,orc-small-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_SMALL_DIE
|
||||
orc-small-die-1.ogg,orc-small-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ZOMBIE_WEAK_HIT
|
||||
zombie-hit-4.ogg,zombie-hit-5.ogg,zombie-hit-6.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ZOMBIE_HIT
|
||||
zombie-hit-1.ogg,zombie-hit-2.ogg,zombie-hit-3.ogg,zombie-hit-4.ogg,zombie-hit-5.ogg,zombie-hit-6.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ZOMBIE_STRONG_HIT
|
||||
zombie-hit-1.ogg,zombie-hit-2.ogg,zombie-hit-3.ogg #enddef
|
||||
# For some animations some units use a list of sounds, from which one is
|
||||
# randomly picked every time, instead of a single sound. Here the most commonly
|
||||
# used lists are wrapped inside macros.
|
||||
#
|
||||
# These are used in unit .cfg's for example like this:
|
||||
#
|
||||
# [animation]
|
||||
# hits=no
|
||||
#
|
||||
# [frame]
|
||||
# begin=-200
|
||||
# end=0
|
||||
# sound={SOUND_LIST:MISS}
|
||||
# image="units/dwarves/warrior-attack.png"
|
||||
# [/frame]
|
||||
|
||||
#define SOUND_LIST:HOLY
|
||||
magic-holy-1.ogg,magic-holy-2.ogg,magic-holy-3.ogg,magic-holy-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HOLY_MISS
|
||||
magic-holy-miss-1.ogg,magic-holy-miss-2.ogg,magic-holy-miss-3.ogg,magic-holy-miss-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:MISS
|
||||
miss-1.ogg,miss-2.ogg,miss-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:SWORD_SWISH
|
||||
sword-1.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:DRAKE_HIT
|
||||
drake-hit-1.ogg,drake-hit-2.ogg,drake-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:DWARF_HIT
|
||||
dwarf-hit-1.ogg,dwarf-hit-2.ogg,dwarf-hit-3.ogg,dwarf-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:DWARF_DIE
|
||||
dwarf-die-1.ogg,dwarf-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ELF_HIT
|
||||
human-hit-1.ogg,human-hit-2.ogg,human-hit-3.ogg,human-hit-4.ogg,elf-hit-2.ogg,elf-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ELF_FEMALE_HIT
|
||||
human-female-hit-1.ogg,human-female-hit-2.ogg,human-female-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GOBLIN_HIT
|
||||
goblin-hit-1.ogg,goblin-hit-2.ogg,goblin-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GOBLIN_DIE
|
||||
goblin-die-1.ogg,goblin-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GRYPHON_HIT
|
||||
gryphon-hit-1.ogg,gryphon-hit-2.ogg,gryphon-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:GRYPHON_DIE
|
||||
gryphon-die-1.ogg,gryphon-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HORSE_HIT
|
||||
horse-hit-1.ogg,horse-hit-2.ogg,horse-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_HIT
|
||||
human-hit-1.ogg,human-hit-2.ogg,human-hit-3.ogg,human-hit-4.ogg,human-hit-5.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_FEMALE_HIT
|
||||
human-female-hit-1.ogg,human-female-hit-2.ogg,human-female-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_OLD_HIT
|
||||
human-old-hit-1.ogg,human-old-hit-2.ogg,human-old-hit-3.ogg,human-old-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_OLD_DIE
|
||||
human-old-die-1.ogg,human-old-die-2.ogg,human-old-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_DIE
|
||||
human-die-1.ogg,human-die-2.ogg,human-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:HUMAN_FEMALE_DIE
|
||||
human-female-die-1.ogg,human-female-die-2.ogg,human-female-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:LICH_HIT
|
||||
lich-hit-1.ogg,lich-hit-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:NAGA_HIT
|
||||
naga-hit-1.ogg,naga-hit-2.ogg,naga-hit-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_HIT
|
||||
orc-hit-1.ogg,orc-hit-2.ogg,orc-hit-3.ogg,orc-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_DIE
|
||||
orc-die-1.ogg,orc-die-2.ogg,orc-die-3.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_SMALL_HIT
|
||||
orc-small-hit-1.ogg,orc-small-hit-2.ogg,orc-small-hit-3.ogg,orc-small-hit-4.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ORC_SMALL_DIE
|
||||
orc-small-die-1.ogg,orc-small-die-2.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ZOMBIE_WEAK_HIT
|
||||
zombie-hit-4.ogg,zombie-hit-5.ogg,zombie-hit-6.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ZOMBIE_HIT
|
||||
zombie-hit-1.ogg,zombie-hit-2.ogg,zombie-hit-3.ogg,zombie-hit-4.ogg,zombie-hit-5.ogg,zombie-hit-6.ogg #enddef
|
||||
|
||||
#define SOUND_LIST:ZOMBIE_STRONG_HIT
|
||||
zombie-hit-1.ogg,zombie-hit-2.ogg,zombie-hit-3.ogg #enddef
|
58
data/utils/temp-utils.cfg
Normal file
|
@ -0,0 +1,58 @@
|
|||
# Teleports a unit matching FILTER to NEWX,NEWY
|
||||
# For example, teleport player3s leader to 4,5
|
||||
# {TELEPORT_UNIT (
|
||||
# side=3
|
||||
# canrecruit=1
|
||||
# ) 4 5}
|
||||
|
||||
#define TELEPORT_UNIT FILTER NEWX NEWY
|
||||
[teleport]
|
||||
[filter]
|
||||
{FILTER}
|
||||
[/filter]
|
||||
x={NEWX}
|
||||
y={NEWY}
|
||||
[/teleport]
|
||||
[redraw]
|
||||
[/redraw]
|
||||
#enddef
|
||||
|
||||
# Teleports a unit on tile OLDX,OLDY to NEWX,NEWY
|
||||
# For example, teleport any unit thats currently on 1,1 to 4,5
|
||||
# {TELEPORT_TILE 1 1 4 5}
|
||||
|
||||
#define TELEPORT_TILE OLDX OLDY NEWX NEWY
|
||||
[teleport]
|
||||
[filter]
|
||||
x={OLDX}
|
||||
y={OLDY}
|
||||
[/filter]
|
||||
x={NEWX}
|
||||
y={NEWY}
|
||||
[/teleport]
|
||||
[redraw]
|
||||
[/redraw]
|
||||
#enddef
|
||||
|
||||
# Creates a unit of TYPE belonging to SIDE at X,Y. UNIT_ID can be used when filtering on it.
|
||||
# For example, lets create a wose for player 1 at 4,7
|
||||
# {CREATE_UNIT 1 "Wose" 4 7 () ()}
|
||||
|
||||
# As a second example, lets make it a female wose which can recruit and is name "Woselina":
|
||||
# {CREATE_UNIT 1 "Wose" 4 7 "Woselina" (
|
||||
# canrecruit=1
|
||||
# )}
|
||||
|
||||
#define CREATE_UNIT SIDE TYPE X Y UNIT_ID OTHER
|
||||
[unit]
|
||||
side={SIDE}
|
||||
type={TYPE}
|
||||
x={X}
|
||||
y={Y}
|
||||
description={UNIT_ID}
|
||||
|
||||
upkeep=full
|
||||
animate=yes
|
||||
{OTHER}
|
||||
[/unit]
|
||||
#enddef
|
90
data/utils/temp-utils2.cfg
Normal file
|
@ -0,0 +1,90 @@
|
|||
# Condition triggering if PLAYER has at least one unit left.
|
||||
# For example, if the player 2 is still alive, kill all his units.
|
||||
# {IF_ALIVE 2 (
|
||||
# [kill]
|
||||
# side=2
|
||||
# [/kill]
|
||||
# )}
|
||||
|
||||
#define IF_ALIVE PLAYER ACTION
|
||||
[if]
|
||||
[have_unit]
|
||||
side={PLAYER}
|
||||
[/have_unit]
|
||||
[then]
|
||||
{ACTION}
|
||||
[/then]
|
||||
[/if]
|
||||
#enddef
|
||||
|
||||
# Condition triggering if PLAYER has no units left.
|
||||
# For example, give player 2 gold if player 1 is dead
|
||||
# {IF_DEAD 1 (
|
||||
# [gold]
|
||||
# side=2
|
||||
# amount=25
|
||||
# [/gold]
|
||||
# )}
|
||||
|
||||
#define IF_DEAD PLAYER ACTION
|
||||
[if]
|
||||
[have_unit]
|
||||
side={PLAYER}
|
||||
[/have_unit]
|
||||
[then]
|
||||
[/then]
|
||||
[else]
|
||||
{ACTION}
|
||||
[/else]
|
||||
[/if]
|
||||
#enddef
|
||||
|
||||
# Condition that triggers if PLAYER1 and PLAYER2 belong to the same team.
|
||||
# NOTE: only works if leaders are alive, are the same leader as the game started and haven't changed teams.
|
||||
# For example, if player 3 and 4 is allied, steal 10 gold from each:
|
||||
# {IF_ALLIED 3 4 (
|
||||
# [gold]
|
||||
# side=3
|
||||
# amount=-10
|
||||
# [/gold]
|
||||
# [gold]
|
||||
# side=4
|
||||
# amount=-10
|
||||
# [/gold]
|
||||
# )}
|
||||
|
||||
#define IF_ALLIED PLAYER1 PLAYER2 ACTION
|
||||
[store_unit]
|
||||
[filter]
|
||||
side={PLAYER1}
|
||||
canrecruit=1
|
||||
[/filter]
|
||||
variable=leader1
|
||||
mode=replace
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[store_unit]
|
||||
[filter]
|
||||
side={PLAYER2}
|
||||
canrecruit=1
|
||||
[/filter]
|
||||
variable=leader2
|
||||
mode=replace
|
||||
kill=no
|
||||
[/store_unit]
|
||||
[if]
|
||||
[variable]
|
||||
name=leader1.team_name
|
||||
equals=$leader2.team_name
|
||||
[/variable]
|
||||
[then]
|
||||
{ACTION}
|
||||
[/then]
|
||||
[/if]
|
||||
[clear_variable]
|
||||
name=leader1
|
||||
[/clear_variable]
|
||||
[clear_variable]
|
||||
name=leader2
|
||||
[/clear_variable]
|
||||
#enddef
|
67
data/utils/unsorted-utils.cfg
Normal file
|
@ -0,0 +1,67 @@
|
|||
# Changes the terrain at a given list of coordinates
|
||||
# For example we could make 14,15 and 14,16 grassland:
|
||||
# {MODIFY_TERRAIN g (14,14) (15,16)}
|
||||
|
||||
#define MODIFY_TERRAIN LETTER X Y
|
||||
[terrain]
|
||||
letter={LETTER}
|
||||
x={X}
|
||||
y={Y}
|
||||
[/terrain]
|
||||
#enddef
|
||||
|
||||
# Changes the terrain for a given area
|
||||
# For example we could create a castle at 10,12:
|
||||
# #define CASTLE_MASK
|
||||
# CC
|
||||
# CKC
|
||||
# CC
|
||||
# #enddef
|
||||
# {MODIFY_TERRAIN_MASK 10 12 ({CASTLE_MASK})}
|
||||
|
||||
#define MODIFY_TERRAIN_MASK X Y MASK RULES
|
||||
[terrain_mask]
|
||||
x={X}
|
||||
y={Y}
|
||||
mask={MASK}
|
||||
{RULES}
|
||||
[/terrain_mask]
|
||||
#enddef
|
||||
|
||||
# Ends the game with the result RESULT (can be either victory or defeat)
|
||||
# For example, we could win:
|
||||
# {ENDGAME victory}
|
||||
#
|
||||
#define ENDGAME RESULT
|
||||
[endlevel]
|
||||
result={RESULT}
|
||||
[/endlevel]
|
||||
#enddef
|
||||
|
||||
# Allows the player to undo the effects of a moveto event.
|
||||
# For example, lets allow undoing reading a note:
|
||||
# {ON_TILE 5 7 () (
|
||||
# {ALLOW_UNDO (
|
||||
# [message]
|
||||
# speaker=narrator
|
||||
# message="This is a note."
|
||||
# [/message]
|
||||
# )}
|
||||
# )}
|
||||
|
||||
#define ALLOW_UNDO ACTION
|
||||
[allow_undo]
|
||||
{ACTION}
|
||||
[/allow_undo]
|
||||
#enddef
|
||||
|
||||
# Gives a side an amount of gold
|
||||
# For example, lets make player 1 rich:
|
||||
# {ADD_GOLD 1 999}
|
||||
|
||||
#define ADD_GOLD SIDE AMOUNT
|
||||
[gold]
|
||||
side={SIDE}
|
||||
amount={AMOUNT}
|
||||
[/gold]
|
||||
#enddef
|
|
@ -1,58 +1,57 @@
|
|||
# This file contains utility macros for scenario writers
|
||||
# This file contains general utility macros for WML authors.
|
||||
#
|
||||
# Also see
|
||||
|
||||
#### TABLE OF CONTENTS ####
|
||||
|
||||
# variable operations
|
||||
|
||||
# RANDOM
|
||||
# VARIABLE
|
||||
# VARIABLE_OP
|
||||
# CLEAR_VARIABLE
|
||||
# FOREACH
|
||||
# NEXT
|
||||
# IF_TERRAIN
|
||||
# DEBUG_MSG
|
||||
# RANDOM
|
||||
# VARIABLE
|
||||
# VARIABLE_OP
|
||||
# CLEAR_VARIABLE
|
||||
# FOREACH
|
||||
# NEXT
|
||||
# IF_TERRAIN
|
||||
# DEBUG_MSG
|
||||
|
||||
# scenario/campaign setup
|
||||
|
||||
# DEFAULT_MUSIC_PLAYLIST
|
||||
# SCENARIO_MUSIC
|
||||
# STARTING_VILLAGES
|
||||
# DOT
|
||||
# CROSS
|
||||
# MENU_IMG_TXT
|
||||
# MENU_IMG_TXT2
|
||||
# DEFAULT_MUSIC_PLAYLIST
|
||||
# SCENARIO_MUSIC
|
||||
# STARTING_VILLAGES
|
||||
# DOT
|
||||
# CROSS
|
||||
# MENU_IMG_TXT
|
||||
# MENU_IMG_TXT2
|
||||
|
||||
# side setup
|
||||
|
||||
# TURNS
|
||||
# GOLD
|
||||
# INCOME
|
||||
# ATTACK_DEPTH
|
||||
# NO_SCOUTS
|
||||
# TURNS
|
||||
# GOLD
|
||||
# INCOME
|
||||
# ATTACK_DEPTH
|
||||
# NO_SCOUTS
|
||||
|
||||
# in-scenario actions
|
||||
|
||||
# PLACE_IMAGE
|
||||
# TREMOR
|
||||
# IS_HERO
|
||||
# UNIT
|
||||
# UNDEAD_UNIT
|
||||
# MOVE_UNIT
|
||||
# MODIFY_UNIT
|
||||
# STORE_UNIT_VAR
|
||||
# PUT_TO_RECALL_LIST
|
||||
# PLACE_IMAGE
|
||||
# TREMOR
|
||||
# IS_HERO
|
||||
# UNIT
|
||||
# UNDEAD_UNIT
|
||||
# MOVE_UNIT
|
||||
# MODIFY_UNIT
|
||||
# STORE_UNIT_VAR
|
||||
# PUT_TO_RECALL_LIST
|
||||
|
||||
# utilities not intended for general use
|
||||
|
||||
# QUANTITY
|
||||
# MAGENTA_IS_THE_TEAM_COLOR
|
||||
# COLOR_HEAL
|
||||
# COLOR_HARM
|
||||
# COLOR_WHITE
|
||||
# IMAGE_DEFENSIVE
|
||||
# IMAGE_DEFENSIVE_RANGE
|
||||
# IMAGE_DEFENSIVE_SHORT
|
||||
# QUANTITY
|
||||
# MAGENTA_IS_THE_TEAM_COLOR
|
||||
# COLOR_HEAL
|
||||
# COLOR_HARM
|
||||
# COLOR_WHITE
|
||||
|
||||
#### END OF TABLE OF CONTENTS ####
|
||||
|
||||
|
@ -155,19 +154,19 @@ name={VAR}
|
|||
#define FOREACH ARRAY VAR
|
||||
{VARIABLE {VAR} 0}
|
||||
[while]
|
||||
[variable]
|
||||
name={VAR}
|
||||
less_than=${ARRAY}.length
|
||||
[/variable]
|
||||
[do]
|
||||
[variable]
|
||||
name={VAR}
|
||||
less_than=${ARRAY}.length
|
||||
[/variable]
|
||||
[do]
|
||||
#enddef
|
||||
|
||||
#define NEXT VAR
|
||||
[set_variable]
|
||||
name={VAR}
|
||||
add=1
|
||||
[/set_variable]
|
||||
[/do]
|
||||
[set_variable]
|
||||
name={VAR}
|
||||
add=1
|
||||
[/set_variable]
|
||||
[/do]
|
||||
[/while]
|
||||
{CLEAR_VARIABLE {VAR}}
|
||||
#enddef
|
||||
|
@ -369,33 +368,33 @@ message={MSG}
|
|||
#define STARTING_VILLAGES SIDE RADIUS
|
||||
[event]
|
||||
name=prestart
|
||||
[store_starting_location]
|
||||
side={SIDE}
|
||||
variable=temp_starting_location
|
||||
[/store_starting_location]
|
||||
[store_locations]
|
||||
x,y=$temp_starting_location.x,$temp_starting_location.y
|
||||
radius={RADIUS}
|
||||
variable=temp_starting_locs
|
||||
[store_starting_location]
|
||||
side={SIDE}
|
||||
variable=temp_starting_location
|
||||
[/store_starting_location]
|
||||
[store_locations]
|
||||
x,y=$temp_starting_location.x,$temp_starting_location.y
|
||||
radius={RADIUS}
|
||||
variable=temp_starting_locs
|
||||
|
||||
#all the types of villages
|
||||
terrain=AaBbDeLptUvVZY
|
||||
[/store_locations]
|
||||
#all the types of villages
|
||||
terrain=AaBbDeLptUvVZY
|
||||
[/store_locations]
|
||||
|
||||
{FOREACH temp_starting_locs i}
|
||||
{VARIABLE_OP temp_x_var to_variable temp_starting_locs[$i].x}
|
||||
{VARIABLE_OP temp_y_var to_variable temp_starting_locs[$i].y}
|
||||
[capture_village]
|
||||
side={SIDE}
|
||||
x,y=$temp_x_var,$temp_y_var
|
||||
[/capture_village]
|
||||
{NEXT i}
|
||||
{FOREACH temp_starting_locs i}
|
||||
{VARIABLE_OP temp_x_var to_variable temp_starting_locs[$i].x}
|
||||
{VARIABLE_OP temp_y_var to_variable temp_starting_locs[$i].y}
|
||||
[capture_village]
|
||||
side={SIDE}
|
||||
x,y=$temp_x_var,$temp_y_var
|
||||
[/capture_village]
|
||||
{NEXT i}
|
||||
|
||||
{CLEAR_VARIABLE temp_x_var}
|
||||
{CLEAR_VARIABLE temp_y_var}
|
||||
{CLEAR_VARIABLE temp_starting_location}
|
||||
{CLEAR_VARIABLE temp_starting_locs}
|
||||
{CLEAR_VARIABLE i}
|
||||
{CLEAR_VARIABLE temp_x_var}
|
||||
{CLEAR_VARIABLE temp_y_var}
|
||||
{CLEAR_VARIABLE temp_starting_location}
|
||||
{CLEAR_VARIABLE temp_starting_locs}
|
||||
{CLEAR_VARIABLE i}
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
|
@ -410,101 +409,67 @@ name=prestart
|
|||
#
|
||||
|
||||
#define UNIT TYPE DESCRIPTION UDESCRIPTION SIDE X Y
|
||||
[unit]
|
||||
type={TYPE}
|
||||
description={DESCRIPTION}
|
||||
user_description={UDESCRIPTION}
|
||||
side={SIDE}
|
||||
x={X}
|
||||
y={Y}
|
||||
[modifications]
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
[unit]
|
||||
type={TYPE}
|
||||
description={DESCRIPTION}
|
||||
user_description={UDESCRIPTION}
|
||||
side={SIDE}
|
||||
x={X}
|
||||
y={Y}
|
||||
[modifications]
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
#enddef
|
||||
|
||||
#define UNDEAD_UNIT TYPE SIDE X Y
|
||||
[unit]
|
||||
type={TYPE}
|
||||
side={SIDE}
|
||||
x={X}
|
||||
y={Y}
|
||||
[modifications]
|
||||
{TRAIT_UNDEAD}
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
[unit]
|
||||
type={TYPE}
|
||||
side={SIDE}
|
||||
x={X}
|
||||
y={Y}
|
||||
[modifications]
|
||||
{TRAIT_UNDEAD}
|
||||
{TRAIT_LOYAL}
|
||||
[/modifications]
|
||||
[/unit]
|
||||
#enddef
|
||||
|
||||
#define PLACE_IMAGE IMAGE_FILE X Y
|
||||
[item]
|
||||
x={X}
|
||||
y={Y}
|
||||
image={IMAGE_FILE}
|
||||
[/item]
|
||||
[item]
|
||||
x={X}
|
||||
y={Y}
|
||||
image={IMAGE_FILE}
|
||||
[/item]
|
||||
#enddef
|
||||
|
||||
#define TREMOR
|
||||
[sound]
|
||||
name="rumble.ogg"
|
||||
[/sound]
|
||||
[scroll]
|
||||
x=5
|
||||
y=0
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=-10
|
||||
y=0
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=5
|
||||
y=5
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=0
|
||||
y=-10
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=0
|
||||
y=5
|
||||
[/scroll]
|
||||
[sound]
|
||||
name="rumble.ogg"
|
||||
[/sound]
|
||||
[scroll]
|
||||
x=5
|
||||
y=0
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=-10
|
||||
y=0
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=5
|
||||
y=5
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=0
|
||||
y=-10
|
||||
[/scroll]
|
||||
[scroll]
|
||||
x=0
|
||||
y=5
|
||||
[/scroll]
|
||||
#enddef
|
||||
|
||||
|
||||
#macro to easily replace image_defensive and image_defensive_range
|
||||
|
||||
#define IMAGE_DEFENSIVE IMAGE_FILE
|
||||
[defend]
|
||||
[frame]
|
||||
begin=-150
|
||||
end=150
|
||||
image={IMAGE_FILE}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
#define IMAGE_DEFENSIVE_RANGE IMAGE_FILE
|
||||
[defend]
|
||||
range=ranged
|
||||
[frame]
|
||||
begin=-150
|
||||
end=150
|
||||
image={IMAGE_FILE}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
#define IMAGE_DEFENSIVE_SHORT IMAGE_FILE
|
||||
[defend]
|
||||
range=melee
|
||||
[frame]
|
||||
begin=-150
|
||||
end=150
|
||||
image={IMAGE_FILE}
|
||||
[/frame]
|
||||
[/defend]
|
||||
#enddef
|
||||
|
||||
# a macro to define a common set of magenta color values which different
|
||||
# units can be color shifted by using the team color system
|
||||
|
||||
|
@ -530,67 +495,67 @@ flag_rgb=magenta
|
|||
# twice to catch instances where music is changed in a story and not set back.
|
||||
|
||||
#define DEFAULT_MUSIC_PLAYLIST
|
||||
[music]
|
||||
name=gameplay01.ogg
|
||||
ms_before=12000
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay02.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay03.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=main_menu.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-1.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-2.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[event]
|
||||
name=prestart
|
||||
[music]
|
||||
name=gameplay01.ogg
|
||||
ms_before=12000
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay02.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay03.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=main_menu.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-1.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-2.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[/event]
|
||||
[music]
|
||||
name=gameplay01.ogg
|
||||
ms_before=12000
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay02.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay03.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=main_menu.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-1.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-2.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[event]
|
||||
name=prestart
|
||||
[music]
|
||||
name=gameplay01.ogg
|
||||
ms_before=12000
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay02.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=gameplay03.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=main_menu.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-1.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[music]
|
||||
name=wesnoth-2.ogg
|
||||
ms_before=12000
|
||||
append=yes
|
||||
[/music]
|
||||
[/event]
|
||||
#enddef
|
||||
|
||||
#
|
||||
|
@ -609,9 +574,9 @@ name="wesnoth-2.ogg"
|
|||
[/music]
|
||||
[event]
|
||||
name=prestart
|
||||
[music]
|
||||
name={MUSIC}
|
||||
[/music]
|
||||
[music]
|
||||
name={MUSIC}
|
||||
[/music]
|
||||
[/event]
|
||||
#enddef
|
||||
|
Before Width: | Height: | Size: 579 B After Width: | Height: | Size: 464 B |
BIN
images/units/elves-wood/marksman+female-die-1.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
images/units/elves-wood/marksman+female-die-2.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/units/elves-wood/marksman+female-die-3.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/units/elves-wood/marksman-die-1.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
images/units/elves-wood/marksman-die-2.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/units/elves-wood/marksman-die-3.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/units/elves-wood/marksman-die-4.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
images/units/elves-wood/marksman-die-5.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 870 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
|
@ -5,14 +5,14 @@ msgstr ""
|
|||
"Project-Id-Version: it\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.wesnoth.org/\n"
|
||||
"POT-Creation-Date: 2006-12-27 19:40+0100\n"
|
||||
"PO-Revision-Date: 2006-08-28 21:44+0100\n"
|
||||
"Last-Translator: Americo Iacovizzi <darkamex@gmail.com>\n"
|
||||
"PO-Revision-Date: 2006-12-28 01:43+0100\n"
|
||||
"Last-Translator: Luciano Montanaro <mikelima@cirulla.net>\n"
|
||||
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: data/campaigns/Eastern_Invasion.cfg:10
|
||||
msgid "The Eastern Invasion"
|
||||
|
@ -98,7 +98,6 @@ msgid "Resist until Dacyn's return tomorrow night"
|
|||
msgstr "Resisti sino a domani notte, quando Dacyn tornerà"
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/01.The_Outpost.cfg:120
|
||||
#, fuzzy
|
||||
msgid "Resist until Dacyn's return in two days"
|
||||
msgstr "Resisti sino al ritorno di Dacyn tra due giorni"
|
||||
|
||||
|
@ -325,7 +324,6 @@ msgstr ""
|
|||
"loro merita aiuto, secondo me."
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/02.The_Escape_Tunnel.cfg:174
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Thank you. Now, I advise you to join us. Undead have followed us into these "
|
||||
"caves, and they will kill you if you stay behind."
|
||||
|
@ -334,7 +332,6 @@ msgstr ""
|
|||
"queste caverne, e ti uccideranno se resti indietro."
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/02.The_Escape_Tunnel.cfg:180
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Thank you. Now, I advise you to join us. Undead are in these lands, and they "
|
||||
"will find these caves."
|
||||
|
@ -885,7 +882,7 @@ msgstr "Trova il capobanda fuorilegge nei villaggi ed uccidilo"
|
|||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/05.Northern_Outpost.cfg:96
|
||||
msgid "Defeat the undead leader"
|
||||
msgstr "Sconfiggi il condottiero dei non morti"
|
||||
msgstr "Sconfiggi il condottiero dei non-morti"
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/07a.The_Crossing.cfg:87
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/18b.Weldyn_Besieged.cfg:131
|
||||
|
@ -912,19 +909,18 @@ msgid ""
|
|||
"Greetings, Owaec! We have been forced from our positions by undead invaders. "
|
||||
"They follow us even now."
|
||||
msgstr ""
|
||||
"Saluti, Owaec! La nostra linea di difesa è stata spezzata dagli invasori non "
|
||||
"morti. Loro ci stanno ancora inseguendo"
|
||||
"Saluti, Owaec! Siamo stati ricacciati dalle nostre postazioni dagli invasori "
|
||||
"non-morti. Ci stanno ancora inseguendo."
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/05.Northern_Outpost.cfg:129
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Indeed, they do. And do not think you will be able to defeat them. They are "
|
||||
"too powerful. We are heading for the Northlands, where we may be able to "
|
||||
"outrun them. Will you join us?"
|
||||
msgstr ""
|
||||
"Certamente lo faranno. E non pensare di riuscire a sconfiggerli. Sono troppo "
|
||||
"potenti. Ci stiamo dirigendo verso le Terre del Nord, dove forse riusciremo "
|
||||
"sconfiggerli. Volete venire con noi? "
|
||||
"Lo faranno sicuramente. E non pensare di riuscire a sconfiggerli. Sono "
|
||||
"troppo potenti. Ci stiamo dirigendo verso le Terre del Nord, dove forse "
|
||||
"riusciremo sconfiggerli. Volete venire con noi?"
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/05.Northern_Outpost.cfg:133
|
||||
msgid ""
|
||||
|
@ -934,8 +930,8 @@ msgid ""
|
|||
"are close, and come out when we are far away."
|
||||
msgstr ""
|
||||
"Non sono sicuro. Ci sono dei banditi in questa regione e mi è stato detto "
|
||||
"che è mio dovere sconfiggerli per proteggere i villaggi locali. Anche se, "
|
||||
"non riesco a trovare il modo di sconfiggerli. I banditi si nascondono nei "
|
||||
"che è mio dovere sconfiggerli per proteggere i villaggi locali. Anche se non "
|
||||
"riesco a trovare il modo di sconfiggerli. I banditi si nascondono nei "
|
||||
"villaggi quando ci avviciniamo e vengono fuori quando siamo sufficientemente "
|
||||
"lontani."
|
||||
|
||||
|
@ -949,7 +945,7 @@ msgstr ""
|
|||
"Sperare di proteggere questi villaggi è una pazzia; tutti quelli che "
|
||||
"rimanessero qui morirebbero. Tuttavia, se riusciamo a liberarci di questi "
|
||||
"banditi, saremo in grado di farci seguire dagli abitanti verso le terre del "
|
||||
"nord. Dove potrebbero sopravvivere. Wesnoth non è più sicura."
|
||||
"nord, dove potrebbero sopravvivere. Wesnoth non è più sicura."
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/05.Northern_Outpost.cfg:141
|
||||
msgid ""
|
||||
|
@ -1948,7 +1944,6 @@ msgstr ""
|
|||
"dei non morti."
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/13.Evacuation.cfg:340
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Very well. If returning to Wesnoth has any chance of success, it is our best "
|
||||
"option. We will go south."
|
||||
|
@ -1957,7 +1952,6 @@ msgstr ""
|
|||
"nostra migliore possibilità. Andremo a sud."
|
||||
|
||||
#: data/campaigns/Eastern_Invasion/scenarios/13.Evacuation.cfg:344
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"I do not like this. But it appears we will die no matter our course of "
|
||||
"action."
|
||||
|
@ -2717,6 +2711,3 @@ msgstr ""
|
|||
"Gweddry iniziarono a diventare meno cauti. Quindi, all'alba di un giorno, "
|
||||
"Gweddry e i suoi uomini furono svegliati dalle grida di sorpresa della "
|
||||
"guardia notturne..."
|
||||
|
||||
#~ msgid "Resist until you receive further instructions from Dacyn"
|
||||
#~ msgstr "Resisti finché non ricevi ulteriori istruzioni da Dacyn"
|
||||
|
|