Phase C: weapons, combat units (spinner/stacktank/basscannon/roadie), mastering studio, conquest victory
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ -16,3 +16,19 @@ Cursors:
|
||||
Start: 0
|
||||
deploy-blocked:
|
||||
Start: 0
|
||||
goldwrench:
|
||||
Start: 0
|
||||
goldwrench-blocked:
|
||||
Start: 0
|
||||
attack:
|
||||
Start: 0
|
||||
attackoutsiderange:
|
||||
Start: 0
|
||||
attackmove:
|
||||
Start: 0
|
||||
attackmove-blocked:
|
||||
Start: 0
|
||||
assaultmove:
|
||||
Start: 0
|
||||
assaultmove-blocked:
|
||||
Start: 0
|
||||
|
||||
@ -33,3 +33,15 @@ actor-garage =
|
||||
.name = Garage
|
||||
actor-djgrunt =
|
||||
.name = DJ
|
||||
|
||||
## combat.yaml
|
||||
actor-spinner =
|
||||
.name = Spinner
|
||||
actor-stacktank =
|
||||
.name = Stack Walker
|
||||
actor-basscannon =
|
||||
.name = Bass Cannon
|
||||
actor-roadie =
|
||||
.name = Roadie
|
||||
actor-mastering =
|
||||
.name = Mastering Studio
|
||||
|
||||
@ -13,6 +13,7 @@ Notifications:
|
||||
Rules:
|
||||
vinylgod|rules/vinylgod.yaml
|
||||
vinylgod|rules/economy.yaml
|
||||
vinylgod|rules/combat.yaml
|
||||
vinylgod|rules/mpspawn.yaml
|
||||
vinylgod|rules/palettes.yaml
|
||||
vinylgod|rules/player.yaml
|
||||
|
||||
103
mods/vinylgod/rules/combat.yaml
Normal file
@ -0,0 +1,103 @@
|
||||
^ArmedUnit:
|
||||
Inherits: ^Unit
|
||||
AttackFrontal:
|
||||
FacingTolerance: 80
|
||||
AutoTarget:
|
||||
AutoTargetPriority@DEFAULT:
|
||||
ValidTargets: GroundActor, Structure
|
||||
AttackMove:
|
||||
|
||||
spinner:
|
||||
Inherits: ^ArmedUnit
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 40
|
||||
Prerequisites: garage
|
||||
Valued:
|
||||
Cost: 500
|
||||
Tooltip:
|
||||
Name: actor-spinner.name
|
||||
Health:
|
||||
HP: 25000
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Locomotor: wheeled
|
||||
Speed: 110
|
||||
Armament:
|
||||
Weapon: tonearm_blade
|
||||
|
||||
stacktank:
|
||||
Inherits: ^ArmedUnit
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 50
|
||||
Prerequisites: garage, pressplant
|
||||
Valued:
|
||||
Cost: 800
|
||||
Tooltip:
|
||||
Name: actor-stacktank.name
|
||||
Health:
|
||||
HP: 90000
|
||||
Armor:
|
||||
Type: Heavy
|
||||
Mobile:
|
||||
Locomotor: wheeled
|
||||
Speed: 50
|
||||
Armament:
|
||||
Weapon: feedback_burst
|
||||
|
||||
basscannon:
|
||||
Inherits: ^ArmedUnit
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 60
|
||||
Prerequisites: garage, mastering
|
||||
Valued:
|
||||
Cost: 900
|
||||
Tooltip:
|
||||
Name: actor-basscannon.name
|
||||
Health:
|
||||
HP: 20000
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Locomotor: wheeled
|
||||
Speed: 45
|
||||
Armament:
|
||||
Weapon: bass_ring
|
||||
|
||||
roadie:
|
||||
Inherits: ^Unit
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 20
|
||||
Prerequisites: merchtable
|
||||
Valued:
|
||||
Cost: 500
|
||||
Tooltip:
|
||||
Name: actor-roadie.name
|
||||
Health:
|
||||
HP: 8000
|
||||
Armor:
|
||||
Type: None
|
||||
Mobile:
|
||||
Locomotor: foot
|
||||
Speed: 50
|
||||
InstantlyRepairs:
|
||||
|
||||
mastering:
|
||||
Inherits: ^EconBuilding
|
||||
Inherits@shape: ^Buildable2x2
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 60
|
||||
Prerequisites: garage
|
||||
Valued:
|
||||
Cost: 1500
|
||||
Tooltip:
|
||||
Name: actor-mastering.name
|
||||
Health:
|
||||
HP: 60000
|
||||
Power:
|
||||
Amount: -40
|
||||
@ -10,6 +10,9 @@
|
||||
|
||||
^Unit:
|
||||
Inherits: ^EconSprite
|
||||
Targetable:
|
||||
TargetTypes: GroundActor
|
||||
MustBeDestroyed:
|
||||
Selectable:
|
||||
Bounds: 1024, 1024
|
||||
RevealsShroud:
|
||||
@ -67,7 +70,7 @@ popupvan:
|
||||
Facing: 384
|
||||
|
||||
djgrunt:
|
||||
Inherits: ^Unit
|
||||
Inherits: ^ArmedUnit
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 10
|
||||
@ -83,9 +86,16 @@ djgrunt:
|
||||
Mobile:
|
||||
Locomotor: foot
|
||||
Speed: 56
|
||||
Armament:
|
||||
Weapon: seven_inch
|
||||
|
||||
^EconBuilding:
|
||||
Inherits: ^EconSprite
|
||||
Targetable:
|
||||
TargetTypes: GroundActor, Structure
|
||||
MustBeDestroyed:
|
||||
RequiredForShortGame: true
|
||||
InstantlyRepairable:
|
||||
Tooltip:
|
||||
Health:
|
||||
HP: 90000
|
||||
|
||||
@ -5,6 +5,8 @@
|
||||
Name: terrain
|
||||
PaletteFromGrayscale@chrome:
|
||||
Name: chrome
|
||||
PaletteFromGrayscale@effect:
|
||||
Name: effect
|
||||
PlayerColorPalette@player:
|
||||
BasePalette: greyscale
|
||||
PlayerColorShift:
|
||||
|
||||
@ -21,6 +21,8 @@ player:
|
||||
ClassicProductionQueue@Infantry:
|
||||
Type: Infantry
|
||||
Group: Infantry
|
||||
ConquestVictoryConditions:
|
||||
MissionObjectives:
|
||||
|
||||
editorplayer:
|
||||
Inherits: ^baseplayer
|
||||
|
||||
@ -35,6 +35,7 @@ world:
|
||||
ClassName: options-starting-units.unlabeled
|
||||
BuildingInfluence:
|
||||
PathFinder:
|
||||
MapOptions:
|
||||
Locomotor@WHEELED:
|
||||
Name: wheeled
|
||||
TerrainSpeeds:
|
||||
|
||||
BIN
mods/vinylgod/sequences/assets/basscannon.png
Normal file
|
After Width: | Height: | Size: 132 B |
BIN
mods/vinylgod/sequences/assets/icon_basscannon.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/icon_mastering.png
Normal file
|
After Width: | Height: | Size: 235 B |
BIN
mods/vinylgod/sequences/assets/icon_roadie.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/icon_spinner.png
Normal file
|
After Width: | Height: | Size: 238 B |
BIN
mods/vinylgod/sequences/assets/icon_stacktank.png
Normal file
|
After Width: | Height: | Size: 236 B |
BIN
mods/vinylgod/sequences/assets/mastering.png
Normal file
|
After Width: | Height: | Size: 248 B |
BIN
mods/vinylgod/sequences/assets/roadie.png
Normal file
|
After Width: | Height: | Size: 112 B |
BIN
mods/vinylgod/sequences/assets/spinner.png
Normal file
|
After Width: | Height: | Size: 122 B |
BIN
mods/vinylgod/sequences/assets/stacktank.png
Normal file
|
After Width: | Height: | Size: 139 B |
@ -59,3 +59,33 @@ garage:
|
||||
Filename: sequences/assets/garage.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_garage.png
|
||||
|
||||
spinner:
|
||||
idle:
|
||||
Filename: sequences/assets/spinner.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_spinner.png
|
||||
|
||||
stacktank:
|
||||
idle:
|
||||
Filename: sequences/assets/stacktank.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_stacktank.png
|
||||
|
||||
basscannon:
|
||||
idle:
|
||||
Filename: sequences/assets/basscannon.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_basscannon.png
|
||||
|
||||
roadie:
|
||||
idle:
|
||||
Filename: sequences/assets/roadie.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_roadie.png
|
||||
|
||||
mastering:
|
||||
idle:
|
||||
Filename: sequences/assets/mastering.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_mastering.png
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
# Placeholder projectiles: invisible bullets, no impact effects until Phase D art lands.
|
||||
|
||||
^GroundWeapon:
|
||||
ValidTargets: GroundActor
|
||||
Projectile: Bullet
|
||||
Speed: 682
|
||||
|
||||
tonearm_blade:
|
||||
Inherits: ^GroundWeapon
|
||||
ReloadDelay: 12
|
||||
Range: 1c512
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 64
|
||||
Damage: 900
|
||||
ValidTargets: GroundActor
|
||||
Versus:
|
||||
None: 100
|
||||
Wood: 45
|
||||
Light: 60
|
||||
Heavy: 25
|
||||
|
||||
seven_inch:
|
||||
Inherits: ^GroundWeapon
|
||||
ReloadDelay: 30
|
||||
Range: 4c0
|
||||
Projectile: Bullet
|
||||
Speed: 512
|
||||
LaunchAngle: 30
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 96
|
||||
Damage: 3000
|
||||
ValidTargets: GroundActor
|
||||
Versus:
|
||||
None: 90
|
||||
Wood: 40
|
||||
Light: 50
|
||||
Heavy: 20
|
||||
|
||||
feedback_burst:
|
||||
Inherits: ^GroundWeapon
|
||||
ReloadDelay: 50
|
||||
Range: 5c0
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 128
|
||||
Damage: 5000
|
||||
ValidTargets: GroundActor
|
||||
Versus:
|
||||
None: 40
|
||||
Wood: 70
|
||||
Light: 80
|
||||
Heavy: 100
|
||||
|
||||
bass_ring:
|
||||
Inherits: ^GroundWeapon
|
||||
ReloadDelay: 120
|
||||
Range: 9c0
|
||||
MinRange: 2c0
|
||||
Projectile: Bullet
|
||||
Speed: 300
|
||||
LaunchAngle: 62
|
||||
Blockable: false
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 341
|
||||
Damage: 8000
|
||||
ValidTargets: GroundActor
|
||||
Versus:
|
||||
None: 100
|
||||
Wood: 100
|
||||
Light: 75
|
||||
Heavy: 40
|
||||
@ -86,6 +86,14 @@ box_sprite(os.path.join(OUT, 'merchtable.png'), 32, GREEN, DARK)
|
||||
box_sprite(os.path.join(OUT, 'garage.png'), 64, BLUE, DARK)
|
||||
box_sprite(os.path.join(OUT, 'djgrunt.png'), 16, PINK, DARK)
|
||||
|
||||
# Phase C: combat roster
|
||||
RED = (220, 70, 60, 255)
|
||||
box_sprite(os.path.join(OUT, 'spinner.png'), 20, RED, DARK)
|
||||
box_sprite(os.path.join(OUT, 'stacktank.png'), 28, DARK, RED)
|
||||
box_sprite(os.path.join(OUT, 'basscannon.png'), 26, GREY, RED)
|
||||
box_sprite(os.path.join(OUT, 'roadie.png'), 16, GOLD, DARK)
|
||||
box_sprite(os.path.join(OUT, 'mastering.png'), 64, (150, 150, 160, 255), PINK)
|
||||
|
||||
|
||||
def icon(path, body):
|
||||
w, h = 64, 48
|
||||
@ -99,7 +107,9 @@ def icon(path, body):
|
||||
|
||||
for name, col in [('popupshop', GOLD), ('ampstack', GREY), ('pressplant', (255, 45, 150, 255)),
|
||||
('vault', (70, 65, 75, 255)), ('merchtable', GREEN), ('garage', BLUE),
|
||||
('digger', PINK), ('popupvan', GOLD), ('djgrunt', (255, 120, 180, 255))]:
|
||||
('digger', PINK), ('popupvan', GOLD), ('djgrunt', (255, 120, 180, 255)),
|
||||
('spinner', RED), ('stacktank', (120, 40, 35, 255)), ('basscannon', (160, 90, 85, 255)),
|
||||
('roadie', GOLD), ('mastering', (150, 150, 160, 255))]:
|
||||
icon(os.path.join(OUT, f'icon_{name}.png'), col)
|
||||
|
||||
# clock overlay for production progress (single frame, semi-transparent)
|
||||
|
||||