diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_0.png b/mods/d2k/bits/destroyabletiles/destroyabletile_0.png new file mode 100644 index 0000000000..3b34cc4d2c Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_0.png differ diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_1.png b/mods/d2k/bits/destroyabletiles/destroyabletile_1.png new file mode 100644 index 0000000000..7f2c1fe596 Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_1.png differ diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_2.png b/mods/d2k/bits/destroyabletiles/destroyabletile_2.png new file mode 100644 index 0000000000..4128a95d8e Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_2.png differ diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_3.png b/mods/d2k/bits/destroyabletiles/destroyabletile_3.png new file mode 100644 index 0000000000..27bed2cd89 Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_3.png differ diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_4.png b/mods/d2k/bits/destroyabletiles/destroyabletile_4.png new file mode 100644 index 0000000000..5bd56333a5 Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_4.png differ diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_5.png b/mods/d2k/bits/destroyabletiles/destroyabletile_5.png new file mode 100644 index 0000000000..51a7110dff Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_5.png differ diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_6.png b/mods/d2k/bits/destroyabletiles/destroyabletile_6.png new file mode 100644 index 0000000000..bd08b2c7b0 Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_6.png differ diff --git a/mods/d2k/bits/destroyabletiles/destroyabletile_7.png b/mods/d2k/bits/destroyabletiles/destroyabletile_7.png new file mode 100644 index 0000000000..18a4e9e59c Binary files /dev/null and b/mods/d2k/bits/destroyabletiles/destroyabletile_7.png differ diff --git a/mods/d2k/languages/rules/en.ftl b/mods/d2k/languages/rules/en.ftl index 580b698001..aa453947d6 100644 --- a/mods/d2k/languages/rules/en.ftl +++ b/mods/d2k/languages/rules/en.ftl @@ -100,6 +100,7 @@ actor-engineer = .description = Infiltrates and captures enemy structures Strong vs Buildings Weak vs Everything + Can repair destroyed cliffs .name = Engineer .encyclopedia = Engineers can be used to capture enemy buildings. @@ -489,3 +490,11 @@ actor-combat-tank-o = .encyclopedia = The Combat Tank is effective against most vehicles, less so against lightly armored vehicles. The Ordos Combat Tank is the fastest variant of the Combat Tank, but it is also the weakest. + +meta-DestroyableTile = + .generic-name = Passage (destroyable) + .name = Passage (destroyable) + +meta-DestroyedTile = + .generic-name = Passage (repairable) + .name = Passage (repairable) diff --git a/mods/d2k/maps/cliffmaze.oramap b/mods/d2k/maps/cliffmaze.oramap deleted file mode 100644 index d1eda14b96..0000000000 Binary files a/mods/d2k/maps/cliffmaze.oramap and /dev/null differ diff --git a/mods/d2k/maps/death-depths.oramap b/mods/d2k/maps/death-depths.oramap index c7e8ed4beb..0fad989cc1 100644 Binary files a/mods/d2k/maps/death-depths.oramap and b/mods/d2k/maps/death-depths.oramap differ diff --git a/mods/d2k/maps/red-chasm.oramap b/mods/d2k/maps/red-chasm.oramap index 3f1ef27315..3de1ef4c55 100644 Binary files a/mods/d2k/maps/red-chasm.oramap and b/mods/d2k/maps/red-chasm.oramap differ diff --git a/mods/d2k/maps/side-step.oramap b/mods/d2k/maps/side-step.oramap index 85812a8715..118c9f0393 100644 Binary files a/mods/d2k/maps/side-step.oramap and b/mods/d2k/maps/side-step.oramap differ diff --git a/mods/d2k/maps/the-duell.oramap b/mods/d2k/maps/the-duell.oramap index 14451b8314..29cb941b00 100644 Binary files a/mods/d2k/maps/the-duell.oramap and b/mods/d2k/maps/the-duell.oramap differ diff --git a/mods/d2k/maps/worm-graveyard/map.bin b/mods/d2k/maps/worm-graveyard/map.bin new file mode 100644 index 0000000000..bc89cbecf0 Binary files /dev/null and b/mods/d2k/maps/worm-graveyard/map.bin differ diff --git a/mods/d2k/maps/worm-graveyard/map.png b/mods/d2k/maps/worm-graveyard/map.png new file mode 100644 index 0000000000..c9c20f64a1 Binary files /dev/null and b/mods/d2k/maps/worm-graveyard/map.png differ diff --git a/mods/d2k/maps/worm-graveyard/map.yaml b/mods/d2k/maps/worm-graveyard/map.yaml new file mode 100644 index 0000000000..3115708f84 --- /dev/null +++ b/mods/d2k/maps/worm-graveyard/map.yaml @@ -0,0 +1,156 @@ +MapFormat: 12 + +RequiresMod: d2k + +Title: Worm Graveyard + +Author: BLACKSIR + +Tileset: ARRAKIS + +MapSize: 98,98 + +Bounds: 1,1,96,96 + +Visibility: Lobby + +Categories: Conquest + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: Random + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: Random + Enemies: Multi0, Multi1, Multi2, Multi3 + PlayerReference@Multi0: + Name: Multi0 + Playable: True + Faction: Random + Enemies: Creeps + PlayerReference@Multi1: + Name: Multi1 + Playable: True + Faction: Random + Enemies: Creeps + PlayerReference@Multi2: + Name: Multi2 + Playable: True + Faction: Random + Enemies: Creeps + PlayerReference@Multi3: + Name: Multi3 + Playable: True + Faction: Random + Enemies: Creeps + +Actors: + Actor96: spicebloom.spawnpoint + Owner: Neutral + Location: 10,15 + Actor97: spicebloom.spawnpoint + Owner: Neutral + Location: 86,15 + Actor101: spicebloom.spawnpoint + Owner: Neutral + Location: 86,80 + Actor102: spicebloom.spawnpoint + Owner: Neutral + Location: 10,80 + Actor197: spicebloom.spawnpoint + Owner: Neutral + Location: 21,5 + Actor235: spicebloom.spawnpoint + Owner: Neutral + Location: 21,92 + Actor273: spicebloom.spawnpoint + Owner: Neutral + Location: 75,92 + Actor188: spicebloom.spawnpoint + Owner: Neutral + Location: 75,5 + Actor41: wormspawner + Owner: Neutral + Location: 96,1 + Actor42: wormspawner + Owner: Neutral + Location: 1,1 + Actor44: wormspawner + Owner: Neutral + Location: 1,96 + Actor43: wormspawner + Owner: Neutral + Location: 96,96 + Actor47: sietch + Owner: Neutral + Location: 47,89 + Actor29: mpspawn + Owner: Neutral + Location: 10,43 + Actor30: mpspawn + Owner: Neutral + Location: 10,54 + Actor36: mpspawn + Owner: Neutral + Location: 86,43 + Actor37: mpspawn + Owner: Neutral + Location: 86,54 + Actor38: spicebloom.spawnpoint + Owner: Neutral + Location: 22,64 + Actor39: spicebloom.spawnpoint + Owner: Neutral + Location: 22,30 + Actor52: spicebloom.spawnpoint + Owner: Neutral + Location: 75,30 + Actor53: spicebloom.spawnpoint + Owner: Neutral + Location: 75,67 + Actor56: spicebloom.spawnpoint + Owner: Neutral + Location: 24,57 + Actor57: spicebloom.spawnpoint + Owner: Neutral + Location: 24,39 + Actor58: spicebloom.spawnpoint + Owner: Neutral + Location: 73,40 + Actor59: spicebloom.spawnpoint + Owner: Neutral + Location: 73,57 + Actor48: spicebloom.spawnpoint + Owner: Neutral + Location: 48,37 + Actor60: spicebloom.spawnpoint + Owner: Neutral + Location: 38,40 + Actor51: spicebloom.spawnpoint + Owner: Neutral + Location: 35,49 + Actor61: spicebloom.spawnpoint + Owner: Neutral + Location: 59,57 + Actor62: spicebloom.spawnpoint + Owner: Neutral + Location: 38,57 + Actor49: spicebloom.spawnpoint + Owner: Neutral + Location: 49,60 + Actor63: spicebloom.spawnpoint + Owner: Neutral + Location: 59,40 + Actor50: spicebloom.spawnpoint + Owner: Neutral + Location: 62,48 + Actor33: pass01_destroyed_left + Owner: Neutral + Location: 26,47 + Actor34: pass01_destroyed_right + Owner: Neutral + Location: 69,47 diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index 3ae0765734..e11301b8fd 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -47,6 +47,7 @@ Sequences: d2k|sequences/infantry.yaml d2k|sequences/structures.yaml d2k|sequences/misc.yaml + d2k|sequences/arrakis.yaml TileSets: d2k|tilesets/arrakis.yaml diff --git a/mods/d2k/rules/ai.yaml b/mods/d2k/rules/ai.yaml index b0fe5ddcc9..a0a1ab54d8 100644 --- a/mods/d2k/rules/ai.yaml +++ b/mods/d2k/rules/ai.yaml @@ -249,7 +249,7 @@ Player: MaxBaseRadius: 40 ExcludeFromSquadsTypes: harvester, mcv, carryall, carryall.reinforce, ornithopter ConstructionYardTypes: construction_yard - IgnoredEnemyTargetTypes: Creep, Air + IgnoredEnemyTargetTypes: Creep, Air, Cliff ProtectionTypes: mcv, harvester, construction_yard, conyard.atreides, conyard.harkonnen, conyard.ordos, wind_trap, barracks, refinery, silo, light_factory, heavy_factory, outpost, starport, medium_gun_turret, large_gun_turret, repair_pad, high_tech_factory, research_centre, palace, mcv.starport, harvester.starport UnitBuilderBotModule@omnius: RequiresCondition: enable-omnius-ai @@ -294,7 +294,7 @@ Player: MaxBaseRadius: 40 ExcludeFromSquadsTypes: harvester, mcv, carryall, carryall.reinforce, ornithopter ConstructionYardTypes: construction_yard - IgnoredEnemyTargetTypes: Creep, Air + IgnoredEnemyTargetTypes: Creep, Air, Cliff ProtectionTypes: mcv, harvester, construction_yard, conyard.atreides, conyard.harkonnen, conyard.ordos, wind_trap, barracks, refinery, silo, light_factory, heavy_factory, outpost, starport, medium_gun_turret, large_gun_turret, repair_pad, high_tech_factory, research_centre, palace, mcv.starport, harvester.starport UnitBuilderBotModule@vidious: RequiresCondition: enable-vidious-ai @@ -334,7 +334,7 @@ Player: MaxBaseRadius: 40 ExcludeFromSquadsTypes: harvester, mcv, carryall, carryall.reinforce, ornithopter ConstructionYardTypes: construction_yard - IgnoredEnemyTargetTypes: Creep, Air + IgnoredEnemyTargetTypes: Creep, Air, Cliff ProtectionTypes: mcv, harvester, construction_yard, conyard.atreides, conyard.harkonnen, conyard.ordos, wind_trap, barracks, refinery, silo, light_factory, heavy_factory, outpost, starport, medium_gun_turret, large_gun_turret, repair_pad, high_tech_factory, research_centre, palace, mcv.starport, harvester.starport UnitBuilderBotModule@gladius: RequiresCondition: enable-gladius-ai diff --git a/mods/d2k/rules/arrakis.yaml b/mods/d2k/rules/arrakis.yaml index 10d5499aeb..4b19c6c009 100644 --- a/mods/d2k/rules/arrakis.yaml +++ b/mods/d2k/rules/arrakis.yaml @@ -154,3 +154,100 @@ sietch: -WithMakeAnimation: -WithCrumbleOverlay: -WithBuildingRepairDecoration: + +pass01_destroyable_bottom: + Inherits: ^DestroyableTile + RenderSprites: + Image: rockpass01_bottom + Building: + Dimensions: 3,3 + Footprint: === X=X X=X + HitShape: + Type: Rectangle + TopLeft: -512, -512 + BottomRight: 512, 900 + SpawnActorOnDeath: + Actor: pass01_destroyed_bottom + +pass01_destroyed_bottom: + Inherits: ^DestroyedTile + RenderSprites: + Image: rockpass01_destroyed_bottom + Building: + Dimensions: 3,3 + Footprint: === xxx xxx + TransformOnCapture: + IntoActor: pass01_destroyable_bottom + +pass01_destroyable_left: + Inherits: ^DestroyableTile + RenderSprites: + Image: rockpass01_left + HitShape: + Type: Rectangle + TopLeft: -700, -512 + BottomRight: 712, 512 + Building: + Dimensions: 3,3 + Footprint: XX= === XX= + SpawnActorOnDeath: + Actor: pass01_destroyed_left + + +pass01_destroyed_left: + Inherits: ^DestroyedTile + RenderSprites: + Image: rockpass01_destroyed_left + Building: + Dimensions: 3,3 + Footprint: xx= xx= xx= + TransformOnCapture: + IntoActor: pass01_destroyable_left + +pass01_destroyable_right: + Inherits: ^DestroyableTile + RenderSprites: + Image: rockpass01_right + HitShape: + Type: Rectangle + TopLeft: -700, -512 + BottomRight: 700, 512 + Building: + Dimensions: 3,3 + Footprint: =XX === =XX + SpawnActorOnDeath: + Actor: pass01_destroyed_right + +pass01_destroyed_right: + Inherits: ^DestroyedTile + RenderSprites: + Image: rockpass01_destroyed_right + Building: + Dimensions: 3,3 + Footprint: =xx =xx =xx + TransformOnCapture: + IntoActor: pass01_destroyable_right + +pass01_destroyable_top: + Inherits: ^DestroyableTile + RenderSprites: + Image: rockpass01_top + HitShape: + Type: Rectangle + TopLeft: -512, -900 + BottomRight: 512, 512 + Building: + Dimensions: 3,3 + Footprint: X=X X=X === + SpawnActorOnDeath: + Actor: pass01_destroyed_top + +pass01_destroyed_top: + Inherits: ^DestroyedTile + RenderSprites: + Image: rockpass01_destroyed_top + Building: + Dimensions: 3,3 + Footprint: XxX xxx xxx + TransformOnCapture: + IntoActor: pass01_destroyable_top diff --git a/mods/d2k/rules/defaults.yaml b/mods/d2k/rules/defaults.yaml index 5ff44e5305..4f9bbe08dc 100644 --- a/mods/d2k/rules/defaults.yaml +++ b/mods/d2k/rules/defaults.yaml @@ -198,11 +198,19 @@ HandicapDamageMultiplier: HandicapProductionTimeMultiplier: +^CliffAvalanche: + ExternalCondition@rockAvalanche: + Condition: rock_avalanche + KillsSelf@rockAvalanche: + RequiresCondition: rock_avalanche + DamageTypes: SmallExplosionDeath + ^Vehicle: Inherits@1: ^ExistsInWorld Inherits@2: ^SpriteActor Inherits@selection: ^SelectableCombatUnit Inherits@handicaps: ^PlayerHandicaps + Inherits@avalancheKill: ^CliffAvalanche Tooltip: GenericName: meta-vehicle-generic-name Huntable: @@ -356,6 +364,7 @@ Inherits@3: ^SpriteActor Inherits@selection: ^SelectableCombatUnit Inherits@handicaps: ^PlayerHandicaps + Inherits@avalancheKill: ^CliffAvalanche Tooltip: GenericName: meta-infantry-generic-name Huntable: @@ -669,3 +678,74 @@ RequiresSelection: true Image: pips Sequence: tag-upgraded + +^UndestroyableTile: + Inherits@1: ^ExistsInWorld + Inherits@2: ^SpriteActor + FrozenUnderFog: + WithSpriteBody: + Building: + TerrainTypes: Rock, Concrete, Cliff, Sand, Rock, Transition, Spice, SpiceSand, Dune, + Health: + HP: 30000 + Armor: + Type: invulnerable + HitShape: + UseTargetableCellsOffsets: false + Type: Rectangle + TopLeft: -512, -512 + BottomRight: 512, 512 + MapEditorData: + Categories: Tile actors + Interactable: + +^DestroyableTile: + Inherits: ^UndestroyableTile + Targetable: + TargetTypes: Ground, Cliff + RequiresForceFire: true + Armor: + Type: wall + Health: + HP: 30000 + OwnerLostAction: + Action: ChangeOwner + Owner: Neutral + HitShape: + UseTargetableCellsOffsets: true + Explodes: + Type: CenterPosition + Weapon: cliffExplode + EmptyWeapon: cliffExplode + MapEditorData: + Categories: Destroable Tiles + Tooltip: + GenericName: meta-DestroyableTile.generic-name + Name: meta-DestroyableTile.name + +^DestroyedTile: + Inherits: ^UndestroyableTile + CaptureManager: + Building: + OwnerLostAction: + Action: ChangeOwner + Owner: Neutral + Tooltip: + GenericName: meta-DestroyedTile.generic-name + Name: meta-DestroyedTile.name + CaptureManager: + CapturableProgressBar: + CapturableProgressBlink: + Interval: 30 + Capturable: + Types: cliff + HitShape: + UseTargetableCellsOffsets: true + Type: Rectangle + TopLeft: -1048, -1048 + BottomRight: 1024, 1054 + Targetable: + TargetTypes: Ground, Cliff + RequiresForceFire: true + MapEditorData: + Categories: Destroyed Tiles diff --git a/mods/d2k/rules/infantry.yaml b/mods/d2k/rules/infantry.yaml index 24968743f5..c832b3e0d2 100644 --- a/mods/d2k/rules/infantry.yaml +++ b/mods/d2k/rules/infantry.yaml @@ -52,12 +52,17 @@ engineer: Captures: CaptureTypes: building PlayerExperience: 10 - Captures@caturesHusk: + Captures@Husk: CaptureTypes: husk PlayerExperience: 10 Infiltrates: Types: husk ValidRelationships: Ally + Captures@Cliff: + CaptureTypes: cliff + ConsumedByCapture: false + CaptureDelay: 150 + ValidRelationships: Enemy, Neutral, Ally Encyclopedia: Description: actor-engineer.encyclopedia Order: 30 diff --git a/mods/d2k/sequences/arrakis.yaml b/mods/d2k/sequences/arrakis.yaml new file mode 100644 index 0000000000..58829eb84a --- /dev/null +++ b/mods/d2k/sequences/arrakis.yaml @@ -0,0 +1,40 @@ +rockpass01_left: + idle: + Filename: bits/destroyabletiles/destroyabletile_1.png + ZOffset: -2048 + +rockpass01_right: + idle: + Filename: bits/destroyabletiles/destroyabletile_2.png + ZOffset: -2048 + +rockpass01_top: + idle: + Filename: bits/destroyabletiles/destroyabletile_3.png + ZOffset: -2048 + +rockpass01_bottom: + idle: + Filename: bits/destroyabletiles/destroyabletile_0.png + ZOffset: -2048 + + +rockpass01_destroyed_left: + idle: + Filename: bits/destroyabletiles/destroyabletile_5.png + ZOffset: -2048 + +rockpass01_destroyed_right: + idle: + Filename: bits/destroyabletiles/destroyabletile_6.png + ZOffset: -2048 + +rockpass01_destroyed_top: + idle: + Filename: bits/destroyabletiles/destroyabletile_7.png + ZOffset: -2512 + +rockpass01_destroyed_bottom: + idle: + Filename: bits/destroyabletiles/destroyabletile_4.png + ZOffset: -2048 diff --git a/mods/d2k/weapons/other.yaml b/mods/d2k/weapons/other.yaml index 4aef99098f..ee660a2b32 100644 --- a/mods/d2k/weapons/other.yaml +++ b/mods/d2k/weapons/other.yaml @@ -196,6 +196,15 @@ WallExplode: ImpactSounds: EXPLHG1.WAV ImpactActors: false +CliffExplode: + Warhead@1Eff: CreateEffect + Explosions: building + ImpactActors: false + ImpactSounds: EXPLHG1.WAV + Warhead@rockAvalanche: GrantExternalCondition + Condition: rock_avalanche + Range: 1c950 + grenade: ReloadDelay: 50 Range: 4c0