194 Commits

Author SHA1 Message Date
walodar
6eb2246eff
Colored attack type icons, resistances and movement costs. Reordered resistances. (#5264)
Using colors to make relevant information stand out at a quick glance.

The six attack type icons are recolored using the six equidistant hues cyan, green, yellow, red, magenta and blue, with the same saturation and lightness as the old icons. The images are optimized with woptipng.

Resistances and movement costs are colored using a gradient from red to green, like the defense values.

The resistance table in the help browser now also shows the attack type icons.

Previously, the resistance table was always ordered alphabetically by their original English names (not their translation, unlike the terrain modifiers). Now, the order is set to blade - pierce - impact - fire - cold - arcane.

These changes are made in all relevant areas, including the help browser, tooltips, the sidebar and dialogs.

Missing icons are handled by replacing them with a blank image scaled to the same size.
2022-08-01 17:57:46 -05:00
Tommy
3127178e17 Add a submerge value to items, to control submerge amount
It defaults to 0, which is no submersion.
2022-07-30 14:56:38 +12:00
Celtic Minstrel
53b6f892dc That just... doesn't even do anything... 2022-07-26 00:03:17 -04:00
Gunter Labes
1a49e91b0a
Schema: Use correct type 2022-07-19 15:35:18 +02:00
Gunter Labes
7c021b73cb
Schema: Add missing modify_unit_type keys 2022-07-19 15:22:36 +02:00
Steve Cotton
2e28ed4617 Schema: the [fire_event][data] tag is optional
Fixup for 715cf386.
2022-07-19 13:09:29 +02:00
Celtic Minstrel
715cf3864e Add missing tag in the schema 2022-07-19 02:10:02 -04:00
Celtic Minstrel
42889232ea Update schema for the new [event] options 2022-07-18 21:56:42 -04:00
Tommy
8144c06389
Add new [screen_fade] WML action (#6864)
* Add new [screen_fade] WML action

It takes (for now) the arguments:
 * red, green, blue = values between 0 and 255
 * alpha = value between 0 and 255
 * duration = time in ms over which to fade

The game display is faded to the given colour over the duration.
It will be left with an overlay of that colour and alpha until
a screen_fade to 0 alpha is performed.
2022-07-15 09:32:19 -04:00
Tommy
613f047c1e Remove hex_brightening config option
It is not used, and appears to have been unused for a long time.
It was related to mouseover hex brightening, but the brightening
amount is hardcoded. There were associated hex_semi_brightening,
mouseover_image and selected_image keys, but that info is also
hardcoded, and those keys appear to have been removed already.
2022-07-01 15:06:25 +12:00
mattsc
38978feadd Schema: allow key values to be variables 2022-06-28 09:47:11 -05:00
mattsc
6fcca95be0 Schema: Add missing path key to [textdomain] 2022-06-28 09:47:11 -05:00
mattsc
ce9ba142bc Add new AI aspect allow_ally_villages 2022-06-22 08:00:50 -07:00
Tommy
ebcae03e48 Add a new image tiling mode: "tile_highres" for high-DPI tiled images.
The other options "tile" and "tile_center" work in draw space,
which is consistent with past behaviour, but doesn't look as nice.
2022-06-14 14:48:03 +12:00
Tommy
638c02b59e Rename image_shape.vertical_mirror_ to mirror_.
It is in fact (and always was) mirroring horizontally.
2022-05-31 21:17:33 +12:00
Celtic Minstrel
a76aa9bddc
Add wesnoth.interface.add_floating_label as a replacement for wesnoth.print (#5837)
This returns a label handle which allows you to remove, reposition, or replace the label later.

In addition to all the features of wesnoth.print, you can now specify where the label appears onscreen, as well as a fadeout time separate from the duration.

You can also anchor the text to an edge or corner instead of centering in on the screen,
specify the maximum width it can occupy as an absolute width or a percentage,
and specify a background colour and transparency.

It includes a demo scenario that demonstrates many of the capabilities of the API.
To play the demo scenario, run with -toverlay_text_demo or select it from the in-game test list.
2022-04-10 13:00:29 -04:00
Pentarctagon
c3a5763f03
Fix schema. 2022-04-08 11:49:02 -05:00
Celtic Minstrel
b53fc5979f
Schema: Add category and creator keys to [label]
These were added in af6d3060e246a59c24c78502069109ceac44cc44

Partially addresses #6447
2022-01-16 11:53:49 -05:00
newfrenchy83
0813c60142 add 'multiply' and 'divide' 2021-12-09 18:04:24 +01:00
newfrenchy83
3e70b335da fix 'add' and 'sub' not added in leadership shema validation 2021-12-09 18:04:24 +01:00
Celtic Minstrel
9ad9833789 AI: Support [unit][ai][candidate_action]
This is essentially a syntax sugar for adding a candidate action filtered to only run for that single unit.
2021-09-04 22:20:28 -04:00
Celtic Minstrel
880ef29075 AI: Support [unit][ai][micro_ai] 2021-09-04 22:20:28 -04:00
Celtic Minstrel
477a871c21 AI: Support [side][ai][micro_ai]
Closes #5910
2021-09-04 22:20:28 -04:00
Celtic Minstrel
59c9be1238 Schema: Add [candidate_action][filter_own] 2021-09-04 22:20:28 -04:00
Pentarctagon
545e5ffa29
Fixup WC schema validation failures. 2021-09-01 19:41:53 -05:00
Pentarctagon
31fc9dfe44
Remove duplicate schema attributes. 2021-08-12 00:23:26 -05:00
Pentarctagon
6d8042b028
Schema update for [era]. 2021-08-11 21:56:46 -05:00
Charles Dang
465a5b44b1 Fixup schema 2021-08-09 01:07:47 -04:00
Charles Dang
3d87478a29 GUI2: add resize_mode=scale_sharp for [image] shapes 2021-08-09 00:45:23 -04:00
Celtic Minstrel
cf9fbdd516 WC: Fix schema
When one attribute is dependent on another, apparently order matters.
2021-06-27 10:54:51 -04:00
Celtic Minstrel
81b147bc51 WC: Update schema 2021-06-27 02:38:39 -04:00
Celtic Minstrel
874af80fb4 WC: Missed some cases of id_suffix 2021-06-27 00:56:00 -04:00
Steve Cotton
264f90eed4 Default [print]duration= to 5 seconds, tutorial uses "unlimited"
In 1.14, the default was 50 frames, or around 1.7 seconds. In 1.15.4, commit
a9d9e48c72e70fd41ae9759e3894752eb9708596 changed the interpretation of that
number to milliseconds, but missed that this affected the [print] tag; this
left the default time that the text is shown as an unreadable 50ms.

All places in mainline that use [print] specify a duration, so the default
isn't used. Here I've plucked the new value from UtBS S09, where it was chosen
in f405b916a1141c2a4bc3bda3f88bbe0a8b8fe91b.

The special value "unlimited" is now recognised as meaning to display the text
until it's removed by another [print] tag. The tutorial uses this special case
to display the text until the player does the requested move - originally it
displayed the text for 10000 frames (around 40 minutes), which still seemed
reasonable when it changed to 10000ms.
2021-06-19 07:08:17 +02:00
Celtic Minstrel
d39e6b3f42 Schema: Make turns validation more generic
This means other things can now easily accept the special keyword "unlimited".
2021-06-18 13:53:34 -04:00
Celtic Minstrel
0c42cdc038
Enable translation mark validation by the schema (#5800)
- The t_string type is now a schema built-in type and no longer attempts a regex match.
- You can also specify that non-t_string types may be optionally-translatable; this case supports a regex match on the string (but note that the translation mark is not part of the match).
- Error messages involving keys with very large values ( > 128 characters) will now truncate the value.
- To account for occasional cases where the schema is intentionally violated, the --validate command-line option now automatically defines the SCHEMA_VALIDATION preprocessor define.

A key validates as type t_string if one of the following is true:
- The key is not present
- The key has at least one segment with a translation mark
- The key is blank (an empty string)

Any type other than t_string is not allowed to be translatable by default, unless you specify allow_translatable=yes in the [type] tag.

An optionally-translatable string could also be defined as a union of t_string and some other type.
2021-06-14 23:59:52 -04:00
Celtic Minstrel
d5b8d96118
Schema: Add lua_goal support (#5833)
Also add an else to the goal validation cases, which will produce an error in the event of an invalid name value
2021-06-05 23:20:20 -04:00
Steve Cotton
0fdf52058b Support [movetype][special_note] and [language]special_note_damage_type_*
Refactor special notes for abilities, attack types, movetypes and weapon specials

An easier way of setting special notes in the most common use-cases. Text given
in the following attributes will be collected and added to the special notes
for units and unit types (some of these were added in the previous commit):

* [ability tag name]special_note=
* [language]special_note_damage_type_TYPE=
* [movetype][special_note]note=
* [attack][specials][special tag name]special_note=

It's no longer necessary to put these notes in each unit_type's .cfg file, and
the macros for doing so are now deprecated.

C++ changes
-----

Simplify both unit_type::special_notes and unit::unit_special_notes. Add
utils::stable_unique, similar to std::unique but accepts non-ordered input and
preserves the order in the output.

Remove unit_type::has_special_notes() - callers can instead call
special_notes() and then check if the returned vector is empty, which removes
the need for duplicating code in unit_type.

Trade-off: the new [language]special_note_damage_type_TYPE is likely deprecated in 1.19.
-----

Adding [language]special_note_damage_type_TYPE= uses the same existing design
as [language]type_TYPE=, however both are hacks that don't fit the general
style of WML. It could be better to define a new [damage_type] tag that
supercedes both and also provides a place for specifying the damage icon;
however that won't be done in time for the API freeze for 1.16.

Doing it in the way that this commit does it is a hack, but it's one where
replacing it with the better solution in 1.18 will affect very few UMCs (only
those that define additional damage types). Even in the UMCs that would be
affected, it would likely only be a few changes in a single central file.

Trade-off: NOTE_DEFENSE_CAP is not auto-added
-----

It might be better to auto-add NOTE_DEFENSE_CAP when movetype.cpp detects that
the type has capped values. However as NOTE_SPIRIT already requires
[movetype][special_note], it's simple to use the same mechanism. If we decide
to change it to being auto-added, the current commit greatly reduces the number
of places that would need to change again, as it's now in the [movetype]
instead of the many [unit_type]s using that movetype.
2021-06-01 14:29:57 +02:00
Celtic Minstrel
3568b5ff66 An easier way of setting special notes in the most common use-case (abilities and weapon specials)
Rebased version of e6c58fc35cc398d70f31817f8b3ba783bfa08a6d, with merge conflicts resolved.
2021-06-01 14:29:57 +02:00
Steve Cotton
c560b0efab Add attribute apply_to_vision to [effect]apply_to=movement
When processing [effect]apply_to=movement, if apply_to_vision is 'yes'
(which is the default) then the vision points will change by the same amount.
Previously, it sometimes affected vision and sometimes didn't; for most cases
where it makes a difference, I expect it to be a change from unanticipated
behavior to expected behavior.

Please refer to the new unit test added in this commit for more detailed docs;
that test is also a rough draft for the Wiki update needed when this merges.

The reason it sometimes affected vision was that the special value of -1 vision
points was interpreted as "use the value of the max movement points instead".
The special value of -1 is still supported and frequently used, and refactor that
is out of scope for this commit - it's easy to check when the code path changed
in this commit is used, however it's considerably more complex to find all
routes that create a unit with vision set to -1.

I'm expecting one add-on, Rebirth In Nature, to need a large update for this;
as well as a trivial change needed to the Add Creature Pack.

There are several mods that have their own handling for vision, recalculate the
values frequently, and are expected to continue working as before, as they'll
just overwrite any changes that the engine makes.
* Proper Flying Mod / Proper Vision Mod
* LotI
* Blessed Altar Mod
* Shards Era's `CALCULATE_WEAPONS_ONLY` macro
* Castle of Evil Spirit

Rebirth In Nature is an RPG-style campaign that expects the player's unit to
have vision separated from movement along with right-click menus that change
the character's movement, this will probably need `apply_to_vision=no` in
many places. OTOH, its `item_id=mobility` uses `apply_to=movement` followed by
`apply_to=vision` to implement in 1.14 what this change will make default
behavior in 1.16.

There are a few sharpshooter units which have vision better than their
movement. If given a buff which boosts their movement, this will give
them a buff to vision too; likely a change towards expected behavior.
* Archaic Era's Royal Ranger
* Ageless Era's Royal Ranger and Dwarvish Forest Sniper
* Eastern Europe at War's Yacht and Great Yacht
* Era of More Units's Lone Wolf
* Southernerns has several sharpshooters
* WWII Era has several sharpshooters
* War of Dominions has some guard towers with very low movement

Silver Age has abilities that modify vision based on time-of-day, but unlike
the Proper Flying Mod and LotI these are done by adding and removing objects
that add or subtract one vision point, these should be unaffected by this
change. Unrelated to that, it declares values for `[unit_type]vision=` even
when the value is the same as max moves - like the sharpshooters this means
that buffs to their movement wouldn't have buffed their vision but now do.

There are few units with vision less than movement. Generally these seem to be
missile weapons that are represented as units, and they probably won't meet any
apply_to=movement statements - even if a movement power-up is available, the
player would probably choose a different unit.

The Add Creature Pack has two creatures (the Cactose Elder and Carnivore Fatal
Plant) that have reduced vision, along with AMLAs that increase those units'
movement; these AMLAs will need to use `apply_to_vision=no`. These two
creatures are used in Castle of Evil Spirit, but they won't get enough
experience to get an AMLA there.

Fixes #3356.
2021-05-13 18:02:36 +02:00
newfrenchy83
00452c0187
add 'ability_id_active' attribute to filter (#5739)
Add 'ability_id_active' attribute to filter

Until now, only the type of ability could be filtered with activity, and id only for unit who have ability, same if she's inactive.
2021-05-03 14:38:05 -05:00
newfrenchy83
d4ce159c8d modify overwrite_specials attribute in schema 2021-04-20 23:30:23 -05:00
Celtic Minstrel
0aded2dcf8 Schema: [do_command] supports a sequence of commands 2021-04-10 18:18:48 -04:00
Celtic Minstrel
0839feed00 Schema: Add missing accuracy/parry keys to [attack] 2021-04-10 18:18:48 -04:00
mattsc
f1c37f64ac
Merge pull request #5630 from mattsc/remove_fai_uses
Remove Formula AI uses
2021-03-24 08:04:47 -07:00
mattsc
64b672f9ef Add Swarm Micro AI [filter] tag to schema 2021-03-22 10:54:59 -07:00
mattsc
4562bbae56 Add new Micro AI parameters to schema and emacs_mode 2021-03-21 16:23:59 -07:00
newfrenchy83
e3b737cfd6
Add [teaching_anim] for abilities used like weapon specials given by an adjacent unit
When a unit gives adjacent units abilities used like weapon specials, and is not already showing an animation from giving a resistance or leadership effect, a [teaching_anim] can be played instead.
2021-03-15 10:30:30 -05:00
Celtic Minstrel
9fb200e57a
Fix the schema 2021-03-05 22:17:41 -05:00
mattsc
7e8cedaea8
Merge pull request #5573 from mattsc/ca_retreat_injured
AI: Improve behavior of the retreat_injured CA
2021-03-03 08:22:21 -08:00
Steve Cotton
37bf7f9333 Update the schema for [terrain_mask] 2021-02-28 15:47:00 +01:00