diff --git a/mods/vinylgod/cursors/default.yaml b/mods/vinylgod/cursors/default.yaml index 7b937c2..b5954f2 100644 --- a/mods/vinylgod/cursors/default.yaml +++ b/mods/vinylgod/cursors/default.yaml @@ -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 diff --git a/mods/vinylgod/fluent/rules.ftl b/mods/vinylgod/fluent/rules.ftl index b05e0f8..3e6de87 100644 --- a/mods/vinylgod/fluent/rules.ftl +++ b/mods/vinylgod/fluent/rules.ftl @@ -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 diff --git a/mods/vinylgod/mod.content.yaml b/mods/vinylgod/mod.content.yaml index 88d8c10..db0413b 100644 --- a/mods/vinylgod/mod.content.yaml +++ b/mods/vinylgod/mod.content.yaml @@ -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 diff --git a/mods/vinylgod/rules/combat.yaml b/mods/vinylgod/rules/combat.yaml new file mode 100644 index 0000000..9006851 --- /dev/null +++ b/mods/vinylgod/rules/combat.yaml @@ -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 diff --git a/mods/vinylgod/rules/economy.yaml b/mods/vinylgod/rules/economy.yaml index 0a14f8c..9743f35 100644 --- a/mods/vinylgod/rules/economy.yaml +++ b/mods/vinylgod/rules/economy.yaml @@ -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 diff --git a/mods/vinylgod/rules/palettes.yaml b/mods/vinylgod/rules/palettes.yaml index b0b619d..03c388e 100644 --- a/mods/vinylgod/rules/palettes.yaml +++ b/mods/vinylgod/rules/palettes.yaml @@ -5,6 +5,8 @@ Name: terrain PaletteFromGrayscale@chrome: Name: chrome + PaletteFromGrayscale@effect: + Name: effect PlayerColorPalette@player: BasePalette: greyscale PlayerColorShift: diff --git a/mods/vinylgod/rules/player.yaml b/mods/vinylgod/rules/player.yaml index e72dddb..29c7bff 100644 --- a/mods/vinylgod/rules/player.yaml +++ b/mods/vinylgod/rules/player.yaml @@ -21,6 +21,8 @@ player: ClassicProductionQueue@Infantry: Type: Infantry Group: Infantry + ConquestVictoryConditions: + MissionObjectives: editorplayer: Inherits: ^baseplayer diff --git a/mods/vinylgod/rules/world.yaml b/mods/vinylgod/rules/world.yaml index c1ff4a9..2ab79c9 100644 --- a/mods/vinylgod/rules/world.yaml +++ b/mods/vinylgod/rules/world.yaml @@ -35,6 +35,7 @@ world: ClassName: options-starting-units.unlabeled BuildingInfluence: PathFinder: + MapOptions: Locomotor@WHEELED: Name: wheeled TerrainSpeeds: diff --git a/mods/vinylgod/sequences/assets/basscannon.png b/mods/vinylgod/sequences/assets/basscannon.png new file mode 100644 index 0000000..761e664 Binary files /dev/null and b/mods/vinylgod/sequences/assets/basscannon.png differ diff --git a/mods/vinylgod/sequences/assets/icon_basscannon.png b/mods/vinylgod/sequences/assets/icon_basscannon.png new file mode 100644 index 0000000..878319c Binary files /dev/null and b/mods/vinylgod/sequences/assets/icon_basscannon.png differ diff --git a/mods/vinylgod/sequences/assets/icon_mastering.png b/mods/vinylgod/sequences/assets/icon_mastering.png new file mode 100644 index 0000000..42c5298 Binary files /dev/null and b/mods/vinylgod/sequences/assets/icon_mastering.png differ diff --git a/mods/vinylgod/sequences/assets/icon_roadie.png b/mods/vinylgod/sequences/assets/icon_roadie.png new file mode 100644 index 0000000..8e21ead Binary files /dev/null and b/mods/vinylgod/sequences/assets/icon_roadie.png differ diff --git a/mods/vinylgod/sequences/assets/icon_spinner.png b/mods/vinylgod/sequences/assets/icon_spinner.png new file mode 100644 index 0000000..0da3756 Binary files /dev/null and b/mods/vinylgod/sequences/assets/icon_spinner.png differ diff --git a/mods/vinylgod/sequences/assets/icon_stacktank.png b/mods/vinylgod/sequences/assets/icon_stacktank.png new file mode 100644 index 0000000..47c5508 Binary files /dev/null and b/mods/vinylgod/sequences/assets/icon_stacktank.png differ diff --git a/mods/vinylgod/sequences/assets/mastering.png b/mods/vinylgod/sequences/assets/mastering.png new file mode 100644 index 0000000..e1cfd53 Binary files /dev/null and b/mods/vinylgod/sequences/assets/mastering.png differ diff --git a/mods/vinylgod/sequences/assets/roadie.png b/mods/vinylgod/sequences/assets/roadie.png new file mode 100644 index 0000000..cb68921 Binary files /dev/null and b/mods/vinylgod/sequences/assets/roadie.png differ diff --git a/mods/vinylgod/sequences/assets/spinner.png b/mods/vinylgod/sequences/assets/spinner.png new file mode 100644 index 0000000..8925bb4 Binary files /dev/null and b/mods/vinylgod/sequences/assets/spinner.png differ diff --git a/mods/vinylgod/sequences/assets/stacktank.png b/mods/vinylgod/sequences/assets/stacktank.png new file mode 100644 index 0000000..39aaa03 Binary files /dev/null and b/mods/vinylgod/sequences/assets/stacktank.png differ diff --git a/mods/vinylgod/sequences/economy.yaml b/mods/vinylgod/sequences/economy.yaml index 12411ed..e9fb5bc 100644 --- a/mods/vinylgod/sequences/economy.yaml +++ b/mods/vinylgod/sequences/economy.yaml @@ -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 diff --git a/mods/vinylgod/weapons/vinylgod.yaml b/mods/vinylgod/weapons/vinylgod.yaml index e69de29..281e532 100644 --- a/mods/vinylgod/weapons/vinylgod.yaml +++ b/mods/vinylgod/weapons/vinylgod.yaml @@ -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 diff --git a/tools/gen_placeholders.py b/tools/gen_placeholders.py index 9a3852a..46bf798 100644 --- a/tools/gen_placeholders.py +++ b/tools/gen_placeholders.py @@ -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)