3P Maps

Started by ThirdParty, October 21, 2013, 10:02:06 PM

Previous topic - Next topic

Annonymus

As from what I've read about it I think i would like nihon, but regardless of what I try I can't survive the first 2 minutes...
My best try was to land the CN at the mid-bottom of the map and defending myself with blasters while building as many collectors as possible, but I need at least 6 blasters if not more to defend myself which I can't handle with the limited energy I have.
If a topic started by me is in the wrong place feel free to move it at anytime.

ThirdParty

Quote from: Annonymus on December 04, 2013, 08:58:27 AMAs from what I've read about it I think i would like nihon, but regardless of what I try I can't survive the first 2 minutes.

Oh, right, there is that.  Here's how you start 3P Nihon:
Spoiler
Land in the mid-bottom.  Don't attempt to defend, just immediately launch an assault against the central emitter.  After it's nullified, move your CN to the power zone.
[close]

ThirdParty

3P Tharsis (download)

This map introduces the Hemishield, a rotating shield that protects up to half of an enemy unit from nullification.  To defeat it, you have to attack the unit from multiple directions at once.  I know my recent maps have been too hard, so I tried to be more gentle this time (though the start-up is a bit challenging, as usual); the map should appeal to people who liked 3P Khyber.

Geology: this one's a mostly-airless world, so the landscape is dotted with meteor craters.  However, the major terrain features--all of the mountain peaks, as well as the high plateau on the left--is due to a very old volcanic hotspot which, over countless eons, has erupted many times in this vicinity.  There's also an interesting network of cracks in the lower left, produced by the violence of eruptions and impacts, and retained due to the lack of erosion.

Clean0nion

Quote from: ThirdParty on December 06, 2013, 06:50:33 PM
Geology: this one's a mostly-airless world, so the landscape is dotted with meteor craters.  However, the major terrain features--all of the mountain peaks, as well as the high plateau on the left--is due to a very old volcanic hotspot which, over countless eons, has erupted many times in this vicinity.  There's also an interesting network of cracks in the lower left, produced by the violence of eruptions and impacts, and retained due to the lack of erosion.
You're always excellent with your geologistic detail. Makes your maps look more realsitic.

Azraile

Quote from: ThirdParty on October 22, 2013, 06:41:45 PM
Quote from: teknotiss on October 22, 2013, 03:17:41 PMlove this map. good work dude, i love the "sea of creeper" effect/script especially (i'll no doubt be shamelessly stealing that one ;)).
now you just have to do a world map  :D
(or perhaps i should, then i have a reason to steal the script, right?)
Yeah, go for it.

Here's the core of the ocean script, in case anyone wants to use it without reinventing the wheel:
# Ocean.crpl
# Created by: ThirdParty
# Created on: 10/15/2013
# ------------------------------------------
$currentTide:4.5

once
CreateList ->edgeListX
CreateList ->edgeListY
do(MapHeight 0)
do(MapWidth 0)
# The edges of the map have been marked with walls.
# Note that the edge list must be built in the final version, it can't be stored in advance.
if(GetWall(i j) neq0)
SetWall(i j 0)
AppendToList(<-edgeListX i) AppendToList(<-edgeListY j)
endif

# All low-lying areas should begin the game flooded.
if(not(GetVoid(i j)))
SetCreeper(i j max(sub(<-currentTide GetTerrain(i j)) 0))
endif
loop
loop
endonce

# Seepage to/from edges.  Note that this needs to be done every frame or we get annoying flickering.
do(GetListCount(<-edgeListX) 0)
GetListElement(<-edgeListX i) ->tX
GetListElement(<-edgeListY i) ->tY
SetCreeper(
<-tX <-tY
add(
mul(GetCreeper(<-tX <-tY) 0.96)
mul(max(sub(<-currentTide GetTerrain(<-tX <-tY)) 0) 0.04)
)
)
loop



This is awsome....

Is there any way this can be changed to use the code so it uses digitalis as the marker for the edge of the map.... I'm already using walls.

And how do I change the level it tries to keep the creep at?

I'm making a few maps one is WAY deep in the creep and the whole map should be submurged if given the chance to do it  and the other should say only fill up to 6~8 high with creep....

I would just ask for a code to make it come from the edges but half the map ideas I have for this it will come from all derections.... there are some that there is 'land' that goes off the screen/edge so I wouldn't want creep flowing from there.

ThirdParty

#80
Quote from: Azraile on May 14, 2014, 08:18:28 PMIs there any way this can be changed to use the code so it uses digitalis as the marker for the edge of the map.... I'm already using walls.
If you replace "GetWall" with "GetDigitalisGrowth" and "SetWall" with "SetDigitalisGrowth", that ought to do the trick.

QuoteAnd how do I change the level it tries to keep the creep at?
Set the "currentTide" variable to whatever you want the new level to be.

QuoteI would just ask for a code to make it come from the edges but half the map ideas I have for this it will come from all derections.... there are some that there is 'land' that goes off the screen/edge so I wouldn't want creep flowing from there.
Since it simulates an off-screen ocean of creeper, it should be smart enough not to flood land even if the land is on the edge.

To make the creeper come from the edges without needing to mark them with anything, replace the "if(GetWall(i j) neq0)" line with "if(i eq0 or(j eq0) or(i eq(MapWidth sub(1))) or(j eq(MapHeight sub(1))))" and take out the "SetWall(i j 0)" line.

Azraile

If I set it to flow from the edges of the screen and there is land above the 'water' level I have set, will it flow from that spot or will it see there is land there and not produce anything?

ThirdParty

Quote from: Azraile on May 14, 2014, 08:49:24 PMIf I set it to flow from the edges of the screen and there is land above the 'water' level I have set, will it flow from that spot or will it see there is land there and not produce anything?
It will see that there is land there and not produce anything.  (Unless, of course, the player decides to terraform the land down below sea level.)

However, if there is creeper or anticreeper on the land, it will drain off into the ocean that is assumed to be beyond the edge.

Azraile

oh that's fine, I would do that anyway if it was land... there would be empty land to flow off into

sorry to ask so many questions....


but if it's say set for 15..... and there is level 10 land at one place and level 5 land at another... will more creep flow from the 5 than the 10?

ThirdParty

Quote from: Azraile on May 14, 2014, 09:23:50 PMif it's say set for 15..... and there is level 10 land at one place and level 5 land at another... will more creep flow from the 5 than the 10?
Yes.

Azraile

AWSOME

lol

if you look in the corrupted unit threat you can see I have some ambitious map ideas... hopefully I can get them all up and running

Azraile

# Ocean.crpl
# Created by: ThirdParty
# Created on: 10/15/2013
# ------------------------------------------
$currentTide:15

once
CreateList ->edgeListX
CreateList ->edgeListY
do(MapHeight 0)
do(MapWidth 0)
# The edges of the map have been marked with walls.
# Note that the edge list must be built in the final version, it can't be stored in advance.
if(i eq0 or(j eq0)
AppendToList(<-edgeListX i) AppendToList(<-edgeListY j)
endif

# All low-lying areas should begin the game flooded.
if(not(GetVoid(i j)))
SetCreeper(i j max(sub(<-currentTide GetTerrain(i j)) 0))
endif
loop
loop
endonce

# Seepage to/from edges.  Note that this needs to be done every frame or we get annoying flickering.
do(GetListCount(<-edgeListX) 0)
GetListElement(<-edgeListX i) ->tX
GetListElement(<-edgeListY i) ->tY
SetCreeper(
<-tX <-tY
add(
mul(GetCreeper(<-tX <-tY) 0.96)
mul(max(sub(<-currentTide GetTerrain(<-tX <-tY)) 0) 0.04)
)
)
loop



IS that right?

and dose this:

# All low-lying areas should begin the game flooded.
if(not(GetVoid(i j)))
SetCreeper(i j max(sub(<-currentTide GetTerrain(i j)) 0))
endif
loop
loop
endonce


flood the map at the start?

most the maps I'll want that but one I won't...

ThirdParty

Quote from: Azraile on May 14, 2014, 09:34:32 PM
# Ocean.crpl
# Created by: ThirdParty
# Created on: 10/15/2013
# ------------------------------------------
$currentTide:15

once
CreateList ->edgeListX
CreateList ->edgeListY
do(MapHeight 0)
do(MapWidth 0)
# The edges of the map have been marked with walls.
# Note that the edge list must be built in the final version, it can't be stored in advance.
if(i eq0 or(j eq0)
AppendToList(<-edgeListX i) AppendToList(<-edgeListY j)
endif

# All low-lying areas should begin the game flooded.
if(not(GetVoid(i j)))
SetCreeper(i j max(sub(<-currentTide GetTerrain(i j)) 0))
endif
loop
loop
endonce

# Seepage to/from edges.  Note that this needs to be done every frame or we get annoying flickering.
do(GetListCount(<-edgeListX) 0)
GetListElement(<-edgeListX i) ->tX
GetListElement(<-edgeListY i) ->tY
SetCreeper(
<-tX <-tY
add(
mul(GetCreeper(<-tX <-tY) 0.96)
mul(max(sub(<-currentTide GetTerrain(<-tX <-tY)) 0) 0.04)
)
)
loop
IS that right?
No.  You want:# Ocean.crpl
# Created by: ThirdParty
# Created on: 10/15/2013
# ------------------------------------------
$currentTide:15

once
CreateList ->edgeListX
CreateList ->edgeListY
do(MapHeight 0)
do(MapWidth 0)
# The edges of the map have been marked with walls.
# Note that the edge list must be built in the final version, it can't be stored in advance.
if(i eq0 or(j eq0) or(i eq(MapWidth sub(1))) or(j eq(MapHeight sub(1))))
AppendToList(<-edgeListX i) AppendToList(<-edgeListY j)
endif

# All low-lying areas should begin the game flooded.
if(not(GetVoid(i j)))
SetCreeper(i j max(sub(<-currentTide GetTerrain(i j)) 0))
endif
loop
loop
endonce

# Seepage to/from edges.  Note that this needs to be done every frame or we get annoying flickering.
do(GetListCount(<-edgeListX) 0)
GetListElement(<-edgeListX i) ->tX
GetListElement(<-edgeListY i) ->tY
SetCreeper(
<-tX <-tY
add(
mul(GetCreeper(<-tX <-tY) 0.96)
mul(max(sub(<-currentTide GetTerrain(<-tX <-tY)) 0) 0.04)
)
)
loop


Quoteand dose this:

# All low-lying areas should begin the game flooded.
if(not(GetVoid(i j)))
SetCreeper(i j max(sub(<-currentTide GetTerrain(i j)) 0))
endif
loop
loop
endonce


flood the map at the start?
Only the first four lines of that.  (The comment, the if statement, the SetCreeper statement, and the endif.)  Leave the "loop"s and "endonce" alone.

Azraile

LOL oh you ment the whole thing not this or that XD


oh well

this code will help a lot thanks ^.^

I can go without the other codes and the corrupted units (though I REALY want them lol)

.... this can go anywhere on the map right?

Azraile

ok I added the code but it's not forming at the bottom of the map or the sides near the bottom x.x