That’s why god invented the listener/observer pattern, you only propagate events that have listeners registered. The question is deciding which ones you want to provide as a API.
The ‘normal’ observer/eventbus pattern DOES have a problem of being far too ‘time agnostic’, where the user doesn’t have the notion of precedence of the events if he depends on that except if he does the timekeeping himself. A modification where the user could define a sequence (ex: visit city A then visit city B) and the game does the precedence bookkeeping and only present the ‘final’ event would be very helpful (being able to remove events/mark ‘only once’ is also a must).
Also the notion of user (modder) configurable events can be useful too. Imagine ‘send a event every 5 turns/steps/seconds(evil)’ (which i will use to check if the hero still has a bit of anti-venom and bottle–; it). Or ‘start a invasion +5 turns from now after picking up the sword of doom’, for a runtime modification example.
I was very impressed by heroes 3 modding diversity, as well as equally horrified by the means to get that (process direct memory editing… really?). So it would be a shame to deliver something less flexible for ‘years’, which will only make modders continue using those hacks and vcmi getting ‘ports’ (if any), not being the focus of development.
Someone will need to implement this. Our project is quite small so finding someone who wants to work on this AND have free time may not be that easy.
Configurable win\lose conditions by itself are useless - we don’t have working map editor where this conditions could be set. Original format is binary so it is not easy to edit.
“Would be cool to have X” discussions are fine but don’t expect any of this to be implemented soon.
About the second point: nothing stops you from expanding the supported file formats (i guess you already are anyway, with all the json files). So another way to specify maps, that is text editable, seems like a good idea, once you get to the point you have things to edit.
See what ALSV(FD) means (I’ve written about it two posts above yours) before going into discussion any further. Much more simple and AI-friendly. I think it would be good for AI to understand victory and loss conditions.
Where is this file? It seems my installation doesn’t have good1a.smk.
Json files are there to configure game rules. Sometimes they fill missing original configs, sometimes they fill gaps and sometimes they may be used to replace old OH3 configs. Enhancing maps with json files is a horrible idea. We in VCMI do not circumvent limitations like WoG does. If we are concerned about certain limitations, we try to make them nonexistent from the beginning. And we are concerned about mapping. A new map editor is going to be made and on top of it new map format will be created.
I have Heroes3.snd on my old installation, but no Heroes3.vid. GOG.com version of H3 doesn’t install Heroes3.vid (and there is no CD, of course), but it has much bigger video.vid file (seems to contain these campaign videos).
Yes, in GOG.com version, the videos are in the game directory, in Heroes3\Data, and in there, there are Heroes3.snd and Heroes3.vid. Are you planning on implementing them? Do you need anything else? Because I know most of the files in all of the archives.
Also, if it’s of any use to you right now, in SoD campaign Unholy Alliance, in Scenarios 9 and 10(I and J marked in editor), you have a victory condition of 3 artifacts, and a loss condition of 2 heroes.
OK, then I need matching between entries in cmpmovie.txt and filenames of videos corresponding to them. Campaign editor lists the movies with previews but alphabetically (names seem to match though).
Sorry it took me so much time, my internet was down.
The cmpmovie.txt puts them in an order of RoE, then AB, then SoD campaigns, I guess it’s some order in which they should be played. The only peculiarity there is that Spectre of power is shown before Unholy Alliance, and it’s the opposite order, you must complete Unholy Alliance to unlock the Spectre of Power. It seems there are other peculiarities with sorting.
It’s funny when you realize on some videos, what gibberish people say which is only heard when music and dialogue is off. xD
Some of them are used twice, there I put a question mark (?)in the end. And some of the entries in cmpmovie.txt actually have 2 videos put together. The first one being something longer that happens, and the second one being the one that’s repeating itself. There i put an exclamation mark (!).
Is it more useful to you to be here on the forums, or should I send it to you in a file?
The RoE campaigns have almost the exact same name with the entries in cmpmovie.txt.
So it’s like a comment, just so you know what are you using? And I should write voiceovers like that too?
My only question with writing like that is the levels that have 2 videos together, as I told you, there are 3 such videos, each 1 in RoE, SoD, and AB. I’m not sure if it’s a coincidence or on purpose. Do I need to fix my videos list, or is this fine?
I’m going to make the list for sounds, but how should I write it, since nobody found a list for voiced intros? I’m going to write file names, and something that will remind me to know where it should be. Though it might be a little long.
EDIT:
Here they are, maybe it’s not too good. I don’t know what do you need it for and how do you need it. Does it need some connection with the videos?
And also, sorry if it bothers you that the filenames are scrambled, it’s the alphabetical order, as it is in the .snd archive.
"ABvoAB1.wav", //Armageddon's Blade 1
"ABvoAB2.wav", //Armageddon's Blade 2
"ABvoAB3.wav", //Armageddon's blade 3
"ABvoAB4.wav", //Armageddon's blade 4
"ABvoAB5.wav", //Armageddon's blade 5
"ABvoAB6.wav", //Armageddon's blade 6
"ABvoAB7.wav", //Armageddon's blade 7
"ABvoAB8.wav", //Armageddon's blade 8
"ABvoAB9.wav", //Armageddon's blade 8end
"ABvoDB1.wav", //Dragon's Blood 1
"ABvoDB2.wav", //Dragon's Blood 2
"ABvoDB3.wav", //Dragon's Blood 3
"ABvoDB4.wav", //Dragon's Blood 4
"ABvoDB5.wav", //Dragon's Blood 4end
"ABvoDS1.wav", //Dragon Slayer 1
"ABvoDS2.wav", //Dragon Slayer 2
"ABvoDS3.wav", //Dragon Slayer 3
"ABvoDS4.wav", //Dragon Slayer 4
"ABvoDS5.wav", //Dragon Slayer 4end
"ABvoFL1.wav", //Festival of Life 1
"ABvoFL2.wav", //Festival of Life 2
"ABvoFL3.wav", //Festival of Life 3
"ABvoFL4.wav", //Festival of Life 4
"ABvoFL5.wav", //Festival of Life 4end
"ABvoFW1.wav", //Foolhardy Waywardness 1
"ABvoFW2.wav", //Foolhardy Waywardness 2
"ABvoFW3.wav", //Foolhardy Waywardness 3
"ABvoFW4.wav", //Foolhardy Waywardness 4
"ABvoFW5.wav", //Foolhardy Waywardness 4end
"ABvoPF1.wav", //Playing with Fire 1
"ABvoPF2.wav", //Playing with Fire 2
"ABvoPF3.wav", //Playing with Fire 3
"ABvoPF4.wav", //Playing with Fire 3end
"E1A.wav", //Dungeons and Dragons 1
"E1B.wav", //Dungeons and Dragons 2
"E1C.wav", //Dungeons and Dragons 3
"E2A.wav", //Long live the King 1
"E2AE.wav", //Long live the King 1end
"E2B.wav", //Long live the King 2
"E2C.wav", //Long live the King 3
"E2D.wav", //Long live the King 4
"G1A", //Long live the Queen 1
"G1B", //Long live the Queen 2
"G1C", //Long live the Queen 3
"G2A", //Liberation 1
"G2B", //Liberation 2
"G2C", //Liberation 3
"G2D", //Liberation 4
"G3A", //Song for the Father 1
"G3B", //Song for the Father 2
"G3C", //Song for the Father 3
"H3x2BBa", //Birth of a Barbarian 1
"H3x2BBb", //Birth of a Barbarian 2
"H3x2BBc", //Birth of a Barbarian 3
"H3x2BBd", //Birth of a Barbarian 4
"H3x2BBe", //Birth of a Barbarian 5
"H3x2BBf", //Birth of a Barbarian 5end
"H3x2ELa", //Elixir of life 1
"H3x2ELb", //Elixir of life 2
"H3x2ELc", //Elixir of life 3
"H3x2ELd", //Elixir of life 4
"H3x2ELe", //Elixir of life 4end
"H3x2HSa", //Hack and Slash 1
"H3x2HSb", //Hack and Slash 2
"H3x2HSc", //Hack and Slash 3
"H3x2HSd", //Hack and Slash 4
"H3x2HSe", //Hack and Slash 4end
"H3x2NBa", //New Beginning 1
"H3x2NBb", //New Beginning 2
"H3x2NBc", //New Beginning 3
"H3x2NBd", //New Beginning 4
"H3x2NBe", //New Beginning 4end
"H3x2RNa", //Rise of the Necromancer 1
"H3x2RNb", //Rise of the Necromancer 2
"H3x2RNc", //Rise of the Necromancer 3
"H3x2RNd", //Rise of the Necromancer 4
"H3x2RNe", //Rise of the Necromancer 4end
"H3x2SPa", //Spectre of Power 1
"H3x2Spb", //Spectre of Power 2
"H3x2Spc", //Spectre of Power 3
"H3x2Spd", //Spectre of Power 4
"H3x2Spe", //Spectre of Power 4end
"H3x2UAa", //Unholy alliance 1
"H3x2UAb", //Unholy alliance 2
"H3x2UAc", //Unholy alliance 3
"H3x2UAd", //Unholy alliance 4
"H3x2UAe", //Unholy alliance 5
"H3x2UAf", //Unholy alliance 6
"H3x2UAg", //Unholy alliance 7
"H3x2UAh", //Unholy alliance 8
"H3x2UAi", //Unholy alliance 9
"H3x2UAj", //Unholy alliance 10
"H3x2UAk", //Unholy alliance 11
"H3x2UAl", //Unholy alliance 12
"H3x2UAm", //Unholy alliance 12end
"N1A", //Spoils of War 1
"N1B", //Spoils of War 2
"N1C_D", //Spoils of War 3
"S1A", //Seeds of discontent 1
"S1B", //Seeds of discontent 2
"S1C", //Seeds of discontent 3
No, they’re not. I still haven’t implemented those victory conditions (I’d like to make that customizable system for victory/loss conditions first). Custom campaigns (that don’t use them) should be more or less playable up to bugs. There are minor things missing too like saves between campaigns.
I don’t have Heroes Chronicles. I think it would be nice to support them but right now it seems no developer wants to do it.
In this case I got a bug - start Long Live the Queen and use vcmisilmaril to advance to 2nd scenario - game hangs on loading. Very likely due to fact that on that map player don’t have any heroes or towns - only placeholders.
And on Chronicles - they would need support for custom scenario selection menu instead of using one of H3 maps. As well as some mechanism to distinguish Tarnums from different Chronicles - different class, starting skills, army while uses same numeric ID.
How are you going to implement those? Are they going to be available later when you make the VCMI editor?
I wanted to test the castle siege now, I was playing Birth of a Barbarian. I attacked the town. It seemed as my catapult never broke any walls in 3 turns, then I moved golems onto the spot where the mine should be and the golem died, there was no info in the battle log, so I’m not sure if the mines do that much damage. Also, there was no mine animation, just golems dying, then I moved nagas to the place where there should be no mine since golems destroyed it, but my Naga died too. I lost Yog, which is the loss condition, but I could still play. Then when I chose another hero and wanted to do something, the game crashed. Sorry for the long bugs explanation.
Also, the heroes chronicles seem to work somehow now, it’s just that it occasionally crashes, same happens on my regular H3, without the use of HD mod or WoG/ERA.