C, O |
doing this in-thread has significant impact (100s of ms) on initial Context rendering; _.defer() fixes that ⋯
|
||
C |
XXX maybe add a databank property and move there ⋯
|
||
C, O |
doing in-thread has significant impact (100s of ms) on initial Context rendering; _.defer() would fix this ⋯
|
||
C |
First Aid Tent's shadow is much more dark than in SoD. Check def2png.php? ¶
|
||
C |
review and make more in line with SoD ⋯
|
||
C |
8 currently assuming shoot penalty if distance (diagonal) is >= half of the combat field's width ⋯
|
||
C |
formulae ⋯
|
||
C |
// XXX 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) ¶
|
||
C |
// Rules for audibility were determined empirically. Recheck (XXX). ¶
|
||
C |
adjusting by TXT-provided X seems to cause more problems than good ⋯
|
||
C |
if need to play on-hit animation for bad morale and other similar statuses ⋯
|
||
C |
// In SoD, hero cast animation pauses on the fifth (XXX) frame and waits until other cast animations finish. ¶
|
||
C |
numbers determined arbitrarily ⋯
|
||
C |
// XXX 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 ¶
|
||
C, I |
recheck this and other game screens (ADVMAP, SpellBook, Combat, etc.), add missing hotkeys ⋯
|
||
C |
do we need to scroll immediately or wait (like until uiAudio ends?)? ⋯
|
||
C |
ensure message text and display of player flag shown in different cases by HeroWO and SoD match ¶
|
||
C |
// XXX SoD uses currently selected hero's garrisonSee ability while we use combined of all heroes including allies (XXX do allies in SoD provide garrisonSee?) ¶
|
||
C |
at least with garrison, rogue's spying seems to take effect not only if it's close to the garrison's actionable spot but also to any of its impassable spots: [ ][#] [ ][@] @ = Garrison [ ][#] [H][ ] H = hero with Rogue ⋯
|
||
C |
in combat, SoD shows in brackets attack/defense adjusted by hero stats and terrain info (+1 for creatures native to combat terrain); need to research other bonuses and implement showing them ⋯
|
||
C |
numbers determined arbitrarily ⋯
|
||
C |
numbers determined arbitrarily ⋯
|
||
I, C |
Some diagonal movements (where any adjacent tile is a ground?) are prohibited on water. For example, one cannot interact with Mermaids after boarding [S] here (Mermaids shifted by one to the left are reachable): [_][_][ ][ ] _ = ground [ ][ ][ ][ ] [ ] = water [ ][#][@][#] [#@#] = Mermaids [ ][S][H][_] S = ship, H = hero on ground [ ][ ][_][_] A simpler example where ² is only reachable via ¹: [ ²[_] _ = ground [ ¹[S] ¶
|
||
C |
giving bonus = 20% of defense ⋯
|
||
C |
does SoD allow defending artifact creatures (Ballista, etc.)? in-combat log says it isn't gaining +N defense but DEF do have defending animation ⋯
|
||
C, I |
looks like in SoD some creatures' cloud (Magog) has friendly fire, some (Lich) doesn't ⋯
|
||
C |
If a garrison (creature.party) entirely consists of creatures due for un-summoning (maxCombats < 2) then such a party loses (not part of alive). Perhaps it should not lose, but then it's unclear how to address the now-empty garrison (perhaps can give one first-level creature as when fleeing). Empty alive indicates a tie. ⋯
|
||
C |
sum up all fallen enemy creatures' aiValue 5% and divide by number of alive heroes ⋯
|
||
C |
SoD doesn't seem to choose random enemy for every shot, instead it picks some (random one?) at the beginning and shoots it until it dies (or for several turns at least) ⋯
|
||
C |
if FAT and Ammo Cart affect allies too; currently they affect their own party only. ⋯
|
||
C |
This doesn't take into account hero_experienceGain (Learning skill). As a result, visiting Tree of Knowledge will add more experience than needed to reach the next level. Conversely, if hero_experienceGain is < 1 then Tree will give less experience and no level up will occur - but maybe this is actually a good feature? Regardless, need to check how Tree + Learning works in SoD. ⋯
|
||
C |
Apparently, SoD adjusts tower damage based on buildings constructed in the town (base + upgraded count as one). For example, with Castle alone damages are 10-15/6-9 (main/other towers) but with Tavern they are 12-18/6-9, with Blacksmith 14-21/8-12. Based on tests with Castle (town type) in the editor, main tower's damage grows at +2/+3 min/max for every building (not counting the Castle/Citadel) while other towers' damage grows at the same rate but for every other building (Castle = 6/9, Tavern = same, Blacksmith = 8/12, Marketplace = same, Guardhouse = 10/15, etc.). 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). ⋯
|
||
C |
formulae ⋯
|
||
C |
do upgraded versions count? e.g. quest needs 10 pikemen and hero has 10 halberdiers ⋯
|
||
C, I |
which monster of multiple guards is chosen? with max object ID (closest to right-bottom map corner)? ⋯
|
||
C |
18 does doubling happen before or after adding creature growth? ⋯
|
||
C |
18 does horde affect dwellings in the way it's implemented? ⋯
|
||
C |
23 SoD usually automatically adds spells into visiting and garrisoned heroes' books but sometimes this happens only if explicitly opening Mage Guild. Research. ⋯
|
||
C |
recheck how SoD determines the "weakest" stack; it seems not by fightValue/aiValue but simply by level and then by creature ID ⋯
|
||
C |
// XXX count should be a word: "few", "several", etc. (XXX respecting garrisonSee?) ¶
|
||
I, C |
67 SoD updates state of heroes at the beginning of their turn rather than the day. example: have P1, P2; P1's turn is before P2; do P2's spellpoints regen when P1 starts turn or this happens only after P1 ends turn and P2's turn starts? ⋯
|
||
I, C |
67 same for timed events: they must occur at the beginning of turn (in non-simultaneous/classic turn mode), not daybreak ⋯
|
||
C |
is this correct? since all creatures share the same count pool for buildings, we determine the best growth and increment the count by it; keep in mind this method is used for week/month bonus growth (and plague) too; same question applies to _erect() ⋯
|
||
C |
70 on-map monsters should grow too but it has some uncertain algorithm as to when it happens (not every Monday and/or not for all; in fact, sometimes monsters diminish!); when implementing this, account for GenericEncounter's garrison renewal mechanism ⋯
|
||
C |
70 what hordeGrowth in CRTRAITS.TXT (creature_hordeGrowth) is for? on 'horde' world bonus all counts supposedly just double ⋯
|
||
C |
// XXX this works if initial experience is < level 2; if not, SoD does some kind of (XXX random-based?) "unattended level-up" (automatically choosing stats and skills); at very least, $level should be bumped here ¶
|
||
C |
check what happens if experience is set for an on-map hero (not in custom heroes dialog) - maybe he also does the same unattended level-up, if so then h3m2herowo.php should be updated ⋯
|
||
C |
// Also unlike others, new dwelling may be smaller than the random placeholder (which is 3x3 with 2 actionable spots but, for example, Goblin Barracts is 2x2 with just one spot). XXX How does SoD adjust position of the new object? ¶
|
||
C |
no idea how SoD handicap works since I have never seen it in the wild; is it even supported? ⋯
|
||
C |
SoD's editor help suggests that artifacts may be lost due to full backpack but I have never seen this in game so not implementing it ⋯
|
||
C |
Is it okay for the algorithm that costFunc's result varies per neigh depending on current (as in H3.PathCost)? ⋯
|
||
C |
likely not good enough ⋯
|
||
C |
/\ /\ /\ /\ /\ hex square | |3.|4.| | | < odd 1 L = L /\ /\./\./\ /\ / 2 R = R ⋯
|
||
C |
operation of target=shroud Effects was not tested ⋯
|
||
C |
[['surrenderCost', 0.95, true]], ⋯
|
||
C |
[['surrenderCost', 0.90, true]], ⋯
|
||
C |
[['surrenderCost', 0.85, true]], ⋯
|
||
C |
does it affect creatures' spells? ⋯
|
||
C |
costs were obtained from the in-game dialog; need to validate against BUILDING.TXT ¶
|
||
C |
4 hero_actionPoints ⋯
|
||
C |
4 does this stack? if you have 2 towns with 2 lighthouses ⋯
|
||
C |
9 hero_actionPoints ⋯
|
||
C |
9 does this stack? if you have 2 towns with 2 stables Matches effects of on-map Stables. ⋯
|
||
C |
is it applied immediately or on next turn of this player? ⋯
|
||
C, ID |
Must be rechecked and remaining OB* filled in. ⋯
|
||
C |
'missileOfCreature' => [ ⋯
|
||
C |
While doing this, I have noticed that casting Armageddon on Diamond Golems deals different damage per group. If you fight 3 groups of Golems and cast it, some groups may have 4 creatures perished, some 5, some 6. Not sure what causes this - Armageddon is supposed to deal the same damage to every party sans their resistance % (which is the same for the same type of creature). ⋯
|
||
C |
'LCRS', // XXX does sharpshooter use the same sounds as archer? ¶
|
||
C |
if destroyed - cancel effect? if so then can add new Effect->whileCombatCreature and use it here ⋯
|
||
#dcj | C |
review jousting bonus ⋯
|
|
C |
↳ $champion => ['jousting' => 2, 'width' => 2], ⋯
|
||
C |
damage numbers ⋯
|
||
C |
are towers affected by hero's attack and other stats? currently they are, using the standard damageRange() formulas ⋯
|
||
C |
numbers ⋯
|
||
C |
is tower affected by luck? in H2 it was ⋯
|
||
C |
validate actually generated Effects against % in BALLIST.TXT ⋯
|
||
C |
chances of bonuses ⋯
|
||
C |
Is the upgraded creature growth boosted (at least weekly) if base creature was selected? SoD's message includes only the base creature name but I haven't checked actual numbers in dwellings; I assume in towns both creatures grow (since they share the same building's availability number) but what about on-map dwellings? Also strange that the only case (?) when the message includes both Imp and Familiar is after building Grail in Inferno. In any case, the inverse probably doesn't apply (i.e. Black Dragon grows alone). ⋯
|
||
C |
4 ['hero_actionCost', -50.0, 'ifRoad' => array_search('dirt', AClass::road), 'stack' => [$st_terrain, 1]], ⋯
|
||
C |
See if there are movement bonuses for different heroes much like native terrain to creatures. ¶
|
||
C |
"$planeswalker $male" => "CH17", // XXX and update Images.txt ¶
|
||
C |
"$planeswalker $female" => "CH17", // XXX and update Images.txt ¶
|
||
C |
"$elementalist $male" => "CH16", // XXX and update Images.txt ¶
|
||
C |
"$elementalist $female" => "CH16", // XXX and update Images.txt ¶
|
||
C |
// Audio data is coming from Sounds.txt. XXX `{Audio`}-s need to be checked with the actual game sounds. ¶
|
||
C |
need to check for spell book and wisdom (quest_fulfilled)? ⋯
|
||
C, I |
SoD sometimes (randomly?) adds quests to some artifact objects (have Wisdom, have Leadership, have gold, have gold and precious resource, etc(?)); this needs research randomArtifact: Places a random artifact on the Adventure Map. Artifact can be any class. Grail is excluded. randomTreasureArtifact: Places a random Treasure class artifact on the Adventure Map. randomMinorArtifact: Places a random Minor class artifact on the Adventure Map. randomMajorArtifact: Places a random Major class artifact on the Adventure Map. randomRelic: Places a random Relic class artifact on the Adventure Map. spellScroll: This scroll contains a spell, which is added into a hero’s spell book for as long as you carry the scroll. I think I've seen another (unused?) class for spell scroll somewhere. At least the editor's help has this second entry: 01 spell per scroll. Appears in hero's spell book if artifact is equipped. ¶
|
||
#sclr | C |
22 what happens if hero has no room for more secondary skills? ⋯
|
|
C |
// Don't know about 3+ (XXX). ¶
|
||
C |
can backpack be full? see also other effects here ¶
|
||
#shwr | C |
is shipwreck impassable from ground? it stands on water and pathcost may consider it passable for water only (in SoD it's passable for both because the hero doesn't move onto the object when interacting with it) ⋯
|
|
C |
ADVEVENT.TXT[190] suggests that Witch Hut can be deserted ⋯
|
||
C |
['quest_garrison', [$troglodyte => [0, $random, 100, 200]], 'ifGrantedMax' => 0], // XXX garrison count numbers ¶
|
||
C |
affects creature spells? ⋯
|
||
C, ID |
add missing ⋯
|
||
C |
// XXX do we need it, given it doesn't have (XXX) any special effects other than damage? ¶
|
||
C |
the game seems to play, on impact, ICERAY followed by ICERAYEX ⋯
|
||
C |
the game seems to play another sound in parallel with this one (WGHTKILL?) ⋯
|
||
C |
'castAnimationOfSpell' => [ ⋯
|
||
C |
when does SoD show the first part (drop) of the animation? I did see it a few times; if it didn't show it, this would be just: ⋯
|
||
C |
no giant? ⋯
|
||
C |
recheck order (precedence, e.g. cartographer vs cover of darkness) ⋯
|
||
C |
public $isGround; // purpose not entirely clear/implemented XXX ¶
|
||
C |
SoD seems to determine combat terrain based on other things, not only underlying terrain. For example, a lava near water has another combat background ("beach") and creatures native to lava (like Imps) don't get bonuses there. Not sure if HeroWO respects this, need to check type of tile generated on shores - maybe the editor changes it from lava to other, then we're good. ⋯
|
||
C |
public $hordeGrowth; // 0 for most creatures; unknown purpose XXX ¶
|
||
C |
public $flightDistance; // all 1.00 (1000) in SoD; unknown purpose XXX ¶
|
||
C |
public $upgrade; // 0-100 (%) // XXX some kind of chance ¶
|
||
C |
which OB* obstacles can be removed with the spell in SoD? ⋯
|
||
C |
According to h3m-The-Corpus.txt, if last number in OBJECTS.TXT is not 0 then shadow should not be drawn. def2png.php doesn't process OBJECTS.TXT and it seems that DEF shadows of all such objects don't stick out anyway. ⋯
|
||
C |
37 do map-provided rumors have a higher chance of being shown in Tavern? ⋯
|
||
C |
37 do they override standard rumors? ⋯
|
||
C |
foreach ($objects as $from) { ⋯
|
||
C |
If SoD uses a universal algorithm for all objects then for the life of me I cannot figure it out. It seems there are either exceptions for hardcoded object classes (notably mountains and trees) or final order depends on individual passability bits. It's easy to spot by comparing against the upper level of "Adventures of Jared Haret" - if you change this calculation, some objects become correctly positioned while others break. For now, this formula at least makes (most) maps playable. 26 18 17 16 2 0 1 11111111b 1 0 11111111111111b 00 !ground y actionable * h3mID zero (*) set for objects moved on run-time; h3mID then specifies X (H3.Rules) If changing this calculation, update addMapMargin() and copies of this in JS (XXX). ⋯
|
||
C |
// XXX Must remove Lighthouse and Shipyard if the town is not near water (SoD allows them but factually ignores "Built" state for these two in Town Properties). XXX However, this likely has to be done on the JS side because this has to apply to Timed Event buildings as well. ¶
|
||
C |
is it purely random or depends on other factors? like hero's army strength ⋯
|
||
C |
check if this file and index.php templates use hardcoded values (flag images, etc.) rather than relying on databank */ ¶
|