1.17 alternate high/low terrain levels (#7007)

* alternate high/low levels (so five total : -2, -1, base, +1, +2)

* fix some transitions

* improve terrain level spreading through border-type hexes (bluff/gulches, for now)
This commit is contained in:
doofus-01 2022-09-11 21:01:28 -07:00 committed by GitHub
parent 40ab9a38b8
commit e9ec7c4108
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 265 additions and 56 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -45,11 +45,21 @@ Iwr,Ior,Icn#enddef
#############################################################
{NEW:FLOODFILL *^_ml *^Qh*}
{NEW:FLOODFILL *^_mh (*^Qh*,Qx*,Ql*) FLAG=flood_high}
{NEW:FLOODFILL *^_mll *^Qh* FLAG=flood_low_alt NEGATE_FLAG=flood_low}
{NEW:FLOODFILL *^_ml *^Qh* NEGATE_FLAG=flood_low_alt}
{NEW:FLOODFILL *^_mhh (*^Qh*,Qx*,Ql*) FLAG=flood_high_alt NEGATE_FLAG=flood_high}
{NEW:FLOODFILL *^_mh (*^Qh*,Qx*,Ql*) FLAG=flood_high NEGATE_FLAG=flood_high_alt}
{NEW:FLOODFILL_BORDER_FILL *^Qh* flood_low_alt NEGATE_FLAG=elevated}
{NEW:FLOODFILL_BORDER_FILL *^Qh* flood_low NEGATE_FLAG=elevated}
{NEW:FLOODFILL_BORDER_FILL *^Qh* flood_high NEGATE_FLAG=elevated}
{NEW:FLOODFILL_BORDER_FILL *^Qh* flood_high_alt NEGATE_FLAG=elevated}
#ifdef EDITOR
{NEW:FLOODFILL_VISUAL darken IPF="~CS(10,40,140)~O(0.5)"}
{NEW:FLOODFILL_VISUAL darken IPF="~CS(-80,0,220)~O(0.65)" FLAG=flood_low_alt}
{NEW:FLOODFILL_VISUAL darken IPF="~CS(140,190,240)~O(0.55)" FLAG=flood_high}
{NEW:FLOODFILL_VISUAL darken IPF="~CS(180,240,240)~O(0.65)" FLAG=flood_high_alt}
# uncomment this to see where the floodfill has gone, if your graphics aren't behaving as expected
# {NEW:FLOODFILL_VISUAL darken IPF="~CS(250,0,0)" FLAG=elevated}
#endif
# Tracks and bridges
@ -833,8 +843,11 @@ C*,K*,X*,Q*,W*,Ai,M*,*^Qh*,*^V*,*^B*,_off^_usr#enddef
{NEW:DISABLE_TRANSITION (K*,C*) (!,K*,C*) }
# Keep transitions from bleeding across the high-chasm ledges
{NEW:DISABLE_TRANSITION (!,*^Qh*) (*^Qhh) FLAG2=flood_high}
{NEW:DISABLE_TRANSITION (!,*^Qh*) (!,*^Qhh,!,*^Qh*) FLAG2=flood_low}
{NEW:DISABLE_TRANSITION (*^Qh*) (!,*^Qh*) FLAG1=elevated}
{NEW:DISABLE_TRANSITION (!,*^Qh*) (*^Qhh) FLAG1=flood_high FLAG2=flood_high}
{NEW:DISABLE_TRANSITION (!,*^Qh*) (*^Qhh) FLAG1=flood_high_alt FLAG2=flood_high_alt}
{NEW:DISABLE_TRANSITION (!,*^Qh*) (!,*^Qhh,!,*^Qh*) FLAG1=flood_low FLAG2=flood_low}
{NEW:DISABLE_TRANSITION (!,*^Qh*) (!,*^Qhh,!,*^Qh*) FLAG1=flood_low_alt FLAG2=flood_low_alt}
{NEW:DISABLE_TRANSITION (*^Qhu,*^Qhx) (*^Qhh) }
#
@ -938,10 +951,20 @@ C*,K*,X*,Q*,W*,Ai,M*,*^Qh*,*^V*,*^B*,_off^_usr#enddef
# Special Mountain to Chasm Blend transition
{NEW:TRANSITION_INTRA (Qx*,Ql*) 0 mountains/blend-from-chasm FLAG=transition3 ADJACENT="M*"}
#chasm/lava transitions always below castles/walls
{NEW:FLOODFILL_DISABLE_WALL (!,*^Qhh,Qx*,Xv,_off^_usr) *^Qhh FLAG=ground FLAG1=flood_high}
{NEW:FLOODFILL_DISABLE_WALL (!,*^Qhh,!,*^Qh*) (!,*^Qh*,Qx*,Xv,_off^_usr) FLAG=ground FLAG2=flood_low}
#{NEW:FLOODFILL_DISABLE_WALL (!,Qx*,Xv,_off^_usr) *^Qhh FLAG=ground FLAG1=flood_high_alt NEGATE_FLAG=flood_high}
{NEW:FLOODFILL_DISABLE_WALL (!,Qx*,Xv,_off^_usr) *^Qhh FLAG=ground FLAG1=flood_high_alt FLAG3=flood_high_alt NEGATE_FLAG=flood_high}
{NEW:FLOODFILL_DISABLE_WALL (!,Qx*,Xv,_off^_usr) *^Qhh FLAG=ground FLAG1=flood_high FLAG3=flood_high NEGATE_FLAG=flood_high_alt}
# This is a special case
{DISABLE_CORNER_FLAGGED !,*^Qhh *^Qhh FLAG=ground FLAG1=flood_high FLAG2=flood_high FLAG3=flood_high_alt}
{DISABLE_CORNER_FLAGGED !,*^Qhh *^Qhh FLAG=ground FLAG1=flood_high FLAG2=flood_high_alt FLAG3=flood_high}
#{NEW:FLOODFILL_DISABLE_WALL (!,*^Qhh,Qx*,Xv,_off^_usr) *^Qhh FLAG=ground FLAG1=flood_high_alt NEGATE_FLAG=flood_high}
#{NEW:FLOODFILL_DISABLE_WALL (!,*^Qhh,Qx*,Xv,_off^_usr) *^Qhh FLAG=ground FLAG1=flood_high NEGATE_FLAG=flood_high_alt}
{NEW:FLOODFILL_DISABLE_WALL (!,*^Qhh,!,*^Qh*) (!,*^Qh*,Qx*,Xv,_off^_usr) FLAG=ground FLAG2=flood_low_alt NEGATE_FLAG=flood_low}
{NEW:FLOODFILL_DISABLE_WALL (!,*^Qhh,!,*^Qh*) (!,*^Qh*,Qx*,Xv,_off^_usr) FLAG=ground FLAG2=flood_low NEGATE_FLAG=flood_low_alt}
#chasm/lava transitions always below castles/walls
# these have been moved lower, layer=-290 from -90
{NEW:WALL_TRANSITION2 Ql Qx*,Xv,_off^_usr (!,Ql,Qx*) unwalkable/lava-chasm LAYER=-290 FLAG=ground}
@ -965,6 +988,12 @@ C*,K*,X*,Q*,W*,Ai,M*,*^Qh*,*^V*,*^B*,_off^_usr#enddef
{NEW:WALL_TRANSITION Qxe (!,Qx*,Xv,_off^_usr) chasm/earthy LAYER=-290 FLAG=ground}
{NEW:WALL_TRANSITION Q* (Iwr^Qh*,Ior^Qh*,Icn^Qh*) chasm/high-chasm/wood-chasm LAYER=-90 FLAG=ground}
{NEW:WALL_TRANSITION Q* I*^Qh* chasm/high-chasm/stone-chasm LAYER=-90 FLAG=ground}
# special case, same as the one needing DISABLE_CORNER_FLAGGED above
{NEW:WALL_TRANSITION *^Qhh (*^Qhh) chasm/high-chasm/regular LAYER=-190 FLAG=ground2 FLAG1=flood_high}
{NEW:WALL_TRANSITION !,*^Qhh (*^Qhh) chasm/high-chasm/regular LAYER=-190 FLAG=ground2 FLAG1=flood_high_alt TERRAINLIST2="*^Qhh"}
{NEW:WALL_TRANSITION *^Qhh (*^Qhh) chasm/high-chasm/regular LAYER=-190 FLAG=ground2 FLAG1=flood_high_alt TERRAINLIST2="!,*^Qhh"}
{NEW:WALL_TRANSITION (!,*^Qhh) (Iwr^Qhh,Ior^Qhh,Icn^Qhh) chasm/high-chasm/wood LAYER=-90 FLAG=ground}
{NEW:WALL_TRANSITION (!,*^Qhh) I*^Qhh chasm/high-chasm/stone LAYER=-90 FLAG=ground}
{NEW:WALL_TRANSITION (Iwr^Qhu,Iwr^Qhx) (!,*^Qhu,*^Qhx) chasm/high-chasm/wood LAYER=-90 FLAG=ground}

View File

@ -1,5 +1,71 @@
#textdomain wesnoth
#define CORNER_FLAGGED TERRAIN ADJACENT1 IMAGESTEM
#arg ADJACENT2
{ADJACENT1}#endarg
#arg IPF
#endarg
#arg PROB
100#endarg
#arg LAYER
0#endarg
#arg FLAG
overlay#endarg
#arg FLAG1
#endarg
#arg FLAG2
#endarg
#arg FLAG3
{FLAG2}#endarg
#arg BASE
54,72#endarg
[terrain_graphics]
map="
2
, 3
1"
[tile]
pos=1
type={TERRAIN}
has_flag={FLAG1}
set_no_flag={FLAG}-@R0
[/tile]
[tile]
pos=2
type={ADJACENT1}
has_flag={FLAG2}
no_flag={FLAG1}
set_no_flag={FLAG}-@R2
[/tile]
[tile]
pos=3
type={ADJACENT2}
has_flag={FLAG3}
no_flag={FLAG1}
set_no_flag={FLAG}-@R4
[/tile]
probability={PROB}
rotations=tr,r,br,bl,l,tl
[image]
layer={LAYER}
base={BASE}
name={IMAGESTEM}-@R0.png{IPF}
[/image]
[/terrain_graphics]
#enddef
#define CORNER TERRAIN ADJACENT1 IMAGESTEM
#arg ADJACENT2
@ -20,37 +86,7 @@ overlay#endarg
#arg BASE
54,72#endarg
[terrain_graphics]
map="
2
, 3
1"
[tile]
pos=1
type={TERRAIN}
set_no_flag={FLAG}-@R0
[/tile]
[tile]
pos=2
type={ADJACENT1}
set_no_flag={FLAG}-@R2
[/tile]
[tile]
pos=3
type={ADJACENT2}
set_no_flag={FLAG}-@R4
[/tile]
probability={PROB}
rotations=tr,r,br,bl,l,tl
[image]
layer={LAYER}
base={BASE}
name={IMAGESTEM}-@R0.png{IPF}
[/image]
[/terrain_graphics]
{CORNER_FLAGGED {TERRAIN} {ADJACENT1} {IMAGESTEM} ADJACENT2={ADJACENT2} IPF={IPF} PROB={PROB} LAYER={LAYER} FLAG={FLAG} BASE={BASE}}
#enddef
#define DISABLE_CORNER_FLAGGED TERRAIN ADJACENT1
@ -76,6 +112,9 @@ overlay#endarg
#arg FLAG3
{FLAG2}#endarg
#arg NEGATE_FLAG
dummy#endarg
[terrain_graphics]
map="
2
@ -86,18 +125,21 @@ overlay#endarg
type={TERRAIN}
has_flag={FLAG1}
no_flag={NEGATE_FLAG}
set_no_flag={FLAG}-@R0
[/tile]
[tile]
pos=2
type={ADJACENT1}
has_flag={FLAG2}
no_flag={NEGATE_FLAG}
set_no_flag={FLAG}-@R2
[/tile]
[tile]
pos=3
type={ADJACENT2}
has_flag={FLAG3}
no_flag={NEGATE_FLAG}
set_no_flag={FLAG}-@R4
[/tile]

View File

@ -7,6 +7,11 @@
x,y=0,0
type={MARKER}
set_no_flag={FLAG}
#ifdef EDITOR
[image]
name=floodfill/{FLAG}.png
[/image]
#endif
[/tile]
probability={PROB}
@ -16,21 +21,29 @@
#define NEW:FLOODFILL_INTERNAL_GROW BORDER FLAG PROB
#arg NEGATE_FLAG
dummy#endarg
#arg FLAG_BASE
elevated#endarg
# spread until we reach the border (include the border)
[terrain_graphics]
map="
2
, 3
, .
1"
[tile]
pos=1
type=!,{BORDER}
type=*
no_flag={NEGATE_FLAG}
set_no_flag={FLAG}
[/tile]
[tile]
pos=2
type=*
type=!,{BORDER}
has_flag={FLAG}
[/tile]
@ -38,10 +51,24 @@
probability={PROB}
[/terrain_graphics]
[terrain_graphics]
[tile]
x,y=0,0
type=*
has_flag={FLAG}
set_no_flag={FLAG_BASE}
[/tile]
probability={PROB}
[/terrain_graphics]
#enddef
#define NEW:FLOODFILL MARKER BORDER
#arg NEGATE_FLAG
dummy#endarg
#arg FLAG
flood_low#endarg
@ -50,18 +77,89 @@ flood_low#endarg
{NEW:FLOODFILL_INTERNAL_SET {MARKER} {FLAG} {PROB}}
# need multiple iterations of this because flood does not grow up-left more than two hexes
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB} NEGATE_FLAG={NEGATE_FLAG}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB} NEGATE_FLAG={NEGATE_FLAG}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB} NEGATE_FLAG={NEGATE_FLAG}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB} NEGATE_FLAG={NEGATE_FLAG}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB} NEGATE_FLAG={NEGATE_FLAG}}
{NEW:FLOODFILL_INTERNAL_GROW {BORDER} {FLAG} {PROB} NEGATE_FLAG={NEGATE_FLAG}}
#enddef
#define NEW:FLOODFILL_INTERNAL_BORDER_FILL BORDER FLAG
#arg NEGATE_FLAG
dummy#endarg
#arg FLAG_BASE
elevated#endarg
#arg PROB
100#endarg
# spread through the border hexes, but don't leave them
# or extend to somewhere that already has a relevant flag
[terrain_graphics]
map="
2
, .
1"
[tile]
pos=1
type={BORDER}
no_flag={NEGATE_FLAG}
set_no_flag={FLAG}
[/tile]
[tile]
pos=2
type={BORDER}
has_flag={FLAG}
[/tile]
rotations=ne,se,s,sw,nw,n
probability={PROB}
[/terrain_graphics]
[terrain_graphics]
[tile]
x,y=0,0
type=*
has_flag={FLAG}
set_no_flag={FLAG_BASE}
[/tile]
probability={PROB}
[/terrain_graphics]
#enddef
#define NEW:FLOODFILL_BORDER_FILL BORDER FLAG
#arg NEGATE_FLAG
dummy#endarg
#arg FLAG_BASE
elevated#endarg
#arg PROB
100#endarg
{NEW:FLOODFILL_INTERNAL_BORDER_FILL {BORDER} {FLAG} NEGATE_FLAG={NEGATE_FLAG} FLAG_BASE={FLAG_BASE} PROB={PROB}}
{NEW:FLOODFILL_INTERNAL_BORDER_FILL {BORDER} {FLAG} NEGATE_FLAG={NEGATE_FLAG} FLAG_BASE={FLAG_BASE} PROB={PROB}}
{NEW:FLOODFILL_INTERNAL_BORDER_FILL {BORDER} {FLAG} NEGATE_FLAG={NEGATE_FLAG} FLAG_BASE={FLAG_BASE} PROB={PROB}}
{NEW:FLOODFILL_INTERNAL_BORDER_FILL {BORDER} {FLAG} NEGATE_FLAG={NEGATE_FLAG} FLAG_BASE={FLAG_BASE} PROB={PROB}}
{NEW:FLOODFILL_INTERNAL_BORDER_FILL {BORDER} {FLAG} NEGATE_FLAG={NEGATE_FLAG} FLAG_BASE={FLAG_BASE} PROB={PROB}}
{NEW:FLOODFILL_INTERNAL_BORDER_FILL {BORDER} {FLAG} NEGATE_FLAG={NEGATE_FLAG} FLAG_BASE={FLAG_BASE} PROB={PROB}}
#enddef
#define NEW:FLOODFILL_DISABLE_WALL TERRAINLIST ADJACENT IMAGESTEM
#arg ADJACENT2
{ADJACENT}#endarg
#arg FLAG
ground#endarg
@ -74,11 +172,18 @@ ground#endarg
#arg FLAG3
{FLAG2}#endarg
#arg FLAG4
{FLAG1}#endarg
#arg NEGATE_FLAG
dummy#endarg
#arg PROB
100#endarg
{DISABLE_CORNER_FLAGGED ({TERRAINLIST}) ({ADJACENT}) PROB={PROB} FLAG={FLAG} FLAG1={FLAG1} FLAG2={FLAG2} FLAG3={FLAG2}}
{DISABLE_CORNER_FLAGGED ({ADJACENT}) ({TERRAINLIST}) PROB={PROB} FLAG={FLAG} FLAG1={FLAG2} FLAG2={FLAG1} FLAG3={FLAG1}}
{DISABLE_CORNER_FLAGGED ({TERRAINLIST}) ({ADJACENT}) PROB={PROB} FLAG={FLAG} FLAG1={FLAG1} FLAG2={FLAG2} FLAG3={FLAG3} NEGATE_FLAG={NEGATE_FLAG} ADJACENT2={ADJACENT2}}
{DISABLE_CORNER_FLAGGED ({ADJACENT}) ({TERRAINLIST}) PROB={PROB} FLAG={FLAG} FLAG1={FLAG2} FLAG2={FLAG1} FLAG3={FLAG4} NEGATE_FLAG={NEGATE_FLAG}}
{DISABLE_CORNER_FLAGGED ({ADJACENT2}) ({TERRAINLIST}) PROB={PROB} FLAG={FLAG} FLAG1={FLAG2} FLAG2={FLAG1} FLAG3={FLAG4} NEGATE_FLAG={NEGATE_FLAG}}
#enddef

View File

@ -372,7 +372,7 @@ transition#endarg
dummy#endarg
#arg FLAG2
dummy#endarg
#endarg
[terrain_graphics]
map="
@ -390,7 +390,7 @@ dummy#endarg
[tile]
pos=2
type={TERRAINLIST}
no_flag={FLAG2}
has_flag={FLAG2}
set_flag={FLAG}-@R3
[/tile]

View File

@ -2,6 +2,12 @@
#define NEW:WALL_TRANSITION TERRAINLIST ADJACENT IMAGESTEM
#arg ADJACENT2
{ADJACENT}#endarg
#arg TERRAINLIST2
{TERRAINLIST}#endarg
#arg IPF
#endarg
@ -17,8 +23,17 @@ overlay#endarg
#arg BASE
54,72#endarg
{CORNER ({TERRAINLIST}) ({ADJACENT}) {IMAGESTEM}-convex IPF={IPF} PROB={PROB} LAYER={LAYER} FLAG={FLAG} BASE={BASE}}
{CORNER ({ADJACENT}) ({TERRAINLIST}) {IMAGESTEM}-concave IPF={IPF} PROB={PROB} LAYER={LAYER} FLAG={FLAG} BASE={BASE}}
#arg FLAG1
#endarg
#arg FLAG2
#endarg
#arg FLAG3
{FLAG2}#endarg
{CORNER_FLAGGED ({TERRAINLIST}) ({ADJACENT}) {IMAGESTEM}-convex IPF={IPF} PROB={PROB} LAYER={LAYER} FLAG={FLAG} BASE={BASE} FLAG1={FLAG1} FLAG2={FLAG2} FLAG3={FLAG3} ADJACENT2={ADJACENT2}}
{CORNER_FLAGGED ({ADJACENT}) ({TERRAINLIST}) {IMAGESTEM}-concave IPF={IPF} PROB={PROB} LAYER={LAYER} FLAG={FLAG} BASE={BASE} FLAG1={FLAG1} FLAG2={FLAG2} FLAG3={FLAG3} ADJACENT2={TERRAINLIST2}}
#enddef
#define NEW:WALL_TRANSITION2 TERRAINLIST1 TERRAINLIST2 ADJACENT IMAGESTEM

View File

@ -3051,7 +3051,7 @@ For those who go by land or sea, a bridge is the best of both worlds — for gam
#
[terrain_type]
symbol_image=chasm/high-chasm/marker-high-tile
symbol_image=floodfill/marker-high-tile
id=mark_high
editor_name= _ "Marker High"
string=^_mh # wmllint: ignore
@ -3060,7 +3060,16 @@ For those who go by land or sea, a bridge is the best of both worlds — for gam
[/terrain_type]
[terrain_type]
symbol_image=chasm/high-chasm/marker-low-tile
symbol_image=floodfill/marker-high-2-tile
id=mark_high2
editor_name= _ "Marker High 2"
string=^_mhh # wmllint: ignore
editor_group=special, elevation
hide_help=yes
[/terrain_type]
[terrain_type]
symbol_image=floodfill/marker-low-tile
id=mark_low
editor_name= _ "Marker Low"
string=^_ml # wmllint: ignore
@ -3068,6 +3077,15 @@ For those who go by land or sea, a bridge is the best of both worlds — for gam
hide_help=yes
[/terrain_type]
[terrain_type]
symbol_image=floodfill/marker-low-2-tile
id=mark_low2
editor_name= _ "Marker Low 2"
string=^_mll # wmllint: ignore
editor_group=special, elevation
hide_help=yes
[/terrain_type]
[terrain_type]
symbol_image=off-map/symbol
editor_image=off-map/offmap-editor