Custom Map #3303: LPAC surrounded. By: Zuo

Started by AutoPost, July 09, 2022, 05:10:36 PM

Previous topic - Next topic

AutoPost

This topic is for discussion of map #3303: LPAC surrounded


Author: Zuo
Size: 169x169

Fireswamp

Ok, multiple bugs including four huge exploits.

Firstly, loading a map in progress appears to be broken.  The problem appears to be on lines 96-100 of Controller.4rpl:
GetCreeperCoverage ->creeperCoverage ->antiCreeperCoverage
if(AND((<-creeperCoverage 0 eq) (<-currcount 0 gt))) # if no creeper on map
ShowADAMessage("Mission Failed" "INFOCACHE")
Endmission
endif

If I remember correctly, when loading a mission, for some annoying reason, GetCreeperCoverage returns 0; failing the mission if you ever load a save.  I think the only full fix for this is to run GetCreeper on all cells on the map; you can place this check inside the current if/endif so it doesn't lag the game constantly.

Secondly, not a bug, but please add a visible range for eggs so we can see where we can place them.

In order of how powerful the exploits are and spoiler tagged for people who want to play the level without knowing them:
Exploit number 1:
Spoiler
You can set terraforming markers, controlling enemy terps; this can also be used to shut down greenar production.

Fix: Disable the Terraforming option in the 'game' tab of the mission editor.
[close]

Exploit number 2:
Spoiler
You can advance time before selecting a difficulty using frame advance.  This lets you play on effectively Normal settings with no starting rocks/boosts/eggs, then switch to another difficulty before you win.

My proposed fix:
if(GetGameUpdateCount gt0 <-setDifficulty false eq and)
SendMSG("DifficultyChannel" "Normal")
endif

Add these lines to the Controller.4rpl code, it will set the game to Normal if no difficulty is selected but the game is playing.
[close]

Exploit number 3 (major):
Spoiler
The code that gives you rocks/boosts/eggs runs while paused, but only checks if the frame count is accurate.  As an example, if you pause at 10.50 seconds, the game will constantly increment the number of eggs you can place.  Leave the game paused for a minute and you have a couple thousand eggs to place.

My proposed fix: Move the code that grants new units to a global script that does not run while paused.
Alternative fix: add an additional check that only resets on frames that do not grant new units.
[close]

Exploit number 4 (major):
Spoiler
You can despawn the lab with some trickery.  The EndMission call will despawn the lab, so if you can trigger it then advance time for roughly another second, :win will run.

My proposed fix: Set a parameter when EndMission is called, if the parameter is set do not let :win run.
[close]

superbrias

#2
Also seems to be some issue involving loading, probably when using a difficulty with "added objectives"


I don't know if my case is special but I will put relevant stuff here hopping it helps in future

I was on impossible

as far as I know and remember I had not ever destroyed the rift lab nor do I think end mission was called before I made this save, I had most of the map and was just trying to either get some overwhelming push of blobs and skimmers or waiting for the energy packet to run dry and running from their

edit because I forgot: the pictured window was what was preventing me from playing, it would pop back up if I clicked the keep playing button

Zuo

Thanks for the Feedback. I totaly forgot to check Pausing and saving. Sorry:( . I will definitly fix those Exploits if I make another LPAC MAP

@superbrias
sorry that happend to you. wasn't really able to test Impossible because I was always dying at the start.  I thought I had fixed that. The programm probably thought that there was no creep on the map and ended the game, I will look into it :)