Axel Posted December 2, 2013 Share Posted December 2, 2013 I'm having issues adding new rockfall styles. Somehow I managed to add in a unique rockfall style for the Pyrite biome, but the same process doesn't seem to work for the other biomes (Gold, Fossil, Sand, IcyRock, etc.)... I really think it would look too sloppy to use the generic rockfall style for the new biomes, and I can't imagine any reason to believe that the game can't handle more than 4 rockfall styles. I'll post relevant CFG pieces here: Bubble_Upgrade InterfaceBubblesBupgrade.bmp Bubble_BuildPath InterfaceBubblesBbuildpath.bmp Bubble_Train InterfaceBubblesBtrain.bmp Bubble_Recharge InterfaceBubblesBrecharge.bmp Bubble_Request InterfaceBubblesBWalkTo.bmp } RockFallStyles { Lava Item_Null,MiscAnimsRockFalllava3sides,MiscAnimsRockFalllavaOutsideCorner,MiscAnimsRockFalllava_vtunnel Rock Item_Null,MiscAnimsRockFallrock3sides,MiscAnimsRockFallrockOutsideCorner,MiscAnimsRockFallrock_vtunnel Ice Item_Null,MiscAnimsRockFallice3sides,MiscAnimsRockFalliceOutsideCorner,MiscAnimsRockFallice_vtunnel Pyrite Item_Null,MiscAnimsRockFallpyriteice3sides,MiscAnimsRockFallpyriteiceOutsideCorner,MiscAnimsRockFallpyriteice_vtunnel Fossil Item_Null,MiscAnimsRockFallfossilrock3sides,MiscAnimsRockFallfossilrockOutsideCorner,MiscAnimsRockFallfossilrock_vtunnel } PanelRotationControl { CenterPositionX 484 CenterPositionY 445 Radius 30 LeftImage InterfaceCameraControlnav_left.bmp,460,438 RightImage InterfaceCameraControlnav_right.bmp,490,438 UpImage InterfaceCameraControlnav_up.bmp,477,421 And a sample level trying to use them: Tutorial02 { FullName Mine_Over_Manner ; Amount of time before an emerge trigger can be reused. 1500 specifies 1 minute. EmergeTimeOut 2500.0 BoulderAnimation Rock AllowRename TRUE RecallOLObjects TRUE GenerateSpiders TRUE DisableStartTeleport TRUE OxygenRate 3 BlockSize 40 DigDepth 40 RoughLevel 6 RoofHeight 40 UseRoof YES SelBoxHeight 10 FogColourRGB 110:110:155 // ROCK FOG HighFogColourRGB 155:155:110 // ROCK FOG SurfaceMap LevelsTutorialLevelsMoveTuto_02High_M02.map PredugMap LevelsTutorialLevelsMoveTuto_02Dugg_M02.map TerrainMap LevelsTutorialLevelsMoveTuto_02Surf_M02.map CryOreMap LevelsTutorialLevelsMoveTuto_02Cror_M02.map PathMap LevelsTutorialLevelsMoveTuto_02Path.map TextureSet Textures::Fossil RockFallStyle Fossil EmergeCreature RockMonster SafeCaverns FALSE !SFX_Ambientloop SoundsTrack10 OListFile LevelsTutorialLevelsMoveTuto_02ObjectList.ol PTLFile LevelsTutorialLevelsMoveTuto_02M02.ptl NERPFile LevelsTutorialLevelsMoveTuto_02M02.npl NERPMessageFile LevelsTutorialLevelsMoveTuto_02M02.txt ObjectiveText LanguagesObjectiveText.txt ObjectiveImage640x480 InterfaceBriefingPanelBriefingPanel.bmp,76,100 NextLevel Levels::Level01 LevelLinks Levels::Level01 FrontEndX 282 FrontEndY 121 ;FrontEndOpen TRUE MenuBMP LevelsTutorialLevelsTutorial02.bmp,LevelsTutorialLevelsGTutorial02.bmp,LevelsTutorialLevelsTutorial02G.bmp Samples { !SFX_Ambientloop SoundsTrack10 } Priorities { AI_Priority_Reinforce TRUE AI_Priority_GetIn TRUE AI_Priority_Construction TRUE AI_Priority_Crystal TRUE AI_Priority_Clearing TRUE AI_Priority_Ore TRUE AI_Priority_Repair TRUE AI_Priority_Recharge TRUE AI_Priority_GetTool TRUE AI_Priority_Train TRUE AI_Priority_Destruction TRUE } Reward { Enable TRUE Modifier 2 Importance { Constructions 10 Crystals 60 Oxygen 0 Caverns 30 } Quota { Constructions 4 Crystals 40 Caverns 4 } } } -- The game crashes to desktop on the Loading Screen. This is why I thought it was a .CFG issue. Any ideas? Link to comment Share on other sites More sharing options...
Axel Posted December 2, 2013 Author Share Posted December 2, 2013 I commented out the Fossil rockfall style, and replaced "Fossil" under Rockfall Style with "Rock" on the map I was using to test it. The game loads perfectly fine now, and the Pyrite rockfall style works perfectly fine. Can the game not handle more than four unique rockfallstyles? Link to comment Share on other sites More sharing options...
Cirevam Posted December 4, 2013 Share Posted December 4, 2013 That's a really good question. One of us should test this to see if four rockfall styles is the limit. Not to doubt you of course, but a second opinion is always good in a buggy game like LRR. I have personally encountered limits on other things like UpgradeTypes (no more than ~75) so this would not surprise me at all. I actually have an interest in creating at least one more rockfall style so I may do this soon. Link to comment Share on other sites More sharing options...
Administrators ShadowDraikana Posted March 25, 2018 Administrators Share Posted March 25, 2018 This is definitely a problem. Jessietail and I have determined that the game dies when trying to load the first lwo entry of the fifth rockfall style. RockFallStyles { Lava Item_Null,MiscAnims\RockFall\lava3sides,MiscAnims\RockFall\lavaOutsideCorner,MiscAnims\RockFall\lava_vtunnel Rock Item_Null,MiscAnims\RockFall\rock3sides,MiscAnims\RockFall\rockOutsideCorner,MiscAnims\RockFall\rock_vtunnel Ice Item_Null,MiscAnims\RockFall\ice3sides,MiscAnims\RockFall\iceOutsideCorner,MiscAnims\RockFall\ice_vtunnel Pyrite Item_Null,MiscAnims\RockFall\pyrite3sides,MiscAnims\RockFall\pyriteOutsideCorner,MiscAnims\RockFall\pyrite_vtunnel Sand Item_Null,MiscAnims\RockFall\sand3sides,MiscAnims\RockFall\sandOutsideCorner,MiscAnims\RockFall\sand_vtunnel } In this case the sand3sides file is read, followed by a crash: The thread 0x1034 has exited with code 0 (0x0). Unhandled exception at 0x0040C10B in LegoRR.exe: 0xC0000005: Access violation writing location 0x452FBDA0. It's the same error each time. Changing the order of these rockfall styles affects nothing in the eventual outcome. I would like to know if anyone has any ideas on why this is happening and if there is a way to fix this. Four rockfall styles seems like an arbitrary number and doesn't make much sense since biomes don't seem to have a limit. It seems even stranger the game crashes on the first lwo entry of the fifth rockfall style property. Link to comment Share on other sites More sharing options...
aidenpons Posted March 26, 2018 Share Posted March 26, 2018 Off the top of my head I actually can't recall any other such 'arbitary limits' imposed by the game. You can have as many vehicles as you care to add, as many (non-teleportable) raiders as you care to add, as many monsters as you care to add... ... I do recall crashing when trying to add another WeaponType but that was largely probably due to my own ineptitude. Link to comment Share on other sites More sharing options...
Cirevam Posted March 26, 2018 Share Posted March 26, 2018 There are other limits. You can only have so many UpgradeTypes before the game crashes on the first load, as mentioned earlier. Adding too many monsters causes other creatures to behave strangely (over 20 I think). Adding more than 11 buildings crashes the game due to an out-of-bounds check that Cyrem was able to patch. Vehicles must have between four to six wheels or they crash the game when spawned, but my memory is hazy on the details. Basically, I'm not surprised at any arbitrary limits. Maybe we could patch whatever variable is causing the crash, but it will take some time to identify that. Digging through the game's assembly is a bit of a nuisance. There's no guarantee it would work anyways. For those of us with the decompiled assembly, L0040BF00 looks promising... Spoiler L0040BF00(_unknown_ r0, _unknown_ r7, signed int _a4, intOrPtr _a8, intOrPtr _a12) { char _v1024; char _v1064; _unknown_ r1; _unknown_ r4; _unknown_ r5; _unknown_ r6; _unknown_ _t18; _unknown_ _t20; _unknown_ _t21; intOrPtr _t22; _unknown_ _t23; _unknown_ _t25; signed int _t26; _unknown_ _t27; _unknown_ _t29; _unknown_ _t30; _unknown_ _t31; signed int _t33; signed int _t35; unsigned int _t36; _unknown_ _t37; _unknown_ _t40; intOrPtr _t46; _unknown_ _t47; _unknown_ _t54; _unknown_ _t55; _unknown_ _t56; _unknown_ _t57; signed int _t58; _unknown_ _t61; intOrPtr _t62; __esp = __esp; __esp = __esp - 1064; _push(_t29); _push(0); _push("RockFallStyles"); _push(_a8); _t20 = L00479210(_t31, __esp); _t32 = _a4; __esp = __esp + 12; _push(_t20); _push(_a4); _t21 = L004792B0(__esp); _t30 = _t21; __esp = __esp + 8; if(_t30 != 0) { _push(_t47); _push(_t56); _push(_t61); _t62 = _a12; goto L2; do { L2: _push( *((intOrPtr*)(_t30 + 4))); _t22 = L00477810(_t32, __esp); _t33 = *5015968; __esp = __esp + 4; *((intOrPtr*)(5015952 + _t33 * 4)) = _t22; asm("repne scasb "); _t35 = !(_t33 | 255); _push(","); _t57 = *((intOrPtr*)(_t30 + 8)) - _t35; _t36 = _t35 >> 2; _push(_t36 << 2); _push(_t57); _push( &_v1024); memcpy(); __esp = __esp + 12; _push((_t35 & 3) << 0); _push(_t57); _push(_t57 + _t36 + _t36); memcpy(); __esp = __esp + 12; _t32 = ?_? ( &_v1064); _push( ?_? ( &_v1064)); _push( &_v1024); _t25 = L00477700(_t35, &_v1064); _t55 = _t25; _t58 = 1; __esp = __esp + 12; if(_t55 <= _t58) { } else { _t26 = _t58; while(1) { _push(_v1064); _t32 = *5015968; _push(_t26 - 1); _t46 = *((intOrPtr*)(__esp + 24 + _t26 * 4)); _push( *5015968); _push(_t46); _push(_t62); L0040C000(_t26, __esp); __esp = __esp + 20; _t58 = _t58 + 1; _t26 = _t58 & 65535; if(_t26 >= _t55) { break; } else { continue; } } } goto L5; L5: _push(_t30); *5015968 = *5015968 + 1; _t21 = L004792E0(__esp); _t30 = _t21; __esp = __esp + 4; } while(_t30 != 0); _pop(__ebp); _pop(__esi); _pop(__edi); } _pop(__ebx); __esp = __esp + 1064; return; goto L8; L8: } ShadowDraikana 1 Link to comment Share on other sites More sharing options...
Administrators ShadowDraikana Posted October 22, 2019 Administrators Share Posted October 22, 2019 What was going on here was yes, DDI did in fact hardcode 4 styles. @Cyrem was able to patch this in Community Edition, so we are no longer limited to 4 styles. Marking this as solved. Link to comment Share on other sites More sharing options...
Recommended Posts