@@ -569,6 +569,9 @@ void CGameSA::SetMinuteDuration ( unsigned long ulTime )
569569
570570bool CGameSA::IsCheatEnabled ( const char * szCheatName )
571571{
572+ if (!strcmp ( szCheatName, PROP_RANDOM_FOLIAGE ))
573+ return IsRandomFoliageEnabled ();
574+
572575 if ( !strcmp ( szCheatName, PROP_SNIPER_MOON ) )
573576 return IsMoonEasterEggEnabled ();
574577
@@ -580,6 +583,12 @@ bool CGameSA::IsCheatEnabled ( const char* szCheatName )
580583
581584bool CGameSA::SetCheatEnabled ( const char * szCheatName, bool bEnable )
582585{
586+ if (!strcmp ( szCheatName, PROP_RANDOM_FOLIAGE ))
587+ {
588+ SetRandomFoliageEnabled ( bEnable );
589+ return true ;
590+ }
591+
583592 if ( !strcmp ( szCheatName, PROP_SNIPER_MOON ) )
584593 {
585594 SetMoonEasterEggEnabled ( bEnable );
@@ -598,6 +607,8 @@ bool CGameSA::SetCheatEnabled ( const char* szCheatName, bool bEnable )
598607
599608void CGameSA::ResetCheats ()
600609{
610+ SetRandomFoliageEnabled ( true );
611+
601612 SetMoonEasterEggEnabled ( false );
602613
603614 std::map < std::string, SCheatSA* >::iterator it;
@@ -610,6 +621,19 @@ void CGameSA::ResetCheats ()
610621 }
611622}
612623
624+ bool CGameSA::IsRandomFoliageEnabled ()
625+ {
626+ return *(unsigned char *)0x5DD01B == 0x74 ;
627+ }
628+
629+ void CGameSA::SetRandomFoliageEnabled ( bool bEnabled )
630+ {
631+ // 0xEB skip random foliage generation
632+ MemPut < BYTE > ( 0x5DD01B , bEnabled ? 0x74 : 0xEB );
633+ // 0x74 destroy random foliage loaded
634+ MemPut < BYTE > ( 0x5DC536 , bEnabled ? 0x75 : 0x74 );
635+ }
636+
613637bool CGameSA::IsMoonEasterEggEnabled ()
614638{
615639 return *(unsigned char *)0x73ABCF == 0x75 ;
0 commit comments