Knuckle Cracker

Particle Fleet => Exchange Map Comments => Topic started by: AutoPost on April 09, 2017, 11:57:46 AM

Title: Custom Map #728: Extermination. By: Decagon
Post by: AutoPost on April 09, 2017, 11:57:46 AM
This topic is for discussion of map #728: Extermination
(http://knucklecracker.com/particlefleet/queryMaps.php?query=thumbnailid&id=728)

Author: Decagon
Size: 448x252

Desc:
The retaliation has begun; GalCorp is launching a counter-offensive against the Crystallid fleet. WARNING: Massive ships. Play at your own risk.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Exodus Legate on April 09, 2017, 01:58:40 PM
That was really fun.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Syth on April 16, 2017, 01:13:01 AM
Slowly but surely made my way through, was still rather overwhelming however.

Spoiler
The HQ makes for a lovely "bomb" to destroy the Flare instantly ;)
[close]
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Keeper Decagon on April 16, 2017, 04:48:32 PM
Quote from: Syth on April 16, 2017, 01:13:01 AM
Slowly but surely made my way through, was still rather overwhelming however.

Spoiler
The HQ makes for a lovely "bomb" to destroy the Flare instantly ;)
[close]

*sigh*

Well, I guess people will use whatever works. There are more legitimate ways of beating it though.

Spoiler
For example, the Flare is extremely energy-reliant, and is unable to support its own energy reserves with all guns blazing. Using Missiles, for example, coaxes out the Flare's numerous Particle Beams, which drain energy like a madman. Its extended use of Fighters, MK7s and Shields will also drain its energy.

Trick is to be patient, wear away at its energy (even sneak a strike at the energy mines near its patrol route to cut off half of its guppy supply). Not so much to use the HQ as a veritable nuke for large ships, since that trick could be used for all Super-Capitals in my maps and completely ruins the whole challenge of them. :/
[close]
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: GoodMorning on April 16, 2017, 06:54:45 PM
Decagon, I think this is the point where a custom HQ (the old one being lost forever) may become helpful.

Edit, having read the below:

Fair point, I had thought that "fail on HQ loss" was a different setting. I'll put in a suggestion so that at least a script can help.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Keeper Decagon on April 16, 2017, 09:48:55 PM
Quote from: GoodMorning on April 16, 2017, 06:54:45 PM
Decagon, I think this is the point where a custom HQ (the old one being lost forever) may become helpful.

Perhaps, but a few things to consider are MK7s, because people don't know how to protect their HQ's properly, and various enemy vessels also have HQ modules. If you kill an enemy HQ-bearing ship, you lose all the same. Removing the modules makes the Super-Caps/other command ships look lame and much less important than their role dictates.

For a prime example of the first point, look no further than the map "Singularity" and its utterly dismal rating and feedback. I made it a "loss on HQ destruction" map, and since MK7s are a part of the increased difficulty my maps present, apparently it was unfair how the MK7s could out of nowhere bust a HQ, despite there being a multitude of shielded ships capable of protecting them from harm.

I just don't understand why people feel the need to use cheese to pass a map that is very much passable with even mediocre PF skills like my own. I wouldn't need to resort to making HQ death a failure condition if the puzzle I presented wasn't being so cheaply bypassed.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Bluepikmin64 on April 16, 2017, 11:36:25 PM
Here's what I did:
Spoiler
I first pushed to capture the flip emitters and cannons. After capturing all of those around an energy mine, I would capture that too. Once the area was successfully I began to mire all the land. I simultaneously sought out the invisible ship spawners. (Some were already destroyed cause they take priority over mines and cannons) After that I captured/destroyed the mines near the Flare.

At this point, the cannon at the bottom would occasionally pound the Flare. The Flare would of course try to recapture the mines, but that was fine. The Flare would move out of range of the mine after recapturing, so it lost more energy than it was making. When it's tanks were half full (or half empty) I moved the MK7s (All AMPed) and the carriers into range. This quickly drained its remaining energy reserves. Once the shields were down, its engines were able to be destroyed. The Flare became a sitting duck. It was quickly destroyed after this. I then kept an MK7 next to its spawner and took down the nexus. 
[close]

My strategy took a long time and was probably really unnecessary,but that's what made it fun.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Syth on April 17, 2017, 06:34:46 AM
I'll admit that having felt bad I replayed the map. Overall it's fun just more on the and time consuming side if played "properly".
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Johnny Haywire on May 11, 2017, 11:33:57 PM
This is one of those maps where you can make slow, steady, almost lossless progress if you're patient enough.

I found that a small group of ships in the middle was enough to secure the mine then my omni-ninjas took the bottom flip emitter & subsequently the mine pretty easily. From there it was just all sorts of fun.

This map was so well planned by the end of it, as the super-overpowered flare is slowly powerless, you actually feel bad for it. Almost.  :D

Still enjoying your series! Thanks again for all your work on these  ;D ;D
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: tornado on May 20, 2017, 08:35:38 AM
something to consider, if its impossible to make the map HQ fail because of enemies, perhaps have a PRPL core with a lose condition on top of the existing HQ?
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: GoodMorning on May 20, 2017, 08:49:40 AM
How, pray tell, is that different?

There is a possible workaround involving jump time examination to fail the mission if the HQ lasts less than (say) three frames when it warps in, in order to prevent HQ bombing.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: tornado on May 20, 2017, 09:09:32 AM
From what I understand the condition "Fail on HQ loss" causes the mission to fail if a HQ module dies, no matter whose.
What I'm suggesting is place a PRPL core over the relevant ship/s and say something like
"Stay on this position relative to the ship. if this thing dies, fail the level".
Please don't write code for this, I want to take a crack at it *Dusts off Text Editor and wiki pages*

I'm presuming this is possible, I heard some suggest it somewhere before...
If it isn't well that's a shame.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Keeper Decagon on May 20, 2017, 12:55:54 PM
Well, if you manage to get a working script, do let me know. The sooner I can abolish unwarranted HQ bombing, the better.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: tornado on May 20, 2017, 04:05:01 PM
Good news: I have the relevant commands(FAILMISSION, and , GETSHIPISDESTROYED).
Bad news 1:There is no documentation for either command. so I don't know what inputs they take, or what outputs they give.
bad news 2:GETSHIPISDESTROYED probably relies on a ship UID, which ranges form 0-23. that's every slot EXCEPT the Default HQ.
So if I can hammer a prototype together I should work fine, for that one ship. it wont work if the ship is moved from that slot, or if
it doesn't start built(I'm fairly sure it would get a little stroppy at that).

again, if anyone else is working on this, can I please have the satisfaction of actually having done some PRPL? I have something that
is a start, I can probably get it working. just let me figure out stack based languages first.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: FOXX on May 20, 2017, 04:30:37 PM
I have a script from Stickman to contain the HQ. Maybe that can help him.
I've send Decagon a PM.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: tornado on May 20, 2017, 04:51:04 PM
Got a very simple test model. it...doesn't work. the syntax isn't Wrong, it will compile, just not do anything when you run it.


# --HQDeathFail-- 5/20/2017 9:17:24 PM

do(0 1)
if GetShipFromSlot 23 eq -1
  FAILMISSION
endif
loop

Getshipfromslot returns -1 if the ship is not built.
the rest is obvious. can't think why it doesn't work, or why there are two separate commands that both do this.
Since I don't understand the issue, can someone fix this and explain where I went wrong(What more proof do
I need that I should go learn stack based languages).

Also, correct me if I'm wrong, but isn't the idea to prevent HQ bombing? a confinement script would only work if it was
fed the whole map, and handles ships being destroyed and resummoned, snd even then that doesnt solve the issue.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: FOXX on May 20, 2017, 05:33:53 PM
With the confinement you can cover the whole map and leave a banner where the big ship is. [This worked with my Maze Series] If its a moving big ship that is impossible with this script.
It can be a base for a future script but i don't know how to make this. [i am learning myself]
To make this a fail mission when somebody tries to go out of the confinement area is also an option.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Stickman on May 20, 2017, 07:30:16 PM
Quote from: tornado on May 20, 2017, 04:51:04 PM
Got a very simple test model. it...doesn't work. the syntax isn't Wrong, it will compile, just not do anything when you run it.


# --HQDeathFail-- 5/20/2017 9:17:24 PM

do(0 1)
if GetShipFromSlot 23 eq -1
  FAILMISSION
endif
loop

Getshipfromslot returns -1 if the ship is not built.
the rest is obvious. can't think why it doesn't work, or why there are two separate commands that both do this.
Since I don't understand the issue, can someone fix this and explain where I went wrong(What more proof do
I need that I should go learn stack based languages).

Also, correct me if I'm wrong, but isn't the idea to prevent HQ bombing? a confinement script would only work if it was
fed the whole map, and handles ships being destroyed and resummoned, snd even then that doesnt solve the issue.

Proper code (syntaxwise) should look something like this:

23 GetShipFromSlot -1 eq if
    failmission
endif

You don't need a loop here and while your code may compile, it doesn't mean it would work, sorry. In your case you have "do" arguments mixed up - you need to put bigger number first, smaller second - so your script doesn't even get inside "do-loop".

But since you can't block player from changing ship slot, it's better to check for ship name. Give your ship unique name and check for it. Like:

$ShipName:"LATHE"
$FailConv:"Lathe lost"

23 0 do
    I getshipfromslot 0 lt I getshipnamefromslot <-ShipName eq and if
        <-FailConv showconversation #It's nice to tell player why mission was failed in short conversation to prevent confusion
        failmission
    endif
loop
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Dark Ambition on May 20, 2017, 07:59:41 PM
Quote from: Stickman on May 20, 2017, 07:30:16 PM
Quote from: tornado on May 20, 2017, 04:51:04 PM
Got a very simple test model. it...doesn't work. the syntax isn't Wrong, it will compile, just not do anything when you run it.


# --HQDeathFail-- 5/20/2017 9:17:24 PM

do(0 1)
if GetShipFromSlot 23 eq -1
  FAILMISSION
endif
loop

Getshipfromslot returns -1 if the ship is not built.
the rest is obvious. can't think why it doesn't work, or why there are two separate commands that both do this.
Since I don't understand the issue, can someone fix this and explain where I went wrong(What more proof do
I need that I should go learn stack based languages).

Also, correct me if I'm wrong, but isn't the idea to prevent HQ bombing? a confinement script would only work if it was
fed the whole map, and handles ships being destroyed and resummoned, snd even then that doesnt solve the issue.

Proper code (syntaxwise) should look something like this:

23 GetShipFromSlot -1 eq if
    failmission
endif

You don't need a loop here and while your code may compile, it doesn't mean it would work, sorry. In your case you have "do" arguments mixed up - you need to put bigger number first, smaller second - so your script doesn't even get inside "do-loop".

But since you can't block player from changing ship slot, it's better to check for ship name. Give your ship unique name and check for it. Like:

$ShipName:"LATHE"
$FailConv:"Lathe lost"

23 0 do
    I getshipfromslot 0 lt I getshipnamefromslot <-ShipName eq and if
        <-FailConv showconversation #It's nice to tell player why mission was failed in short conversation to prevent confusion
        failmission
    endif
loop


Wait, so this fails a mission if the designated ship was destroyed and gives a conversation too? I've actually been trying to make that (and not knowing what the heck I was doing, so I didnt get anywhere), can I use it?

Can it also be converted to winning the mission if the designated player ship was destroyed?
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Stickman on May 21, 2017, 04:53:00 AM
Quote from: Dark Ambition on May 20, 2017, 07:59:41 PM
Wait, so this fails a mission if the designated ship was destroyed and gives a conversation too? I've actually been trying to make that (and not knowing what the heck I was doing, so I didnt get anywhere), can I use it?
Yes, it does for designated player ship in slots.
I think you can use it no problem, the thing is 8 lines long and pretty generic, I doubt you'll run into copyright issues.

Quote
Can it also be converted to winning the mission if the designated player ship was destroyed?
Change "failmission" to "winmisson", but I see no point in doing this other than for "Easter Egg Secret Ending" stuff, because player can select designated ship and press "destroy" button anytime. And the win/fail part will activate as soon as you have unbuilt ship in slots, so if you plan to give the player some weird winning condition, like "pick up a ship from guarded area and the suicide it into enemy boss entity", you'll need something more complex than this one.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: tornado on May 21, 2017, 05:29:53 AM
thanks for the correction, I'm still getting the hang of this.
the reason I have a do loop where I is greater than Limit(And hey, if that wasn't allowed wouldn't it throw some kind of error. EG: limit = 1.1*10^9 stacks deep. other languages I am more comfortable with tend to) is because I wanted this to run that check indefinitely(and there's no 'forever loop' in PRPL that I could find, and yes I look at While, it's poorly documented).
I did bring up the whole "moving ship slot thing" as an issue, thanks for fixing that. I also brought up the 'Compiles but won't run' issue and put it down to "I don't know what I'm doing". thanks for this.

BTW: I'm not the first to ask(7 bill people alive, someone has) but can we please have someone look at the wiki? I don't understand stack based syntax and being told "Go look at CRPL" doesn't really help. also, the PF examine map resources button doesn't work.

Finally, we really needed a top for this. Drat.
Either I need to start relying on other people to bring up subjects like this and move them quickly, or something else needs to happen that I can't think of.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: Stickman on May 21, 2017, 05:42:41 AM
Quote from: tornado on May 21, 2017, 05:29:53 AM
because I wanted this to run that check indefinitely
Everything in the script runs once per frame(30 frames per second), so you have your infinite loop "built-in"

Quote
BTW: I'm not the first to ask(7 bill people alive, someone has) but can we please have someone look at the wiki? I don't understand stack based syntax and being told "Go look at CRPL" doesn't really help. also, the PF examine map resources button doesn't work.

Finally, we really needed a top for this. Drat.
Either I need to start relying on other people to bring up subjects like this and move them quickly, or something else needs to happen that I can't think of.
To be honest, I think wiki is fine once you get some concepts(like the whole stack-based reverse nature) into your head properly. But we need some good comprehensive tutorial for that, preferably as a youtube video, and that's a pretty big task, unfortunately.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: tornado on May 21, 2017, 06:25:08 AM
No I mean things such a 'While' and 'loop' not being copy-pastes of each other, and some of the more interesting commands being given clear inputs and outputs('GETSHIPISDESTROYED' has no listings, so it is unclear as to what it needs be it name, slot, or UID0.
Title: Re: Custom Map #728: Extermination. By: Decagon
Post by: GoodMorning on May 21, 2017, 11:44:40 PM
Now that I can get to the forum again...

Failing the mission upon HQ death is the current state of affairs. I had in mind something more like the following:

once
0 ->HQAge
0 ->NewHQ
0 ->InitialPlacement #Set to 1 if you are placing a HQ for the player.
endonce

<-InitialPlacement not if #You can place the HQ freely the first time - I can't see a good way to get around this that isn't vulnerable to processing order.
IsHQPresent if
1 ->InitialPlacement
else
return
endif
endif

IsHQPresent if #I'm unsure how this will react to enemy HQs.
<-NewHQ if
0 ->HQAge
0 ->NewHQ
endif

<-HQAge 1 add ->HQAge
else
<-HQAge 3 lt if #It's unlikely that the HQ was killed "naturally" inside a tenth of a second. Call it a momentary recharge for the Rift Engines.
FailMission
endif
1 ->NewHQ #This flag indicates that the HQ needs the counter reset next time it is detected.
endif


I don't know if the HQ will be detected if immediately destroyed. This may render the above useless.

I'm conversing with Stickman via PM to come up with a better solution.


Regarding the wiki, it's a shambles for PRPL documentation. However, the CRPL tutorial is the best introduction to stack-based scripting I've seen, and ports directly to PRPL.