? Show All Error writing cache file
IC
Difference: in SoD RMB info box on ADVMAP never leaves the active area of the map, i.e. never overlaps EDG, right-side panel and the bottom help bar. 
IC
wheelScroll: 1, // XXX should be disabled everywhere in classic mode 
#clsi IC
// as well. XXX When a separate _opt for simultaneous mode is created, do 
IC
SoD plays last BGM (XXX) if there's no current object (e.g. after dismissing a hero, new object isn't automatically selected and previous sounds continue) 
IC
// We play music until switch to non-town or to another town of different type (i.e. switch from Castle to Castle doesn't restart the track). XXX implement as SoD in classic mode 
IC
In SoD, if you set music volume to 0 and then to non-0, you will hear the same combat track (not new random track picked) continuing from the same position. We should maintain a per-combat resumePositions, also because our combat window can be hidden and shown at will and it's best if showing a previously viewed window resumes the track rather than starts a random one from 0. 
IC
SoD blocks any user interaction until BATTLE*.WAV is played (though I find it quite annoying). We should do this at least in classic mode. 
IC
SoD seems to start certain BGM tracks from random position. For example, town themes start from 0 (unless already started in this game) while terrain isn't resumed, as if started from random position every time instead. 
IC
2 SoD also hides active outline (yellow) of current creature during animations 
IC
// SoD displays a more detailed message: XXX 
IC
// SoD displays a more detailed message: XXX 
IC
SoD also has a similar off-field area for hovering of the top tower; currently we only allow hovering of it by the impassable cell it stands on (11;0) - while in SoD hovering it produces impassable cursor without targeting the tower 
IC
SoD employs some uncertain logic in regards to the Y coord (sometimes the box is on top of the hex cell, sometimes on the bottom) 
IC
in classic mode arrow towers should not play idle (shuffle) and on-hover animations 
IC
for catapult, SoD pauses at hurling climax frame and waits until impact animation ends playing, then finishes hurling animation (we play this ending in parallel with impact) 
IC
SoD shows creature info at a fixed position outside of combat but (unlike us) inside of combat it shows info near the creature 
IC
SoD draws on-hover outline for creatures of different damageGroup (e.g. if currently active creature is Griffin, hover of Catapult is outlined in SoD but not in HeroWO; same if active is Catapult and hovered is Griffin) 
IC
condition: if classic && targeting 1 cell 
IC
currently HeroWO always keeps active turn's outline even for area spells (Fireball) 
IC
if there is a log entry from previous turn and _lastNew's height is 1, last line of that entry is displayed; need to add padding --------------------------------------- | "Some entry from the previous turn" | << this should not be visible | "Next round begins." | --------------------------------------- --------------------------------------- | "Next round begins." | << should look like this | | --------------------------------------- 
IC
79 in combat, if hero has spells (set in editor) but no spell book (no artifact), SoD disables the button in the bottom panel but allows clicking on the hero image in the corner to open the book, and upon selecting a spell there it says "%s recites the incantations but they seem to have no effect." XXX also check if this spends SP or not 
IC
don't show in wrong context (combat spell on advmap, etc.); SoD shows spell info in this case 
IC
some of these texts are different in Main Menu and in scenario info window (in-game); for example, 'oc' says: 'Accumulate %d %s in your kingdom's armies.' 
IC
ARRAYTXT.TXT has a message where there are 2 entries for "growth" and the last line says "...increase IN population." (can be seen after building Grail in Inferno) 
IC
SoD plays this sound N times where N = number of defeated parties (max 2 in SoD). 
IC
SoD seems to select 2nd (random?) town if had a single hero that was selected and now is gone 
#wmn IC
SoD message includes the hero's/town's name but it may be removed by now and we can't calculate it 
IC
msg.push(me ? 'You have captured the designated town, and claim victory!' 
IC
msg.push(me ? 'The hero under your protection has suffered defeat.' 
IC
msg.push(me ? 'The principal town has fallen.' 
IC
SoD uses currently selected hero's garrisonSee ability while we use combined of all heroes including allies (XXX do allies in SoD provide garrisonSee?) 
IC
SoD immediately switches to hero/town panel if no object was selected before. 
IC
SoD shows on the right of the portrait 
#huig IC
put Gold first in classic (implement in EntityCost?) 
IC
SoD doesn't draw boat's shadow in this place 
IC
until we use SoD's font 
IC
SoD draws transparent flags instead of gray, and no shadow 
IC
for ballista/FAT/ammo cart the message appears on attempt to drop to backpack while dragging starts successfully 
IC
SoD shows this message in the top part of the screen rather than centered 
IC
in SoD if backpack has visible scroll buttons then using them wraps around the artifact list (i.e. there's no start/end restrictions) 
IC
SoD allows splitting even if stack count is 1 
IC
in classic mode replace all available with hourglass panel indicating turn of another player (animated hourglass if AI's turn) 
IC
SoD allows buying only if the slot is free 
IC
SoD allows buying only 1 and only if the slot is free (since can't fit these into backpack) 
IC
SoD seeks nearest, not random 
IC
SoD logs different messages for artifact creatures (First Aid Tent, etc.) 
IC
// However, there are either special exceptions or bugs. For example, Citadel + Griffin Tower + Bastion gives 14/21 as expected, but Citadel + Upgraded Griffin Tower + Bastion gives 12/18 (i.e. UGT is not counted as a building). For classic mode such exceptions should be determined and implemented (XXX). 
IC
36 SoD: not shown if have Admiral's Hat but shown if don't have it and no stack was reduced 
IC
36 SoD plays the sound upon showing the message if message is shown, or upon mapTeleport if not (we play on mapTeleport always) 
IC
SoD shows the message on ADVMAP's background, we show on combat 
IC
SoD shows the message on ADVMAP's background, we show on combat 
IC
for single creature show: "A %s joins your army." ADVEVENT.TXT[186] 
IC
after buying the first 2 heroes others must start with the garrison consisting of a single creature: https://forum.herowo.net/t/35 
IC
In SoD, if you have no initial town on map, the warning message appears not immediately on game start but after a certain action (at least after a combat). If no action is done until end of the day, no initial warning message appears. 
IC
// SoD doesn't recognize creatures put (hired) in the town's own garrison (not hero's) but if you enter a visiting hero and then just close the town's screen, the condition will trigger. We don't have this quirk currently (XXX). 
IC
guardians of objects owned by human players must be controlled by the AI and the combat screen shouldn't even be presented to the owning player (currently that player carries the combat as if his town or hero was attacked) 
IC, R
32 is the cost of moving over cobblestone road, i.e. the fastest terrain (see databank-effects.php); https://forum.herowo.net/t/27 
IC
Magic Arrow belongs to all 4 schools but casting it on Firebird is impossible in SoD. Let's suppose the hero has Expert Air Magic and no other skills; HeroWO would choose ifSpellSchool = [Air] and allow casting but SoD seems to check all schools and if the creature has immunity against any of them the spell cannot be cast. 
IC
2 SoD filters learned secondary skills in the message by ignoring ones the hero already has (or all, if he has 8 skills already) 
IC
2 SoD may show multiple messages if it deems the content to be displayed is too large; each message uses its own text detection (i.e. if first bonus shown on that message is 'creatures' that it'd use that text, no matter what was the first bonus of the first message) 
IC
Slightly different message from SoD (SoD shows "A" instead of count "1"); also it has a bug: it only checks first creature's stack size; if it's 1 then this message is used even if there are other creatures granted (or the same creature but in another stack) 
IC
Slightly different message from SoD (SoD shows no count) 
IC
Slightly different from SoD: it shows one neutral luck (0) icon for -1 luck or one +1 for others. We in classic mode show 2/3 +1 icons for +2/+3 luck. 
IC
Slightly different message from SoD 
IC
SoD doesn't play sound for Spell Scroll 
IC
38 Slightly different message from SoD 
IC
45 SoD doesn't play FLAGMINE for Abandoned Mine (but it plays it when entering an already owned AM to leave garrison) 
IC
SoD shows "Spell Scroll" for all scrolls on ADVMAP and "<spell name>" in message boxes. 
#hhqm IC
Slightly different message in SoD. 
IC
'This land is menaced by `{Checks`}. If you could be so bold as to defeat them, I would reward you richly.', 
IC
'Faugh. You again. Come back when you are `{Checks`}, as I told you.', 
IC
'Not even close to `{Checks`}, leave me until you are there!', 
IC
'You are unworthy. Only someone who is `{Checks`} will be worthy enough.', 
IC
'Don\'t lose heart. Defeating `{Checks`} is a difficult task, but you will surely succeed.', 
IC
'No, `{Checks`} have not been driven off. Until then we cannot go home.', 
IC
'My route is still infested with `{Checks`}. Please hurry, mother becomes more ill each day.', 
IC
'No luck in finding `{Checks`}? Please hurry, the empire depends on you.', 
IC
'I am sorry, but we really want `{Checks`} as guards.', 
IC
'No, those will simply not do. You must bring me `{Checks`} before I can go to my bride to be.', 
IC
'I thought you had promise. You have indeed reached `{Checks`}. Come in, come in. Here, I have something to reward you for your efforts. Do you accept?', 
IC
'Ahhh, you have reached `{Checks`}. Would you like to receive a reward?', 
IC
'Finally, there is someone to whom I can bequeath my worldly possessions, now that you have achieved `{Checks`} do you wish to inherit?', 
IC
'At last, you defeated `{Checks`}, and the countryside is safe again! Are you ready to accept the reward?', 
IC
'Finally, `{Checks`} are gone from our home and we can return! Will you accept this reward?', 
IC
'The route is clear, I thank you deeply. Take this as a symbol of my gratitude.', 
IC
'Yes! `{Checks`} is perfect! Now if you\'ll kindly give it to me, I shall pay what I promised.', 
IC
'I am sorry, but this is a guildhouse, and only those who are experienced enough can join. Only those who are part of the guildhouse may pass. Until you reach `{Checks`}, you may not join.', 
IC
'We have a problem with our King. He doesn\'t like to be surrounded by immature people. Therefore you need to be of `{Checks`} in order to pass through.', 
IC
'The Belted Knights of Erathia guard this tower. They will only let one of their own pass. To join the order, you must first defeat `{Checks`}.', 
IC
'Beware, `{Checks`} are running loose out there. We can\'t open the doors until each and every one is driven from the land.', 
IC
'A small, henpecked man preers over the gate. "No one may pass. My dog ate my wife\'s, `{Checks`}, and I\'m not leaving here until I find a replacement.', 
IC
'The guards here simply will not permit anyone below `{Checks`} to pass.', 
IC
'There is no way we\'re going to let a wimp like you into our guild. Not until you are of `{Checks`} can you join.', 
IC
'Only when you are of `{Checks`} will our King stand for your presence.', 
IC
'The Belted Knights still will not let you pass, so you have not conquered `{Checks`}.', 
IC
'No, `{Checks`} are still running loose.', 
IC
'I am sorry, but the King wants to only see `{Checks`}, nothing else will do.', 
IC
'The guards acknowledge that you have indeed reached `{Checks`}. Do you wish to pass at this time?', 
IC
'Now that you have reached `{Checks`} level you may join our guild. Membership is free. Do you wish to pass at this time?', 
IC
'Excellent! Now that you are of `{Checks`} our King will not have any problems with you. Do you wish to pass at this time?', 
IC
'News of your defeat of `{Checks`} traveled quickly. Do you wish to pass, oh newly Belted Knight?', 
IC
'"Give it here and you can pass. Want a dog? Just kidding, will you give `{Checks`} to me?"', 
IC
compare the shape of our circle with the algorithm SoD uses circle() relies on the fact map margin wasn't yet added so comparing with 0 and width/height compares with the playable area. We don't want to place Grail inside margin, where players cannot reach it. "+ 1" is for [ ][X] - Grail MapObject's actionable spot. 
#hhlm IC
SoD shows 1 icon of +1 morale no matter the number; we show 3 +1 icons in classic mode 
IC
return $s .= "`{LuckImage $reward->luck`}"; 
IC
/* SoD shows empty boxes in places of empty spell slots (up to 3). We don't but need to, in classic mode. XXX */