Jump to content

spam1

Members
  • Posts

    2
  • Joined

  • Last visited

Reputation

0 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. save files *can* be edited without much ado. pseudocode definition of a single soldier header from a savefile included: void parseSoldierHeader( void ) { parseRecord( "class" ); parseInt32( "unknown (important!)" ); parseRecord( "origin" ); parseRecord( "name/surname" ); parseRecord( "race" ); parseInt32( "faceNr" ); parseRecord( "origin" ); printf( "\n" ); parseInt32( "tu" ); parseInt32( "hp" ); parseInt32( "str" ); parseInt32( "acc" ); parseInt32( "ref" ); parseInt32( "bra" ); parseInt32( "base tu" ); parseInt32( "base hp" ); parseInt32( "base str" ); parseInt32( "base acc" ); parseInt32( "base ref" ); parseInt32( "base bra" ); parseInt32( "stat?" ); parseInt32( "missions1" ); parseInt32( "missions2" ); parseInt32( "kills" ); parseInt32( "stat?" ); parseInt32( "stat?" ); parseInt32( "stat?" ); parseInt32( "stat?" ); parseInt32( "stat?" ); parseInt32( "stat?" ); parseInt32( "unknown" ); printf( "\n" ); parseRecord( "regiment" ); parseRecord( "experience" ); parseInt32( "unknown" ); parseRecord( "assigned to" ); parseInt32( "unknown" ); parseInt32( "unknown" ); parseUInt8( "unknown" ); parseRecord( "role" ); parseInt32( "unknown" ); parseUInt8( "unknown" ); parseRecord( "dead" ); printf( "\n" ); } A record consists of int32 n and then n bytes of text data. All major soldier stats are stored as int32, with some offset from the actual game values (-2 in my case, i.e. for 70 stat the stored value was 68); you can easily edit that with XVI32 or any other hex editor. If you figure out the meanings of some of the "unknown" values, feel free to PM me.
  2. It'd be much simpler solution if the game engine simply allowed to retain RNG seed in a save game, instead of reseeding on each reload (HoMM3 & OpenXcom have taken this approach, amongst others).
×
×
  • Create New...