1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-02 09:02:03 +02:00
Commit Graph

7781 Commits

Author SHA1 Message Date
Andrii Danylchenko
e6eb9ccc03 Nullkiller: dismising and hiring hero in order to defend town 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
84e5e6ac17 Nullkiller: rework defence a bit 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
1096f2e9e6 Nullkiller: town portal fixes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
a2ac19e4ec Nullkiller: defence behavior 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
f44c3f2aaf Nullkiller: improve handling of enemy hero value 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
6faac5aeca Nullkiller: improve artifact value evaluation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
642f3a3fa4 Nullkiller: fix a few freezes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
2798dcd6c5 Nullkiller: remove PRI* print macroses 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
682707e4f1 Nullkiller: fix build and warnings 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
fdd5be1e40 Nullkiller: fix build and some warnings 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
ada76a5603 Nullkiller: fix file headers, move fuzzy config to ai folder 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
1d561b9882 Nullkiller: fixes for partly visible objs 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
28b77e0b79 Nullkiller: rename fuzzy logic to .txt 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
e3c87fb58d Nullkiller: stabilisation and fixes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
bcf8db3d05 Nullkiller: startup scripts 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
5fe2630c64 Nullkiller: rework prioritization, add hero roles, skills and other variables 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
531d0af95b ai fixes for android 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
14adf1d108 AI: implement hero skills evaluator 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
01975e339b Nullkiller: android build fixes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
3744125270 Nullkiller: armed heros prefer armed targets 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
4bf653f596 AI: danger hitmap using visible enemy heroes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
04bf6f536d Nullkiller: temporary hacks to allow army buying 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
286d084445 Nullkiller: better tracing and hero locking for hero chain 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
ffa626dc2f AI: add ExecuteChain goal 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
37434dc4cf AI: hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
3ffcef30f6 AI: add army cost 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
f44eaf8132 AI: inefective chain cancellation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
0e328ab3c2 AI: hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
3a0d9fe14e AI: adding towns and dwellings to hero chain 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
8961f1c803 AI: fix hero exchange logic, allow splitting weakest-fastest creature, refactoring 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
e838e70165 ai fix town portal to occupied town 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
774f531c4e hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
87f1079c60 nullkiller&herochain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
62e5366a08 AI: rough hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
ff57a52001 Nullkiller: hero chain stabilisation 2021-07-26 21:02:50 +03:00
AlexVinS
dd046e60be Quick fix for https://bugs.vcmi.eu/view.php?id=3041 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
fa39279c82 Nullkiller - rough stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
cd0f479d7e Nullkiller: rough implementation of prioritization 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
eee145c486 Nullkiller: rough implementation of capture objects and recruit hero behaviors 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
9c85e26d3c Nullkiller: add engine and activate it for blue AI only. Engine does nothing 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
a88181acd7 AI: separate hero chain recalculation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
c1e521a544 Nullkiller - rough stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
9d70b28c9b AI: hero chain basic logic 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
1e4a086bb1 AI pathfinding loss evaluation 2021-07-26 21:02:50 +03:00
AlexVinS
594d1684e9 Switch to MinGW 7.3 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
0bff5f9eb6 AI pathfinding shared storage 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
be4f803d4a Nullkiller: copy VCAI 2021-07-26 21:02:50 +03:00
Sergei Trofimovich
e407d4e547 client/lobby/CBonusSelection.cpp: fix difficulty overflow in bonus UI
Before the change campaign bonus selection screen had inconsistent
overflow behaviour for difficulty selection:

```
    0 1 2 3 4 | available buttons: '-' to decrease
      ^       |                    '+' to increase
```

Before the change:

1. If we click '+' 5 times we will end up on difficulty=4 (ok, saturated).
2. If we click '-' 5 times we will end up on difficulty=1 (unexpected, wrap around).

After the change:

1. If we click '+' 5 times we will end up on difficulty=4 (saturated).
2. If we click '-' 5 times we will end up on difficulty=0 (saturated).

The inconsistency happens because `difficulty` variable has `ui8` type
and server uses `difficulty = vstd::abetween(difficulty, 0, 4)` to
implement the saturation.

For large positive values saturation works as expected:
    vstd::abetween(difficulty=5, 0, 4) -> 4
For small values it does not:
    vstd::abetween(difficulty=-1, 0, 4) -> 4

The change makes client to avoid using negative values.
2021-07-25 21:01:17 +03:00
Sergei Trofimovich
e4dd2f6dd8 client/lobby/SelectionTab.cpp: initialize generalSortingBy before use
Noticed use of uninitialized value when built vcmi with -fsanitize=undefined:

```
  Established connection with
    VCMI 0.99 b310f2e61e (server).
    UUID: bab9a90d-7416-4566-8817-e367ffcac7c1
  ../vcmi-9999/client/lobby/SelectionTab.cpp:138:16:
    runtime error: load of value 32717, which is not a valid value for type 'ESortBy'
  /usr/lib/gcc/x86_64-pc-linux-gnu/12.0.0/include/g++-v12/tuple:190:4:
    runtime error: load of value 32717, which is not a valid value for type 'ESortBy'
  /usr/lib/gcc/x86_64-pc-linux-gnu/12.0.0/include/g++-v12/tuple:190:4:
    runtime error: load of value 32717, which is not a valid value for type 'ESortBy'
```

Here (before the change) `SelectionTab()` used `generalSortingBy` before
first use:

```
    SelectionTab::SelectionTab(ESelectionScreen Type) {
        ...
        if(tabType != ESelectionScreen::campaignList)
        {
            ...
                ESortBy criteria = (ESortBy)i;
                if(criteria == _name)
                    criteria = generalSortingBy;

                buttonsSortBy.push_back(... std::bind(&SelectionTab::sortBy, this, criteria)));
            ...
        }
        ...
        switch(tabType)
        {
        case ESelectionScreen::newGame:
                generalSortingBy = ESortBy::_name;
        ....
```

The change moves `generalSortingBy` initialization before first use.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2021-07-25 21:00:31 +03:00
kdmcser
10cfefdf9d
fix bug: valid json will failed when object template contains zIndex (#698) 2021-07-18 10:44:44 +03:00