I got a crash when loading a MIB mission for the following landed ufo:
ufos:
- speedRadian: 0
speed: 0
type: STR_MANSION_MIB
id: 23
landId: 19
damage: 0
altitude: STR_GROUND
direction: STR_NONE_UC
status: 1
detected: true
secondsRemaining: 24860
mission: 5
trajectory: H0
trajectoryPoint: 1
fireCountdown: 0
escapeCountdown: 667
lon: 0.4209732067627345
lat: -0.8224758757858442
speedLon: -0
speedLat: -0
dest:
lon: 0.1892239788352116
lat: -0.8534960278196091
type: STR_WAYPOINT
id: 0
I'll compile a debug binary to see if I can get a useful backtrace. The code is current as of 2015 March 16.
edit: here's the backtrace:
#0 0x00000000009a8814 in OpenXcom::AlienDeployment::getDimensions (this=0x0, width=0x7fffffffd208, length=0x7fffffffd20c, height=0x7fffffffd210) at /home/myk/src/openxcom/src/Ruleset/AlienDeployment.cpp:180
#1 0x0000000000721c17 in OpenXcom::BattlescapeGenerator::run (this=0x7fffffffd1c0) at /home/myk/src/openxcom/src/Battlescape/BattlescapeGenerator.cpp:336
#2 0x00000000008876d4 in OpenXcom::ConfirmLandingState::btnYesClick (this=0x59a3700) at /home/myk/src/openxcom/src/Geoscape/ConfirmLandingState.cpp:165
#3 0x00000000007c7a44 in OpenXcom::InteractiveSurface::mouseClick (this=0x5a0abe0, action=0x7fffffffd440, state=0x59a3700) at /home/myk/src/openxcom/src/Engine/InteractiveSurface.cpp:306
#4 0x00000000007c7451 in OpenXcom::InteractiveSurface::handle (this=0x5a0abe0, action=0x7fffffffd440, state=0x59a3700) at /home/myk/src/openxcom/src/Engine/InteractiveSurface.cpp:185
#5 0x00000000007af5a4 in OpenXcom::State::handle (this=0x59a3700, action=0x7fffffffd440) at /home/myk/src/openxcom/src/Engine/State.cpp:228
#6 0x00000000007bf2d7 in OpenXcom::Game::run (this=0x4e9dbe0) at /home/myk/src/openxcom/src/Engine/Game.cpp:236
#7 0x0000000000666e08 in main (argc=3, argv=0x7fffffffd738) at /home/myk/src/openxcom/src/main.cpp:68
It seems that the following line in BattlescapeGenerator.cpp is returning null:
AlienDeployment *ruleDeploy = _game->getRuleset()->getDeployment(_ufo?_ufo->getRules()->getType():_save->getMissionType());
Some hopefully helpful context:
(gdb) print _ufo->getRules()->getType()
$1 = "STR_MANSION_MIB"
(gdb) print _game->getRuleset()._alienDeployments
$4 = std::map with 29 elements = {["STR_ABDUCTOR"] = 0x7fffdc208580, ["STR_ALIEN_BASE_ASSAULT"] = 0x7fffdc210ba0, ["STR_BASE_DEFENSE"] = 0x7fffdc212bd0, ["STR_BATTLESHIP"] = 0x7fffdc20b7c0, ["STR_EXCAVATOR"] = 0x7fffdf17f300,
["STR_FIGHTER_SHIP"] = 0x7fffdf180bf0, ["STR_HARVESTER"] = 0x7fffdc180f50, ["STR_KEEP"] = 0x7fffdf164b20, ["STR_LAB_SHIP"] = 0x7fffdf1844d0, ["STR_LARGE_SCOUT"] = 0x7fffdc17fa10, ["STR_MANSION"] = 0x7fffdf160e80,
["STR_MARS_CYDONIA_LANDING"] = 0x7fffdc2156d0, ["STR_MARS_THE_FINAL_ASSAULT"] = 0x7fffdc217000, ["STR_MEDIUM_GROUND_CONVOY"] = 0x7fffdf15eae0, ["STR_MEDIUM_SCOUT"] = 0x7fffdc11cba0, ["STR_MIB_BASE_LANDING"] = 0x7fffdf190ee0,
["STR_MIB_COVERUP_0"] = 0x7fffdf185320, ["STR_MIB_COVERUP_1"] = 0x7fffdf188fa0, ["STR_MIB_COVERUP_2"] = 0x7fffdf18b7e0, ["STR_MIB_TERROR_MISSION"] = 0x7fffdf18dff0, ["STR_PORT_ATTACK"] = 0x7fffdf1778b0,
["STR_RAIDER_SHIP"] = 0x7fffdf192d50, ["STR_SENTRY_SHIP"] = 0x7fffdf182470, ["STR_SMALL_GROUND_CONVOY"] = 0x7fffdf15cd40, ["STR_SMALL_SCOUT"] = 0x7fffdc11bd70, ["STR_SUPPLY_SHIP"] = 0x7fffdc20d710,
["STR_TERROR_MISSION"] = 0x7fffdc20f040, ["STR_TERROR_SHIP"] = 0x7fffdc209ae0, ["_MIB"] = 0x7fffdf163f60}
So STR_MANSION_MIB is not in the deployments map. Could it be that the "_MIB" one is a typo and it should be "STR_MANSION_MIB" on line 34367 of FinalModPack.rul?
Edit: Not sure if it's appropriate, but changing "_MIB" to "STR_MANSION_MIB" in FinalModPack.rul does fix the issue.