MantisBT - VCMI |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0001985 | VCMI | Mechanics - Objects | public | 2014-12-07 07:28 | 2014-12-22 09:47 |
|
Reporter | SXX | |
Assigned To | SXX | |
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | |
Platform | | OS | | OS Version | |
Product Version | 0.97 | |
Target Version | | Fixed in Version | 0.97b | |
|
Summary | 0001985: Cartographer: attempt of tunnels reveal on map without underground cause server crash |
Description | In process of creating my testing map find out that such behaviour will cause crash while in vanilla heroes nothing would happen.
CCartographer::blockingDialogAnswered or CPrivilagedInfoCallback::getAllTiles need appropriate check if underground level exists or not.
Will try to fix it on my own. |
Steps To Reproduce | - Start game on attached map.
- Go to cartographer.
- Agree to buy a map. |
Additional Information | |
Tags | No tags attached. |
Relationships | related to | 0001986 | closed | SXX | Cartographers of same type not marked as visited after one of them visited |
|
Attached Files | testCart.h3m (4,984) 2014-12-07 07:28 https://bugs.vcmi.eu/file_download.php?file_id=2030&type=bug tunnelMapCrash_GDB_backtrace.txt (2,725) 2014-12-07 07:28 https://bugs.vcmi.eu/file_download.php?file_id=2031&type=bug |
|
Issue History |
Date Modified | Username | Field | Change |
2014-12-07 07:28 | SXX | New Issue | |
2014-12-07 07:28 | SXX | Status | new => assigned |
2014-12-07 07:28 | SXX | Assigned To | => SXX |
2014-12-07 07:28 | SXX | File Added: testCart.h3m | |
2014-12-07 07:28 | SXX | File Added: tunnelMapCrash_GDB_backtrace.txt | |
2014-12-07 08:39 | SXX | Note Added: 0005198 | |
2014-12-07 09:20 | Warmonger | Note Added: 0005199 | |
2014-12-07 10:50 | SXX | Relationship added | related to 0001986 |
2014-12-07 10:52 | SXX | Note Added: 0005202 | |
2014-12-07 10:52 | SXX | Category | Mechanics - Adventure Map => Mechanics - Objects |
2014-12-07 11:34 | Warmonger | Note Added: 0005203 | |
2014-12-09 11:11 | SXX | Note Added: 0005209 | |
2014-12-09 12:50 | SXX | Status | assigned => resolved |
2014-12-09 12:50 | SXX | Fixed in Version | => 0.97b |
2014-12-09 12:50 | SXX | Resolution | open => fixed |
2014-12-22 09:47 | SXX | Status | resolved => closed |
Notes |
|
(0005198)
|
SXX
|
2014-12-07 08:39
|
|
So easy way to bypass the crash would be just add such check to "CCartographer::blockingDialogAnswered":
void CCartographer::blockingDialogAnswered(const CGHeroInstance *hero, ui32 answer) const
{
if(subID == 2 && !cb->gameState()->map->twoLevel)
return;
So player won't lose any gold, building just would do nothing.
Though in vanilla Heroes 3 behaviour is different:
- Cartographer building marked as visited.
- Player lose 1000 gold.
Is there reason to stick to how it's work in vanilla, solution above would work or there need to be some better fix for such situation? |
|
|
|
IMO Cartographer which can't reveal anything should be marked as visited, but don't take away gold from player for nothing. |
|
|
(0005202)
|
SXX
|
2014-12-07 10:52
|
|
Do you think it's should show dialog about map purchase at all?
Then if player agree don't take any gold and just mark it as visited?
...
Also in vanilla underground cartographer looks broken (do nothing) and land one reveal everything except water on both underground and ground layers. So VCMI works more correctly here.
PS: Find out other wrong behaviour and posted as 0001985 |
|
|
|
If Cartographer cannot work correctly, it should display "visited" message on first hero visit and don't make any offer. |
|
|
(0005209)
|
SXX
|
2014-12-09 11:11
|
|
|