Took out temporary automap checking (but left it commented out in case we need it again later). Fixed story mode crash on disk-limited version. Added healing over time.

This commit is contained in:
Martin Haye 2020-07-07 08:33:59 -07:00
parent cd117aef7c
commit 7c911c34c3
3 changed files with 32 additions and 17 deletions

View File

@ -44,8 +44,9 @@ predef _startup()#1
predef _saveGame()#1
predef _loadGame()#1
predef _newOrLoadGame(ask)#1
predef _checkAutomap()#1 // TEMPORARY - FIXME FOO
word[] funcTbl = @_startup, @_saveGame, @_loadGame, @_newOrLoadGame, @_checkAutomap
//AUTOMAP_CHECK// predef _checkAutomap()#1
word[] funcTbl = @_startup, @_saveGame, @_loadGame, @_newOrLoadGame
//AUTOMAP_CHECK// word = @_checkAutomap
byte[] game1_filename = "GAME.1.SAVE"
byte[] legendos_filename = "LEGENDOS.SYSTEM"
@ -381,11 +382,11 @@ def checkMarks()#0
end
///////////////////////////////////////////////////////////////////////////////////////////////////
// TEMPORARY FOR DISK MARK CHECKING - FIXME FOO
def _checkAutomap()#1
readDiskMarks; checkMarks
return 0
end
// TEMPORARY FOR DISK MARK CHECKING
//AUTOMAP_CHECK// def _checkAutomap()#1
//AUTOMAP_CHECK// readDiskMarks; checkMarks
//AUTOMAP_CHECK// return 0
//AUTOMAP_CHECK// end
///////////////////////////////////////////////////////////////////////////////////////////////////
def _saveGame()#1
@ -393,7 +394,7 @@ def _saveGame()#1
// (also does a CHECK_MEM to be sure we never save corrupted heap)
heapCollect()
readDiskMarks; checkMarks // TEMPORARY - FIXME FOO
//AUTOMAP_CHECK// readDiskMarks; checkMarks
// Copy data to main memory, and write it out.
memcpy(HEAP_BOTTOM, LOAD_SAVE_BUF, HEAP_SIZE, 0) // LC to low mem
@ -601,7 +602,7 @@ def clearDiskMarks()#0
callProRWTS(RWTS_SEEK | RWTS_RDWRPART, NULL, NULL, HEAP_SIZE)
callProRWTS(RWTS_WRITE | RWTS_RDWRPART, NULL, LOAD_SAVE_BUF, size+2)
_checkAutomap // FIXME FOO
//AUTOMAP_CHECK// _checkAutomap
end
///////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -13,4 +13,4 @@ const diskops_startup = 0
const diskops_saveGame = 2
const diskops_loadGame = 4
const diskops_newOrLoadGame = 6
const diskops_checkAutomap = 8 // TEMPORARY - FIXME FOO
//AUTOMAP_CHECK// const diskops_checkAutomap = 8

View File

@ -71,6 +71,7 @@ predef pause(count)#1
predef printf1(str, arg1)#0
predef printf2(str, arg1, arg2)#0
predef playerDeath()#0
predef setStat(player, statName, val)#0
predef startGame(firstTime, ask)#0
predef showAnimFrame()#0
predef showParty()#0
@ -1967,7 +1968,7 @@ end
///////////////////////////////////////////////////////////////////////////////////////////////////
// Load code and data, set up everything to display a 2D or 3D map
def initMap(x, y, dir)#0
word pDiskOps // TEMPORARY - FIXME FOO
//AUTOMAP_CHECK// word pDiskOps
// If we have a renderer loaded, let it know to flush automap marks
textureControl(FALSE)
@ -1999,12 +2000,12 @@ def initMap(x, y, dir)#0
mmgr(QUEUE_LOAD, CODE_TILE_ENGINE<<8 | RES_TYPE_CODE)
fin
pGlobalTileset = mmgr(QUEUE_LOAD, 1<<8 | RES_TYPE_TILESET) // even in 3d, need tiles for lamp/etc.
pDiskOps = mmgr(QUEUE_LOAD, MOD_DISKOPS<<8 | RES_TYPE_MODULE) // TEMPORARY - FIXME FOO
//AUTOMAP_CHECK// pDiskOps = mmgr(QUEUE_LOAD, MOD_DISKOPS<<8 | RES_TYPE_MODULE)
mmgr(FINISH_LOAD, 0)
if mapIs3D; loadUtil3d(); fin
pDiskOps()=>diskops_checkAutomap() // TEMPORARY - FIXME FOO
mmgr(FREE_MEMORY, pDiskOps) // TEMPORARY - FIXME FOO
//AUTOMAP_CHECK// pDiskOps()=>diskops_checkAutomap()
//AUTOMAP_CHECK// mmgr(FREE_MEMORY, pDiskOps)
// Set up the command table
initCmds() // must be after loading util3d
@ -2130,7 +2131,8 @@ end
///////////////////////////////////////////////////////////////////////////////////////////////////
def advTime(hours, mins, secs)#0
byte redrawClock, runScript
byte redrawClock, runScript, prevHour, add
word player
if secs
global->b_second = global->b_second + secs
@ -2152,11 +2154,23 @@ def advTime(hours, mins, secs)#0
if hours
redrawClock = TRUE
prevHour = global->b_hour
global->b_hour = global->b_hour + hours
while global->b_hour >= 24
global->b_hour = global->b_hour - 24
loop
runScript = TRUE
// Heal over time every 12 hours
if (prevHour / 12) <> (global->b_hour / 12)
player = global=>p_players
while player
add = (rand16 % player->b_stamina)/3
setStat(player, @S_HEALTH, player=>w_health + add)
player = player=>p_nextObj
loop
if needShowParty; showParty(); fin
fin
fin
if mapIs3D and redrawClock
@ -2248,7 +2262,7 @@ export def moveInternal(facingDir, moveDir, beepOK, shouldAdvTime)#1
// Advance time if requested
if shouldAdvTime
if mapIs3D
for i = 0 to global->b_moveMode
for i = 1 to global->b_moveMode
advTime(CLOCK_ADV_3D_HOURS, CLOCK_ADV_3D_MINS, CLOCK_ADV_3D_SECS)
next
else
@ -2397,7 +2411,7 @@ end
export def queue_setMap(is3D, num, x, y, dir)#0
byte part
part = lookupResourcePart(is3d+1, num)
if part > diskLimit
if diskLimit and part > diskLimit
clearWindow
callGlobalFunc(GS_DISK_LIMIT, 1, 0, 0)
return