#textdomain wesnoth # Macros for setting animations. # These don't rely on any other macros. Please don't change this. #define STANDING_ANIM_DIRECTIONAL BASE_SE_IMAGE BASE_NE_IMAGE [standing_anim] start_time=0 [if] direction=s,se,sw [frame] image={BASE_SE_IMAGE}:150 [/frame] [/if] [else] direction=n,ne,nw [frame] image={BASE_NE_IMAGE}:150 [/frame] [/else] [/standing_anim] #enddef #define LEADING_ANIM FULL_IMAGE HALFWAYS_IMAGE OFFSET_POSITION # Define an animation of a unit waving/raising their weapon, # with a gleam of light reflecting off it at the point specified by # OFFSET_POSITION [leading_anim] start_time=-126 [frame] image={HALFWAYS_IMAGE}:1,{FULL_IMAGE}:250,{HALFWAYS_IMAGE}:1 [/frame] halo_start_time=-100 [halo_frame] halo="halo/misc/leadership-flare-[1~13].png:20" halo_x,halo_y={OFFSET_POSITION} [/halo_frame] [/leading_anim] #enddef #define TEACHING_ANIM FULL_IMAGE HALFWAYS_IMAGE OFFSET_POSITION ATTACK # Define an animation of a unit waving/raising their weapon, # with a gleam of light reflecting off it at the point specified by # OFFSET_POSITION [teaching_anim] [filter_attack] {ATTACK} [/filter_attack] start_time=-126 [frame] image={HALFWAYS_IMAGE}:1,{FULL_IMAGE}:250,{HALFWAYS_IMAGE}:1 [/frame] halo_start_time=-100 [halo_frame] halo="halo/misc/leadership-flare-[1~13].png:20" halo_x,halo_y={OFFSET_POSITION} [/halo_frame] [/teaching_anim] #enddef #define DEFENSE_ANIM REACTION_IMAGE BASE_IMAGE HIT_SOUND # Define a defensive animation moving from a specified BASE_IMAGE # to REACTION_IMAGE, with HIT_SOUND playing only if a hit occurs. [defend] start_time=-126 [frame] image={BASE_IMAGE}:1,{REACTION_IMAGE}:250,{BASE_IMAGE}:1 [/frame] # Do not change to SOUND:HIT, this has to remain a hit_sound_frame [if] hit_sound_start_time=-25 hits=hit [hit_sound_frame] sound={HIT_SOUND} [/hit_sound_frame] [/if] [/defend] #enddef #define DEFENSE_ANIM_FILTERED REACTION_IMAGE BASE_IMAGE HIT_SOUND FILTER # Define a defensive animation moving from a specified BASE_IMAGE # to REACTION_IMAGE, with HIT_SOUND playing only if a hit occurs. This # fires only if FILTER is matched. [defend] start_time=-126 {FILTER} [frame] image={BASE_IMAGE}:1,{REACTION_IMAGE}:250,{BASE_IMAGE}:1 [/frame] [if] hits=hit base_score=1 #necessary to eliminate duplication if filter contains match also hit_sound_start_time=-25 [hit_sound_frame] sound={HIT_SOUND} [/hit_sound_frame] [/if] [/defend] #enddef #define DEFENSE_ANIM_DIRECTIONAL_FILTERED REACTION_SE_IMAGE BASE_SE_IMAGE REACTION_NE_IMAGE BASE_NE_IMAGE HIT_SOUND FILTER # Define a defensive animation depending on direction moving from a specified NE or SE Base image # to NE or SE Reaction image, with HIT_SOUND playing only if a hit occurs. This # fires only if FILTER is matched. [defend] {FILTER} start_time=-126 [if] direction=s,se,sw [frame] image={BASE_SE_IMAGE}:1,{REACTION_SE_IMAGE}:250,{BASE_SE_IMAGE}:1 [/frame] [/if] [else] direction=n,ne,nw [frame] image={BASE_NE_IMAGE}:1,{REACTION_NE_IMAGE}:250,{BASE_NE_IMAGE}:1 [/frame] [/else] [if] hits=hit base_score=1 #necessary to eliminate duplication if filter contains match also hit_sound_start_time=-25 [hit_sound_frame] sound={HIT_SOUND} [/hit_sound_frame] [/if] [/defend] #enddef #define DEFENSE_ANIM_RANGE REACTION_IMAGE BASE_IMAGE HIT_SOUND RANGE # Define a defensive animation moving from a specified BASE_IMAGE # to REACTION_IMAGE, with HIT_SOUND playing only if a hit occurs. This # fires only on the class of attacks specified by RANGE. [defend] start_time=-126 [filter_attack] range={RANGE} [/filter_attack] [frame] image={BASE_IMAGE}:1,{REACTION_IMAGE}:250,{BASE_IMAGE}:1 [/frame] [if] hit_sound_start_time=-25 hits=hit [hit_sound_frame] sound={HIT_SOUND} [/hit_sound_frame] [/if] [/defend] #enddef #define DEFENSE_ANIM_DIRECTIONAL REACTION_SE_IMAGE BASE_SE_IMAGE REACTION_NE_IMAGE BASE_NE_IMAGE HIT_SOUND [defend] start_time=-126 [if] direction=s,se,sw [frame] image={BASE_SE_IMAGE}:1,{REACTION_SE_IMAGE}:250,{BASE_SE_IMAGE}:1 [/frame] [/if] [else] direction=n,ne,nw [frame] image={BASE_NE_IMAGE}:1,{REACTION_NE_IMAGE}:250,{BASE_NE_IMAGE}:1 [/frame] [/else] [if] hit_sound_start_time=-25 hits=hit [hit_sound_frame] sound={HIT_SOUND} [/hit_sound_frame] [/if] [/defend] #enddef #define DEFENSE_ANIM_DIRECTIONAL_RANGE REACTION_SE_IMAGE BASE_SE_IMAGE REACTION_NE_IMAGE BASE_NE_IMAGE HIT_SOUND RANGE [defend] [filter_attack] range={RANGE} [/filter_attack] start_time=-126 [if] direction=s,se,sw [frame] image={BASE_SE_IMAGE}:1,{REACTION_SE_IMAGE}:250,{BASE_SE_IMAGE}:1 [/frame] [/if] [else] direction=n,ne,nw [frame] image={BASE_NE_IMAGE}:1,{REACTION_NE_IMAGE}:250,{BASE_NE_IMAGE}:1 [/frame] [/else] [if] hits=hit hit_sound_start_time=-25 [hit_sound_frame] sound={HIT_SOUND} [/hit_sound_frame] [/if] [/defend] #enddef #define DEFENSE_ANIM_ELVEN_RANGE REACTION_IMAGE BASE_IMAGE HIT_SOUND RANGE # Define a defensive animation moving from a specified BASE_IMAGE # to REACTION_IMAGE, with HIT_SOUND playing only if a hit occurs and an # elven halo waxing and waning during the animation. This # fires only on the class of attacks specified by RANGE. [defend] start_time=-175 [filter_attack] range={RANGE} [/filter_attack] # wmlscope: start ignoring [frame] image={BASE_IMAGE}:50,{REACTION_IMAGE}:250,{BASE_IMAGE}:75 halo=halo/elven/elven-shield-halo-[20,40,60,80,100,80,60,40,20]pct.png:[25*2,50*2,100,50,25*3] [/frame] # wmlscope: stop ignoring [if] hit_sound_start_time=-25 hits=hit [hit_sound_frame] sound={HIT_SOUND} [/hit_sound_frame] [/if] [/defend] #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 should have no idle animation. [filter] [not] status=poisoned [/not] [/filter] # Units next to enemies should not have idle animations [filter] [filter_adjacent] is_enemy="yes" count=0 [/filter_adjacent] [/filter] # Filter out wounded units for same reason as poisoned units # also see {WOUNDED_UNIT ()} in unit-utils.cfg [filter] formula="if(self.hitpoints > self.max_hitpoints / 3, 1, 0)" [/filter] #enddef #define STANDING_COMBAT_FILTER # Units next to enemies should not have idle animations [filter] [filter_adjacent] is_enemy="yes" count=1-6 [/filter_adjacent] [/filter] # Filter out wounded units # also see {WOUNDED_UNIT ()} in unit-utils.cfg [filter] formula="if(self.hitpoints > self.max_hitpoints / 3, 1, 0)" [/filter] #enddef #define MISSILE_FRAME_WAIL # Animate a projectile for a wail attack. [if] direction=n,ne,nw missile_start_time=-300 [missile_frame] image="projectiles/wailprojectile-n-[1~6].png:[70*2,160,40*3]" image_diagonal="projectiles/wailprojectile-ne-[1~6].png:[70*2,160,40*3]" [/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 have their angle corrected for the sw direction. missile_start_time=-300 [missile_frame] image="projectiles/wailprojectile-s-[1~6].png:[70*2,160,40*3]" image_diagonal="projectiles/wailprojectile-se-[1~6].png:[70*2,160,40*3]" auto_vflip=no [/missile_frame] [/else] #enddef #define MISSILE_FRAME_LIGHT_BEAM # Animate a beam of light coming down from the heavens. missile_start_time=-245 [missile_frame] halo="halo/holy/light-beam-[1~7,6~1].png:[30*6,130,70*6]" offset=1.0 auto_vflip=no [/missile_frame] #enddef #define MISSILE_FRAME_FIRE_BREATH N_OFFSET_POSITION S_OFFSET_POSITION N_DIAGONAL_OFFSET_POSITION S_DIAGONAL_OFFSET_POSITION # Animate a projectile for a fire-breath attack. #arg IPF #endarg missile_start_time=-400 [if] direction=n [missile_frame] halo=projectiles/fire-breath-n-[1~5].png{IPF}:80 halo_x,halo_y={N_OFFSET_POSITION} [/missile_frame] [/if] [else] direction=s [missile_frame] halo=projectiles/fire-breath-s-[1~5].png{IPF}:80 halo_x,halo_y={S_OFFSET_POSITION} [/missile_frame] [/else] [else] direction=ne,nw [missile_frame] halo=projectiles/fire-breath-ne-[1~5].png{IPF}:80 halo_x,halo_y={N_DIAGONAL_OFFSET_POSITION} [/missile_frame] [/else] [else] direction=se,sw [missile_frame] halo=projectiles/fire-breath-se-[1~5].png{IPF}:80 halo_x,halo_y={S_DIAGONAL_OFFSET_POSITION} [/missile_frame] [/else] #enddef #define MISSILE_FRAME_FIRE_BREATH_N OFFSET_POSITION # Animate a projectile for a fire-breath attack. missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-n-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] #enddef #define MISSILE_FRAME_FIRE_BREATH_S OFFSET_POSITION # Animate a projectile for a fire-breath attack. missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-s-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] #enddef #define MISSILE_FRAME_FIRE_BREATH_N_DIAGONAL OFFSET_POSITION # Animate a projectile for a fire-breath attack. missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-ne-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] #enddef #define MISSILE_FRAME_FIRE_BREATH_S_DIAGONAL OFFSET_POSITION # Animate a projectile for a fire-breath attack. missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-se-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] #enddef #define MISSILE_FRAME_FAERIE_FIRE # Animate a projectile for a faerie-fire attack. missile_start_time=-500 [missile_frame] image="projectiles/icemissile-n-[1~7].png:[250,150*2,50*4]" image_diagonal="projectiles/icemissile-ne-[1~7].png:[250,150*2,50*4]" halo=halo/elven/ice-halo[1~5,1,2,6~9].png:[100*4,50*7] halo_x,halo_y=0,0 [/missile_frame] #enddef #define MISSILE_FRAME_FIREBALL_XY OFFSET_X OFFSET_Y # Animate a projectile for a fireball attack with an X and Y start offset from centre of hex. missile_start_time=-350 [if] hits=yes [missile_frame] image="projectiles/fireball-n-1.png~SCALE(60,60)~O(60%):40,projectiles/fireball-n-2.png~SCALE(80,80)~O(80%):100,projectiles/fireball-[n,n-2,n-1].png:[125,55,30]" image_diagonal="projectiles/fireball-nw-1.png~SCALE(60,60)~O(60%):40,projectiles/fireball-nw-2.png~SCALE(80,80)~O(80%):100,projectiles/fireball-[nw,nw-2,nw-1].png:[125,55,30]" offset=0.0~0.1,0.1~0.9 directional_x={OFFSET_X}~0 y={OFFSET_Y}~0 [/missile_frame] [missile_frame] halo="projectiles/fireball-impact-[1~16].png:60" offset=1.0 auto_vflip=no [/missile_frame] [/if] [else] hits=no missile_offset=0.0~0.20,0.20~0.35,0.35~0.40,0.4~0.45 [missile_frame] halo="projectiles/fireball-fail-[1~7].png:100" halo_x={OFFSET_X}~0 halo_y={OFFSET_Y}~0 auto_vflip=no [/missile_frame] [/else] #enddef #define HALO_FRAME_SAURIAN [halo_frame] duration=420 halo=halo/saurian-magic-halo-[1~7].png:60 auto_vflip=no [/halo_frame] #enddef #define MISSILE_FRAME_ICE missile_start_time=-200 [if] hits=yes [missile_frame] duration=200 image="projectiles/whitemissile-n.png" image_diagonal="projectiles/whitemissile-ne.png" sound=magicmissile.wav offset=0.0~0.8 [/missile_frame] [missile_frame] duration=400 halo="projectiles/whitemissile-impact-[1~8].png:50" offset=0.8,0.92,0.94,0.96,0.98,1.0,1.02,1.04 [/missile_frame] [/if] [else] hits=no [missile_frame] duration=200 image="projectiles/whitemissile-n.png" image_diagonal="projectiles/whitemissile-ne.png" sound=magicmissile.wav offset=0.0~0.8 alpha=.8~0.0:200 [/missile_frame] [/else] #enddef #define MISSILE_FRAME_HATCHET # Animate a projectile for a thrown-hatchet attack. missile_start_time=-200 [missile_frame] duration=200 image="projectiles/hatchet-[2~4,1].png" image_diagonal="projectiles/hatchet-[2~4,1].png" [/missile_frame] #enddef #define FIRE_BURST_SMALL missile_start_time=0 [missile_frame] duration=600 image="projectiles/fire-burst-small-[1~8].png" image_diagonal="projectiles/fire-burst-small-[1~8].png" offset=0.8~1.0 [/missile_frame] #enddef #define LIGHTNING_BOLT DIRECTION_NUMBER missile_start_time=-250 [missile_frame] halo=halo/lightning-bolt-{DIRECTION_NUMBER}-[1~4].png:100 halo_y=-125 offset=1.0 auto_vflip=no [/missile_frame] #enddef #define MAGIC_MISSILE OFFSET_X OFFSET_Y magic_missile_start_time=-750 magic_missile_trail_1_start_time=-350 magic_missile_trail_2_start_time=-350 magic_missile_trail_3_start_time=-350 [magic_missile_frame] duration=400 halo=halo/mage-halo[1~5].png halo_x={OFFSET_X}~0 halo_y={OFFSET_Y}~-54 offset=0.001~-0.083,-0.083~-0.25,-0.25~-0.5 [/magic_missile_frame] [magic_missile_frame] duration=350 halo=halo/mage-halo[1~5].png halo_y=-54~-45,-45~-27,-27~0 offset=-0.5~-0.25,-0.25~0.25,0.25~1.0 [/magic_missile_frame] [magic_missile_trail_1_frame] duration=350 halo=misc/blank-hex.png:40,halo/mage-preparation-halo[1~7].png halo_y=-54:40,-54~-45,-45~-27,-27~0 offset=0.001:40,-0.5~-0.25,-0.25~0.25,0.25~1.0 [/magic_missile_trail_1_frame] [magic_missile_trail_2_frame] duration=350 halo=misc/blank-hex.png:80,halo/mage-preparation-halo[1~7].png halo_y=-54:80,-54~-45,-45~-27,-27~0 offset=0.001:80,-0.5~-0.25,-0.25~0.25,0.25~1.0 [/magic_missile_trail_2_frame] [magic_missile_trail_3_frame] duration=350 halo=misc/blank-hex.png:120,halo/mage-preparation-halo[1~7].png halo_y=-54:120,-54~-45,-45~-27,-27~0 offset=0.001:120,-0.5~-0.25,-0.25~0.25,0.25~1.0 [/magic_missile_trail_3_frame] #enddef #define MAGIC_MISSILE_STAFF_FLARE START_TIME DURATION_TIME OFFSET_X OFFSET_Y magic_missile_flare_start_time={START_TIME} [magic_missile_flare_frame] duration={DURATION_TIME} halo=halo/mage-preparation-halo[1~7].png halo_x={OFFSET_X} halo_y={OFFSET_Y} offset=0 [/magic_missile_flare_frame] #enddef #define MERMAID_STAFF_FLARE OFFSET_X OFFSET_Y flare_start_time=-420 [flare_frame] halo=halo/merfolk/staff-flare-[1~7].png:60 halo_x,halo_y={OFFSET_X},{OFFSET_Y} [/flare_frame] #enddef #define MERMAID_WATER_BLAST_HALO water_start_time=-420 [water_frame] halo=halo/merfolk/water-halo-[1~7].png:60 [/water_frame] #enddef #define MISSILE_FRAME_MUZZLE_FLARE_MISS X Y missile_start_time=-250 missile_offset=0.1 missile_halo_x={X} missile_halo_y={Y} [missile_frame] halo="projectiles/misfire-spark-[1~4].png:100" [/missile_frame] #enddef #define MISSILE_FRAME_MUZZLE_FLARE_HIT_NORTH START_X START_Y missile_start_time=-250 missile_offset=0.5~1.1:250,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X}~0 missile_halo_y={START_Y}~0 [missile_frame] halo="projectiles/muzzle-flash-n-[1~3].png:[100,80,70],projectiles/muzzle-flash-[4~14].png:60" [/missile_frame] #enddef #define MISSILE_FRAME_MUZZLE_FLARE_HIT_SOUTH START_X START_Y missile_start_time=-250 missile_offset=0.5~1.1:250,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X}~0 missile_halo_y={START_Y}~0 [missile_frame] halo="projectiles/muzzle-flash-s-[1~3].png~FL(vertical):[100,80,70],projectiles/muzzle-flash-[4~14].png:60" [/missile_frame] #enddef #define MISSILE_FRAME_MUZZLE_FLARE_HIT_DIAG_NORTH START_X START_Y missile_start_time=-250 missile_offset=0.5~1.1:250,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X}~0 missile_halo_y={START_Y}~0 [missile_frame] halo="projectiles/muzzle-flash-ne-[1~3].png:[100,80,70],projectiles/muzzle-flash-[4~14].png:60" [/missile_frame] #enddef #define MISSILE_FRAME_MUZZLE_FLARE_HIT_DIAG_SOUTH START_X START_Y missile_start_time=-250 missile_offset=0.5~1.1:250,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X}~0 missile_halo_y={START_Y}~0 [missile_frame] halo="projectiles/muzzle-flash-se-[1~3].png~FL(vertical):[100,80,70],projectiles/muzzle-flash-[4~14].png:60" [/missile_frame] #enddef #define MISSILE_FRAME_DG_SECOND_MUZZLE_FLARE_HIT_NORTH START_X START_Y missile_start_time=-10 missile_offset=1.05~1.1:10,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X} missile_halo_y={START_Y} [missile_frame] halo="projectiles/muzzle-flash-n-3.png:70" [/missile_frame] [missile_frame] halo="projectiles/muzzle-flash-[4~14].png:60" [/missile_frame] #enddef #define MISSILE_FRAME_DG_SECOND_MUZZLE_FLARE_HIT_SOUTH START_X START_Y missile_start_time=-10 missile_offset=1.05~1.1:10,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X} missile_halo_y={START_Y} [missile_frame] halo="projectiles/muzzle-flash-s-3.png~FL(vertical):70" [/missile_frame] [missile_frame] halo="projectiles/muzzle-flash-[4~14].png~FL(vertical):60" [/missile_frame] #enddef #define MISSILE_FRAME_DG_SECOND_MUZZLE_FLARE_HIT_DIAG_NORTH START_X START_Y missile_start_time=-10 missile_offset=1.05~1.1:10,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X} missile_halo_y={START_Y} [missile_frame] halo="projectiles/muzzle-flash-ne-3.png:70" [/missile_frame] [missile_frame] halo="projectiles/muzzle-flash-[4~14].png:60" [/missile_frame] #enddef #define MISSILE_FRAME_DG_SECOND_MUZZLE_FLARE_HIT_DIAG_SOUTH START_X START_Y missile_start_time=-10 missile_offset=1.05~1.1:10,1.1~1.5:200,1.5~1.7:360 missile_halo_x={START_X} missile_halo_y={START_Y} [missile_frame] halo="projectiles/muzzle-flash-se-3.png~FL(vertical):70" [/missile_frame] [missile_frame] halo="projectiles/muzzle-flash-[4~14].png~FL(vertical):60" [/missile_frame] #enddef #define MISSILE_FRAME_STONE_HIT OFFSET_X OFFSET_Y sling_stone_start_time=-200 [sling_stone_frame] halo="projectiles/stone.png:200" halo_x={OFFSET_X}~0 halo_y={OFFSET_Y}~0 y=0~-5,-5~-8,-8~-9,-9~-10,-10~-9,-9~-8,-8~-5,-5~0 offset=0.0~1.0 [/sling_stone_frame] #enddef #define MISSILE_FRAME_STONE_MISS OFFSET_X OFFSET_Y sling_stone_start_time=-200 [sling_stone_frame] halo="projectiles/stone.png:300" halo_x={OFFSET_X}~0 halo_y={OFFSET_Y}~0 y=0~-5,-5~-8,-8~-9,-9~-10,-10~-9,-9~-8,-8~-5,-5~0 offset=0.0~1.5 [/sling_stone_frame] #enddef #define MISSILE_FRAME_CHILL_WAVE X Y missile_start_time=-120 [if] hits=yes [missile_frame] offset=0.0~0.9:120,0.9:160 image="projectiles/icemissile-n-[1~7].png:40" image_diagonal="projectiles/icemissile-ne-[1~7].png:40" directional_x={X}~0 y={Y}~0 [/missile_frame] [/if] [else] hits=no [missile_frame] offset=0.0~0.9:150 alpha=1~0 image="projectiles/icemissile-n-[1~2,1].png:50" image_diagonal="projectiles/icemissile-ne-[1~2,1].png:50" directional_x={X}~0 y={Y}~0 [/missile_frame] [/else] #enddef #define MISSILE_FRAME_CHILL_TEMPEST X Y missile_1_start_time=-120 missile_2_start_time=-90 [if] hits=yes [missile_1_frame] offset=0.0~0.9:240,0.9:320 image="projectiles/icemissile-n-[1~7].png~SCALE(60,60):80" image_diagonal="projectiles/icemissile-ne-[1~7].png~SCALE(60,60):80" x={X}~0 y={Y}~0 directional_x=0~20:80,20~-10:160,-10~0:80,0:240 directional_y=0~20:80,20~-10:160,-10~0:80,0:240 [/missile_1_frame] [missile_2_frame] offset=0.0~0.9:240,0.9:320 image="projectiles/icemissile-n-[1~7].png~SCALE(60,60):80" image_diagonal="projectiles/icemissile-ne-[1~7].png~SCALE(60,60):80" x={X}~0 y={Y}~0 directional_x=0~-20:80,-20~10:160,10~0:80,0:240 directional_y=0~-20:80,-20~10:160,10~0:80,0:240 [/missile_2_frame] [/if] [else] hits=no [missile_1_frame] offset=0.0~0.9:300 alpha=1~0 image="projectiles/icemissile-n-[1~2,1].png~SCALE(60,60):100" image_diagonal="projectiles/icemissile-ne-[1~2,1].png~SCALE(60,60):100" x={X}~0 y={Y}~0 directional_x=0~20:100,20~-20:200 directional_y=0~20:100,20~-20:200 [/missile_1_frame] [missile_2_frame] offset=0.0~0.8:300 alpha=1~0 image="projectiles/icemissile-n-[1~2,1].png~SCALE(60,60):100" image_diagonal="projectiles/icemissile-ne-[1~2,1].png~SCALE(60,60):100" x={X}~0 y={Y}~0 directional_x=0~-20:100,-20~20:200 directional_y=0~-20:100,-20~20:200 [/missile_2_frame] [/else] #enddef #define MISSILE_FRAME_SHADOW_WAVE missile_start_time=-50 shadow_start_time=-350 [shadow_frame] duration=350 offset=0.1~1.0:150,1.0:200 alpha=0.0:1,0.8:149,0.8~0.0:200 image=projectiles/darkmissile-n.png~CS(-250,-250,-250) image_diagonal=projectiles/darkmissile-ne.png~CS(-250,-250,-250) y=25 layer=10 [/shadow_frame] [missile_frame] duration=300 offset=1.0 auto_vflip=no auto_hflip=no halo="halo/undead/dark-magic-[6~1].png~CS(-150,-150,-150)~O([40%,50%,60%*2,50%,40%]):50" halo_y=8 [/missile_frame] #enddef #define DRAKE_UNWALKABLE_TERRAINS !,Wwf*^*,Kme*^*,*^B*,!,W*^*,S*^*,Chs*^*,Chw*^*,Cm*^*,Km*^*,Q*^*,Mv*^*,*^Qov,*^Vm#enddef #define DRAKE_STANDING_ANIM DRAKE_NAME [standing_anim] [frame] image="units/drakes/{DRAKE_NAME}.png:50" [/frame] [/standing_anim] [standing_anim] start_time=0 terrain_type={DRAKE_UNWALKABLE_TERRAINS} submerge=0.01 # wmlscope: start ignoring [frame] image="units/drakes/{DRAKE_NAME}-fly-[1~5,4].png:100" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fly-[3,2]-upstroke.png:100" [/frame] # wmlscope: stop ignoring [/standing_anim] [pre_movement_anim] start_time=0 terrain_type=!,{DRAKE_UNWALKABLE_TERRAINS} [frame] image="units/drakes/{DRAKE_NAME}-takeoff-[1~4].png:50" [/frame] [/pre_movement_anim] [movement_anim] start_time=0 submerge=0.01 # wmlscope: start ignoring [frame] image="units/drakes/{DRAKE_NAME}-fly-[1~5,4].png:100" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fly-[3,2]-upstroke.png:100" [/frame] # wmlscope: stop ignoring [/movement_anim] [post_movement_anim] terrain_type=!,{DRAKE_UNWALKABLE_TERRAINS} start_time=0 [frame] image="units/drakes/{DRAKE_NAME}-takeoff-[4~1].png:100" [/frame] [/post_movement_anim] #enddef # unused in mainline #define DRAKE_FIRE_ANIM DRAKE_NAME DIRECTION_SUFFIX DIRECTION OFFSET_X OFFSET_Y [attack_anim] [filter_attack] name=fire breath [/filter_attack] direction={DIRECTION} hits=yes offset=0.0 impact_burst_start_time=-160 [impact_burst_frame] duration=320 halo=projectiles/fire-burst-small-[1~8].png offset=1.0 layer=90 [/impact_burst_frame] flame_trail_1_start_time=-450 flame_trail_2_start_time=-400 flame_trail_3_start_time=-350 flame_trail_4_start_time=-300 flame_trail_5_start_time=-250 [flame_trail_1_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.25:200 auto_vflip=no [/flame_trail_1_frame] [flame_trail_2_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.20:200 auto_vflip=no [/flame_trail_2_frame] [flame_trail_3_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.15:200 auto_vflip=no [/flame_trail_3_frame] [flame_trail_4_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.10:200 auto_vflip=no [/flame_trail_4_frame] [flame_trail_5_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.05:200 auto_vflip=no [/flame_trail_5_frame] start_time=-900 [frame] image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-[1~3,2,1].png:100" sound=flame-big.ogg [/frame] [/attack_anim] [attack_anim] [filter_attack] name=fire breath [/filter_attack] direction={DIRECTION} hits=no offset=0.0 flame_trail_1_start_time=-450 flame_trail_2_start_time=-400 flame_trail_3_start_time=-350 flame_trail_4_start_time=-300 flame_trail_5_start_time=-250 [flame_trail_1_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.5:200 auto_vflip=no [/flame_trail_1_frame] [flame_trail_2_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.4:200 auto_vflip=no [/flame_trail_2_frame] [flame_trail_3_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.3:200 auto_vflip=no [/flame_trail_3_frame] [flame_trail_4_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.2:200 auto_vflip=no [/flame_trail_4_frame] [flame_trail_5_frame] duration=500 halo=projectiles/fire-breath-[1~10].png halo_x={OFFSET_X}~0:300,0 halo_y={OFFSET_Y}~0:300,0 offset=0.0~1.0:300,1.0~1.1:200 auto_vflip=no [/flame_trail_5_frame] start_time=-900 [frame] image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-[1~3,2,1].png:100" sound=flame-big-miss.ogg [/frame] [/attack_anim] #enddef #define DRAKE_FIRE_ANIM_S_DIAGONAL DRAKE_NAME OFFSET_POSITION [attack_anim] [filter_attack] name=fire breath [/filter_attack] direction=se,sw missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-se-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] start_time=-900 [frame] image="units/drakes/{DRAKE_NAME}.png:20" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100" [/frame] {SOUND:HIT_AND_MISS flame-big.ogg flame-big-miss.ogg -480} [frame] image="units/drakes/{DRAKE_NAME}-fire-se-[1~3,2,1].png:100" [/frame] [/attack_anim] #enddef #define DRAKE_FIRE_ANIM_N_DIAGONAL_CURRENT DRAKE_NAME OFFSET_POSITION [attack_anim] [filter_attack] name=fire breath [/filter_attack] direction=ne,nw missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-ne-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] start_time=-900 [frame] image="units/drakes/{DRAKE_NAME}.png:20" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100" [/frame] {SOUND:HIT_AND_MISS flame-big.ogg flame-big-miss.ogg -480} [frame] image="units/drakes/{DRAKE_NAME}-fire-se-[1~3,2,1].png:100" [/frame] [/attack_anim] #enddef #define DRAKE_FIRE_ANIM_S DRAKE_NAME OFFSET_POSITION [attack_anim] [filter_attack] name=fire breath [/filter_attack] direction=s missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-s-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] start_time=-900 [frame] image="units/drakes/{DRAKE_NAME}.png:20" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100" [/frame] {SOUND:HIT_AND_MISS flame-big.ogg flame-big-miss.ogg -480} [frame] image="units/drakes/{DRAKE_NAME}-fire-s-[1~3,2,1].png:100" [/frame] [/attack_anim] #enddef # as long as there are no north-facing frames, we will use se (not s) #define DRAKE_FIRE_ANIM_N_CURRENT DRAKE_NAME OFFSET_POSITION [attack_anim] [filter_attack] name=fire breath [/filter_attack] direction=n missile_start_time=-400 [missile_frame] halo=projectiles/fire-breath-n-[1~5].png:80 halo_x,halo_y={OFFSET_POSITION} [/missile_frame] start_time=-900 [frame] image="units/drakes/{DRAKE_NAME}.png:20" [/frame] [frame] image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100" [/frame] {SOUND:HIT_AND_MISS flame-big.ogg flame-big-miss.ogg -480} [frame] image="units/drakes/{DRAKE_NAME}-fire-se-[1~3,2,1].png:100" [/frame] [/attack_anim] #enddef #define DRAKE_MOVEMENT_ANIM DRAKE_NAME [movement_anim] start_time=0 # wmlscope: start ignoring [frame] image="units/drakes/{DRAKE_NAME}-fly-[1~5,4].png:100,units/drakes/{DRAKE_NAME}-fly-[3,2]-upstroke.png:100" [/frame] # wmlscope: stop ignoring [/movement_anim] #enddef #define DRAKE_WEAPON_ANIM DRAKE_NAME [draw_weapon_anim] #landing, only do it when we're not already flying terrain_type={DRAKE_UNWALKABLE_TERRAINS} [frame] image="units/drakes/{DRAKE_NAME}-takeoff-[4~1].png:100" [/frame] [/draw_weapon_anim] [sheath_weapon_anim] #landing, only do it when we're not already flying terrain_type={DRAKE_UNWALKABLE_TERRAINS} [frame] image="units/drakes/{DRAKE_NAME}-takeoff-[1~4].png:100" [/frame] [/sheath_weapon_anim] #enddef #define STANDING_ANIM_BIG_TORCH IMG X X2 Y #arg IMG_NE {IMG} #endarg #arg X_NE {X} #endarg #arg Y_NE {Y} #endarg [standing_anim] start_time=0 torch_start_time=0 [if] direction=n,ne,nw [frame] image={IMG_NE} auto_vflip=no primary=yes [/frame] [torch_frame] image="halo/torch/torch-big/flame-[1~17].png:120" layer=45 directional_x={X_NE} y={Y_NE} auto_hflip=yes auto_vflip=no primary=no [/torch_frame] [/if] [else] direction=s,sw,se [frame] image={IMG} auto_vflip=no primary=yes [/frame] [torch_frame] image="halo/torch/torch-big/flame-[1~17].png:120" layer=45 directional_x={X} y={Y} auto_hflip=yes auto_vflip=no primary=no [/torch_frame] [/else] [/standing_anim] #enddef #define STANDING_ANIM_SMALL_TORCH IMG X X2 Y #arg IMG_NE {IMG} #endarg #arg X_NE {X} #endarg #arg Y_NE {Y} #endarg [standing_anim] start_time=0 torch_start_time=0 [if] direction=n,ne,nw [frame] image={IMG_NE} auto_vflip=no primary=yes [/frame] [torch_frame] image="halo/torch/torch-small/flame-[1~17].png:120" layer=45 directional_x={X_NE} y={Y_NE} auto_hflip=yes auto_vflip=no primary=no [/torch_frame] [/if] [else] direction=s,sw,se [frame] image={IMG} auto_vflip=no primary=yes [/frame] [torch_frame] image="halo/torch/torch-small/flame-[1~17].png:120" layer=45 directional_x={X} y={Y} auto_hflip=yes auto_vflip=no primary=no [/torch_frame] [/else] [/standing_anim] #enddef