0.72 bugs and issues

27 - Bugs when Scholar wants to teach a Secondary Skill that the hero already knows (reproducible):

27.1. If the hero has the Basic skill already, we get a pop-up saying he now received “Advanced”, however when we open Hero screen we see he actually became Expert.

27.2. If the hero has Advanced already, we get the pop-up saying he received “Expert”, however if we try to open Hero screen, the game crashes.

27.3. If the hero is Expert already, he does get a Primary Skill instead, however if we try to open Hero screen, the game crashes again.

You can easily reproduce all the above by loading the attached map and taking Edric to the Scholars in front of him (he’s set up with the Secondary Skills the Scholars have to offer, at the three different levels). I also saved the crash logs, but I’m pretty sure they won’t be necessary.

[size=75]PS: You can also use the attached map for level-up testing (I’ve locked Astral’s starting Experience at 0 to avoid any confusion regarding the Experience gained from the Trees of Knowledge)[/size]
just testing.h3m (4.54 KB)

28 - Crash when trying to pick up artifact close to the edge of the Deluge map:

i4.photobucket.com/albums/y104/Zamolxis/VCMI/VCMI%2007/th_090607-Delugecrashwhenpickingartifa.jpg

I’m attaching below the logs and the savegame before picking the Pendant of Death, as this bug is not reproducible.

29 - Crash when trying to enter Monolith Two Way on Deluge map. It’s always reproducible - use the same saved game, and go to the Monolith south of your castle (I’m also attaching the logs, not sure if useful).
090607 - Deluge crash when picking artifact at map edge.zip (67 KB)
090607 - Deluge crash when trying to enter Monolith Two Way.zip (5.2 KB)

30 - cannot compile rev 941

[user@1x1linux ~]$ cd trunk
[user@1x1linux trunk]$ LANG=C make
Making all in lib
make[1]: Entering directory `/home/user/trunk/lib'
make[2]: Entering directory `/home/user/trunk'
make[2]: Leaving directory `/home/user/trunk'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/user/trunk/lib'
Making all in client
make[1]: Entering directory `/home/user/trunk/client'
g++ -DPACKAGE_NAME=\"vcmi\" -DPACKAGE_TARNAME=\"vcmi\" -DPACKAGE_VERSION=\"VERSION\" -DPACKAGE_STRING=\"vcmi\ VERSION\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"vcmi\" -DVERSION=\"VERSION\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_BOOST=/\*\*/ -DHAVE_BOOST_SYSTEM=/\*\*/ -DHAVE_BOOST_FILESYSTEM=/\*\*/ -DHAVE_BOOST_THREAD=/\*\*/ -DHAVE_BOOST_IOSTREAMS=/\*\*/ -DHAVE_LIBSDL=1 -DHAVE_LIBSDL_MIXER=1 -DHAVE_LIBSDL_IMAGE=1 -DHAVE_LIBSDL_TTF=1 -DSTDC_HEADERS=1 -DHAVE_FCNTL_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_BOOST_FILESYSTEM_HPP=1 -DHAVE_BOOST_ALGORITHM_STRING_HPP=1 -DHAVE_BOOST_ALGORITHM_STRING_REPLACE_HPP=1 -DHAVE_BOOST_FILESYSTEM_OPERATIONS_HPP=1 -DHAVE_BOOST_ASSIGN_STD_VECTOR_HPP=1 -DHAVE_BOOST_ALGORITHM_STRING_FIND_HPP=1 -DHAVE_BOOST_FUNCTION_HPP=1 -DHAVE_BOOST_BIND_HPP=1 -DHAVE_ATEXIT=1 -DHAVE_MEMSET=1 -DHAVE_POW=1 -DHAVE_SELECT=1 -DHAVE_SQRT=1 -I.   -pthread -I/usr/include -O0 -ggdb -Wall -Wcast-align -Wmissing-declarations -Wpointer-arith -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -O0 -ggdb -Wall -Wcast-align -Wmissing-declarations -Wpointer-arith -MT vcmiclient-mapHandler.o -MD -MP -MF .deps/vcmiclient-mapHandler.Tpo -c -o vcmiclient-mapHandler.o `test -f '../mapHandler.cpp' || echo './'`../mapHandler.cpp
../mapHandler.cpp: In function 'void alphaTransformDef(CGDefInfo*)':
../mapHandler.cpp:104: warning: comparison between signed and unsigned integer expressions
../mapHandler.cpp:106: error: void value not ignored as it ought to be
../mapHandler.cpp: In function 'void processDef(CGDefInfo*)':
../mapHandler.cpp:458: error: void value not ignored as it ought to be
../mapHandler.cpp: In member function 'void CMapHandler::init()':
../mapHandler.cpp:495: warning: comparison between signed and unsigned integer expressions
../mapHandler.cpp: In member function 'SDL_Surface* CMapHandler::terrainRect(int, int, int, int, int, unsigned char, std::vector<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > >, std::allocator<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > > > >*, bool, unsigned char, SDL_Surface*, SDL_Rect*, int, int, bool)':
../mapHandler.cpp:580: warning: taking address of temporary
../mapHandler.cpp:590: warning: taking address of temporary
../mapHandler.cpp:594: warning: taking address of temporary
../mapHandler.cpp:598: warning: taking address of temporary
../mapHandler.cpp:602: warning: taking address of temporary
../mapHandler.cpp:612: warning: taking address of temporary
../mapHandler.cpp:616: warning: taking address of temporary
../mapHandler.cpp:620: warning: taking address of temporary
../mapHandler.cpp:624: warning: taking address of temporary
../mapHandler.cpp:658: warning: taking address of temporary
../mapHandler.cpp:692: warning: taking address of temporary
../mapHandler.cpp:711: warning: comparison between signed and unsigned integer expressions
../mapHandler.cpp:822: warning: taking address of temporary
../mapHandler.cpp:849: warning: taking address of temporary
../mapHandler.cpp: In member function 'SDL_Surface* CMapHandler::getVisBitmap(int, int, const std::vector<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > >, std::allocator<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > > > >&, int)':
../mapHandler.cpp:927: warning: unused variable 'd5'
../mapHandler.cpp: In member function 'bool CMapHandler::printObject(const CGObjectInstance*)':
../mapHandler.cpp:1234: warning: unused variable 'curt'
../mapHandler.cpp: In destructor 'CMapHandler::~CMapHandler()':
../mapHandler.cpp:1431: warning: comparison between signed and unsigned integer expressions
../mapHandler.cpp:1434: warning: comparison between signed and unsigned integer expressions
../mapHandler.cpp:1437: warning: comparison between signed and unsigned integer expressions
../mapHandler.cpp: At global scope:
../mapHandler.cpp:101: warning: 'void alphaTransformDef(CGDefInfo*)' defined but not used
make[1]: *** [vcmiclient-mapHandler.o] Error 1
make[1]: Leaving directory `/home/user/trunk/client'
make: *** [all-recursive] Error 1

Fixed.
However the Development forums would be a better place for such report. In this thread please keep to report released 0.72 issues (that’s /trunk in rev928 or /tags/0.72).

A few useful sources I use:
heroescommunity.com/viewthread.p … genumber=1 - Strategija (PDF)
heroes.thelazy.net/ - H3Wiki
h3maparchives.celestialheavens.c … /erm_help/ - ERM Help

Possibly already fixed. I cannot reproduce.

The problem is with the size of teleporter. There’s 1 and 3 tiles teleporters but the current code only handles one tile. I didn’t fix because I don’t know where that size is stored (except in the bitmap itself).

Hi there !

If you gyus dont mind i could translate FIZMIG into english, but i will ask AmberSoler(author) about this

30_battle when any creature starts taking action there is a delay and for AI info in console is written, and during this delay if we rightclick(u can attack a monster with leftclick and right after this press rightclick) on any monster game crashes, in logs there is info about structure setactivestack and start/endaction (i won’t put logs, because reproducible)
31_battle I don’t like that already found issue about haste/slow affection on battle movement order not yet fixed and add from my own : the queue (hotkey Q) shows even more strange info, example : my army(speed in brackets) gargoyle(6), golem(3),gremlin(4) , enemy - gnoll maradeur(5), original queue - garg,gnol, grem, golem, after haste(+3speed) on gremlins on garg turn queue swows garg,gnol,golem,grem, but creatures moving after this they move : garg, gnol,grem,golem
so we see the spell affects queue, but wrong and do not affect creature moving order
32__battle golems have morale
33__gamedata Alchemists and deathknights haven’t magicbook, that are only might heroes that have it
34__advmap originally when a hero hasn’t movementpoints to go diagonally(i.e. off the road) but has for a step by road, an attempt to go off the road decreases movementpoints without moving, in vcmi there is no mp loss but the path Xmark dissappears (it’s better to leave it like this, but if following h3 u should fix )))

[quote=“ubuntux”]

I also tried several times to reproduce it but failed. It was a one time bug. That’s why I also attached the Server and Client log to my post above, maybe they can help you guys figure out what may have caused it.

[size=75]PS: By the way - are both Server & Client log useful in identifying crash cause? Or are there crash/bug cases when only one or the other can be of use? I’m asking just in case it might be better for the forum web space if I limit my uploads to minimum necessary.[/size]

That would be d) (kind of). There was a race between the thread that adds the messages and the other that removed them. Fixed.

I guess nobody would mind. But check first with the author if he’s okay. And maybe he would know if the document is not already in English somewhere, to spare you the effort. :wink:


#35 - The basic value for the Ballista damage is incorrect. We have 2-3 in VCMI, while in H3 it is 6-9.

#36 - The Magic Arrow damage *seems *too high. I say “seems” based on the number of enemy creatures killed by it, as the battle log does not give the actual damage. EDIT: Valid for other destructive spells as well - possibly they’re all overpowered.

To better tell how far from the correct value the spell damage is, it would be useful to implement spell damage information for the spell book & battle log, but I’m gonna report this in the Missing features thread.

Fixed. I also fixed a bug where the level shown for a primary skill was always basic.

fixed. (that was also #16)

The hero list on the hero windows was displaying all heroes, not just the ones on the map. fixed.

the fix don’t work properly - in new revision on my map, even if i have less than 8 (even less than 7) ungarnisoned heroes occurs a bug - #37 - that I can’t ungarrison hero, but I may buy one in tavern - strange

PS: this occured when initially were 8 ungarrisoned heroes but few got into castle garrison
PS2: I attached a map, maybe it’s map specific

EDIT: checked on arrogance3.h3m - it occurs when we have 8 or more total heroes but less than 8 ungarrisoned - the garrison script checks probably wrong variable
___overflow2.7z (2.46 KB)

#38

player red is player zero on player messages
and player red is player 1 on other console messages

#39

strange info from console

GeniusAI initialized for player 255
Setting up interface for neutral "player"0

@ majaczek : I added a log number to the Ungarrison hero bug (I think you even wanted to add it, as I see next bug was reported as #38 anyway). Btw, the ungarrison bug once you have 8 heroes at map start is also in 0.72, not just in the build you may be testing after the fix.

And thanks for the attached map, it helped me spot another bug:

#40 In Town Screen, if we have more than 3 towns, clicking on the 1st or 3rd down in the list also scrolls the list, instead of just selecting it. Perhaps is meant as a feature, but personally I find it pretty confusing (so far).

What you could however implement, is Arrow keys for scrolling through the town list.

For clarification, here is the H3 behavior:

  • Clicking on another town in the list (of 3 visible) selects/opens it, but does not recenter the list on it (it remains 1st, 2nd or 3rd of the initial visible list, unless we click on the scroll arrows).
  • Keyboard Arrows scrolls through the list of towns, maintaining the position of the selected town. So if 3rd was selected, pressing arrow down selects the next one, which then becomes the 3rd visible.

So I fixed another crash :slight_smile:
Can you try with r950. Tow commited a fix for the hero window crash.

@ubuntux
it was bug, not crashbug
properly functional bug
we got then misproper console info that we having 8 or more than 8 ungarrisoned heroes when we haven’t and refused ungarrrisoning
I’ll try the last fix

or you think about something other than me

EDIT: the 8hero bug still occur in rev951 but problem with music is fixed there.
the reason for not playing the mp3 was that we haven’t smpeg.dll and before rev951 VCMI haven’t informed that it needs it - in rev951 it gives message when file is absent, and works properly if file is present

#41 interface issue
when message in ingame console is too long it overlaps the infobox, and when the message disappears infobox is not refreshed
I suggest line breaking for ingame console to getrid of this

I know that animation is not ideal at the moment but:
#42 changing animation speed through battle settings menu cause crash

#43 blue glowing border around selected creatures restarts every time when cursor moves (should be only on selecting creature)

Probably bug, maybe not - on Arrogance3 - battle with enemy hero on the coast begining on different battle arenas (attacking from top - battle on “dirt”; from right - battle on “boat”). In HoMM battle arena depends on position of defending army.

Bingo! SDL_mixer loads smpeg.dll - if it’s not not present in VCMI directory nor in windows/system32 music won’t play. Because it’s loaded dynamically I missed that dependency. It should have been included in the package.

Fixed.

I don’t know if it should be considered as a bug in VCMI or in the map editor.
I’ll leave it now as it is, though it may be changed later (possibly when support for sieges and town capturing is added).

Fixed.

#44 When killing all the creatures with a lightning bolt, a victory screen doesnt show, you have to play another move.
[size=75][Reported as 0.71b#48 - “Killing last enemy by magic doesn’t end battle”][/size]

#45 When an item is guarded by a creature, you get past them without having to fight, unlike H3.
[size=75][Reported as 0.7#48 - “Monster zone of control” - feature not yet implemented][/size]

edit:
#46 Lightning bolt kills the entire stack, regardless of their number. I just killed 41 goblins with Andra on level 1.
[size=75][Same as [b]#36[/size] reported above: destructive spells are overpowered]