More macro argument typechecking. No mismatches in mainline.

This commit is contained in:
Eric S. Raymond 2010-02-12 00:25:20 +00:00
parent 75f2727548
commit c62c55e1a2
12 changed files with 124 additions and 122 deletions

View file

@ -380,7 +380,7 @@
####
# internal macro
#
#define _AI_ASPECT_LEADER_GOAL_MOVE_TO X Y AUTOREMOVE
#define _AI_ASPECT_LEADER_GOAL_MOVE_TO X Y AUTOREMOVE_VALUE
[facet]
id="always"
@ -388,7 +388,7 @@
id="always"
x={X}
y={Y}
auto_remove={AUTOREMOVE}
auto_remove={AUTOREMOVE_VALUE}
[/value]
[/facet]
#enddef
@ -415,11 +415,11 @@
# AI CONTROLLER SUPPORT
############################################################
#define AI_CONTROLLER_ALLOW_LEADER_CONTROL SIDE_CONTROLLER SIDE_CONTROLLED
#define AI_CONTROLLER_ALLOW_LEADER_CONTROL CONTROLLER_SIDE CONTROLLED_SIDE
[store_unit]
[filter]
side={SIDE_CONTROLLED}
side={CONTROLLED_SIDE}
canrecruit=yes
[/filter]
@ -434,15 +434,15 @@
[/variable]
[then]
[set_menu_item]
id=ai_controller_leader_control_{SIDE_CONTROLLED}
id=ai_controller_leader_control_{CONTROLLED_SIDE}
description= _ "Ask $ally_leader.name (leader of side $ally_leader.side) to move here"
[show_if]
side={SIDE_CONTROLLER}
side={CONTROLLER_SIDE}
#TODO: show only if ally leader is alive
[/show_if]
[command]
{CLEAR_AI_ALWAYS_ASPECT_LEADER_GOAL {SIDE_CONTROLLED} }
{MODIFY_AI_ADD_ASPECT {SIDE_CONTROLLED} leader_goal {AI_ASPECT_LEADER_GOAL_MOVE_TO $x1 $y1} }
{CLEAR_AI_ALWAYS_ASPECT_LEADER_GOAL {CONTROLLED_SIDE} }
{MODIFY_AI_ADD_ASPECT {CONTROLLED_SIDE} leader_goal {AI_ASPECT_LEADER_GOAL_MOVE_TO $x1 $y1} }
[/command]
[/set_menu_item]
[/then]
@ -451,7 +451,7 @@
[event]
name=victory #TODO: any scenario change
[set_menu_item]
id=ai_controller_leader_control_{SIDE_CONTROLLED}
id=ai_controller_leader_control_{CONTROLLED_SIDE}
[show_if]
[not]
[/not]

View file

@ -699,43 +699,43 @@
[/else]
#enddef
#define MISSILE_FRAME_FIRE_BREATH_N OFFSET
#define MISSILE_FRAME_FIRE_BREATH_N OFFSET_POSITION
# Animate a projectile for a fire-breath attack.
[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={OFFSET}
halo_x,halo_y={OFFSET_POSITION}
[/missile_frame]
#enddef
#define MISSILE_FRAME_FIRE_BREATH_S OFFSET
#define MISSILE_FRAME_FIRE_BREATH_S OFFSET_POSITION
# Animate a projectile for a fire-breath attack.
[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={OFFSET}
halo_x,halo_y={OFFSET_POSITION}
[/missile_frame]
#enddef
#define MISSILE_FRAME_FIRE_BREATH_N_DIAGONAL OFFSET
#define MISSILE_FRAME_FIRE_BREATH_N_DIAGONAL OFFSET_POSITION
# Animate a projectile for a fire-breath attack.
[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={OFFSET}
halo_x,halo_y={OFFSET_POSITION}
[/missile_frame]
#enddef
#define MISSILE_FRAME_FIRE_BREATH_S_DIAGONAL OFFSET
#define MISSILE_FRAME_FIRE_BREATH_S_DIAGONAL OFFSET_POSITION
# Animate a projectile for a fire-breath attack.
[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={OFFSET}
halo_x,halo_y={OFFSET_POSITION}
[/missile_frame]
#enddef
@ -1292,7 +1292,7 @@
[/else]
#enddef
#define MAGIC_MISSILE X_OFFSET Y_OFFSET
#define MAGIC_MISSILE X_OFFSET OFFSET_Y
magic_missile_start_time=-750
magic_missile_trail_1_start_time=-350
@ -1303,7 +1303,7 @@
duration=400
halo=halo/mage-halo1.png,halo/mage-halo2.png,halo/mage-halo3.png,halo/mage-halo4.png,halo/mage-halo5.png
halo_x={X_OFFSET}~0
halo_y={Y_OFFSET}~-54
halo_y={OFFSET_Y}~-54
offset=0.001~-0.083,-0.083~-0.25,-0.25~-0.5
[/magic_missile_frame]
[magic_missile_frame]
@ -1333,54 +1333,54 @@
[/magic_missile_trail_3_frame]
#enddef
#define MAGIC_MISSILE_STAFF_FLARE START_TIME DURATION X_OFFSET Y_OFFSET
#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}
duration={DURATION_TIME}
halo=halo/mage-preparation-halo1.png,halo/mage-preparation-halo2.png,halo/mage-preparation-halo3.png,halo/mage-preparation-halo4.png,halo/mage-preparation-halo5.png,halo/mage-preparation-halo6.png,halo/mage-preparation-halo7.png,misc/blank-hex.png:1
halo_x={X_OFFSET}
halo_y={Y_OFFSET}
halo_x={OFFSET_X}
halo_y={OFFSET_Y}
offset=0
[/magic_missile_flare_frame]
#enddef
#define MERMAID_STAFF_FLARE X_OFFSET Y_OFFSET
#define MERMAID_STAFF_FLARE OFFSET_X OFFSET_Y
flare_start_time=-420
[flare_frame]
duration=60
halo=halo/merfolk/staff-flare-1.png
halo_x,halo_y={X_OFFSET},{Y_OFFSET}
halo_x,halo_y={OFFSET_X},{OFFSET_Y}
[/flare_frame]
[flare_frame]
duration=60
halo=halo/merfolk/staff-flare-2.png
halo_x,halo_y={X_OFFSET},{Y_OFFSET}
halo_x,halo_y={OFFSET_X},{OFFSET_Y}
[/flare_frame]
[flare_frame]
duration=60
halo=halo/merfolk/staff-flare-3.png
halo_x,halo_y={X_OFFSET},{Y_OFFSET}
halo_x,halo_y={OFFSET_X},{OFFSET_Y}
[/flare_frame]
[flare_frame]
duration=60
halo=halo/merfolk/staff-flare-4.png
halo_x,halo_y={X_OFFSET},{Y_OFFSET}
halo_x,halo_y={OFFSET_X},{OFFSET_Y}
[/flare_frame]
[flare_frame]
duration=60
halo=halo/merfolk/staff-flare-5.png
halo_x,halo_y={X_OFFSET},{Y_OFFSET}
halo_x,halo_y={OFFSET_X},{OFFSET_Y}
[/flare_frame]
[flare_frame]
duration=60
halo=halo/merfolk/staff-flare-6.png
halo_x,halo_y={X_OFFSET},{Y_OFFSET}
halo_x,halo_y={OFFSET_X},{OFFSET_Y}
[/flare_frame]
[flare_frame]
duration=60
halo=halo/merfolk/staff-flare-7.png
halo_x,halo_y={X_OFFSET},{Y_OFFSET}
halo_x,halo_y={OFFSET_X},{OFFSET_Y}
[/flare_frame]
[flare_frame]
duration=10
@ -1691,7 +1691,7 @@
[/missile_frame]
#enddef
#define MISSILE_FRAME_STONE_HIT X_OFFSET Y_OFFSET
#define MISSILE_FRAME_STONE_HIT OFFSET_X OFFSET_Y
[sling_stone_frame]
begin=-201
end=-200
@ -1701,8 +1701,8 @@
begin=-200
end=0
halo="projectiles/stone.png"
halo_x={X_OFFSET}~0
halo_y={Y_OFFSET}~0
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]
@ -1713,7 +1713,7 @@
[/sling_stone_frame]
#enddef
#define MISSILE_FRAME_STONE_MISS X_OFFSET Y_OFFSET
#define MISSILE_FRAME_STONE_MISS OFFSET_X OFFSET_Y
[sling_stone_frame]
begin=-201
end=-200
@ -1723,8 +1723,8 @@
begin=-200
end=100
halo="projectiles/stone.png"
halo_x={X_OFFSET}~0
halo_y={Y_OFFSET}~0
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]
@ -1860,7 +1860,7 @@ Wo,Ww,Ww^Vm,Chs,Chw,Ss,Qxu,Ql,Qlf#enddef
[/post_movement_anim]
#enddef
#define DRAKE_FIRE_ANIM_S_DIAGONAL DRAKE_NAME OFFSET
#define DRAKE_FIRE_ANIM_S_DIAGONAL DRAKE_NAME OFFSET_POSITION
[attack_anim]
[filter_attack]
name=fire breath
@ -1870,7 +1870,7 @@ Wo,Ww,Ww^Vm,Chs,Chw,Ss,Qxu,Ql,Qlf#enddef
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={OFFSET}
halo_x,halo_y={OFFSET_POSITION}
[/missile_frame]
start_time=-900
[if]

View file

@ -71,8 +71,9 @@
[/if]
#enddef
#define IF_ALLIED PLAYER1 PLAYER2 ACTION_WML
# Condition that triggers if PLAYER1 and PLAYER2 belong to the same team.
#define IF_ALLIED PLAYER1_SIDE PLAYER2_SIDE ACTION_WML
# Condition that triggers if PLAYER1_SIDE and PLAYER2_SIDE 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:
@ -88,7 +89,7 @@
#! )}
[store_unit]
[filter]
side={PLAYER1}
side={PLAYER1_SIDE}
canrecruit=yes
[/filter]
variable=leader1
@ -97,7 +98,7 @@
[/store_unit]
[store_unit]
[filter]
side={PLAYER2}
side={PLAYER2_SIDE}
canrecruit=yes
[/filter]
variable=leader2

View file

@ -168,7 +168,7 @@
[/event]
#enddef
#define CALL_FUNCTION FNAME PARAMS
#define CALL_FUNCTION EVENT_NAME PARAMETER_WML
# This will fire an event with a set of parameters, for example:
#! {CALL_FUNCTION my_event a,b,c=1,2,3}
#
@ -179,11 +179,11 @@
mode=insert
name=param[0]
[value]
{PARAMS}
{PARAMETER_WML}
[/value]
[/set_variables]
[fire_event]
name={FNAME}
name={EVENT_NAME}
[primary_unit]
x,y=$unit.x,$unit.y
[/primary_unit]

View file

@ -224,10 +224,11 @@
{PLACE_IMAGE ({IMAGE}) {X} {Y}}
#enddef
#define FAKE_UNIT_MOVE X1 X2 Y1 Y2 SIDE TYPE MODIFIERS
# Moves a fake unit using TYPE's animations, from (X1, Y1) to (X2, Y2).
# You can also specify modifiers that change the baseframe displayed by
# unit's gender or variation, or none at all.
#define FAKE_UNIT_MOVE FROM_X TO_X FROM_Y TO_Y SIDE TYPE MODIFIER_WML
# Moves a fake unit using TYPE's animations, from (FROM_X, FROM_Y)
# to (TO_X, TO_Y). You can also specify modifiers that change the
# baseframe displayed by unit's gender or variation, or none at
# all.
#
# Example:
#! {FAKE_UNIT_MOVE 1 2 1 2 1 (Dark Adept) (
@ -237,9 +238,9 @@
[move_unit_fake]
type={TYPE}
side={SIDE}
x={X1},{X2}
y={Y1},{Y2}
{MODIFIERS}
x={FROM_X},{TO_X}
y={FROM_Y},{TO_Y}
{MODIFIER_WML}
[/move_unit_fake]
#enddef
@ -393,19 +394,19 @@
#enddef
#The macro that all the following macros work off
#define FADE_STEP_RGB RED GREEN BLUE DELAY
#define FADE_STEP_RGB RED GREEN BLUE DELAY_TIME
[colour_adjust]
red,green,blue={RED},{GREEN},{BLUE}
[/colour_adjust]
[delay]
time={DELAY}
time={DELAY_TIME}
[/delay]
[redraw][/redraw]
#enddef
#The macro that the following fade to black macros rely on
#define FADE_STEP NUMBER DELAY
{FADE_STEP_RGB {NUMBER} {NUMBER} {NUMBER} {DELAY}}
#define FADE_STEP NUMBER DELAY_TIME
{FADE_STEP_RGB {NUMBER} {NUMBER} {NUMBER} {DELAY_TIME}}
#enddef
#define FADE_TO_BLACK

View file

@ -64,7 +64,7 @@ x,y=1-999,1-999 #enddef
[/objective]
#enddef
#define SIDE_PLAYER SIDE TEAM_NAME DESCRIPTION GOLD INCOME SIDE_WML
#define SIDE_PLAYER SIDE TEAM_NAME DESCRIPTION GOLD_AMOUNT INCOME_AMOUNT SIDE_WML
# 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"
@ -76,13 +76,13 @@ x,y=1-999,1-999 #enddef
team_name={TEAM_NAME}
canrecruit=yes
controller=human
gold={GOLD}
income={INCOME}
gold={GOLD_AMOUNT}
income={INCOME_AMOUNT}
{SIDE_WML}
[/side] # wmllint: validate-on
#enddef
#define SIDE_COMPUTER SIDE TEAM_NAME DESCRIPTION GOLD INCOME SIDE_WML AI_WML
#define SIDE_COMPUTER SIDE TEAM_NAME DESCRIPTION GOLD_AMOUNT INCOME_AMOUNT SIDE_WML AI_WML
# Defines a multiplayer side in a scenario that is controllad by
# the computer.
#
@ -101,8 +101,8 @@ x,y=1-999,1-999 #enddef
controller=ai
allow_player=no
disallow_observers=yes
gold={GOLD}
income={INCOME}
gold={GOLD_AMOUNT}
income={INCOME_AMOUNT}
{SIDE_WML}
[ai]
{AI_WML}

View file

@ -218,7 +218,7 @@
id={ID_STRING}) {ID_STRING}}
#enddef
#define STORE_UNIT_VAR FILTER VAR TO_VAR
#define STORE_UNIT_VAR FILTER VAR TO_VAR_NAME
# Stores an attribute of a unit to the given variable.
#
# Example where this is used to flip all orcs to whatever side James is on:
@ -234,7 +234,7 @@
[/store_unit]
[set_variable]
name={TO_VAR}
name={TO_VAR_NAME}
format=$STORE_UNIT_VAR_store.{VAR}
[/set_variable]
@ -289,20 +289,20 @@
{CLEAR_VARIABLE advanceto_len}
#enddef
#define TRANSFORM_UNIT T_FILTER TRANSFORMTO
# Transforms all units matching the filter into TRANSFORMTO or if missing, their normal advancement
#define TRANSFORM_UNIT FILTER TYPE
# Transforms all units matching the filter into TYPE or if missing, their normal advancement
# Keeps the unit's hitpoints, experience and status intact.
#
# Example to turn all spearmen into cavalrymen:
#! {TRANSFORM_UNIT type=Spearman Cavalryman}
[store_unit]
[filter]
{T_FILTER}
{FILTER}
[/filter]
variable=TU_store
kill=no
[/store_unit]
{ADVANCE_UNIT ({T_FILTER}) ({TRANSFORMTO}) }
{ADVANCE_UNIT ({FILTER}) ({TYPE}) }
{FOREACH TU_store i}
[store_unit]
[filter]

View file

@ -1,15 +1,15 @@
#textdomain wesnoth-units
[unit_type]
#macro to define most of the non-graphical part of Walking Corpse
#define UNIT_BODY_SOULLESS_STATS MOVETYPE MOVES HP
#define UNIT_BODY_SOULLESS_STATS MOVETYPE_ID MOVES_NUMBER HP_AMOUNT
id=Soulless
name= _ "Soulless"
race=undead
ellipse="misc/ellipse"
{TRAIT_FEARLESS_MUSTHAVE}
hitpoints={HP}
movement_type={MOVETYPE}
movement={MOVES}
hitpoints={HP_AMOUNT}
movement_type={MOVETYPE_ID}
movement={MOVES_NUMBER}
experience=150
level=1
alignment=chaotic
@ -35,11 +35,11 @@
[/attack]
#enddef
#macro to define most of the graphical part of Walking Corpse
#define UNIT_BODY_SOULLESS_GRAPHICS_NO_DEATH_ANIM BASE_IMAGESTEM
image="units/undead/{BASE_IMAGESTEM}.png"
#define UNIT_BODY_SOULLESS_GRAPHICS_NO_DEATH_ANIM BASE_NAME
image="units/undead/{BASE_NAME}.png"
{MAGENTA_IS_THE_TEAM_COLOR}
die_sound={SOUND_LIST:ZOMBIE_HIT}
{DEFENSE_ANIM "units/undead/{BASE_IMAGESTEM}-defend.png" "units/undead/{BASE_IMAGESTEM}.png" {SOUND_LIST:ZOMBIE_HIT} }
{DEFENSE_ANIM "units/undead/{BASE_NAME}-defend.png" "units/undead/{BASE_NAME}.png" {SOUND_LIST:ZOMBIE_HIT} }
[death]
start_time=0
[frame]
@ -79,7 +79,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-s.png"
image="units/undead/{BASE_NAME}-attack-s.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -91,7 +91,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-n.png"
image="units/undead/{BASE_NAME}-attack-n.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -103,33 +103,33 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack.png"
image="units/undead/{BASE_NAME}-attack.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
#enddef
#define UNIT_BODY_SOULLESS_GRAPHICS BASE_IMAGESTEM
image="units/undead/{BASE_IMAGESTEM}.png"
#define UNIT_BODY_SOULLESS_GRAPHICS BASE_NAME
image="units/undead/{BASE_NAME}.png"
{MAGENTA_IS_THE_TEAM_COLOR}
die_sound={SOUND_LIST:ZOMBIE_HIT}
{DEFENSE_ANIM "units/undead/{BASE_IMAGESTEM}-defend.png" "units/undead/{BASE_IMAGESTEM}.png" {SOUND_LIST:ZOMBIE_HIT} }
{DEFENSE_ANIM "units/undead/{BASE_NAME}-defend.png" "units/undead/{BASE_NAME}.png" {SOUND_LIST:ZOMBIE_HIT} }
[death]
start_time=0
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-1.png"
image="units/undead/{BASE_NAME}-die-1.png"
[/frame]
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-2.png"
image="units/undead/{BASE_NAME}-die-2.png"
[/frame]
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-3.png"
image="units/undead/{BASE_NAME}-die-3.png"
[/frame]
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-4.png"
image="units/undead/{BASE_NAME}-die-4.png"
[/frame]
[frame]
duration=150
@ -164,7 +164,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-s.png"
image="units/undead/{BASE_NAME}-attack-s.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -176,7 +176,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-n.png"
image="units/undead/{BASE_NAME}-attack-n.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -188,7 +188,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack.png"
image="units/undead/{BASE_NAME}-attack.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]

View file

@ -1,15 +1,15 @@
#textdomain wesnoth-units
[unit_type]
#macro to define most of the non-graphical part of Walking Corpse
#define UNIT_BODY_WALKING_CORPSE_STATS MOVETYPE MOVES HP
#define UNIT_BODY_WALKING_CORPSE_STATS MOVTYPE_NAME MOVES_NUMBER HP_AMOUNT
id=Walking Corpse
name= _ "Walking Corpse"
race=undead
ellipse="misc/ellipse-nozoc"
{TRAIT_FEARLESS_MUSTHAVE}
hitpoints={HP}
movement_type={MOVETYPE}
movement={MOVES}
hitpoints={HP_AMOUNT}
movement_type={MOVTYPE_NAME}
movement={MOVES_NUMBER}
level=0
experience=24
alignment=chaotic
@ -34,11 +34,11 @@
[/attack]
#enddef
#macro to define most of the graphical part of Walking Corpse
#define UNIT_BODY_WALKING_CORPSE_GRAPHICS_NO_DEATH_ANIM BASE_IMAGESTEM
image="units/undead/{BASE_IMAGESTEM}.png"
#define UNIT_BODY_WALKING_CORPSE_GRAPHICS_NO_DEATH_ANIM BASE_IMAGE
image="units/undead/{BASE_IMAGE}.png"
{MAGENTA_IS_THE_TEAM_COLOR}
die_sound={SOUND_LIST:ZOMBIE_WEAK_HIT}
{DEFENSE_ANIM "units/undead/{BASE_IMAGESTEM}-defend.png" "units/undead/{BASE_IMAGESTEM}.png" {SOUND_LIST:ZOMBIE_WEAK_HIT} }
{DEFENSE_ANIM "units/undead/{BASE_IMAGE}-defend.png" "units/undead/{BASE_IMAGE}.png" {SOUND_LIST:ZOMBIE_WEAK_HIT} }
[death]
start_time=0
[frame]
@ -78,7 +78,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-s.png"
image="units/undead/{BASE_IMAGE}-attack-s.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -90,7 +90,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-n.png"
image="units/undead/{BASE_IMAGE}-attack-n.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -102,33 +102,33 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack.png"
image="units/undead/{BASE_IMAGE}-attack.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
#enddef
#define UNIT_BODY_WALKING_CORPSE_GRAPHICS BASE_IMAGESTEM
image="units/undead/{BASE_IMAGESTEM}.png"
#define UNIT_BODY_WALKING_CORPSE_GRAPHICS NBASE_NAME
image="units/undead/{NBASE_NAME}.png"
{MAGENTA_IS_THE_TEAM_COLOR}
die_sound={SOUND_LIST:ZOMBIE_WEAK_HIT}
{DEFENSE_ANIM "units/undead/{BASE_IMAGESTEM}-defend.png" "units/undead/{BASE_IMAGESTEM}.png" {SOUND_LIST:ZOMBIE_WEAK_HIT} }
{DEFENSE_ANIM "units/undead/{NBASE_NAME}-defend.png" "units/undead/{NBASE_NAME}.png" {SOUND_LIST:ZOMBIE_WEAK_HIT} }
[death]
start_time=0
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-1.png"
image="units/undead/{NBASE_NAME}-die-1.png"
[/frame]
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-2.png"
image="units/undead/{NBASE_NAME}-die-2.png"
[/frame]
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-3.png"
image="units/undead/{NBASE_NAME}-die-3.png"
[/frame]
[frame]
duration=150
image="units/undead/{BASE_IMAGESTEM}-die-4.png"
image="units/undead/{NBASE_NAME}-die-4.png"
[/frame]
[frame]
duration=150
@ -163,7 +163,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-s.png"
image="units/undead/{NBASE_NAME}-attack-s.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -175,7 +175,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack-n.png"
image="units/undead/{NBASE_NAME}-attack-n.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]
@ -187,7 +187,7 @@
[frame]
begin=-200
end=200
image="units/undead/{BASE_IMAGESTEM}-attack.png"
image="units/undead/{NBASE_NAME}-attack.png"
sound=zombie-attack.wav
[/frame]
[/attack_anim]

View file

@ -156,23 +156,23 @@ Note: You need to use map settings for the scenario to work right."
#[/message]
#enddef
# copies the units over from SIDE1 to SIDE2
# copies the units over from FROM_SIDE to TO_SIDE
# and removes all temporary limitations of movement_type and max_moves
#define ADJUST_AGGRESSION SIDE1 SIDE2
#define ADJUST_AGGRESSION FROM_SIDE TO_SIDE
[if]
[have_unit]
side={SIDE1}
side={FROM_SIDE}
[/have_unit]
[then]
[store_unit]
variable=ai_unit
kill=yes
[filter]
side={SIDE1}
side={FROM_SIDE}
[/filter]
[/store_unit]
{FOREACH ai_unit id}
{VARIABLE ai_unit[$id].side {SIDE2}}
{VARIABLE ai_unit[$id].side {TO_SIDE}}
{CLEAR_VARIABLE ai_unit[$id].movement_costs}
{VARIABLE ai_unit[$id].max_moves $ai_unit[$id].variables.original_max_moves}
@ -187,7 +187,7 @@ Note: You need to use map settings for the scenario to work right."
[/if]
#enddef
#define SPAWN_UNIT SIDE TYPE ID TIER NUMBER
#define SPAWN_UNIT SIDE TYPE ID TIER_NUMBER NUMBER
{VARIABLE uside {SIDE}}
{VARIABLE utype {TYPE}}
{VARIABLE y 10}
@ -195,7 +195,7 @@ Note: You need to use map settings for the scenario to work right."
{VARIABLE_OP number add 11}
{VARIABLE_OP y add $number}
{VARIABLE x 18}
{VARIABLE this_tier {TIER}}
{VARIABLE this_tier {TIER_NUMBER}}
[if]
[variable]
name=this_tier
@ -210,7 +210,7 @@ Note: You need to use map settings for the scenario to work right."
side={SIDE}
x=$x
y=$y
role=new_unit{TIER}
role=new_unit{TIER_NUMBER}
random_traits=no
name="none"
[/unit]
@ -219,7 +219,7 @@ Note: You need to use map settings for the scenario to work right."
variable=new_unit
[filter]
side={SIDE}
role=new_unit{TIER}
role=new_unit{TIER_NUMBER}
[/filter]
[/store_unit]
{VARIABLE_OP gold add -$new_unit.cost}
@ -236,7 +236,7 @@ Note: You need to use map settings for the scenario to work right."
[/if]
{VARIABLE_OP max_units add -1}
{VARIABLE new_unit.variables.spawn_id {ID}}
{VARIABLE new_unit.role new_spawn{TIER}}
{VARIABLE new_unit.role new_spawn{TIER_NUMBER}}
[unstore_unit]
variable=new_unit
[/unstore_unit]

View file

@ -195,12 +195,12 @@
[/unit]
#enddef
#define ANL_PLACE_WOUNDED_UNIT SIDE TYPE X Y HITPOINTS
#define ANL_PLACE_WOUNDED_UNIT SIDE TYPE X Y HITPOINTS_AMOUNT
[unit]
side={SIDE}
type={TYPE}
generate_name=yes
hitpoints={HITPOINTS}
hitpoints={HITPOINTS_AMOUNT}
ai_special=guardian
random_traits=no
x={X}

View file

@ -145,7 +145,7 @@ def formaltype(f):
# Deduce the expected type of the formal
if f.startswith("_"):
f = f[1:]
if f in ("SIDE", "X", "Y", "RED", "GREEN", "BLUE", "TURN", "RADIUS", "PROB", "LAYER") or f.endswith("_SIDE") or f.endswith("NUMBER") or f.endswith("AMOUNT") or f.endswith("COST") or f.endswith("_X") or f.endswith("_Y") or f.endswith("_INCREMENT") or f.endswith("_FACTOR"):
if f in ("SIDE", "X", "Y", "RED", "GREEN", "BLUE", "TURN", "RADIUS", "PROB", "LAYER", "TIME") or f.endswith("_SIDE") or f.endswith("NUMBER") or f.endswith("AMOUNT") or f.endswith("COST") or f.endswith("_X") or f.endswith("_Y") or f.endswith("_INCREMENT") or f.endswith("_FACTOR") or f.endswith("_TIME"):
ftype = "numeric"
elif f in ("POSITION",) or f.endswith("_POSITION"):
ftype = "position"