Phase E: The Stream faction (9 actors), Wax AI bot for both factions, bot-vs-bot shellmap battle
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ -120,6 +120,7 @@ flags:
|
||||
Inherits: ^Glyphs
|
||||
Regions:
|
||||
vinylgod: 226, 241, 30, 15
|
||||
stream: 226, 241, 30, 15
|
||||
Random: 226, 241, 30, 15
|
||||
spectator: 226, 241, 30, 15
|
||||
|
||||
|
||||
@ -45,3 +45,29 @@ actor-roadie =
|
||||
.name = Roadie
|
||||
actor-mastering =
|
||||
.name = Mastering Studio
|
||||
|
||||
## stream.yaml + ai.yaml
|
||||
faction-stream =
|
||||
.name = The Stream
|
||||
.description = The Stream
|
||||
The Algorithm's physical fleet: cheap, fast, numerous.
|
||||
actor-streamvan =
|
||||
.name = Deployment Van
|
||||
actor-streamhub =
|
||||
.name = Stream Hub
|
||||
actor-datacentre =
|
||||
.name = Edge Node
|
||||
actor-transcoder =
|
||||
.name = Transcoder
|
||||
actor-podfarm =
|
||||
.name = Pod Farm
|
||||
actor-printfarm =
|
||||
.name = Print Farm
|
||||
actor-scraper =
|
||||
.name = Scraper
|
||||
actor-bufferbot =
|
||||
.name = Buffer-Bot
|
||||
actor-drmwalker =
|
||||
.name = DRM Enforcer
|
||||
bot-wax-ai =
|
||||
.name = Wax AI
|
||||
|
||||
@ -26,14 +26,27 @@ Players:
|
||||
Name: Creeps
|
||||
NonCombatant: True
|
||||
Faction: Random
|
||||
PlayerReference@BotA:
|
||||
Name: BotA
|
||||
Faction: vinylgod
|
||||
Bot: wax
|
||||
Enemies: BotB
|
||||
PlayerReference@BotB:
|
||||
Name: BotB
|
||||
Faction: stream
|
||||
Bot: wax
|
||||
Enemies: BotA
|
||||
|
||||
Actors:
|
||||
Actor1: pressplant
|
||||
Owner: Creeps
|
||||
Location: 12,12
|
||||
Actor1: popupvan
|
||||
Owner: BotA
|
||||
Location: 7,7
|
||||
Actor2: digger
|
||||
Owner: Creeps
|
||||
Location: 15,14
|
||||
Actor3: ampstack
|
||||
Owner: Creeps
|
||||
Location: 10,14
|
||||
Owner: BotA
|
||||
Location: 9,8
|
||||
Actor3: streamvan
|
||||
Owner: BotB
|
||||
Location: 26,26
|
||||
Actor4: scraper
|
||||
Owner: BotB
|
||||
Location: 24,25
|
||||
|
||||
@ -14,6 +14,8 @@ Rules:
|
||||
vinylgod|rules/vinylgod.yaml
|
||||
vinylgod|rules/economy.yaml
|
||||
vinylgod|rules/combat.yaml
|
||||
vinylgod|rules/stream.yaml
|
||||
vinylgod|rules/ai.yaml
|
||||
vinylgod|rules/mpspawn.yaml
|
||||
vinylgod|rules/palettes.yaml
|
||||
vinylgod|rules/player.yaml
|
||||
|
||||
67
mods/vinylgod/rules/ai.yaml
Normal file
@ -0,0 +1,67 @@
|
||||
player:
|
||||
ModularBot@WaxAI:
|
||||
Name: bot-wax-ai.name
|
||||
Type: wax
|
||||
GrantConditionOnBotOwner@wax:
|
||||
Condition: enable-wax-ai
|
||||
Bots: wax
|
||||
HarvesterBotModule:
|
||||
RequiresCondition: enable-wax-ai
|
||||
HarvesterTypes: digger, scraper
|
||||
RefineryTypes: pressplant, transcoder
|
||||
McvManagerBotModule:
|
||||
RequiresCondition: enable-wax-ai
|
||||
McvTypes: popupvan, streamvan
|
||||
ConstructionYardTypes: popupshop, streamhub
|
||||
McvFactoryTypes: garage, printfarm
|
||||
BaseBuilderBotModule:
|
||||
RequiresCondition: enable-wax-ai
|
||||
MinimumExcessPower: 40
|
||||
MaximumExcessPower: 160
|
||||
ExcessPowerIncrement: 40
|
||||
ExcessPowerIncreaseThreshold: 4
|
||||
ConstructionYardTypes: popupshop, streamhub
|
||||
RefineryTypes: pressplant, transcoder
|
||||
PowerTypes: ampstack, datacentre
|
||||
BarracksTypes: merchtable, podfarm
|
||||
VehiclesFactoryTypes: garage, printfarm
|
||||
ProductionTypes: merchtable, podfarm, garage, printfarm
|
||||
SiloTypes: vault
|
||||
BuildingLimits:
|
||||
pressplant: 3
|
||||
transcoder: 3
|
||||
merchtable: 1
|
||||
podfarm: 1
|
||||
garage: 1
|
||||
printfarm: 1
|
||||
mastering: 1
|
||||
BuildingFractions:
|
||||
pressplant: 30
|
||||
transcoder: 30
|
||||
merchtable: 1
|
||||
podfarm: 1
|
||||
garage: 1
|
||||
printfarm: 1
|
||||
mastering: 1
|
||||
UnitBuilderBotModule:
|
||||
RequiresCondition: enable-wax-ai
|
||||
UnitsToBuild:
|
||||
djgrunt: 60
|
||||
roadie: 5
|
||||
spinner: 30
|
||||
stacktank: 45
|
||||
basscannon: 15
|
||||
digger: 10
|
||||
bufferbot: 60
|
||||
drmwalker: 45
|
||||
scraper: 10
|
||||
UnitLimits:
|
||||
digger: 4
|
||||
scraper: 4
|
||||
roadie: 2
|
||||
SquadManagerBotModule:
|
||||
RequiresCondition: enable-wax-ai
|
||||
SquadSize: 8
|
||||
ExcludeFromSquadsTypes: digger, scraper, popupvan, streamvan, roadie
|
||||
ConstructionYardTypes: popupshop, streamhub
|
||||
ProtectionTypes: digger, scraper, popupvan, streamvan, pressplant, transcoder, popupshop, streamhub, ampstack, datacentre, vault, merchtable, podfarm, garage, printfarm, mastering
|
||||
@ -178,6 +178,7 @@ ampstack:
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 10
|
||||
Prerequisites: popupshop
|
||||
Valued:
|
||||
Cost: 300
|
||||
Tooltip:
|
||||
|
||||
187
mods/vinylgod/rules/stream.yaml
Normal file
@ -0,0 +1,187 @@
|
||||
# The Stream — the Algorithm's physical fleet. Cheap, fast, numerous, fragile.
|
||||
|
||||
streamvan:
|
||||
Inherits: ^Unit
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 31
|
||||
Prerequisites: printfarm
|
||||
Valued:
|
||||
Cost: 2500
|
||||
Tooltip:
|
||||
Name: actor-streamvan.name
|
||||
Health:
|
||||
HP: 55000
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Locomotor: wheeled
|
||||
Speed: 75
|
||||
Transforms:
|
||||
IntoActor: streamhub
|
||||
Offset: 0,0
|
||||
Facing: 384
|
||||
|
||||
streamhub:
|
||||
Inherits: ^EconBuilding
|
||||
Inherits@shape: ^Buildable2x2
|
||||
Tooltip:
|
||||
Name: actor-streamhub.name
|
||||
Health:
|
||||
HP: 140000
|
||||
BaseBuilding:
|
||||
Production:
|
||||
Produces: Building
|
||||
Power:
|
||||
Amount: 0
|
||||
-RequiresBuildableArea:
|
||||
|
||||
datacentre:
|
||||
Inherits: ^EconBuilding
|
||||
Inherits@shape: ^Buildable1x1
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 11
|
||||
Prerequisites: streamhub
|
||||
Valued:
|
||||
Cost: 300
|
||||
Tooltip:
|
||||
Name: actor-datacentre.name
|
||||
Health:
|
||||
HP: 35000
|
||||
Power:
|
||||
Amount: 100
|
||||
GivesBuildableArea:
|
||||
AreaTypes: building
|
||||
|
||||
transcoder:
|
||||
Inherits: ^EconBuilding
|
||||
Inherits@shape: ^Buildable2x2
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 21
|
||||
Prerequisites: datacentre
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: actor-transcoder.name
|
||||
Building:
|
||||
Footprint: xx ==
|
||||
Refinery:
|
||||
DockHost:
|
||||
Type: Unload
|
||||
DockOffset: 0, 512, 0
|
||||
StoresPlayerResources:
|
||||
Capacity: 4000
|
||||
Power:
|
||||
Amount: -30
|
||||
FreeActor:
|
||||
Actor: scraper
|
||||
SpawnOffset: 0, 2
|
||||
|
||||
podfarm:
|
||||
Inherits: ^EconBuilding
|
||||
Inherits@shape: ^Buildable2x2
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 31
|
||||
Prerequisites: transcoder
|
||||
Valued:
|
||||
Cost: 300
|
||||
Tooltip:
|
||||
Name: actor-podfarm.name
|
||||
Health:
|
||||
HP: 70000
|
||||
Production:
|
||||
Produces: Infantry
|
||||
Exit@1:
|
||||
ExitCell: 0, 2
|
||||
Power:
|
||||
Amount: -10
|
||||
|
||||
printfarm:
|
||||
Inherits: ^EconBuilding
|
||||
Inherits@shape: ^Buildable2x2
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 51
|
||||
Prerequisites: transcoder
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: actor-printfarm.name
|
||||
Health:
|
||||
HP: 100000
|
||||
Production:
|
||||
Produces: Vehicle
|
||||
Exit@1:
|
||||
ExitCell: 0, 2
|
||||
Power:
|
||||
Amount: -20
|
||||
|
||||
scraper:
|
||||
Inherits: ^Unit
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 21
|
||||
Prerequisites: transcoder
|
||||
Valued:
|
||||
Cost: 1200
|
||||
Tooltip:
|
||||
Name: actor-scraper.name
|
||||
Health:
|
||||
HP: 45000
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Locomotor: wheeled
|
||||
Speed: 90
|
||||
Harvester:
|
||||
Resources: Wax
|
||||
BaleUnloadDelay: 1
|
||||
SearchFromProcRadius: 15
|
||||
SearchFromHarvesterRadius: 8
|
||||
StoresResources:
|
||||
Capacity: 14
|
||||
Resources: Wax
|
||||
DockClientManager:
|
||||
|
||||
bufferbot:
|
||||
Inherits: ^ArmedUnit
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 11
|
||||
Prerequisites: podfarm
|
||||
Valued:
|
||||
Cost: 60
|
||||
Tooltip:
|
||||
Name: actor-bufferbot.name
|
||||
Health:
|
||||
HP: 3500
|
||||
Armor:
|
||||
Type: None
|
||||
Mobile:
|
||||
Locomotor: foot
|
||||
Speed: 70
|
||||
Armament:
|
||||
Weapon: ping
|
||||
|
||||
drmwalker:
|
||||
Inherits: ^ArmedUnit
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 51
|
||||
Prerequisites: printfarm
|
||||
Valued:
|
||||
Cost: 900
|
||||
Tooltip:
|
||||
Name: actor-drmwalker.name
|
||||
Health:
|
||||
HP: 100000
|
||||
Armor:
|
||||
Type: Heavy
|
||||
Mobile:
|
||||
Locomotor: wheeled
|
||||
Speed: 42
|
||||
Armament:
|
||||
Weapon: feedback_burst
|
||||
@ -6,12 +6,16 @@
|
||||
Faction@Random:
|
||||
InternalName: Random
|
||||
Name: faction-random.name
|
||||
RandomFactionMembers: vinylgod
|
||||
RandomFactionMembers: vinylgod, stream
|
||||
Description: faction-random.description
|
||||
Faction@vinylgod:
|
||||
InternalName: vinylgod
|
||||
Name: faction-vinylgod.name
|
||||
Description: faction-vinylgod.description
|
||||
Faction@stream:
|
||||
InternalName: stream
|
||||
Name: faction-stream.name
|
||||
Description: faction-stream.description
|
||||
LoadWidgetAtGameStart:
|
||||
MusicPlaylist:
|
||||
ScreenMap:
|
||||
@ -33,6 +37,11 @@ world:
|
||||
SupportActors: digger
|
||||
Factions: vinylgod
|
||||
ClassName: options-starting-units.unlabeled
|
||||
StartingUnits@Stream:
|
||||
BaseActor: streamvan
|
||||
SupportActors: scraper
|
||||
Factions: stream
|
||||
ClassName: options-starting-units.unlabeled
|
||||
BuildingInfluence:
|
||||
PathFinder:
|
||||
MapOptions:
|
||||
|
||||
BIN
mods/vinylgod/sequences/assets/bufferbot.png
Normal file
|
After Width: | Height: | Size: 110 B |
BIN
mods/vinylgod/sequences/assets/datacentre.png
Normal file
|
After Width: | Height: | Size: 156 B |
BIN
mods/vinylgod/sequences/assets/drmwalker.png
Normal file
|
After Width: | Height: | Size: 139 B |
BIN
mods/vinylgod/sequences/assets/icon_bufferbot.png
Normal file
|
After Width: | Height: | Size: 235 B |
BIN
mods/vinylgod/sequences/assets/icon_datacentre.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/icon_drmwalker.png
Normal file
|
After Width: | Height: | Size: 235 B |
BIN
mods/vinylgod/sequences/assets/icon_podfarm.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/icon_printfarm.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/icon_scraper.png
Normal file
|
After Width: | Height: | Size: 235 B |
BIN
mods/vinylgod/sequences/assets/icon_streamhub.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/icon_streamvan.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/icon_transcoder.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
mods/vinylgod/sequences/assets/podfarm.png
Normal file
|
After Width: | Height: | Size: 156 B |
BIN
mods/vinylgod/sequences/assets/printfarm.png
Normal file
|
After Width: | Height: | Size: 252 B |
BIN
mods/vinylgod/sequences/assets/scraper.png
Normal file
|
After Width: | Height: | Size: 126 B |
BIN
mods/vinylgod/sequences/assets/streamhub.png
Normal file
|
After Width: | Height: | Size: 251 B |
BIN
mods/vinylgod/sequences/assets/streamvan.png
Normal file
|
After Width: | Height: | Size: 129 B |
BIN
mods/vinylgod/sequences/assets/transcoder.png
Normal file
|
After Width: | Height: | Size: 252 B |
@ -89,3 +89,57 @@ mastering:
|
||||
Filename: sequences/assets/mastering.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_mastering.png
|
||||
|
||||
streamvan:
|
||||
idle:
|
||||
Filename: sequences/assets/streamvan.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_streamvan.png
|
||||
|
||||
streamhub:
|
||||
idle:
|
||||
Filename: sequences/assets/streamhub.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_streamhub.png
|
||||
|
||||
datacentre:
|
||||
idle:
|
||||
Filename: sequences/assets/datacentre.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_datacentre.png
|
||||
|
||||
transcoder:
|
||||
idle:
|
||||
Filename: sequences/assets/transcoder.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_transcoder.png
|
||||
|
||||
podfarm:
|
||||
idle:
|
||||
Filename: sequences/assets/podfarm.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_podfarm.png
|
||||
|
||||
printfarm:
|
||||
idle:
|
||||
Filename: sequences/assets/printfarm.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_printfarm.png
|
||||
|
||||
scraper:
|
||||
idle:
|
||||
Filename: sequences/assets/scraper.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_scraper.png
|
||||
|
||||
bufferbot:
|
||||
idle:
|
||||
Filename: sequences/assets/bufferbot.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_bufferbot.png
|
||||
|
||||
drmwalker:
|
||||
idle:
|
||||
Filename: sequences/assets/drmwalker.png
|
||||
icon:
|
||||
Filename: sequences/assets/icon_drmwalker.png
|
||||
|
||||
@ -68,3 +68,17 @@ bass_ring:
|
||||
Wood: 100
|
||||
Light: 75
|
||||
Heavy: 40
|
||||
|
||||
ping:
|
||||
Inherits: ^GroundWeapon
|
||||
ReloadDelay: 15
|
||||
Range: 3c512
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 64
|
||||
Damage: 1200
|
||||
ValidTargets: GroundActor
|
||||
Versus:
|
||||
None: 100
|
||||
Wood: 35
|
||||
Light: 45
|
||||
Heavy: 15
|
||||
|
||||
@ -94,6 +94,19 @@ 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)
|
||||
|
||||
# Phase E: The Stream (white/blue)
|
||||
WHITE = (235, 238, 245, 255)
|
||||
SBLUE = (60, 130, 255, 255)
|
||||
box_sprite(os.path.join(OUT, 'streamvan.png'), 24, WHITE, SBLUE)
|
||||
box_sprite(os.path.join(OUT, 'streamhub.png'), 64, WHITE, SBLUE)
|
||||
box_sprite(os.path.join(OUT, 'datacentre.png'), 32, WHITE, SBLUE)
|
||||
box_sprite(os.path.join(OUT, 'transcoder.png'), 64, (200, 210, 225, 255), SBLUE)
|
||||
box_sprite(os.path.join(OUT, 'podfarm.png'), 32, WHITE, (120, 170, 255, 255))
|
||||
box_sprite(os.path.join(OUT, 'printfarm.png'), 64, (210, 218, 230, 255), SBLUE)
|
||||
box_sprite(os.path.join(OUT, 'scraper.png'), 22, WHITE, SBLUE)
|
||||
box_sprite(os.path.join(OUT, 'bufferbot.png'), 14, WHITE, SBLUE)
|
||||
box_sprite(os.path.join(OUT, 'drmwalker.png'), 28, WHITE, (30, 60, 160, 255))
|
||||
|
||||
|
||||
def icon(path, body):
|
||||
w, h = 64, 48
|
||||
@ -134,3 +147,7 @@ for r, shape in enumerate(('rect', 'dot', 'disc')):
|
||||
disc(px, w, ox + 8, oy + 8, 2, DARK)
|
||||
CHROME = os.path.join(os.path.dirname(__file__), '..', 'mods', 'vinylgod', 'chrome', 'assets')
|
||||
write_png(os.path.join(CHROME, 'production-icons.png'), w, h, px)
|
||||
|
||||
for name in ('streamvan', 'streamhub', 'datacentre', 'transcoder', 'podfarm',
|
||||
'printfarm', 'scraper', 'bufferbot', 'drmwalker'):
|
||||
icon(os.path.join(OUT, f'icon_{name}.png'), SBLUE if name in ('scraper', 'drmwalker', 'bufferbot') else WHITE)
|
||||
|
||||