More macro argument typechecking. No mismatches in mainline.
This commit is contained in:
parent
75f2727548
commit
c62c55e1a2
12 changed files with 124 additions and 122 deletions
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue