Difference between revisions of "TimeWML"

From The Battle for Wesnoth Wiki
(The [time] and [illuminated_time] tags)
(The [time] tag)
 
(8 intermediate revisions by 6 users not shown)
Line 6: Line 6:
 
Scenario author can schedule the times of day in scenario; use the pre-defined time macros, or create new times of day.
 
Scenario author can schedule the times of day in scenario; use the pre-defined time macros, or create new times of day.
  
== The [time] and [illuminated_time] tags ==
+
== The [time] tag ==
  
The [time] tag is a subtag of the [scenario] tag. However, most scenarios do not use these directly, but usually use the ready macros '''{DAWN}, {MORNING}, {AFTERNOON}, {DUSK}, {FIRST_WATCH}, {SECOND_WATCH}''' and '''{UNDERGROUND}''' to specify the day-night cycle.
+
The [time] tag is a subtag of the [scenario] tag. However, most scenarios do not use these directly, but usually use ready-made macros to specify the day-night cycle.
See '''data/core/macros/schedules.cfg''' for the definitions of these IDs.
+
See '''data/core/macros/schedules.cfg''' for the definitions of these macros.
  
 
The [time] tag describes a single turn of a day/night sequence. When a scenario is played, the first turn is described by the first [time] tag; the second described by the second, until there are no more. After all the tags have described a turn, the next turn is described by the first tag again.
 
The [time] tag describes a single turn of a day/night sequence. When a scenario is played, the first turn is described by the first [time] tag; the second described by the second, until there are no more. After all the tags have described a turn, the next turn is described by the first tag again.
Line 18: Line 18:
 
* '''id''': the id by which you can reference this time, e.g. in the ''time_of_day'' tag of [[AiWML]].
 
* '''id''': the id by which you can reference this time, e.g. in the ''time_of_day'' tag of [[AiWML]].
 
* '''name''': (translatable) the name displayed when the cursor is over the day/night image.
 
* '''name''': (translatable) the name displayed when the cursor is over the day/night image.
 +
* '''description''': (translatable) the description of the time displayed in the in-game help.
 
* '''image''': the image displayed at the top of the Status Table during turns of this type.
 
* '''image''': the image displayed at the top of the Status Table during turns of this type.
 
* '''mask''': the image displayed over all hexes during turns of this type.
 
* '''mask''': the image displayed over all hexes during turns of this type.
* '''liminal_bonus''': units with '''alignment=liminal''' do +//liminal_bonus'' % damage during turns of this type. Units with '''alignment=neutral''','''alignment=chaotic''' and '''alignment=lawful''' are unaffected by this key. ''liminal_bonus'' can be a negative number. This is useful if you want to give Liminal units a disadvantage instead of a bonus.
+
* '''lawful_bonus''': units with '''alignment=lawful''' do +''lawful_bonus'' % damage during turns of this type. Units with '''alignment=chaotic''' do -''lawful_bonus'' % damage. Units with '''alignment=neutral''' are unaffected by this key. Units with '''alignment=liminal''' do -(abs(''lawful_bonus'')) % damage. ''lawful_bonus'' can be a negative number. This is useful if you want to give Chaotic units an advantage instead of Lawful ones.
* '''lawful_bonus''': units with '''alignment=lawful''' do +//lawful_bonus'' % damage during turns of this type. Units with '''alignment=chaotic''' do -''lawful_bonus'' % damage. Units with '''alignment=neutral''' are unaffected by this key. ''lawful_bonus'' can be a negative number. This is useful if you want to give Chaotic units an advantage instead of Lawful ones.
 
 
* '''red''', '''green''', '''blue''': describe the tint of the screen during the time period.  Appears to be an integer value from -255 to 255.  See schedules.cfg for examples.
 
* '''red''', '''green''', '''blue''': describe the tint of the screen during the time period.  Appears to be an integer value from -255 to 255.  See schedules.cfg for examples.
 
* '''sound''': a sound to play (in sounds/) when changing into this time of day.
 
* '''sound''': a sound to play (in sounds/) when changing into this time of day.
 +
 +
=== Ready-made times and schedules ===
 +
 +
The following macros represent predefined times:
 +
 +
<syntaxhighlight lang='wml'>
 +
{DAWN}
 +
{MORNING}
 +
{MIDDAY}
 +
{AFTERNOON}
 +
{DUSK}
 +
{FIRST_WATCH}
 +
{MIDNIGHT}
 +
{SECOND_WATCH}
 +
{INDOORS}
 +
{UNDERGROUND}
 +
{DEEP_UNDERGROUND}
 +
</syntaxhighlight>
 +
 +
The latter three are typically used alone. The rest are more often used indirectly via one of the following predefined 6-step schedules:
 +
 +
<syntaxhighlight lang='wml'>
 +
{DEFAULT_SCHEDULE}
 +
{SUMMER_SCHEDULE}
 +
{WINTER_SCHEDULE}
 +
</syntaxhighlight>
 +
 +
Two alternate schedules are also available. Each individual time in these schedules has its own macro, but they won't be listed here.
 +
 +
<syntaxhighlight lang='wml'>
 +
{DEFAULT_SCHEDULE_24H}
 +
{TWO_SUNS_DEFAULT_SCHEDULE}
 +
</syntaxhighlight>
  
 
=== Scheduling time ===
 
=== Scheduling time ===
Line 32: Line 65:
 
The typical day/night cycle looks like this:
 
The typical day/night cycle looks like this:
  
{DAWN}
+
<syntaxhighlight lang='wml'>
{MORNING}
+
{DAWN}
{AFTERNOON}
+
{MORNING}
{DUSK}
+
{AFTERNOON}
{FIRST_WATCH}
+
{DUSK}
{SECOND_WATCH}
+
{FIRST_WATCH}
 +
{SECOND_WATCH}
 +
</syntaxhighlight>
  
To avoid day/night cycle, use a neutral time of day, for example:
+
To avoid day/night cycle, use a neutral time of day, for example {DAWN}. For underground scenarios, usually the {UNDERGROUND} time of day is used.
 
 
{DAWN}
 
 
 
In underground, use a special time of day.
 
 
It works like night; that is it gives advantage to chaotic units and disadvantage to lawful units.
 
It works like night; that is it gives advantage to chaotic units and disadvantage to lawful units.
 
{UNDERGROUND}
 
  
 
== See Also ==
 
== See Also ==
Line 52: Line 81:
 
* [[ScenarioWML]]
 
* [[ScenarioWML]]
 
* [[ReferenceWML]]
 
* [[ReferenceWML]]
 
  
 
[[Category: WML Reference]]
 
[[Category: WML Reference]]

Latest revision as of 04:01, 24 November 2023

[edit]WML Tags

A:

abilities, about, achievement, achievement_group, add_ai_behavior, advanced_preference, advancefrom, advancement, advances, affect_adjacent, ai, allied_with, allow_end_turn, allow_extra_recruit, allow_recruit, allow_undo, and, animate, animate_unit, animation, aspect, attack (replay, weapon), attack_anim, attacks (special, stats), avoid;

B:

base_unit, background_layer, berserk, binary_path, break, brush;

C:

campaign, cancel_action, candidate_action, capture_village, case, chance_to_hit, change_theme, chat, checkbox, choice, choose, clear_global_variable, clear_menu_item, clear_variable, color_adjust, color_palette, color_range, command (action, replay), continue, core, credits_group, criteria;

D:

damage, damage_type, death, deaths, default, defend, defends, defense, delay, deprecated_message, destination, difficulty, disable, disallow_end_turn, disallow_extra_recruit, disallow_recruit, do, do_command, drains, draw_weapon_anim;

E:

editor_group, editor_music, editor_times, effect, else (action, animation), elseif, endlevel, end_turn (action, replay), enemy_of, engine, entry (credits, options), era, event, experimental_filter_ability, experimental_filter_ability_active, experimental_filter_specials, extra_anim;

F:

facet, facing, fake_unit, false, feedback, female, filter (concept, event), filter_adjacent, filter_adjacent_location, filter_attack, filter_attacker, filter_base_value, filter_condition, filter_defender, filter_enemy, filter_location, filter_opponent, filter_own, filter_owner, filter_radius, filter_recall, filter_second, filter_second_attack, filter_self, filter_side, filter_student, filter_vision, filter_weapon, filter_wml, find_path, fire_event, firststrike, floating_text, fonts, for, foreach, found_item, frame;

G:

game_config, get_global_variable, goal, gold, gold_carryover;

H:

harm_unit, has_ally, has_attack, has_unit, has_achievement, have_location, have_unit, heal_on_hit, heal_unit, healed_anim, healing_anim, heals, hide_help, hide_unit, hides;

I:

idle_anim, if (action, animation, intro), illuminates, image (intro, terrain), init_side, insert_tag, inspect, item, item_group;

J:

jamming_costs, join;

K:

kill, killed;

L:

label, language, leader, leader_goal, leadership, leading_anim, levelin_anim, levelout_anim, lift_fog, limit, literal, load_resource, locale, lock_view, lua;

M:

male, menu_item, message, micro_ai, missile_frame, modification, modifications, modify_ai, modify_side, modify_turns, modify_unit, modify_unit_type, move, move_unit, move_unit_fake, move_units_fake, movement_anim, movement costs, movetype, multiplayer, multiplayer_side, music;

N:

not, note;

O:

object, objective, objectives, on_undo, open_help, option, options, or;

P:

part, petrifies, petrify, place_shroud, plague, poison, post_movement_anim, pre_movement_anim, primary_attack, primary_unit, print, progress_achievement, put_to_recall_list;

R:

race, random_placement, recall (action, replay), recalls, recruit, recruit_anim, recruiting_anim, recruits, redraw, regenerate, remove_event, remove_item, remove_object, remove_shroud, remove_sound_source, remove_time_area, remove_trait, remove_unit_overlay, repeat, replace_map, replace_schedule, replay, replay_start, reset_fog, resistance (ability, unit), resistance_defaults, resolution, resource, return, role, rule;

S:

save, scenario, screen_fade, scroll, scroll_to, scroll_to_unit, secondary_attack, secondary_unit, section, select_unit, sequence, set_achievement, set_extra_recruit, set_global_variable, set_menu_item, set_recruit, set_specials, set_variable, set_variables, sheath_weapon_anim, show_if (message, objective, set_menu_item), show_objectives, side, skirmisher, slider, slow, snapshot, sound, sound_source, source (replay, teleport), special_note, specials, split, stage, standing_anim, statistics, status, store_gold, store_items, store_locations, store_map_dimensions, store_reachable_locations, store_relative_direction, store_side, store_starting_location, store_time_of_day, store_turns, store_unit, store_unit_defense, store_unit_defense_on, store_unit_type, store_unit_type_ids, store_villages, story, swarm, sub_achievement, switch, sync_variable;

T:

target, team, teleport (ability, action), teleport_anim, terrain, terrain_defaults, terrain_graphics, terrain_mask, terrain_type, test, test_condition, test_do_attack_by_id, text_input, textdomain, theme, then, tile, time, time_area, topic, toplevel, trait, transform_unit, traveler, true, tunnel;

U:

unhide_unit, unit (action, scenario), unit_overlay, unit_type, unit_worth, units, unlock_view, unpetrify, unstore_unit, unsynced;

V:

value, variable, variables, variant, variation, victory_anim, village, vision_costs, volume;

W:

while, wml_message, wml_schema;

Z:

zoom;

The time of day influences damage done by lawful and chaotic units; this makes timing of your attack important. Graphically time of day is represented by a picture (landscape with sun or moon) in the status table, and by darkening the screen during night turns.

Scenario author can schedule the times of day in scenario; use the pre-defined time macros, or create new times of day.

The [time] tag

The [time] tag is a subtag of the [scenario] tag. However, most scenarios do not use these directly, but usually use ready-made macros to specify the day-night cycle. See data/core/macros/schedules.cfg for the definitions of these macros.

The [time] tag describes a single turn of a day/night sequence. When a scenario is played, the first turn is described by the first [time] tag; the second described by the second, until there are no more. After all the tags have described a turn, the next turn is described by the first tag again.


The [time] tag recognizes the following keys:

  • id: the id by which you can reference this time, e.g. in the time_of_day tag of AiWML.
  • name: (translatable) the name displayed when the cursor is over the day/night image.
  • description: (translatable) the description of the time displayed in the in-game help.
  • image: the image displayed at the top of the Status Table during turns of this type.
  • mask: the image displayed over all hexes during turns of this type.
  • lawful_bonus: units with alignment=lawful do +lawful_bonus % damage during turns of this type. Units with alignment=chaotic do -lawful_bonus % damage. Units with alignment=neutral are unaffected by this key. Units with alignment=liminal do -(abs(lawful_bonus)) % damage. lawful_bonus can be a negative number. This is useful if you want to give Chaotic units an advantage instead of Lawful ones.
  • red, green, blue: describe the tint of the screen during the time period. Appears to be an integer value from -255 to 255. See schedules.cfg for examples.
  • sound: a sound to play (in sounds/) when changing into this time of day.

Ready-made times and schedules

The following macros represent predefined times:

{DAWN}
{MORNING}
{MIDDAY}
{AFTERNOON}
{DUSK}
{FIRST_WATCH}
{MIDNIGHT}
{SECOND_WATCH}
{INDOORS}
{UNDERGROUND}
{DEEP_UNDERGROUND}

The latter three are typically used alone. The rest are more often used indirectly via one of the following predefined 6-step schedules:

{DEFAULT_SCHEDULE}
{SUMMER_SCHEDULE}
{WINTER_SCHEDULE}

Two alternate schedules are also available. Each individual time in these schedules has its own macro, but they won't be listed here.

{DEFAULT_SCHEDULE_24H}
{TWO_SUNS_DEFAULT_SCHEDULE}

Scheduling time

The [scenario] tag contains a few [time] tags (or macros). These time tags are used in a loop, that is: first time tag is used during the first turn, then second one,... and when all time tags passed then again the first one, second one, etc.

The typical day/night cycle looks like this:

{DAWN}
{MORNING}
{AFTERNOON}
{DUSK}
{FIRST_WATCH}
{SECOND_WATCH}

To avoid day/night cycle, use a neutral time of day, for example {DAWN}. For underground scenarios, usually the {UNDERGROUND} time of day is used. It works like night; that is it gives advantage to chaotic units and disadvantage to lawful units.

See Also

This page was last edited on 24 November 2023, at 04:01.