From 2ff8c1091b0b10b6bddcc5712e8a5b487b5d1dff Mon Sep 17 00:00:00 2001 From: Nordsoft91 Date: Sat, 3 Sep 2022 20:02:24 +0400 Subject: [PATCH] Final preparations for merge into develop (#780) * version updated, change log updated from release draft * horse sounds for terrains * Update and freeze essential files --- AUTHORS | 2 +- CMakeLists.txt | 4 +- ChangeLog | 55 +++++++++++++++--- .../CreaturePurchaseCard.png | Bin 0 -> 5666 bytes Mods/vcmi/Data/s/std.verm | 40 +++++++++++++ Mods/vcmi/Data/s/testy.erm | 14 +++++ Mods/vcmi/Maps/VCMI_Tests_2011b.h3m | Bin 0 -> 18793 bytes config/terrains.json | 30 ++++++---- lib/GameConstants.cpp | 4 +- 9 files changed, 126 insertions(+), 23 deletions(-) create mode 100755 Mods/vcmi/Data/QuickRecruitmentWindow/CreaturePurchaseCard.png create mode 100755 Mods/vcmi/Data/s/std.verm create mode 100755 Mods/vcmi/Data/s/testy.erm create mode 100755 Mods/vcmi/Maps/VCMI_Tests_2011b.h3m diff --git a/AUTHORS b/AUTHORS index c8a5bb872..c58bbfd79 100644 --- a/AUTHORS +++ b/AUTHORS @@ -80,4 +80,4 @@ Dmitry Orlov, * special buildings support in fan towns, new features and bug fixes Andrey Cherkas aka nordsoft, - * random map generator features and bug fixes \ No newline at end of file + * new terrain support, random map generator features and various bug fixes \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 86674ddf5..648de8e9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,8 +37,8 @@ if(NOT CMAKE_BUILD_TYPE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo) endif() -set(VCMI_VERSION_MAJOR 0) -set(VCMI_VERSION_MINOR 99) +set(VCMI_VERSION_MAJOR 1) +set(VCMI_VERSION_MINOR 0) set(VCMI_VERSION_PATCH 0) option(ENABLE_ERM "Enable compilation of ERM scripting module" ON) diff --git a/ChangeLog b/ChangeLog index b0c3d0597..57c7f4e37 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,12 @@ -0.99 -> 1.00 +0.99 -> 1.0 GENERAL: * Spectator mode was implemented through command-line options * Some main menu settings get saved after returning to main menu - last selected map, save etc. * Restart scenario button should work correctly now +* Skyship Grail works now immediately after capturing without battle +* Lodestar Grail implemented +* Fixed Gargoyles immunity * New bonuses: - SOUL_STEAL - "WoG ghost" ability, should work somewhat same as in H3 - TRANSMUTATION - "WoG werewolf"-like ability @@ -35,17 +38,53 @@ MODS: * Added bonus updaters for hero specialties * Added allOf, anyOf and noneOf qualifiers for bonus limiters * Added bonus limiters: alignment, faction and terrain +* Supported new terrains, new battlefields, custom water and rock terrains +* Following special buildings becomes available in the fan towns: +- attackVisitingBonus +- defenceVisitingBonus +- spellPowerVisitingBonus +- knowledgeVisitingBonus +- experienceVisitingBonus +- lighthouse +- treasury SOUND: * Fixed many mising or wrong pickup and visit sounds for map objects -* All map objects now have ambient sounds identical to OH3 - -RANDOM MAP GENERATOR: -* Random map generator supports water modes (normal, islands) -* Added config randomMap.json with settings for map generator -* Added parameter for template allowedWaterContent -* Extra resource packs appear nearby mines +* All map objects now have ambient sounds identical to OH3 + +RANDOM MAP GENERATOR: +* Random map generator supports water modes (normal, islands) +* Added config randomMap.json with settings for map generator +* Added parameter for template allowedWaterContent +* Extra resource packs appear nearby mines * Underground can be player starting place for factions allowed to be placed underground +* Improved obstacles placement aesthetics +* Rivers are generated on the random maps +* RMG works more stable, various crashes have been fixed +* Treasures requiring guards are guaranteed to be protected + +VCAI: +* Reworked goal decomposition engine, fixing many loopholes. AI will now pick correct goals faster. +* AI will now use universal pathfinding globally +* AI can use Summon Boat and Town Portal +* AI can gather and save resources on purpose +* AI will only buy army on demand instead of every turn +* AI can distinguish the value of all map objects +* General speed optimizations + +BATTLES: +* Towers should block ranged retaliation +* AI can bypass broken wall with moat instead of standing and waiting until gate is destroyed +* Towers do not attack war machines automatically +* Draw is possible now as battle outcome in case the battle ends with only summoned creatures (both sides loose) + +ADVENTURE MAP: +* Added buttons and keyboard shortcuts to quickly exchange army and artifacts between heroes +* Fix: Captured town should not be duplicated on the UI + +LAUNCHER: +* Implemented notifications about updates +* Supported redirection links for downloading mods 0.98 -> 0.99 diff --git a/Mods/vcmi/Data/QuickRecruitmentWindow/CreaturePurchaseCard.png b/Mods/vcmi/Data/QuickRecruitmentWindow/CreaturePurchaseCard.png new file mode 100755 index 0000000000000000000000000000000000000000..9920a1ea2a1e77f736ae22715be30f1ebda470e0 GIT binary patch literal 5666 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 O0G)dVkhkjai2njF1*NC} literal 0 HcmV?d00001 diff --git a/Mods/vcmi/Data/s/std.verm b/Mods/vcmi/Data/s/std.verm new file mode 100755 index 000000000..865997ce7 --- /dev/null +++ b/Mods/vcmi/Data/s/std.verm @@ -0,0 +1,40 @@ +VERM +; standard verm file, global engine things should be put here + +!?PI; +; example 1 --- Hello World +![print ^Hello world!^] + +; example 2 --- simple arithmetics +![defun add [x y] [+ x y]] +![print [add 2 3]] + +; example 3 --- semantic macros +![defmacro do-n-times [times body] + `[progn + [setq do-counter 0] + [setq do-max ,times] + [do [< do-counter do-max] + [progn + [setq do-counter [+ do-counter 1]] + ,body + ] + ] + ] +] +![do-n-times 4 [print ^tekst\n^]] + + +; example 4 --- conditional expression +![if [> 2 1] [print ^Wieksze^] [print ^Mniejsze^]] + +; example 5 --- lambda expressions +![[lambda [x y] [if [> x y] [print ^wieksze^] [print ^mniejsze^]]] 2 3] + +; example 6 --- resursion +![defun factorial [n] + [if [= n 0] 1 + [* n [factorial [- n 1]]] + ] +] +![print [factorial 8]] \ No newline at end of file diff --git a/Mods/vcmi/Data/s/testy.erm b/Mods/vcmi/Data/s/testy.erm new file mode 100755 index 000000000..082c1891e --- /dev/null +++ b/Mods/vcmi/Data/s/testy.erm @@ -0,0 +1,14 @@ +ZVSE +!?PI; + !!VRv2777:S4; + !!DO1/0/5/1&v2777<>1:P0; + +!?FU1; + !!VRv2778:Sx16%2; + !!IF&x16>3:M^Hello world number %X16! To duza liczba^; + !!IF&v2778==0&x16<=3:M^Hello world number %X16! To mala parzysta liczba^; + !!IF&v2778==1&x16<=3:M^Hello world number %X16! To mala nieparzysta liczba^; + +!?PI; + !!VRz10:S^Composed hello ^; + !!IF:M^%Z10%%world%%, v2777=%V2777, v2778=%V2778!^; \ No newline at end of file diff --git a/Mods/vcmi/Maps/VCMI_Tests_2011b.h3m b/Mods/vcmi/Maps/VCMI_Tests_2011b.h3m new file mode 100755 index 0000000000000000000000000000000000000000..6039eace4ab4718fd7640170f8dabaf2a21b0da5 GIT binary patch literal 18793 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 literal 0 HcmV?d00001 diff --git a/config/terrains.json b/config/terrains.json index 3b10c56d2..816e8ecb4 100644 --- a/config/terrains.json +++ b/config/terrains.json @@ -9,7 +9,8 @@ "code" : "dt", "river" : "rm", "battleFields" : ["dirt_birches", "dirt_hills", "dirt_pines"], - "terrainViewPatterns" : "dirt" + "terrainViewPatterns" : "dirt", + "horseSoundId" : 0 }, "sand" : { @@ -22,7 +23,8 @@ "river" : "rm", "battleFields" : ["sand_mesas"], "transitionRequired" : true, - "terrainViewPatterns" : "sand" + "terrainViewPatterns" : "sand", + "horseSoundId" : 1 }, "grass" : { @@ -33,7 +35,8 @@ "tiles" : "GRASTL", "code" : "gr", "river" : "rw", - "battleFields" : ["grass_hills", "grass_pines"] + "battleFields" : ["grass_hills", "grass_pines"], + "horseSoundId" : 2 }, "snow" : { @@ -44,7 +47,8 @@ "tiles" : "SNOWTL", "code" : "sn", "river" : "ri", - "battleFields" : ["snow_mountains", "snow_trees"] + "battleFields" : ["snow_mountains", "snow_trees"], + "horseSoundId" : 3 }, "swamp" : { @@ -55,7 +59,8 @@ "tiles" : "SWMPTL", "code" : "sw", "river" : "rw", - "battleFields" : ["swamp_trees"] + "battleFields" : ["swamp_trees"], + "horseSoundId" : 4 }, "rough" : { @@ -66,7 +71,8 @@ "tiles" : "ROUGTL", "code" : "rg", "river" : "rm", - "battleFields" : ["rough"] + "battleFields" : ["rough"], + "horseSoundId" : 5 }, "subterra" : { @@ -79,7 +85,8 @@ "code" : "sb", "river" : "rw", "battleFields" : ["subterranean"], - "rockTerrain" : "rock" + "rockTerrain" : "rock", + "horseSoundId" : 6 }, "lava" : { @@ -91,7 +98,8 @@ "code" : "lv", "river" : "rl", "battleFields" : ["lava"], - "rockTerrain" : "rock" + "rockTerrain" : "rock", + "horseSoundId" : 7 }, "water" : { @@ -104,7 +112,8 @@ "code" : "wt", "battleFields" : ["ship"], "transitionRequired" : true, - "terrainViewPatterns" : "water" + "terrainViewPatterns" : "water", + "horseSoundId" : 8 }, "rock" : { @@ -117,6 +126,7 @@ "code" : "rc", "battleFields" : ["rocklands"], "transitionRequired" : true, - "terrainViewPatterns" : "rock" + "terrainViewPatterns" : "rock", + "horseSoundId" : 9 } } diff --git a/lib/GameConstants.cpp b/lib/GameConstants.cpp index f9a5d84a2..ac9658bb1 100644 --- a/lib/GameConstants.cpp +++ b/lib/GameConstants.cpp @@ -51,9 +51,9 @@ const TeamID TeamID::NO_TEAM = TeamID(255); namespace GameConstants { #ifdef VCMI_NO_EXTRA_VERSION - const std::string VCMI_VERSION = std::string("VCMI 0.99"); + const std::string VCMI_VERSION = std::string("VCMI 1.0.0"); #else - const std::string VCMI_VERSION = std::string("VCMI 0.99 ") + GIT_SHA1; + const std::string VCMI_VERSION = std::string("VCMI 1.0.0.") + GIT_SHA1; #endif }