Jump to content

New RockFall Styles


Axel
 Share

Recommended Posts

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

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

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

  • 4 years later...
  • Administrators
ShadowDraikana

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

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

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:
}

 

 

  • Like 1
Link to comment
Share on other sites

  • 1 year later...
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.