[MAP in Progress] See how i make an Image Map [Image Map 4]

Started by FOXX, June 05, 2017, 09:06:46 AM

Previous topic - Next topic

FOXX

In this thread you can watch the progress of me making an image map.
This idea came from GoodMorning after he had won the AK47 map contest.
Link AK47 Map

Because this is an Image Map the order s a little bit different then in my other maps.
In other maps i usually start with ideas for a new Map/Series. Then i start with construction Land Layout.

With an Image Map the Image [=Land] takes the majority of the map so with Image Maps i build the Map around the Image.

First things first -> Making the Image.
GM wanted an Image Map of the Main Menu of Particle Fleet. I chose the Exchange menu because it's an Exchange Map.
Original Image
[close]

The next step is to Convert the Image to Land.
For this i use a Script originally made by Willbir [CPRL] and converted into PRPL by Stickman and Myself.
See thread of this Script

After Converting the Image in the Editor the Image Map looks like this.
Original Image Map
[close]

Now the Land needs to be made a little more beautifull.
This is the result:
Main Menu Map

Notice the starting point
[close]


And now the ideas come in, this is what i had for info:

Quote from: GoodMorning on June 03, 2017, 08:55:42 AM
"Take thee a screenshot of the main menu, upon this build thee a game of Omnis and technologies. Further, include thee references abundant, and let thy walls number III. 3 being the number of walls, not one, two or six. Five, also, shall be forbidden. Above all, retain thee not the fourth wall, and flit thee between narratives as one with an ASHPD on a Benden dragon, were thee wearing the One Ring, about to meet Jadis, and experiencing a hypersapce jump while having originated in a Plural sector, in an improbability field located in L-space, without the Arc to guide you."

My interpretation:

[these are my first ideas for this map and i know from other maps that these ideas can be changed, deleted or improved along this process]


Quote"Take thee a screenshot of the main menu, upon this build thee a game of Omnis and technologies."
-> Image Ready -> It will be an Omni / Tech Map.

Quote"Further, include thee references abundant, and let thy walls number III. 3 being the number of walls, not one, two or six. Five, also, shall be forbidden"
3 Walls -> Can be a Land Wall, can be Struc Walls, can be particle Wall. Struc Walls around land to enclose it.
I'm thinking 1 Struc Wall in the beginning [so this is the first part to conquer], 1 LandWall height 5 with some defenses on it [maybe for the final part of the map] and 1 Struc Wall to enclose a part of the land somewhere. [with important pickups inside. And/or more Omni Pickups to progress]

Quote"Above all, retain thee not the fourth wall, and flit thee between narratives as one with an ASHPD on a Benden dragon, were thee wearing the One Ring, about to meet Jadis"
Yeah, about this part i have to think some more.
This implies that the map needs some action i think.

Quote"and experiencing a hyperspace jump while having originated in a Plural sector, in an improbability field located in L-space, without the Arc to guide you."
Spawning of some sort.
Hmm ... Without the Arc to guide you ..... hmmm. So maybe in the beginning you have an Arc and after a certain point the Arc vanishes and you don't have it anymore for support.
[close]

IDEAS
All things considering i've made up this main idea for the map:
At first i was thinking of making an Omni only map but then i was thinking about the Arc. About making the Arc a special unit. Lets say this map has quite some Enemy StunnerSpawners and the Arc has a Discharger ability and can shoot down a lot of Enemy Stunners. The Arc is pre-build at the start.
And you have no ships, only Omnis.

In the Map there will be 1 custom ship [named the GM1] you can pickup with your Omnis. The GM1 has Dischargers.
When you make progress [say destroy emitters or enemy units] Land will vanish and you can place the GM1 ships into these spaces.
And after some ship pickups the Arc will no longer assist you and you have to
shoot the Enemy Stunners down with the GM1 ships.

In the meantime your Omnis are busy with destroying Enemy Units and Picking up things.
[close]

Update Land Layout
Spoiler
[close]

                                               NEW STUFF 6-10-2017

I have changed the Land Layout once more
New Land Layout
[close]

Start Conversation
Amicus - Commander, we have a problem.
We came from a Plural Sector and made a Hyperspace Jump to this Sector but something went wrong.
Our Fleet Didn't came through to this Sector.

Ticon - Ow My ...
And where did we end up Amicus?

Amicus - We ended up in an improbability field located in L-Space and i'm afraid there is no way back.
We just have to Conquer this Sir.

Ticon - I guess so. Ana -> Whats the Info here?

Ana - After scanning this Sector i have discovered some interesting things.
Like there are some Ship Pickups present and there is an Omni Deposit on Coords 14 71.
It is very useful to go there because it holds 6 Omnis!

Ticon - Ahaa, and what else?

Ana - Also in the Centre of the map i have located a Friendly Unit -> The Phantom Coil. It is a Powerful Defensive Unit against Enemy Stunners.
I don't know how that got here but it's Active.

Ticon - Nice, so we have some help.
Now it's time for our Omnis to prove their Value.
[close]

New Ideas
The 3 Option Menu's in the Corners i can place Enemy Units [Mire Spawner, Emitter] so the text has to go away. [See Scripts]

Also i have made an Emitter Wall. It is to surround the Emitter in the Right so it can be Lathe with Omnis. [that is 1 Wall used !]

For taking the South East options Menu the Omnis have to go to some Enemy Struc to reach it. [That is a Struc Wall - 2 Walls used]
[close]

Scripts, Tested

Proximity Left
$PointX:32
$PointY:20
$Range:35
$Msg:"Menu Left"

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

150 ->ListPeriod
30 ->CheckPeriod

<-ListPeriod ->OLTime
<-ListPeriod 2 div ->SLTime

<-CheckPeriod ->OCTime
<-CheckPeriod 2 div ->SCTime

<-PointX 0 lt <-PointY 0 lt and if
currentcoords ->PointY ->PointX
endif

<-Range 1 lt if
1 ->Range
endif

<-PointX <-Range sub ->LowerX
<-PointX <-Range add ->UpperX
<-PointY <-Range sub ->LowerY
<-PointY <-Range add ->UpperY

mapwidth mapheight max 8 div ->ScanRange
mapwidth 8 div ->CenterX
mapheight 8 div ->CenterY
false ->Proximity
endonce

<-OLTime eq0 if
<-CenterX <-CenterY <-ScanRange 1 getallunitsinrange ->UnitList
createlist ->OmniList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype "Omni" eq if
<-OmniList <-UnitList[I] appendtolist
endif
loop
<-ListPeriod ->OLTime
else
<-OLTime 1 sub ->OLTime
endif

<-SLTime eq0 if
<-CenterX <-CenterY <-ScanRange 1 getallshipsinrange ->ShipList
createlist ->FriendlyList
<-ShipList getlistcount 0 do
<-ShipList[I] getshipisenemy 0 eq if
<-FriendlyList <-ShipList[I] appendtolist
endif
loop
<-ListPeriod ->SLTime
else
<-SLTime 1 sub ->SLTime
endif

<-OCTime eq0 if
<-OmniList getlistcount 0 do
<-OmniList[I] getunitcoords ->OmniY ->OmniX
<-OmniX <-LowerX gt <-OmniX <-UpperX lt and <-OmniY <-LowerY gt and <-OmniY <-UpperY lt and if
true ->Proximity
break
endif
loop
<-CheckPeriod ->OCTime
else
<-OCTime 1 sub ->OCTime
endif

<-SCTime eq0 if
<-FriendlyList getlistcount 0 do
<-FriendlyList[I] getshipcoords ->ShipY ->ShipX
<-ShipX <-LowerX gt <-ShipX <-UpperX lt and <-ShipY <-LowerY gt and <-ShipY <-UpperY lt and if
true ->Proximity
break
endif
loop
<-CheckPeriod ->SCTime
else
<-SCTime 1 sub ->SCTime
endif

<-Proximity if
<-Msg showconversation
AddGameEventAtCell(0 "LAND ALTERNATION BEGINS" 33 40 180) ->gameEvent
300 delay
13 35 3 4 1 setlandbulk
19 35 3 4 1 setlandbulk
26 35 3 4 1 setlandbulk
32 35 3 4 1 setlandbulk
38 35 3 4 1 setlandbulk
44 35 3 4 1 setlandbulk
50 35 3 4 1 setlandbulk
57 35 3 4 1 setlandbulk
AddGameEventAtCell(0 "CORPORATION TEXT ERASED" 34 34 180) ->gameEvent
240 delay
10 24 4 4 1 setlandbulk
18 24 4 4 1 setlandbulk
27 24 4 4 1 setlandbulk
35 24 4 4 1 setlandbulk
44 24 4 4 1 setlandbulk
52 24 4 4 1 setlandbulk
AddGameEventAtCell(0 "ACHIEVEMENTS TEXT ERASED" 34 23 180) ->gameEvent
240 delay
12 15 3 3 1 setlandbulk
19 15 3 3 1 setlandbulk
26 15 3 3 1 setlandbulk
32 15 3 3 1 setlandbulk
39 15 3 3 1 setlandbulk
45 15 3 3 1 setlandbulk
51 15 3 3 1 setlandbulk
57 15 3 3 1 setlandbulk
AddGameEventAtCell(0 "LOAD MISSION TEXT ERASED" 34 14 180) ->gameEvent
240 delay
16 7 4 3 1 setlandbulk
22 7 4 3 1 setlandbulk
29 7 4 3 1 setlandbulk
35 7 4 3 1 setlandbulk
42 7 4 3 1 setlandbulk
48 7 4 3 1 setlandbulk
AddGameEventAtCell(0 "SETTINGS TEXT ERASED" 34 6 180) ->gameEvent
self 0 destroyunit
endif

:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
Proximity Right
$PointX:340
$PointY:10
#Point coords. Leave at -1 to automatically set to initial core position
$Range:32
#"Radius" in map cells
$Msg:"Menu Right"
#Conversation name as in editor

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

150 ->ListPeriod
30 ->CheckPeriod

<-ListPeriod ->OLTime
<-ListPeriod 2 div ->SLTime

<-CheckPeriod ->OCTime
<-CheckPeriod 2 div ->SCTime

<-PointX 0 lt <-PointY 0 lt and if
currentcoords ->PointY ->PointX
endif

<-Range 1 lt if
1 ->Range
endif

<-PointX <-Range sub ->LowerX
<-PointX <-Range add ->UpperX
<-PointY <-Range sub ->LowerY
<-PointY <-Range add ->UpperY

mapwidth mapheight max 8 div ->ScanRange
mapwidth 8 div ->CenterX
mapheight 8 div ->CenterY
false ->Proximity
endonce

<-OLTime eq0 if
<-CenterX <-CenterY <-ScanRange 1 getallunitsinrange ->UnitList
createlist ->OmniList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype "Omni" eq if
<-OmniList <-UnitList[I] appendtolist
endif
loop
<-ListPeriod ->OLTime
else
<-OLTime 1 sub ->OLTime
endif

<-SLTime eq0 if
<-CenterX <-CenterY <-ScanRange 1 getallshipsinrange ->ShipList
createlist ->FriendlyList
<-ShipList getlistcount 0 do
<-ShipList[I] getshipisenemy 0 eq if
<-FriendlyList <-ShipList[I] appendtolist
endif
loop
<-ListPeriod ->SLTime
else
<-SLTime 1 sub ->SLTime
endif

<-OCTime eq0 if
<-OmniList getlistcount 0 do
<-OmniList[I] getunitcoords ->OmniY ->OmniX
<-OmniX <-LowerX gt <-OmniX <-UpperX lt and <-OmniY <-LowerY gt and <-OmniY <-UpperY lt and if
true ->Proximity
break
endif
loop
<-CheckPeriod ->OCTime
else
<-OCTime 1 sub ->OCTime
endif

<-SCTime eq0 if
<-FriendlyList getlistcount 0 do
<-FriendlyList[I] getshipcoords ->ShipY ->ShipX
<-ShipX <-LowerX gt <-ShipX <-UpperX lt and <-ShipY <-LowerY gt and <-ShipY <-UpperY lt and if
true ->Proximity
break
endif
loop
<-CheckPeriod ->SCTime
else
<-SCTime 1 sub ->SCTime
endif

<-Proximity if
<-Msg showconversation
AddGameEventAtCell(0 "LAND ALTERNATION BEGINS" 340 18 180) ->gameEvent
300 delay
334 15 3 3 1 setlandbulk
340 15 3 3 1 setlandbulk
346 15 3 3 1 setlandbulk
AddGameEventAtCell(0 "HELP TEXT ERASED" 340 15 180) ->gameEvent
240 delay
328 6 4 3 1 setlandbulk
335 6 4 3 1 setlandbulk
342 6 4 3 1 setlandbulk
349 6 4 3 1 setlandbulk
355 6 4 3 1 setlandbulk
AddGameEventAtCell(0 "CREDITS TEXT ERASED" 340 6 180) ->gameEvent
self 0 destroyunit
endif

:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
Proximity North
$PointX:350
$PointY:200
#Point coords. Leave at -1 to automatically set to initial core position
$Range:25
#"Radius" in map cells
$Msg:"Menu North"
#Conversation name as in editor

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

150 ->ListPeriod
30 ->CheckPeriod

<-ListPeriod ->OLTime
<-ListPeriod 2 div ->SLTime

<-CheckPeriod ->OCTime
<-CheckPeriod 2 div ->SCTime

<-PointX 0 lt <-PointY 0 lt and if
currentcoords ->PointY ->PointX
endif

<-Range 1 lt if
1 ->Range
endif

<-PointX <-Range sub ->LowerX
<-PointX <-Range add ->UpperX
<-PointY <-Range sub ->LowerY
<-PointY <-Range add ->UpperY

mapwidth mapheight max 8 div ->ScanRange
mapwidth 8 div ->CenterX
mapheight 8 div ->CenterY
false ->Proximity
endonce

<-OLTime eq0 if
<-CenterX <-CenterY <-ScanRange 1 getallunitsinrange ->UnitList
createlist ->OmniList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype "Omni" eq if
<-OmniList <-UnitList[I] appendtolist
endif
loop
<-ListPeriod ->OLTime
else
<-OLTime 1 sub ->OLTime
endif

<-SLTime eq0 if
<-CenterX <-CenterY <-ScanRange 1 getallshipsinrange ->ShipList
createlist ->FriendlyList
<-ShipList getlistcount 0 do
<-ShipList[I] getshipisenemy 0 eq if
<-FriendlyList <-ShipList[I] appendtolist
endif
loop
<-ListPeriod ->SLTime
else
<-SLTime 1 sub ->SLTime
endif

<-OCTime eq0 if
<-OmniList getlistcount 0 do
<-OmniList[I] getunitcoords ->OmniY ->OmniX
<-OmniX <-LowerX gt <-OmniX <-UpperX lt and <-OmniY <-LowerY gt and <-OmniY <-UpperY lt and if
true ->Proximity
break
endif
loop
<-CheckPeriod ->OCTime
else
<-OCTime 1 sub ->OCTime
endif

<-SCTime eq0 if
<-FriendlyList getlistcount 0 do
<-FriendlyList[I] getshipcoords ->ShipY ->ShipX
<-ShipX <-LowerX gt <-ShipX <-UpperX lt and <-ShipY <-LowerY gt and <-ShipY <-UpperY lt and if
true ->Proximity
break
endif
loop
<-CheckPeriod ->SCTime
else
<-SCTime 1 sub ->SCTime
endif

<-Proximity if
<-Msg showconversation
AddGameEventAtCell(0 "LAND ALTERNATION BEGINS" 350 197 150) ->gameEvent
180 delay
346 197 3 5 1 setlandbulk
355 197 3 5 1 setlandbulk
AddGameEventAtCell(0 "EXIT GAME TEXT ERASED" 350 197 180) ->gameEvent
self 0 destroyunit
endif

:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
Spawn Wall
$UnitX:327
$UnitY:151
$UType:"MireSpawner"
$FlipOrDeath:1
$Msg:"Emitter"
$Precision:2

$Example:40
#Add your own inputs. Remember that you have to provide default value.

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

<-UnitX 0 lt <-UnitY 0 lt and if
currentcoords ->UnitY ->UnitX
endif

<-Precision 0 lt if
0 ->Precision
endif

false ->UnitFound
<-UnitX <-UnitY <-Precision 1 getallunitsinrange ->UnitList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype <-UType eq if
<-UnitList[I] ->UID
true ->UnitFound
break
endif
loop
<-UnitFound not if
self 0 destroyunit
endif

<-UID getunitisenemy not ->FlipState

false ->Activated
endonce

<-UID getunitisenemy <-FlipState eq <-FlipOrDeath not and if
true ->Activated
endif

<-UID getunitisdestroyed <-FlipOrDeath and if
true ->Activated
endif

<-Activated if
<-Msg showconversation
300 delay
326 120 1 20 0 setlandbulk
326 120 0 15 0 setlandbulk
AddGameEventAtCell(1 "WE CONSTRUCTED AN EMITTER RING" 306 120 210) ->gameEvent
self 0 destroyunit
endif



:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
[close]

Now i proceed with game balance. [How many Enemy Stunners vs Phantom Coil]
[Emitter/Mire strenghth Vs How many Omnis/AmpGems]
Strategy for the Map. [Where to go first and what things to do to complete the Map]
Along this proces i usually find out if the Map needs something more]

                                     NEW STUFF 6-12-2017

New Map Layout
[close]
New Scripts

Discharger Script for Phantom Coil

# Made By GoodMorning

$Range:40
$KillTimePerStunner:5

once
<-KillTimePerStunner 30 mul -1 pow ->Damage
#"DMG:" <-Damage Trace2
endonce

CurrentCoords <-Range 0 GetAllUnitsInRange ->Units
#<-Units Trace

0 ->Index
while <-Units GetListCount <-Index gt repeat
<-Units[<-Index] ->UID
<-UID GetUnitType dup "Stunner" eq swap "Stunner(Clone)" eq or if
<-Index 1 add ->Index
else
<-Units <-Index RemoveListElement
endif
endwhile

#<-Units Trace

<-Damage <-Units GetListCount div ->SpreadDamage
<-Units GetListCount 0 do
<-Units[ I ] dup GetUnitHealth <-SpreadDamage sub SetUnitHealth
loop
[close]
MireSpawners Spawn
$UnitX:56
$UnitY:187
$UType:"MireSpawner"
$FlipOrDeath:1
$Msg:"Mire"
$Precision:2

$Example:40
#Add your own inputs. Remember that you have to provide default value.

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

<-UnitX 0 lt <-UnitY 0 lt and if
currentcoords ->UnitY ->UnitX
endif

<-Precision 0 lt if
0 ->Precision
endif

false ->UnitFound
<-UnitX <-UnitY <-Precision 1 getallunitsinrange ->UnitList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype <-UType eq if
<-UnitList[I] ->UID
true ->UnitFound
break
endif
loop
<-UnitFound not if
self 0 destroyunit
endif

<-UID getunitisenemy not ->FlipState

false ->Activated
endonce

<-UID getunitisenemy <-FlipState eq <-FlipOrDeath not and if
true ->Activated
endif

<-UID getunitisdestroyed <-FlipOrDeath and if
true ->Activated
endif

<-Activated if
<-Msg showconversation
240 delay
"MireSpawner" 38 74 createunit ->VID
"JUMPIN" <-VID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(3 "AN ENEMY MIRE SPAWNER HAS SPAWNED" 38 74 210) ->gameEvent
240 delay
"MireSpawner" 29 14 createunit ->CID
"JUMPIN" <-CID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(3 "AN ENEMY MIRE SPAWNER HAS SPAWNED" 29 14 210) ->gameEvent
240 delay
"MireSpawner" 99 110 createunit ->PID
"JUMPIN" <-PID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(3 "AN ENEMY MIRE SPAWNER HAS SPAWNED" 99 110 210) ->gameEvent
240 delay
"MireSpawner" 207 106 createunit ->EID
"JUMPIN" <-EID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(3 "AN ENEMY MIRE SPAWNER HAS SPAWNED" 207 106 210) ->gameEvent
240 delay
"MireSpawner" 229 196 createunit ->AID
"JUMPIN" <-AID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(3 "AN ENEMY MIRE SPAWNER HAS SPAWNED" 229 196 210) ->gameEvent
240 delay
"MireSpawner" 327 15 createunit ->UID
"JUMPIN" <-UID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(3 "AN ENEMY MIRE SPAWNER HAS SPAWNED" 327 15 210) ->gameEvent
240 delay
"MireSpawner" 342 200 createunit ->UnitID
"JUMPIN" <-UnitID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(3 "AN ENEMY MIRE SPAWNER HAS SPAWNED" 342 200 210) ->gameEvent
self 0 destroyunit
endif



:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
AmpGem Spawn 1
$UnitX:81
$UnitY:195
$UType:"OmniPickup"
$FlipOrDeath:1
$Msg:""
$Precision:2

$Example:40
#Add your own inputs. Remember that you have to provide default value.

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

<-UnitX 0 lt <-UnitY 0 lt and if
currentcoords ->UnitY ->UnitX
endif

<-Precision 0 lt if
0 ->Precision
endif

false ->UnitFound
<-UnitX <-UnitY <-Precision 1 getallunitsinrange ->UnitList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype <-UType eq if
<-UnitList[I] ->UID
true ->UnitFound
break
endif
loop
<-UnitFound not if
self 0 destroyunit
endif

<-UID getunitisenemy not ->FlipState

false ->Activated
endonce

<-UID getunitisenemy <-FlipState eq <-FlipOrDeath not and if
true ->Activated
endif

<-UID getunitisdestroyed <-FlipOrDeath and if
true ->Activated
endif

<-Activated if
<-Msg showconversation
"AmpGem" 81 195 createunit ->UID
"JUMPIN" <-UID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(1 "AN AMPGEM SPAWNED" 81 195 210) ->gameEvent
self 0 destroyunit
endif



:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
AmpGem Spawn 2
$UnitX:110
$UnitY:80
$UType:"ShipPickup"
$FlipOrDeath:1
$Msg:""
$Precision:2

$Example:40
#Add your own inputs. Remember that you have to provide default value.

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

<-UnitX 0 lt <-UnitY 0 lt and if
currentcoords ->UnitY ->UnitX
endif

<-Precision 0 lt if
0 ->Precision
endif

false ->UnitFound
<-UnitX <-UnitY <-Precision 1 getallunitsinrange ->UnitList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype <-UType eq if
<-UnitList[I] ->UID
true ->UnitFound
break
endif
loop
<-UnitFound not if
self 0 destroyunit
endif

<-UID getunitisenemy not ->FlipState

false ->Activated
endonce

<-UID getunitisenemy <-FlipState eq <-FlipOrDeath not and if
true ->Activated
endif

<-UID getunitisdestroyed <-FlipOrDeath and if
true ->Activated
endif

<-Activated if
<-Msg showconversation
"AmpGem" 110 80 createunit ->UID
"JUMPIN" <-UID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(1 "AN AMPGEM HAS SPAWNED" 110 80 210) ->gameEvent
self 0 destroyunit
endif



:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
[close]

Now i have pretty much all units on the Map. I can start testplaying and see if and what has to be changed. [usually locations of units, maybe some Land changing or adding/removing things]
And i will see if the balancing is good. [Energy is probable the most important but this being an Omni map it is pretty easy]
And i have to implement 1 more Wall of some sort.

                                           NEW STUFF 6-13-2017

More Scripts

AmpGem Spawn 3
$UnitX:110
$UnitY:113
$UType:"OmniPickup"
$FlipOrDeath:1
$Msg:""
$Precision:2

$Example:40
#Add your own inputs. Remember that you have to provide default value.

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

<-UnitX 0 lt <-UnitY 0 lt and if
currentcoords ->UnitY ->UnitX
endif

<-Precision 0 lt if
0 ->Precision
endif

false ->UnitFound
<-UnitX <-UnitY <-Precision 1 getallunitsinrange ->UnitList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype <-UType eq if
<-UnitList[I] ->UID
true ->UnitFound
break
endif
loop
<-UnitFound not if
self 0 destroyunit
endif

<-UID getunitisenemy not ->FlipState

false ->Activated
endonce

<-UID getunitisenemy <-FlipState eq <-FlipOrDeath not and if
true ->Activated
endif

<-UID getunitisdestroyed <-FlipOrDeath and if
true ->Activated
endif

<-Activated if
<-Msg showconversation
"AmpGem" 174 25 createunit ->UID
"JUMPIN" <-UID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(1 "AN AMPGEM HAS SPAWNED" 174 25 210) ->gameEvent
"AmpGem" 202 183 createunit ->EID
"JUMPIN" <-EID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(1 "AN AMPGEM HAS SPAWNED" 202 183 210) ->gameEvent
self 0 destroyunit
endif



:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]
Destroy Core Script
$UnitX:197
$UnitY:202
$UType:"ShipPickup"
$FlipOrDeath:1
$Msg:"Coil"
$Precision:2

$Example:40
#Add your own inputs. Remember that you have to provide default value.

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

<-UnitX 0 lt <-UnitY 0 lt and if
currentcoords ->UnitY ->UnitX
endif

<-Precision 0 lt if
0 ->Precision
endif

false ->UnitFound
<-UnitX <-UnitY <-Precision 1 getallunitsinrange ->UnitList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype <-UType eq if
<-UnitList[I] ->UID
true ->UnitFound
break
endif
loop
<-UnitFound not if
self 0 destroyunit
endif

<-UID getunitisenemy not ->FlipState

false ->Activated
endonce

<-UID getunitisenemy <-FlipState eq <-FlipOrDeath not and if
true ->Activated
endif

<-UID getunitisdestroyed <-FlipOrDeath and if
true ->Activated
endif

<-Activated if
330 delay
<-Msg showconversation
270 delay
"PRPLCORE" 181 107 destroyunit ->UID
"JUMPIN" <-UID getunitpixelcoords createeffect ->effect
AddGameEventAtCell(0 "THE PHANTOM COIL HAS BEEN ENERGIZED" 181 107 210) ->gameEvent
self 0 destroyunit
endif



:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
[close]
Ticon Defense Range

#Made By Stickman

$TiconDefRange:80
$RingImage:"Custom2_256"
$Red:255
$Green:10
$Blue:0
#Color of the ring default(255 106 0) produces orange ring, close enough to normal cannon ring color
$CorePrecision:2
$MousePrecision:3
$FadeDelay:1

once
currentcoords <-CorePrecision 1 getallunitsinrange ->Units
false ->TiconDefFound
<-Units getlistcount 0 do
<-Units[I] ->UID
<-UID getunittype "TiconGun" eq if
true ->TiconDefFound
break
endif
loop
<-TiconDefFound if
<-UID getunitcoords setcurrentcoords
else
self 0 destroyunit
endif

0.6666 <-TiconDefRange mul ->ScaleRate #Figured out by experiments. Good enough.

true ->IAmHidden
false ->Projecting

<-FadeDelay 0 lt if
0 ->FadeDelay
endif
<-FadeDelay ->CurrentDelay

self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitcreatefootprint

self "main" <-RingImage setimage
self "main" "UI" setimagelayer
self "main" <-ScaleRate <-ScaleRate setimagescale
self "main" <-Red <-Green <-Blue 0 setimagecolor
endonce

getmousecell ->MouseY ->MouseX

<-IAmHidden if
<-MouseX currentX sub abs 3 lte <-MouseY currentY sub abs 3 lte and if
false ->IAmHidden
self "main" <-Red <-Green <-Blue 100 setimagecolor
true ->Projecting
endif
else
<-MouseX currentX sub abs 3 gt <-MouseY currentY sub abs 3 gt or if
true ->IAmHidden
endif
endif

<-Projecting <-IAmHidden and if
<-CurrentDelay eq0 if
false ->Projecting
<-FadeDelay ->CurrentDelay
self "main" <-Red <-Green <-Blue 0 setimagecolor
else
<-CurrentDelay 1 sub ->CurrentDelay
endif
endif

<-UID getunitisdestroyed neq0 if
self 0 destroyunit
endif


:awake
1 operatewhilepaused

:destroyed
0 operatewhilepaused
[close]
[close]

Almost all of the AmpGems are recieved with a Spawn [Meaning destroying Enemy Units or Picking up Units]
1 AmpGem is hidden somewhere.
The 3rd Wall is another Enemy Struc Wall.
The Ticon Defense Range Script is made by Stickman and it shows a Circle of the Ticon Defense Gun when you go over it with the Cursor.
The amount of total Omnis can change because i haven't Tested the Map untill the end yet.
More Omnis makes it somewhat easier and gives better times, more Omnis makes it harder.
I may adjust things here and there but this map is almost finished.

Main Menu Map
[close]

                            NEW STUFF 6 -14 -2017

Changes:
- More Omnis !!
- Enemy Strength a little lower.
- Some Land Layout changes.
- 1 more Script
Blue Emitter Spawn
$UnitX:72
$UnitY:9
$UType:"MireSpawner"
$FlipOrDeath:1
$Msg:"BE"
$Precision:2

$Example:40
#Add your own inputs. Remember that you have to provide default value.

once
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy

<-UnitX 0 lt <-UnitY 0 lt and if
currentcoords ->UnitY ->UnitX
endif

<-Precision 0 lt if
0 ->Precision
endif

false ->UnitFound
<-UnitX <-UnitY <-Precision 1 getallunitsinrange ->UnitList
<-UnitList getlistcount 0 do
<-UnitList[I] getunittype <-UType eq if
<-UnitList[I] ->UID
true ->UnitFound
break
endif
loop
<-UnitFound not if
self 0 destroyunit
endif

<-UID getunitisenemy not ->FlipState

false ->Activated
endonce

<-UID getunitisenemy <-FlipState eq <-FlipOrDeath not and if
true ->Activated
endif

<-UID getunitisdestroyed <-FlipOrDeath and if
true ->Activated
endif

<-Activated if
<-Msg showconversation
300 delay
"Emitter" 109 156 createunit ->UnitID
<-UnitID 0 SetUnitIsEnemy
<-UnitID 2 setemitterproductioninterval
<-UnitID 160 setemittermaxparticles
<-UnitID 1200 setemittermaxtime
<-UnitID 0 setemittermaxdistance
<-UnitID 2 setemittermaxparticlespeed
AddGameEventAtCell(1 "OUR EMITTER IS READY" 109 156 210) ->gameEvent
self 0 destroyunit
endif



:awake
self "main" "NONE" setimage
self 0 setunittakemapspace
self 0 setunitisgoal
self 0 setunitlathetargets
self 0 setunitisenemy
iseditmode eq0 if
self 0 setunitselectable
endif
[close]

The Map is tested, i need to change some little things and then i can Finalize the Map.
Maybe tomorrow if i have time enough.
The changes i made was because it was pretty hard to get a foothold on the Main Land so i've made it a little easier.
This is the First Omni Based Map i've made. I think it's quite a challenge.
I was thinking of making a Harder Version of this Map maybe but that is for later.

I will post everything concerning this map in this thread.
Images, Ideas, Scripts ...

                                   UPDATE 6-15-2017

Map tested and Finilized.
If you don't have a good start this Map can become difficult.
Just Posted the Map in the Exchange.
I think it won't generate High Scores.

FOXX OUT ;)
The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

FOXX

This is the update so far.
Some questions to GM.
- The Tech part of the map. is this referring to the AmpGem Techs? [usually i leave these open for use] or do you have some other Techs in mind?
- The 1 Custom ship idea works for you or do you like to see more Custom Ships? [GM2, GM3 etc]
- Info, thoughts, ideas, approvals??
- i'm curious what you think of the Arc idea.
The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

GoodMorning

1. Yes, but my thought was to leave them open and encourage unusual choices.
2. Up to you.
4. Could be interesting, but the Arc doesn't seem right for the role. Perhaps a Phantom Coil?

3. I might rephrase my input: "Image: main menu. Omnis, techs as strategic uses. Break the fourth wall at any and every opportunity, and include references to many things." The last part was meant to be self-demonstrating, but I think I overdid it.

I'm interested to see where this goes. How does it look if you go from void to height 5 instead of all-land?
A narrative is a lightly-marked path to another reality.

FOXX

OK.
1 - I will keep this in mind.
2 - More ships or not will be clear when i have all of the ideas ready. Then i will come back on this.
4 - Phantom Coil has won by a a mile in our voting system. [well, actually it was just me ;)]
      Do you perhaps have an image for this?   if not i will search for [or make] an image.
     - And is it possible to make a Script for the Phantom Coil to shoot down Enemy Stunners??
        If not, i have to rethink this part.

3 - In this stage of the map i don't even know what is going to be like. So i'm also interested.
      Gathering and thinking of ideas and then combine them in this map.

QuoteHow does it look if you go from void to height 5 instead of all-land?
My first thought was that i don't alter the main menu to much at the start of the map but the Void implies otherwise.
The more land i take away the less it will be an Omni Map.
With this in mind i loaded the map in the Editor and tried some ideas to make Void somewhere and see if i could have areas with land going from 1-5.
I didn't have clear thoughts about this. And i didn't want to overlapse Menu Text or things.
The Phantom Coil i would place somewhere in the middle of the Map.

[I made a copy of the map so i still can work with the other Map]
I only did the Bottom Right corner. This also can be done in the top left corner.
The void can be more if you like or this can be the opposite of what you had in mind.
The land can also be changed.

How does this look for the next step? 
Setup 1

And the Bottom Right 'Options Menu' would vanish with an action [for example an Omni Pickup] and have Enemy Emitter Spawn inside.
With spawning some Enemy Emitters and make a couple of Custom Ships it may add extra gameplay to the Map
[close]

The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

GoodMorning

I was thinking of adjusting the colour-to-height conversion:

h= Math.floor((0.299*r + 0.587*g + 0.114*b)/42.7); //Map to six values: 0 - 5

//Don't use transparency for void, use levelling
//if (pix[ofs+3]<128) {
// ot+= "v";
//}else{
// ot+= h;
//}


This may not work, but it feels reasonable.
A narrative is a lightly-marked path to another reality.

FOXX

The Setup you gave only deleted some land ment for Text
Result
[close]

Then i Fiddled with the settings some more and the best result i've got with Land Heights was this:
Result 2
[close]

A 3rd option would be taking away Land Height 1 and make that Space in the 1st Layout
This One
[close]

Which one do you prefer GM?
The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

GoodMorning

What I was aiming for (without really remembering how the JS worked) was to turn the height-1 land into void. This is, instead of five land heights, to use six, from zero (space) to five.

Perhaps just change the height-1 land to void, and use new height-1 to link landmasses where interesting?

You're overweighting my opinion, I think, however. I'm interested in the result, having made some suggestions. Go forth! :)
A narrative is a lightly-marked path to another reality.

FOXX

I've tried to do that but i couldn't find a configuration that took away 1 value of land.
And i have many thoughts so overthinking is what i usually do.
By tomorrow i will have something worked out a bit more.

Maybe you overlooked this but is it possible to Make a PRPL Core with Dischargers?
If yes could you make a script for it?
Preferably with input for how many and that it doesn't need energy.

The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

GoodMorning

Damaging Stunners? Doable. Making it visible is harder.

Code (Untested) Select

$Range:40
$KillTimePerStunner:5

once <-KillTimePerStunner 30 mul -1 pow ->Damage endonce

CurrentCoords <-Range 0 GetAllUnitsInRange ->Units
0 ->Index
while <-Units GetListCount <-Index gt repeat
<-Units[<-Index] ->UID
<-UID GetUnitType "Stunner" eq if
<-Index 1 add ->Index
else
<-Units <-Index RemoveListElement
endif
endwhile

<-Damage <-Units GetListCount div ->SpreadDamage
<-Units GetListCount 0 do
<-Units[ I ] dup GetUnitHealth<-SpreadDamage sub SetUnitHealth
loop


This deals constant damage-per-frame, spreading over the Stunners hit.

If you meant something else, let me know.
A narrative is a lightly-marked path to another reality.

FOXX

I think this script fits the purpose but i can't get it to work.

Invalid token at line 21
GetUnitHealth<-SpreadDamage
Perhaps you meant ->GetUnitHealth or ..... 3 more options

I've changed this line but i see no effects when i try to use it.
[the Stunners don't get smaller]
Making this visable is not necessary, i can make that clear in the start converstation.

About the Land Layout i have tried once more to get the script to take away 1 landheight and switch that for space. It just doesn't work. I'm stuck between taking away to much land and to little land.
And this also has effect on landheights.
So i decided to stick with the First map and make more Heights in that map. And take away land on desired places.
Will post when i have something done.
The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

FOXX

Update Land Layout
Spoiler
[close]

The Special Unit > Phantom Coil i couldn't find a proper image
Came up with this [attachment]
The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS


FOXX

That is a phantom Coil !
Small image though, going to see what i can do with it tomorrow.
The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

FOXX

A modern version of the CW2 Phantom Coil [in other words crooked]
About the best i can do. The original image was to small imo.
Used Paint.net for this -> very handy tool. Thanks for the tip GM. Going to use this more in the future.

GM -> did you see the post about Discharge Script?
           It's not working.
The FPAF
For My Maps and Ships!
Including  CUSTOM MODULE MAPS & SHIPS

GoodMorning

I hadn't seen it. The line is missing a space before the "<-". I'll look at some point when I'm feeling more awake.
A narrative is a lightly-marked path to another reality.