Iurii Chernyi be779c5d73 LoW: fix bug # 14404:
...made special right-click leader control actions disappear on
victory
2009-09-30 20:57:50 +00:00

435 lines
8.8 KiB
INI

#textdomain wesnoth
############################################################
# MODIFY_AI - ADD
############################################################
####
# modify ai, add facet to an aspect
#
# example: {MODIFY_AI_ADD_ASPECT 1 aggression (id=always value=0.5)}
# example: {MODIFY_AI_ADD_ASPECT 1 leader_goal (id=always [value]x=1 y=2[/value])}
#define MODIFY_AI_ADD_ASPECT SIDE ASPECT_ID FACET
[modify_ai]
side={SIDE}
action=add
path=aspect[{ASPECT_ID}].facet
{FACET}
[/modify_ai]
#enddef
####
# modify ai, add stage
#
#define MODIFY_AI_ADD_STAGE SIDE STAGE
[modify_ai]
side={SIDE}
action=add
path=stage
{STAGE}
[/modify_ai]
#enddef
####
# modify ai, add goal
#
#define MODIFY_AI_ADD_GOAL SIDE GOAL
[modify_ai]
side={SIDE}
action=add
path=goal
{GOAL}
[/modify_ai]
#enddef
####
# modify ai, add candidate action to a stage
#
#define MODIFY_AI_ADD_CANDIDATE_ACTION SIDE CANDIDATE_ACTION
[modify_ai]
side={SIDE}
action=add
path=stage
{CANDIDATE_ACTION}
[/modify_ai]
#enddef
############################################################
# MODIFY_AI - DELETE
############################################################
####
# modify ai, delete facet from aspect
#
# example: {MODIFY_AI_DELETE_ASPECT 1 aggression night}
#define MODIFY_AI_DELETE_ASPECT SIDE ASPECT_ID FACET_ID
[modify_ai]
side={SIDE}
action=delete
path=aspect[{ASPECT_ID}].facet[{FACET_ID}]
[/modify_ai]
#enddef
####
# modify ai, delete a stage
#
# example: {MODIFY_AI_DELETE_STAGE 1 fallback}
# example: {MODIFY_AI_DELETE_STAGE 1 3}
#define MODIFY_AI_DELETE_STAGE SIDE STAGE_ID
[modify_ai]
side={SIDE}
action=delete
path=stage[{STAGE_ID}]
[/modify_ai]
#enddef
####
# modify ai, delete a goal
#
# example: {MODIFY_AI_DELETE_GOAL 1 kill_undead}
# example: {MODIFY_AI_DELETE_GOAL 1 0}
#define MODIFY_AI_DELETE_GOAL SIDE GOAL_ID
[modify_ai]
side={SIDE}
action=delete
path=goal[{GOAL_ID}]
[/modify_ai]
#enddef
####
# modify ai, delete candidate action from a stage
#
# example: {MODIFY_AI_DELETE_CANDIDATE_ACTION 1 special_poisoning_formula}
# example: {MODIFY_AI_DELETE_CANDIDATE_ACTION 1 0}
#define MODIFY_AI_DELETE_CANDIDATE_ACTION SIDE STAGE_ID CANDIDATE_ACTION_ID
[modify_ai]
side={SIDE}
action=delete
path=stage[{STAGE_ID}].candidate_action[{CANDIDATE_ACTION_ID}]
[/modify_ai]
#enddef
############################################################
# ASPECTS - DECLARATION
############################################################
#define AI_ASPECT ASPECT_ID FACET
#macro to define a named facet of ai aspect
[aspect]
id={ASPECT_ID}
{FACET}
[/aspect]
#enddef
############################################################
# ASPECTS - SIMPLE - DECLARATION (NO PREAMBLE NEEDED)
############################################################
# note: simple aspects are supposed to be used without a preamble
####
# simple aspect
#
#define AI_SIMPLE_ASPECT ASPECT_ID FACET_ID VALUE
{AI_ASPECT {ASPECT_ID}
(
[facet]
id={FACET_ID}
value={VALUE}
[/facet]
)}
#enddef
####
# simple aspect which is always active
#
#define AI_SIMPLE_ALWAYS_ASPECT ASPECT_ID VALUE
{AI_SIMPLE_ASPECT {ASPECT_ID} "always" {VALUE}}
#enddef
####
# simple aspect which is active during a specified time of day
#
#define AI_SIMPLE_ASPECT_FOR_TIME_OF_DAY ASPECT_ID FACET_ID TIMEOFDAY VALUE
{AI_ASPECT {ASPECT_ID}
(
[facet]
id={FACET_ID}
value={VALUE}
time_of_day={TIMEOFDAY}
[/facet]
)}
#enddef
####
# simple aspect which is active during the night
#
#define AI_SIMPLE_NIGHT_ASPECT ASPECT_ID VALUE
{AI_SIMPLE_ASPECT_FOR_TIME_OF_DAY {ASPECT_ID} "night" "dusk,first_watch,second_watch" {VALUE} }
#enddef
####
# simple aspect which is active during the day
#
#define AI_SIMPLE_DAY_ASPECT ASPECT_ID VALUE
{AI_SIMPLE_ASPECT_FOR_TIME_OF_DAY {ASPECT_ID} "day" "dawn,morning,afternoon" {VALUE} }
#enddef
############################################################
# ASPECTS - SIMPLE - ADD (NO PREAMBLE NEEDED)
############################################################
####
# modify ai, add simple facet to an aspect
#
#define MODIFY_AI_ADD_SIMPLE_ASPECT SIDE ASPECT_ID FACET_ID VALUE
{MODIFY_AI_ADD_ASPECT {SIDE} {ASPECT_ID}
(
[facet]
id={FACET_ID}
value={VALUE}
[/facet]
)}
#enddef
####
# modify ai, add simple aspect which is always active
#
#define MODIFY_AI_ADD_SIMPLE_ALWAYS_ASPECT SIDE ASPECT_ID VALUE
{MODIFY_AI_ADD_SIMPLE_ASPECT {SIDE} {ASPECT_ID} "always" {VALUE}}
#enddef
####
# modify ai, add simple aspect which is active during a specified time of day
#
#define MODIFY_AI_ADD_SIMPLE_ASPECT_FOR_TIME_OF_DAY SIDE ASPECT_ID FACET_ID TIMEOFDAY VALUE
{MODIFY_AI_ADD_ASPECT {SIDE} {ASPECT_ID}
(
[facet]
id={FACET_ID}
value={VALUE}
time_of_day={TIMEOFDAY}
[/facet]
)}
#enddef
####
# modify ai, add simple aspect which is active during the night
#
#define MODIFY_AI_ADD_SIMPLE_NIGHT_ASPECT SIDE ASPECT_ID VALUE
{MODIFY_AI_ADD_SIMPLE_ASPECT_FOR_TIME_OF_DAY {SIDE} {ASPECT_ID} "night" "dusk,first_watch,second_watch" {VALUE} }
#enddef
####
# modify ai, add simple aspect which is active during the day
#
#define MODIFY_AI_ADD_SIMPLE_DAY_ASPECT SIDE ASPECT_ID VALUE
{MODIFY_AI_ADD_SIMPLE_ASPECT_FOR_TIME_OF_DAY {SIDE} {ASPECT_ID} "day" "dawn,morning,afternoon" {VALUE} }
#enddef
####
# make the AI team not recruit scouts.
#
#define AI_NO_SCOUTS
{AI_SIMPLE_ALWAYS_ASPECT villages_per_scout 0}
#enddef
############################################################
# NO RECRUITMENT
############################################################
#define AI_NO_RECRUITMENT
[facet]
id="always"
[value]
engine=cpp
name=empty
[/value]
[/facet]
#enddef
############################################################
# NEW FORMULA_AI RECRUITMENT BY Dragonking (experimental!)
############################################################
#define AI_FORMULA_AI_EXPERIMENTAL_RECRUITMENT
[facet]
id="always"
[value]
engine=fai
name=side_formulas
move="{ai/formula/new_recruitment.fai}"
[/value]
[/facet]
#enddef
#define AI_SIMPLE_FORMULA_AI_EXPERIMENTAL_RECRUITMENT
{AI_ASPECT recruitment {AI_FORMULA_AI_EXPERIMENTAL_RECRUITMENT} }
#enddef
############################################################
# CANDIDATE_ACTIONS
############################################################
####
# poisoners should spread poison around
#
#define AI_CANDIDATE_ACTION_POISONING
[candidate_action]
engine=fai
name=poisoner
type=attack
[filter]
me="filter( input, 'me', filter(me.attacks,'att',filter(att.special,'spe',contains_string(spe,'poison'))))"
target="filter( input, 'target', target.undead = 0 and target.hitpoints > 5 and index_of('poisoned',keys(target.states)) = -1)"
[/filter]
evaluation="{ai/formula/poisoner_eval.fai}"
action="{ai/formula/poisoner_attack.fai}"
[/candidate_action]
#enddef
############################################################
# LEADER GOALS ( aspect[leader_goal] )
############################################################
####
# internal macro
#
#define _AI_ASPECT_LEADER_GOAL_MOVE_TO X Y AUTOREMOVE
[facet]
id="always"
[value]
id="always"
x={X}
y={Y}
auto_remove={AUTOREMOVE}
[/value]
[/facet]
#enddef
####
# move and be free;
#
#define AI_ASPECT_LEADER_GOAL_MOVE_TO X Y
{_AI_ASPECT_LEADER_GOAL_MOVE_TO {X} {Y} "yes"}
#enddef
####
# move and stay;
#
#define AI_ASPECT_LEADER_GOAL_MOVE_TO_AND_STAY_THERE X Y
{_AI_ASPECT_LEADER_GOAL_MOVE_TO {X} {Y} "no"}
#enddef
####
# AI leader goal "always" is cleared
#
#define CLEAR_AI_ALWAYS_ASPECT_LEADER_GOAL SIDE
{MODIFY_AI_DELETE_ASPECT {SIDE} leader_goal always}
#enddef
#define AI_CONTROLLER_ALLOW_LEADER_CONTROL SIDE_CONTROLLER SIDE_CONTROLLED
[store_unit]
[filter]
side={SIDE_CONTROLLED}
canrecruit=yes
[/filter]
kill=no
variable=ally_leader
[/store_unit]
[if]
[variable]
name=ally_leader.length
greater_than=0
[/variable]
[then]
[set_menu_item]
id=ai_controller_leader_control_{SIDE_CONTROLLED}
description= _ "Ask $ally_leader.name (leader of side $ally_leader.side) to move here"
[show_if]
side={SIDE_CONTROLLER}
#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} }
[/command]
[/set_menu_item]
[/then]
[/if]
[event]
name=victory
[set_menu_item]
id=ai_controller_leader_control_{SIDE_CONTROLLED}
[show_if]
[not]
[/not]
[/show_if]
[/set_menu_item]
[/event]
{CLEAR_VARIABLE ally_leader}
#enddef