Ship sprites and units update (#9484)

* new ships Derelict Hulk and Fireship

* new "race" Ships - includes Transport Galleon, Pirate Galleon, Derelict Hulk, and Fireship

* Pirate Galleon chaotic

* animations for all four touched ships

* ship portraits for Derelict Hulk and Fireship

* crew portraits by LordBob for Boat, Galleon, Transport Galleon, and Pirate Galleon

* old (non-pixel art) transport galleon and pirate galleon images moved to scenery
This commit is contained in:
doofus-01 2024-11-23 16:28:37 -08:00 committed by GitHub
parent 5a90e40e19
commit 3dff5d2eac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
79 changed files with 742 additions and 11 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,010 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,023 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -246,6 +246,20 @@ ending_vowel=o|u
>>
#enddef
#define SHIP_NAMES
# po: Generator for ship names
name_generator= _ <<
main={prefix} {starting_consonnant}{vowel}{consonnant}{vowel}{ending_consonnant}|{prefix} {starting_vowel}{consonnant}{ending_vowel}|{starting_vowel}{consonnant}{vowel}{ending_consonnant}|{prefix} {starting_consonnant}{vowel}{ending_consonnant}|{starting_vowel}{consonnant}{vowel}{consonnant}{ending_vowel}
prefix=Blessed|Golden|Fearless|Mighty|Lucky|Old|The|The|Valiant
starting_consonnant=B|C|Cr|D|F|G|H|Kh|L|M|N|P|R|S|T|Th|V
starting_vowel=A|E|I|O|U
consonnant=b|br|ch|d|dr|g|gr|gh|kh|m|n|p|pr|r|s|sh|t|v|ol|z|vr|khr|shn
vowel=a|ae|é|i|o|u
ending_consonnant=yan|oic|ell|yll|tar|sh
ending_vowel=a|ae|o|u
>>
#enddef
#define TROLL_NAMES
names= _ "Äg,Agh,Bog Äh,Borb,Brag,Brag Goh,Brok,Dak,Drog,Frok,Ga,Gah,Gark,Gnarf,Grar,Grokk,Grumph,Gulk,Hak,Hask,Hoth,Hug Bah,Hu Kah,Kak,Krak,Krug,Kub,Kuh,Lok,Luk,Nak,Nuk Kar,Pag,Reck,Rok,Ruk,Sark,Shak,Shuf,Stuh,Targ,Thog,Thruf,Thur,Tohg,Torg,Trok,Tsok,Tuh,Tuk Ruh,Ugg,Üh,Urg,Urgh,Urk,Vak,Zog,Zuug"
# po: Generator for troll names; see <https://wiki.wesnoth.org/Context-free_grammar> for syntax

View file

@ -288,6 +288,22 @@ Saurians live spectacularly short lives by comparison to most of the other races
{TRAIT_MECHANICAL}
[/race]
[race]
id=transport
help_taxonomy=mechanical
name= _ "race^Ship"
plural_name= _ "race+plural^Ships"
description= _ "Ships are not living beings, but they are crafted and (usually) controlled by living beings. Although inanimate objects, they are very dear to their masters, needing care and attention in return for providing sustenance and protection. For this reason, most are given names and attributed traits. Those traits may be technical or they may simply reflect the collective attitude of the crew, but they are real."
num_traits=2
ignore_global_traits=yes
{TRAIT_MECHANICAL}
{TRAIT_QUICK}
{TRAIT_RESILIENT}
{TRAIT_FEARLESS}
# these need to span elf/human/orc, so a little vague for now. Maybe this "race" can be split up
{SHIP_NAMES}
[/race]
# wmllint: general spelling Merfolk landwalker
[race]
id=merman
@ -924,6 +940,46 @@ The life span of the wose is unknown, although the most ancient members of this
[/resistance]
[/movetype]
[movetype]
name=ship
flying=yes
[movement_costs]
deep_water=1
shallow_water=1
reef=2
swamp_water=2
sand=4
village=2
[/movement_costs]
[defense]
deep_water=40
shallow_water=50
reef=50
swamp_water=60
flat=70
sand=70
forest=70
hills=70
mountains=90
village=70
castle=70
cave=80
frozen=70
fungus=80
unwalkable=90
[/defense]
[resistance]
blade=100
pierce=80
impact=110
fire=120
cold=70
arcane=40
[/resistance]
[/movetype]
[movetype]
name=swimmer
[movement_costs]

View file

@ -4,6 +4,10 @@
name= _ "Boat"
race=mechanical
image="units/transport/boat.png"
# ideally, we have "crew" that make sense for dialogs, and "mechanical" that depicts the transport
# but for now, we just have "crew"
# small_profile="portraits/transport/mechanical-boat.png"
profile="portraits/transport/crew-boat.png"
hitpoints=1
movement_type=float
movement=5

View file

@ -0,0 +1,163 @@
#textdomain wesnoth-units
[unit_type]
id=Derelict Hulk
name= _ "Derelict Hulk"
race=transport
profile="portraits/transport/derelict-hulk.webp"
image="units/transport/derelict-galleon.png"
hitpoints=24
movement_type=ship
movement=4
experience=50
level=0
alignment=chaotic
advances_to=null
{AMLA_DEFAULT}
cost=10
usage=null
description= _ "Derelicts are abandoned wrecks that continue to drift across the seas. Most are merely ruined ships that will soon sink, but there are tales of others that haunt certain waterways for generations."
# we put the sprite on a non-primary frame group so we don't need to worry about effects
# like submerge or making the ellipse bob
[standing_anim]
start_time=0
terrain_type=W*
boat_start_time=0
boat_y=-1:250,-1~2:490,2:250,2~-1:490
flag_y=-1:250,-1~2:490,2:250,2~-1:490
flag_directional_x=1:350,0:390,-1:350,0:390
[frame]
image="misc/blank-hex.png:1480"
[/frame]
[boat_frame]
image="units/transport/derelict-galleon-rock-[port,center,starboard,center].png:[350,390,350,390]"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/pirate-galleon-flag[1~3,2,1~3,2].png:[210*3,130,200*3,120]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[standing_anim]
start_time=0
terrain_type=S*,*^V*
boat_start_time=0
boat_y=0~2:740,2~0:740
flag_y=0~2:740,2~0:740
[frame]
image="misc/blank-hex.png:1480"
[/frame]
[boat_frame]
image="units/transport/derelict-galleon-rock-center.png:1480"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/pirate-galleon-flag[1~3,2,1~3,2].png:[210*3,130,200*3,120]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[movement_anim]
start_time=0
boat_start_time=0
boat_y=0~-2:320,-2~0:320,0~2:320,2~0:320
boat_offset="0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200"
[frame]
image="misc/blank-hex.png:1280"
[/frame]
[boat_frame]
image="units/transport/derelict-galleon.png:1280"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/movement_anim]
[defend]
hits=hit,kill
start_time=-80
boat_start_time=-80
[frame]
image="misc/blank-hex.png:520"
[/frame]
[boat_frame]
image="units/transport/derelict-galleon.png:100"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/derelict-galleon-hit-[1,2,1].png:[50,190,140]"
sound=wose-hit.ogg
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/derelict-galleon.png:40"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/defend]
[death]
start_time=0
boat_start_time=-0
boat_y=0~-3:80,-3~0:80,0~20:840
boat_alpha=1.0:200,1.0~0.0:800
[frame]
image="misc/blank-hex.png:1400"
[/frame]
[boat_frame]
image="units/transport/derelict-galleon-hit-1.png:200"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/derelict-galleon-sink.png:799"
submerge=0.0~0.6:799
auto_vflip=no
[/boat_frame]
[boat_frame]
image="misc/blank-hex.png:1"
[/boat_frame]
[/death]
[defend]
hits=miss
start_time=-80
boat_start_time=-80
[frame]
image="misc/blank-hex.png:120"
[/frame]
[boat_frame]
image="units/transport/derelict-galleon.png:120"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/defend]
[attack]
name=jetsam
description=_"jetsam"
icon=attacks/jetsam.png
type=impact
range=ranged
damage=4
number=2
[/attack]
[attack_anim]
[filter_attack]
name=jetsam
[/filter_attack]
start_time=-200
missile_start_time=-150
boat_start_time=-200
[missile_frame]
duration=150
image="projectiles/thorns.png"
image_diagonal="projectiles/thorns-ne.png"
[/missile_frame]
[boat_frame]
image="units/transport/derelict-galleon.png:300"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[frame]
image="misc/blank-hex.png:300"
[/frame]
[/attack_anim]
[/unit_type]

View file

@ -0,0 +1,192 @@
#textdomain wesnoth-units
[unit_type]
id=Fireship
name= _ "Fireship"
race=transport
image="halo/transport/fireship-back-glow.png~BLIT(units/transport/fireship.png)~BLIT(units/transport/flames/fireship-2.png)"
profile="portraits/transport/fireship.webp"
hitpoints=12
movement_type=ship
movement=4
experience=50
level=0
alignment=neutral
advances_to=null
{AMLA_DEFAULT}
cost=10
usage=null
description= _ "Fireships are generally derelict or doomed ships set ablaze to create chaos in one last act of belligerence. Their main hazard is fiery collision, but they also shed burning embers. Sometimes they have a skeleton crew to guide them, but often they just drift along on unseen winds and currents."
# we put the sprite on a non-primary frame group so we don't need to worry about effects
# like submerge or making the ellipse bob
[standing_anim]
start_time=0
terrain_type=W*
boat_start_time=0
boat_y=-1:250,-1~2:490,2:250,2~-1:490
flames_start_time=0
flames_y=-1:250,-1~2:490,2:250,2~-1:490
flames_directional_x=1:350,0:390,-1:350,0:390
[frame]
image="halo/transport/fireship-back-glow.png:1480"
layer=9
[/frame]
[boat_frame]
image="units/transport/fireship-[port,mid,starboard,mid].png:[350,390,350,390]"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
primary=yes
layer=40
[/boat_frame]
[fire_frame]
image="units/transport/fireship-back-fire[1,2,1,2,1,2,1,2].png:[185*8]"
auto_vflip=no
layer=41
[/fire_frame]
[flames_frame]
image="units/transport/flames/fireship-[1~9,1~9].png:[82*10,86,82*7]"
auto_vflip=no
layer=42
[/flames_frame]
[/standing_anim]
[movement_anim]
start_time=0
boat_start_time=0
boat_y=0~-2:320,-2~0:320,0~2:320,2~0:320
boat_offset="0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200"
[frame]
image="halo/transport/fireship-back-glow.png:1280"
layer=9
[/frame]
[boat_frame]
image="units/transport/fireship-mid.png~BLIT(units/transport/fireship-back-fire2.png)~BLIT(units/transport/flames/fireship-2.png):1280"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/movement_anim]
[defend]
hits=hit,kill
start_time=-40
boat_start_time=-40
boat_y=-1~2:330,2~-1:330
flames_start_time=-40
flames_y=-1~2:330,2~-1:330
[frame]
image="halo/transport/fireship-back-glow.png:660"
layer=9
[/frame]
[boat_frame]
halo="projectiles/fireball-impact-[5~16].png:60"
image="units/transport/fireship-mid.png~BLIT(units/transport/fireship-back-fire2.png):660"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[flames_frame]
image="units/transport/flames/fireship-[1~7].png:[96,94*6]"
auto_vflip=no
layer=42
[/flames_frame]
[/defend]
[death]
start_time=0
boat_start_time=-0
# boat_y=0~-3:80,-3~0:80,0~20:840
boat_y=0~-3:80,-3~0:80,0~6:400,6~20:440
boat_alpha=1.0:200,1.0~0.0:800
smoke_start_time=100
smoke_y=0~-10:900
[frame]
image="misc/blank-hex.png:1000"
[/frame]
[boat_frame]
image="units/transport/fireship-mid.png~BLIT(units/transport/fireship-back-fire2.png):39"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/fireship-sink.png:960"
submerge=0.0~0.2:400,0.2~0.65:560
auto_vflip=no
[/boat_frame]
[boat_frame]
image="misc/blank-hex.png:1"
[/boat_frame]
[smoke_frame]
image="halo/transport/smoke-[1,2,3].png:[100,150,650]"
alpha=1.0:200,1.0~0.0:500,0.0:200
auto_vflip=no
[/smoke_frame]
[/death]
[defend]
hits=miss
start_time=-80
boat_start_time=-80
[frame]
image="halo/transport/fireship-back-glow.png:120"
layer=9
[/frame]
[boat_frame]
image="units/transport/fireship-mid.png~BLIT(units/transport/fireship-back-fire2.png)~BLIT(units/transport/flames/fireship-2.png):120"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/defend]
[attack]
name=ember
description=_"ember"
icon=attacks/ember.png
type=fire
range=ranged
damage=3
number=2
[/attack]
[attack]
name=crash
description=_"crash"
icon=attacks/fire-hull.png
type=fire
range=melee
[specials]
{WEAPON_SPECIAL_CHARGE}
[/specials]
damage=5
number=1
[/attack]
[attack_anim]
[filter_attack]
name=ember
[/filter_attack]
start_time=-200
missile_start_time=-150
boat_start_time=-200
[missile_frame]
duration=150
image="projectiles/misfire-spark-[1~4].png:[120,60*3]"
[/missile_frame]
[boat_frame]
image="units/transport/fireship-mid.png~BLIT(units/transport/fireship-back-fire2.png)~BLIT(units/transport/flames/fireship-2.png):300"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[frame]
image="halo/transport/fireship-back-glow.png:300"
layer=9
[/frame]
[/attack_anim]
[attack_anim]
[filter_attack]
name=crash
[/filter_attack]
start_time=-150
boat_start_time=-150
boat_offset=0.0~0.7:150,0.7~0.0:250
[boat_frame]
image="units/transport/fireship-mid.png~BLIT(units/transport/fireship-back-fire2.png)~BLIT(units/transport/flames/fireship-2.png):400"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[frame]
image="halo/transport/fireship-back-glow.png:400"
layer=9
[/frame]
[/attack_anim]
[/unit_type]

View file

@ -6,6 +6,10 @@
name= _ "Galleon"
race=mechanical
image="units/transport/galleon.png"
# ideally, we have "crew" that make sense for dialogs, and "mechanical" that depicts the transport
# but for now, we just have "crew"
# small_profile="portraits/transport/mechanical-galleon.png"
profile="portraits/transport/crew-galleon.png"
hitpoints=1
movement_type=float
movement=10

View file

@ -2,19 +2,159 @@
[unit_type]
id=Pirate Galleon
name= _ "Pirate Galleon"
race=mechanical
race=transport
image="units/transport/pirate-galleon.png"
# ideally, we have "crew" that make sense for dialogs, and "mechanical" that depicts the transport
# but for now, we just have "crew"
# small_profile="portraits/transport/mechanical-pirate-galleon.png"
profile="portraits/transport/crew-pirate-galleon.png"
hitpoints=35
movement_type=float
movement_type=ship
movement=5
experience=50
level=1
alignment=lawful
# "lawful" doesn't really make sense thematically, if these are "outlaws of the sea"
alignment=liminal
advances_to=null
{AMLA_DEFAULT}
cost=15
usage=null
description= _ "Pirate galleons are to transport ships what wolves are to sheep. The pirates who crew them are more than happy to help relieve other ships of their weighty cargo."
# we put the sprite on a non-primary frame group so we don't need to worry about effects
# like submerge or making the ellipse bob
[standing_anim]
start_time=0
terrain_type=Wo*
boat_start_time=0
flag_start_time=0
boat_y=-2:200,-2~3:440,3:300,3~-2:440
flag_y=-2:200,-2~3:440,3:300,3~-2:440
flag_directional_x=0:540,-1:250,-2:340,-1:150
[frame]
image="misc/blank-hex.png:1380"
[/frame]
[boat_frame]
image="units/transport/pirate-galleon-bob-[1,2,3,2].png:[540,250,440,150]"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/pirate-galleon-flag[1~3,2,1~3,2].png:[200*3,110,190*3,100]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[standing_anim]
start_time=0
terrain_type=Ww*
boat_start_time=0
boat_y=-1:250,-1~2:490,2:250,2~-1:490
flag_y=-1:250,-1~2:490,2:250,2~-1:490
flag_directional_x=1:350,0:390,-1:350,0:390
[frame]
image="misc/blank-hex.png:1480"
[/frame]
[boat_frame]
image="units/transport/pirate-galleon-[rock-port,bob-1,rock-starboard,bob-1].png:[350,390,350,390]"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/pirate-galleon-flag[1~3,2,1~3,2].png:[210*3,130,200*3,120]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[standing_anim]
start_time=0
terrain_type=S*,*^V*
boat_start_time=0
boat_y=0~2:740,2~0:740
flag_y=0~2:740,2~0:740
[frame]
image="misc/blank-hex.png:1480"
[/frame]
[boat_frame]
image="units/transport/pirate-galleon-bob-1.png:1480"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/pirate-galleon-flag[1~3,2,1~3,2].png:[210*3,130,200*3,120]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[movement_anim]
start_time=0
boat_start_time=0
boat_y=0~-2:320,-2~0:320,0~2:320,2~0:320
boat_offset="0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200"
[frame]
image="misc/blank-hex.png:1280"
[/frame]
[boat_frame]
image="units/transport/pirate-galleon.png:1280"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/movement_anim]
[defend]
hits=hit,kill
start_time=-80
boat_start_time=-80
[frame]
image="misc/blank-hex.png:520"
[/frame]
[boat_frame]
image="units/transport/pirate-galleon.png:120"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/pirate-galleon-roll-[1,3~1].png:[70,120,100,70]"
sound=wose-hit.ogg
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/pirate-galleon.png:40"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/defend]
[death]
start_time=0
boat_start_time=-0
boat_y=0~-3:425,-3~0:425,0~6:550
boat_alpha=1.0:850,1.0~0.0:550
[frame]
image="misc/blank-hex.png:1400"
[/frame]
[boat_frame]
image="units/transport/pirate-galleon-roll-[1~3].png:[160,130,100]"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/pirate-galleon-die-[1~3].png:[120,170,719]"
auto_vflip=no
# image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="misc/blank-hex.png:1"
[/boat_frame]
[/death]
[defend]
hits=miss
start_time=-80
boat_start_time=-80
[frame]
image="misc/blank-hex.png:120"
[/frame]
[boat_frame]
image="units/transport/pirate-galleon.png:120"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[/defend]
[attack]
name=ballista
description=_"ballista"
@ -28,11 +168,21 @@
[filter_attack]
name=ballista
[/filter_attack]
missile_start_time=-50
start_time=-200
missile_start_time=-150
boat_start_time=-200
[missile_frame]
duration=50
image="projectiles/bullet.png"
image_diagonal="projectiles/bullet.png"
duration=150
image="projectiles/missile-n.png"
image_diagonal="projectiles/missile-ne.png"
[/missile_frame]
[boat_frame]
image="units/transport/pirate-galleon.png:300"
auto_vflip=no
image_mod=~MASK(units/transport/pirate-galleon-mask.png)
[/boat_frame]
[frame]
image="misc/blank-hex.png:300"
[/frame]
[/attack_anim]
[/unit_type]

View file

@ -2,10 +2,14 @@
[unit_type]
id=Transport Galleon
name= _ "Transport Galleon"
race=mechanical
race=transport
image="units/transport/transport-galleon.png"
# ideally, we have "crew" that make sense for dialogs, and "mechanical" that depicts the transport
# but for now, we just have "crew"
# small_profile="portraits/transport/mechanical-transport-galleon.png"
profile="portraits/transport/mechanical-transport-galleon.png"
hitpoints=30
movement_type=float
movement_type=ship
movement=6
experience=50
level=1
@ -15,6 +19,140 @@
cost=14
description= _ "Transport Galleons are well-armed ships that carry troops. If they reach the shore, they can land the troops to attack."
usage=null
# we put the sprite on a non-primary frame group so we don't need to worry about effects
# like submerge or making the ellipse bob
[standing_anim]
start_time=0
terrain_type=Wo*
boat_start_time=0
flag_start_time=0
boat_y=-2:200,-2~3:440,3:300,3~-2:440
flag_y=-2:200,-2~3:440,3:300,3~-2:440
flag_directional_x=0:540,-1:250,-2:340,-1:150
[frame]
image="misc/blank-hex.png:1380"
[/frame]
[boat_frame]
image="units/transport/transport-galleon-bob-[1,2,3,2].png:[540,250,440,150]"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/transport-galleon-flag[1~3,2,1~3,2].png:[200*3,110,190*3,100]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[standing_anim]
start_time=0
terrain_type=Ww*
boat_start_time=0
boat_y=-1:250,-1~2:490,2:250,2~-1:490
flag_y=-1:250,-1~2:490,2:250,2~-1:490
flag_directional_x=1:350,0:390,-1:350,0:390
[frame]
image="misc/blank-hex.png:1480"
[/frame]
[boat_frame]
image="units/transport/transport-galleon-[rock-port,bob-1,rock-starboard,bob-1].png:[350,390,350,390]"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/transport-galleon-flag[1~3,2,1~3,2].png:[210*3,130,200*3,120]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[standing_anim]
start_time=0
terrain_type=S*,*^V*
boat_start_time=0
boat_y=0~2:740,2~0:740
flag_y=0~2:740,2~0:740
[frame]
image="misc/blank-hex.png:1480"
[/frame]
[boat_frame]
image="units/transport/transport-galleon-bob-1.png:1480"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[flag_frame]
image="units/transport/transport-galleon-flag[1~3,2,1~3,2].png:[210*3,130,200*3,120]"
auto_vflip=no
[/flag_frame]
[/standing_anim]
[movement_anim]
start_time=0
boat_start_time=0
boat_y=0~-2:320,-2~0:320,0~2:320,2~0:320
boat_offset="0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200,0~1:200"
[frame]
image="misc/blank-hex.png:1280"
[/frame]
[boat_frame]
image="units/transport/transport-galleon.png:1280"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[/movement_anim]
[defend]
hits=hit,kill
start_time=-80
boat_start_time=-80
[frame]
image="misc/blank-hex.png:520"
[/frame]
[boat_frame]
image="units/transport/transport-galleon.png:120"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/transport-galleon-roll-[1,3~1].png:[70,120,100,70]"
sound=wose-hit.ogg
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/transport-galleon.png:40"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[/defend]
[death]
start_time=0
boat_start_time=-0
boat_y=0~-3:425,-3~0:425,0~6:550
boat_alpha=1.0:850,1.0~0.0:550
[frame]
image="misc/blank-hex.png:801"
[/frame]
[boat_frame]
image="units/transport/transport-galleon-roll-[1~3].png:[160,130,100]"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[boat_frame]
image="units/transport/transport-galleon-die-[1~3].png:[120,170,719]"
auto_vflip=no
[/boat_frame]
[boat_frame]
image="misc/blank-hex.png:1"
[/boat_frame]
[/death]
[defend]
hits=miss
start_time=-80
boat_start_time=-80
[frame]
image="misc/blank-hex.png:120"
[/frame]
[boat_frame]
image="units/transport/transport-galleon.png:120"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[/defend]
[attack]
name=ballista
description=_"ballista"
@ -28,11 +166,21 @@
[filter_attack]
name=ballista
[/filter_attack]
start_time=-200
missile_start_time=-150
boat_start_time=-200
[missile_frame]
duration=150
image="projectiles/bullet.png"
image_diagonal="projectiles/bullet.png"
image="projectiles/missile-n.png"
image_diagonal="projectiles/missile-ne.png"
[/missile_frame]
[boat_frame]
image="units/transport/transport-galleon.png:300"
auto_vflip=no
image_mod=~MASK(units/transport/transport-galleon-mask.png)
[/boat_frame]
[frame]
image="misc/blank-hex.png:300"
[/frame]
[/attack_anim]
[/unit_type]