Allow taking items from a scenario even if they summon monsters or have custom graphics. Breaks older saved games.

(Older saved games might still work if not in a scenario.)
- Remove items that call a special node when entering a new scenario
- Remove stone block if a monster is placed on it
- Monsters captured by Capture Soul now persist across scenarios
- Fix barrels/crates not being restored when re-entering the town
- Fix issue when saving monster status effects
- Fix version number stored in saved game file; also, it's now stored in hexadecimal
- Fix issue with saving which would have caused all but the first timer to be ignored when loading the saved game
- Fix timers being written to out-of-bounds memory when loading a saved game
- Fix use of std::skipws where std::ws was intended
- Fix issue with the fields array being shifted right by one tile on loading; also, fields array is now saved as hexadecimal
- Fields and terrain array use the town's dimension instead of dimension hard-coded (in the case of fields) or stored in the file
- Fix PC editor remove from scenario option not working properly
- Reconstruct the universe when loading a saved game to ensure there isn't leakage from the previous universe
- Fix excess padding in output tarballs when the filesize is a multiple of 512
- Add hasFile function to tarball class
This commit is contained in:
2015-01-08 17:46:54 -05:00
parent 095ab3be49
commit 8350a22ecb
24 changed files with 575 additions and 179 deletions

View File

@@ -115,9 +115,14 @@ void cPict::setPict(pic_num_t num, ePicType type){
if(m_pic_index[num].y == 2) picType += PIC_TALL;
}
if(picType != PIC_FULL && picNum >= 1000) {
if(picType != PIC_CUSTOM_TER_MAP)
picNum -= 1000;
picType += PIC_CUSTOM;
if(picNum >= 10000) {
picNum -= 10000;
picType += PIC_PARTY;
} else {
if(picType != PIC_CUSTOM_TER_MAP)
picNum -= 1000;
picType += PIC_CUSTOM;
}
}
recalcRect();
}

View File

@@ -44,7 +44,9 @@ public:
///
/// - If type is PIC_MONST, it automatically looks up the chosen icon to determine
/// whether it should apply the tall or wide modifiers.
/// - If num is 1000 or greater and type is not PIC_FULL, it automatically subtracts 1000 and applies the custom modifier.
/// - If num is 4 digits in decimal and type is not PIC_FULL, it automatically subtracts 1000 and applies the custom modifier.
/// (If type is PIC_TER_MAP, it does not subtract 1000.)
/// - If num is 10000 or greater and type is PIC_TER_MAP, it automatically subtracts 10000 and applies the party modifier.
void setPict(pic_num_t num, ePicType type);
/// Set the pict's icon.
/// @param num The new icon index.