diff --git a/VISION.md b/VISION.md new file mode 100644 index 0000000..9f7348d --- /dev/null +++ b/VISION.md @@ -0,0 +1,40 @@ +# VINYLGOD โ€” creative direction + +One page. If a change fights these pillars, the change is wrong. + +## The fantasy +You are fighting a war over whether music gets to be a *thing you hold*. +Every match is a loudness war made literal. + +## Pillars + +**1. Loud is strong.** +Sound is territory. MRP units fight harder *In The Mix* (within earshot of an +Amp Stack, +25% firepower). Stream units run *Low Latency* near an Edge Node +(+30% speed). Forward speaker placement is forward strategy. Any new mechanic +should ask: does this make sound more physical? + +**2. The ground remembers.** +Wax seeps regrow the fields. Explosions scar the asphalt. Groove-etched ground +marks where the Black Wax surfaced. Battles should leave the map looking +*played*, like a record collects crackle. + +**3. Everything is a record.** +Weapons are thrown 45s, rotors are LPs, the superweapon is a tonearm. If an +asset could belong in a generic sci-fi RTS, redesign it until it couldn't. + +**4. The Party is loud; the Stream is polite.** +MRP: rust, hot pink, gaffer tape, warm voices, drums. Stream: seamless white, +ring lights, customer-service menace, no corners. MRP text shouts. Stream text +apologises while it deletes you. Never swap these voices. + +**5. Real stakes, cartoon delivery.** +Music is being erased forever โ€” and the robots are having the time of their +lives defending it. No grimdark. Loss lines hurt ("THE NEEDLE HAS LIFTED"), +win lines are needle-drops. + +## Hard rules (inherited, non-negotiable) +- 100% original content, generated locally, provenance logged in + assets_src/PROMPTS.md. No EA anything. GPL v3 everything. +- Balance claims require a 5-match arena series (MEGAPLAN ยง5b), not vibes. +- Verify with tools/smoketest.sh โ€” a live process is not a passing game. diff --git a/assets_src/keyart_raw.png b/assets_src/keyart_raw.png new file mode 100644 index 0000000..f09bcc3 Binary files /dev/null and b/assets_src/keyart_raw.png differ diff --git a/mods/vinylgod/audio/sfx_needledrop.wav b/mods/vinylgod/audio/sfx_needledrop.wav new file mode 100644 index 0000000..e0ca027 Binary files /dev/null and b/mods/vinylgod/audio/sfx_needledrop.wav differ diff --git a/mods/vinylgod/chrome/assets/loadscreen.png b/mods/vinylgod/chrome/assets/loadscreen.png index 810a203..92c89de 100644 Binary files a/mods/vinylgod/chrome/assets/loadscreen.png and b/mods/vinylgod/chrome/assets/loadscreen.png differ diff --git a/mods/vinylgod/rules/combat.yaml b/mods/vinylgod/rules/combat.yaml index e67df09..7d46caf 100644 --- a/mods/vinylgod/rules/combat.yaml +++ b/mods/vinylgod/rules/combat.yaml @@ -8,6 +8,16 @@ AttackMove: spinner: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: MrpVoice @@ -32,6 +42,16 @@ spinner: Weapon: tonearm_blade stacktank: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: MrpVoice @@ -56,6 +76,16 @@ stacktank: Weapon: feedback_burst basscannon: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: MrpVoice @@ -80,6 +110,16 @@ basscannon: Weapon: bass_ring roadie: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^Unit Voiced: VoiceSet: MrpVoice @@ -104,6 +144,7 @@ mastering: Inherits: ^EconBuilding Inherits@shape: ^Buildable2x2 NukePower: + LaunchSound: audio/sfx_needledrop.wav Icon: thedrop Name: power-thedrop.name Description: power-thedrop.description @@ -135,6 +176,16 @@ mastering: Amount: -40 hornpit: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^EconBuilding Inherits@shape: ^Buildable1x1 Buildable: @@ -198,6 +249,7 @@ algorithm: Power: Amount: -40 NukePower: + LaunchSound: audio/sfx_needledrop.wav Icon: theshuffle Name: power-theshuffle.name Description: power-theshuffle.description @@ -219,6 +271,16 @@ algorithm: # --- round 5: MRP hero + scout --- selector: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: MrpVoice @@ -245,6 +307,16 @@ selector: SelectionDecorations: boombike: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: MrpVoice @@ -316,6 +388,16 @@ boombike: Categories: Aircraft flyer45: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^AirUnit Voiced: VoiceSet: MrpVoice diff --git a/mods/vinylgod/rules/economy.yaml b/mods/vinylgod/rules/economy.yaml index 66bab5f..64e2410 100644 --- a/mods/vinylgod/rules/economy.yaml +++ b/mods/vinylgod/rules/economy.yaml @@ -83,6 +83,16 @@ popupvan: Facing: 384 djgrunt: + ExternalCondition@INTHEMIX: + Condition: inthemix + FirepowerMultiplier@INTHEMIX: + RequiresCondition: inthemix + Modifier: 125 + WithDecoration@INTHEMIX: + Image: auras + Sequence: mix + RequiresCondition: inthemix + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: MrpVoice @@ -198,6 +208,9 @@ pressplant: ampstack: Inherits: ^EconBuilding + ProximityExternalCondition@MIX: + Condition: inthemix + Range: 5c0 Inherits@shape: ^Buildable1x1 Buildable: Queue: Building diff --git a/mods/vinylgod/rules/stream.yaml b/mods/vinylgod/rules/stream.yaml index d90a646..f72d0b2 100644 --- a/mods/vinylgod/rules/stream.yaml +++ b/mods/vinylgod/rules/stream.yaml @@ -45,6 +45,9 @@ streamhub: datacentre: Inherits: ^EconBuilding + ProximityExternalCondition@LATENCY: + Condition: lowlatency + Range: 5c0 Inherits@shape: ^Buildable1x1 Buildable: Queue: Building @@ -127,6 +130,16 @@ printfarm: Amount: -20 scraper: + ExternalCondition@LOWLATENCY: + Condition: lowlatency + SpeedMultiplier@LOWLATENCY: + RequiresCondition: lowlatency + Modifier: 130 + WithDecoration@LOWLATENCY: + Image: auras + Sequence: latency + RequiresCondition: lowlatency + Position: TopRight Inherits: ^Unit Voiced: VoiceSet: StreamVoice @@ -158,6 +171,16 @@ scraper: DockClientManager: bufferbot: + ExternalCondition@LOWLATENCY: + Condition: lowlatency + SpeedMultiplier@LOWLATENCY: + RequiresCondition: lowlatency + Modifier: 130 + WithDecoration@LOWLATENCY: + Image: auras + Sequence: latency + RequiresCondition: lowlatency + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: StreamVoice @@ -180,6 +203,16 @@ bufferbot: Weapon: ping drmwalker: + ExternalCondition@LOWLATENCY: + Condition: lowlatency + SpeedMultiplier@LOWLATENCY: + RequiresCondition: lowlatency + Modifier: 130 + WithDecoration@LOWLATENCY: + Image: auras + Sequence: latency + RequiresCondition: lowlatency + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: StreamVoice @@ -206,6 +239,16 @@ drmwalker: # --- round 5: Stream hero + scout --- curator: + ExternalCondition@LOWLATENCY: + Condition: lowlatency + SpeedMultiplier@LOWLATENCY: + RequiresCondition: lowlatency + Modifier: 130 + WithDecoration@LOWLATENCY: + Image: auras + Sequence: latency + RequiresCondition: lowlatency + Position: TopRight Inherits: ^ArmedUnit Voiced: VoiceSet: StreamVoice @@ -232,6 +275,16 @@ curator: SelectionDecorations: crawler: + ExternalCondition@LOWLATENCY: + Condition: lowlatency + SpeedMultiplier@LOWLATENCY: + RequiresCondition: lowlatency + Modifier: 130 + WithDecoration@LOWLATENCY: + Image: auras + Sequence: latency + RequiresCondition: lowlatency + Position: TopRight Inherits: ^Unit Voiced: VoiceSet: StreamVoice @@ -258,6 +311,16 @@ crawler: # --- round 5: air --- compressor: + ExternalCondition@LOWLATENCY: + Condition: lowlatency + SpeedMultiplier@LOWLATENCY: + RequiresCondition: lowlatency + Modifier: 130 + WithDecoration@LOWLATENCY: + Image: auras + Sequence: latency + RequiresCondition: lowlatency + Position: TopRight Inherits: ^AirUnit Voiced: VoiceSet: StreamVoice diff --git a/mods/vinylgod/sequences/assets/aura_latency.png b/mods/vinylgod/sequences/assets/aura_latency.png new file mode 100644 index 0000000..385af95 Binary files /dev/null and b/mods/vinylgod/sequences/assets/aura_latency.png differ diff --git a/mods/vinylgod/sequences/assets/aura_mix.png b/mods/vinylgod/sequences/assets/aura_mix.png new file mode 100644 index 0000000..237b887 Binary files /dev/null and b/mods/vinylgod/sequences/assets/aura_mix.png differ diff --git a/mods/vinylgod/sequences/economy.yaml b/mods/vinylgod/sequences/economy.yaml index 96eca25..f5c4d54 100644 --- a/mods/vinylgod/sequences/economy.yaml +++ b/mods/vinylgod/sequences/economy.yaml @@ -321,3 +321,9 @@ scorches: Filename: sequences/assets/scorch3.png sc4: Filename: sequences/assets/scorch4.png + +auras: + mix: + Filename: sequences/assets/aura_mix.png + latency: + Filename: sequences/assets/aura_latency.png