diff --git a/OpenRA.Mods.D2k/OpenRA.Mods.D2k.csproj b/OpenRA.Mods.D2k/OpenRA.Mods.D2k.csproj index 46cf9505e6..eb480236de 100644 --- a/OpenRA.Mods.D2k/OpenRA.Mods.D2k.csproj +++ b/OpenRA.Mods.D2k/OpenRA.Mods.D2k.csproj @@ -58,7 +58,6 @@ - @@ -87,5 +86,12 @@ cd "$(SolutionDir)" {1A8E50CC-EE32-4E57-8842-0C39C8EA7541} OpenRA.TilesetBuilder + + {4A8A43B5-A9EF-4ED0-99DD-4BAB10A0DB6E} + OpenRA.Mods.RA + + + + \ No newline at end of file diff --git a/OpenRA.Mods.D2k/Render/RenderBuildingSeparateTurret.cs b/OpenRA.Mods.D2k/Render/RenderBuildingSeparateTurret.cs deleted file mode 100644 index 9240f27bf2..0000000000 --- a/OpenRA.Mods.D2k/Render/RenderBuildingSeparateTurret.cs +++ /dev/null @@ -1,48 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -/*using System; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Graphics; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Render -{ - class RenderBuildingSeparateTurretInfo : RenderBuildingInfo, Requires, Requires - { - public override object Create(ActorInitializer init) { return new RenderBuildingSeparateTurret( init, this ); } - } - - class RenderBuildingSeparateTurret : RenderBuilding - { - public RenderBuildingSeparateTurret( ActorInitializer init, RenderBuildingInfo info ) - : base(init, info, MakeTurretFacingFunc(init.self)) - { - var turretAnim = new Animation(GetImage(self), () => turreted.turretFacing ); - turretAnim.Play( "turret" ); - - for( var i = 0; i < attack.Turrets.Count; i++ ) - { - var turret = attack.Turrets[i]; - anims.Add( "turret_{0}".F(i), - new AnimationWithOffset( turretAnim, - () => Combat.GetTurretPosition( self, facing, turret ), - null)); - } - } - - static Func MakeTurretFacingFunc(Actor self) - { - var turreted = self.Trait(); - return () => turreted.turretFacing; - } - - } -} */ diff --git a/OpenRA.Mods.D2k/Widgets/Logic/D2kExtractGameFilesLogic.cs b/OpenRA.Mods.D2k/Widgets/Logic/D2kExtractGameFilesLogic.cs index 8891a32c8b..cdbfed686d 100644 --- a/OpenRA.Mods.D2k/Widgets/Logic/D2kExtractGameFilesLogic.cs +++ b/OpenRA.Mods.D2k/Widgets/Logic/D2kExtractGameFilesLogic.cs @@ -69,19 +69,21 @@ namespace OpenRA.Mods.D2k.Widgets.Logic new string[] {"--r8", PathToDataR8, PathToPalette, "162", "177", Path.Combine(PathToSHPs, "sandcrater2")}, new string[] {"--r8", PathToDataR8, PathToPalette, "206", "381", Path.Combine(PathToSHPs, "rifle"), "--infantry"}, new string[] {"--r8", PathToDataR8, PathToPalette, "382", "457", Path.Combine(PathToSHPs, "rifledeath"), "--infantrydeath"}, - new string[] {"--r8", PathToDataR8, PathToPalette, "458", "693", Path.Combine(PathToSHPs, "rocket"), "--infantry"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "458", "693", Path.Combine(PathToSHPs, "bazooka"), "--infantry"}, new string[] {"--r8", PathToDataR8, PathToPalette, "694", "929", Path.Combine(PathToSHPs, "fremen"), "--infantry"}, new string[] {"--r8", PathToDataR8, PathToPalette, "930", "1165", Path.Combine(PathToSHPs, "sardaukar"), "--infantry"}, - new string[] {"--r8", PathToDataR8, PathToPalette, "1166", "1221", Path.Combine(PathToSHPs, "engineer"), "--infantry"}, // death animation 1342..1401 - new string[] {"--r8", PathToDataR8, PathToPalette, "1402", "1502", Path.Combine(PathToSHPs, "thumper"), "--infantry"}, // death animations 1543..1602 - new string[] {"--r8", PathToDataR8, PathToPalette, "1603", "1634", Path.Combine(PathToSHPs, "missile"), "--vehicle"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "1166", "1221", Path.Combine(PathToSHPs, "engineer"), "--infantry"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "1342", "1401", Path.Combine(PathToSHPs, "engineerdeath"), "--infantrydeath"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "1402", "1502", Path.Combine(PathToSHPs, "thumper"), "--infantry"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "1543", "1602", Path.Combine(PathToSHPs, "thumperdeath"), "--infantrydeath"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "1603", "1634", Path.Combine(PathToSHPs, "missiletank"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1635", "1666", Path.Combine(PathToSHPs, "trike"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1667", "1698", Path.Combine(PathToSHPs, "quad"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1699", "1730", Path.Combine(PathToSHPs, "harvester"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1731", "1762", Path.Combine(PathToSHPs, "combata"), "--vehicle"}, - new string[] {"--r8", PathToDataR8, PathToPalette, "1763", "1794", Path.Combine(PathToSHPs, "siege"), "--vehicle"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "1763", "1794", Path.Combine(PathToSHPs, "siegetank"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1795", "1826", Path.Combine(PathToSHPs, "dmcv"), "--vehicle"}, - new string[] {"--r8", PathToDataR8, PathToPalette, "1827", "1858", Path.Combine(PathToSHPs, "sonic"), "--vehicle"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "1827", "1858", Path.Combine(PathToSHPs, "sonictank"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1859", "1890", Path.Combine(PathToSHPs, "combataturret"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1891", "1922", Path.Combine(PathToSHPs, "siegeturret"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "1923", "1954", Path.Combine(PathToSHPs, "carryall"), "--vehicle"}, @@ -90,9 +92,10 @@ namespace OpenRA.Mods.D2k.Widgets.Logic new string[] {"--r8", PathToDataR8, PathToPalette, "2083", "2114", Path.Combine(PathToSHPs, "devast"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "2115", "2146", Path.Combine(PathToSHPs, "combathturret"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "2147", "2148", Path.Combine(PathToSHPs, "deathhandmissile")}, - new string[] {"--r8", PathToDataR8, PathToPalette, "2245", "2284", Path.Combine(PathToSHPs, "saboteur"), "--infantry"}, //#death animations 2325..2388 + new string[] {"--r8", PathToDataR8, PathToPalette, "2245", "2284", Path.Combine(PathToSHPs, "saboteur"), "--infantry"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "2325", "2388", Path.Combine(PathToSHPs, "saboteurdeath"), "--infantrydeath"}, //rifleinfantry repetitions? - new string[] {"--r8", PathToDataR8, PathToPalette, "2389", "2420", Path.Combine(PathToSHPs, "deviator"), "--vehicle"}, + new string[] {"--r8", PathToDataR8, PathToPalette, "2389", "2420", Path.Combine(PathToSHPs, "deviatortank"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "2421", "2452", Path.Combine(PathToSHPs, "raider"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "2453", "2484", Path.Combine(PathToSHPs, "combato"), "--vehicle"}, new string[] {"--r8", PathToDataR8, PathToPalette, "2485", "2516", Path.Combine(PathToSHPs, "combatoturret"), "--vehicle"}, @@ -170,10 +173,10 @@ namespace OpenRA.Mods.D2k.Widgets.Logic new string[] {"--r8", PathToDataR8, PathToPalette, "4021", "4021", Path.Combine(PathToSHPs, "combathicon")}, new string[] {"--r8", PathToDataR8, PathToPalette, "4022", "4022", Path.Combine(PathToSHPs, "combatoicon")}, new string[] {"--r8", PathToDataR8, PathToPalette, "4023", "4023", Path.Combine(PathToSHPs, "mcvicon")}, - new string[] {"--r8", PathToDataR8, PathToPalette, "4024", "4024", Path.Combine(PathToSHPs, "missileicon")}, - new string[] {"--r8", PathToDataR8, PathToPalette, "4025", "4025", Path.Combine(PathToSHPs, "deviatoricon")}, - new string[] {"--r8", PathToDataR8, PathToPalette, "4026", "4026", Path.Combine(PathToSHPs, "siegeicon")}, - new string[] {"--r8", PathToDataR8, PathToPalette, "4027", "4027", Path.Combine(PathToSHPs, "sonicicon")}, + new string[] {"--r8", PathToDataR8, PathToPalette, "4024", "4024", Path.Combine(PathToSHPs, "missiletankicon")}, + new string[] {"--r8", PathToDataR8, PathToPalette, "4025", "4025", Path.Combine(PathToSHPs, "deviatortankicon")}, + new string[] {"--r8", PathToDataR8, PathToPalette, "4026", "4026", Path.Combine(PathToSHPs, "siegetankicon")}, + new string[] {"--r8", PathToDataR8, PathToPalette, "4027", "4027", Path.Combine(PathToSHPs, "sonictankicon")}, new string[] {"--r8", PathToDataR8, PathToPalette, "4028", "4028", Path.Combine(PathToSHPs, "devasticon")}, new string[] {"--r8", PathToDataR8, PathToPalette, "4029", "4029", Path.Combine(PathToSHPs, "carryallicon")}, // == 4030 new string[] {"--r8", PathToDataR8, PathToPalette, "4031", "4031", Path.Combine(PathToSHPs, "orniicon")}, // == 4062 @@ -277,8 +280,10 @@ namespace OpenRA.Mods.D2k.Widgets.Logic new string[] {"--shp", Path.Combine(PathToSHPs, "fremen.png"), "48"}, new string[] {"--shp", Path.Combine(PathToSHPs, "sardaukar.png"), "48"}, new string[] {"--shp", Path.Combine(PathToSHPs, "engineer.png"), "48"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "engineerdeath.png"), "48"}, new string[] {"--shp", Path.Combine(PathToSHPs, "thumper.png"), "48"}, - new string[] {"--shp", Path.Combine(PathToSHPs, "missile.png"), "48"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "thumperdeath.png"), "48"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "missiletank.png"), "48"}, new string[] {"--shp", Path.Combine(PathToSHPs, "trike.png"), "32"}, new string[] {"--shp", Path.Combine(PathToSHPs, "quad.png"), "32"}, new string[] {"--shp", Path.Combine(PathToSHPs, "harvester.png"), "48"}, @@ -295,7 +300,8 @@ namespace OpenRA.Mods.D2k.Widgets.Logic new string[] {"--shp", Path.Combine(PathToSHPs, "combathturret.png"), "48"}, new string[] {"--shp", Path.Combine(PathToSHPs, "deathhandmissile.png"), "24"}, new string[] {"--shp", Path.Combine(PathToSHPs, "saboteur.png"), "48"}, - new string[] {"--shp", Path.Combine(PathToSHPs, "deviator.png"), "48"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "saboteurdeath.png"), "48"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "deviatortank.png"), "48"}, new string[] {"--shp", Path.Combine(PathToSHPs, "raider.png"), "32"}, new string[] {"--shp", Path.Combine(PathToSHPs, "combato.png"), "48"}, new string[] {"--shp", Path.Combine(PathToSHPs, "combatoturret.png"), "48"}, @@ -368,10 +374,10 @@ namespace OpenRA.Mods.D2k.Widgets.Logic new string[] {"--shp", Path.Combine(PathToSHPs, "combathicon.png"), "60"}, new string[] {"--shp", Path.Combine(PathToSHPs, "combatoicon.png"), "60"}, new string[] {"--shp", Path.Combine(PathToSHPs, "mcvicon.png"), "60"}, - new string[] {"--shp", Path.Combine(PathToSHPs, "missileicon.png"), "60"}, - new string[] {"--shp", Path.Combine(PathToSHPs, "deviatoricon.png"), "60"}, - new string[] {"--shp", Path.Combine(PathToSHPs, "siegeicon.png"), "60"}, - new string[] {"--shp", Path.Combine(PathToSHPs, "sonicicon.png"), "60"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "missiletankicon.png"), "60"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "deviatortankicon.png"), "60"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "siegetankicon.png"), "60"}, + new string[] {"--shp", Path.Combine(PathToSHPs, "sonictankicon.png"), "60"}, new string[] {"--shp", Path.Combine(PathToSHPs, "devasticon.png"), "60"}, new string[] {"--shp", Path.Combine(PathToSHPs, "carryallicon.png"), "60"}, new string[] {"--shp", Path.Combine(PathToSHPs, "orniicon.png"), "60"}, diff --git a/mods/d2k/TODO b/mods/d2k/TODO index ad50511553..0ddf63efe7 100644 --- a/mods/d2k/TODO +++ b/mods/d2k/TODO @@ -12,8 +12,6 @@ # RenderBuildingTurreted does not support separate turret sequence # ornithocopter should flap (might need new RenderOrni code for proper animation) # R8 converter needs infantry frame resorter -# add trooper (carries bazooka) -# add engineer # add fremen (stealthed) # add saboteur (stealthed with C4) # add grenade thrower diff --git a/mods/d2k/cursors.yaml b/mods/d2k/cursors.yaml index 2b341c2565..496dfb74a9 100644 --- a/mods/d2k/cursors.yaml +++ b/mods/d2k/cursors.yaml @@ -225,6 +225,16 @@ Cursors: length: 1 x: 12 y: 12 + goldwrench: + start:88 + length: 8 + x: 12 + y: 12 + goldwrench-blocked: + start:64 + length: 1 + x: 12 + y: 12 nopower: cursor powerdown-blocked: diff --git a/mods/d2k/rules/atreides.yaml b/mods/d2k/rules/atreides.yaml index 9079a870de..a3119adcd8 100644 --- a/mods/d2k/rules/atreides.yaml +++ b/mods/d2k/rules/atreides.yaml @@ -110,7 +110,7 @@ COMBATA: Prerequisites: heavya Owner: atreides -SONIC: +SONICTANK: Inherits: ^Vehicle Buildable: Queue: Vehicle diff --git a/mods/d2k/rules/infantry.yaml b/mods/d2k/rules/infantry.yaml index 1ff67fed85..0e0f1955b3 100644 --- a/mods/d2k/rules/infantry.yaml +++ b/mods/d2k/rules/infantry.yaml @@ -7,7 +7,7 @@ RIFLE: Valued: Cost: 100 Tooltip: - Name: Rifle Infantry + Name: Rifleman Description: General-purpose infantry.\n Strong vs Infantry\n Weak vs Vehicles Selectable: Bounds: 12,17,0,0 @@ -19,4 +19,56 @@ RIFLE: PrimaryWeapon: M1Carbine TakeCover: -RenderInfantry: + RenderInfantryProne: + +ENGINEER: + Inherits: ^Infantry + Buildable: + Queue: Infantry + BuildPaletteOrder: 50 + Owner: atreides,harkonnen,ordos + Valued: + Cost: 500 + Tooltip: + Name: Engineer + Description: Infiltrates and captures enemy structures.\n Strong vs Nothing\n Weak vs Everything + Selectable: +# Voice: EngineerVoice + Bounds: 12,17,0,-9 + Health: + HP: 25 + Mobile: + Speed: 4 + Passenger: + PipType: Yellow + EngineerRepair: + Captures: + TakeCover: + -AutoTarget: + AttackMove: + JustMove: true + +BAZOOKA: + Inherits: ^Infantry + Buildable: + Queue: Infantry + BuildPaletteOrder: 20 + Owner: atreides,harkonnen,ordos + Valued: + Cost: 300 + Tooltip: + Name: Trooper + Description: Anti-tank/Anti-aircraft infantry.\n Strong vs Tanks, Aircraft\n Weak vs Infantry + Selectable: + Bounds: 12,17,0,-9 + Health: + HP: 45 + Mobile: + Speed: 3 + AttackFrontal: + PrimaryWeapon: RedEye + SecondaryWeapon: Dragon + PrimaryOffset: 0,0,0,-13 + TakeCover: + -RenderInfantry: RenderInfantryProne: \ No newline at end of file diff --git a/mods/d2k/rules/ordos.yaml b/mods/d2k/rules/ordos.yaml index 84ae6604e3..7a37fb1af9 100644 --- a/mods/d2k/rules/ordos.yaml +++ b/mods/d2k/rules/ordos.yaml @@ -141,7 +141,7 @@ RAIDER: SecondaryOffset: 0,0,0,-4 AutoTarget: -DEVIATOR: +DEVIATORTANK: Inherits: ^Tank Valued: Cost: 800 diff --git a/mods/d2k/rules/structures.yaml b/mods/d2k/rules/structures.yaml index e4608f2f4a..917399c021 100644 --- a/mods/d2k/rules/structures.yaml +++ b/mods/d2k/rules/structures.yaml @@ -423,7 +423,6 @@ GUNTOWER: RenderRangeCircle: -RenderBuilding: RenderBuildingTurreted: - Palette: d2k Turreted: ROT: 12 InitialFacing: 50 diff --git a/mods/d2k/rules/vehicles.yaml b/mods/d2k/rules/vehicles.yaml index cce820b026..a3201d69b1 100644 --- a/mods/d2k/rules/vehicles.yaml +++ b/mods/d2k/rules/vehicles.yaml @@ -146,7 +146,7 @@ QUAD: Selectable: Bounds: 30,30 -SIEGE: +SIEGETANK: Inherits: ^Tank Buildable: Queue: Vehicle @@ -179,7 +179,7 @@ SIEGE: Chance: 75 AutoTarget: -MISSILE: +MISSILETANK: Inherits: ^Tank Valued: Cost: 800 diff --git a/mods/d2k/sequences.yaml b/mods/d2k/sequences.yaml index a92945873b..3793d74723 100644 --- a/mods/d2k/sequences.yaml +++ b/mods/d2k/sequences.yaml @@ -55,9 +55,7 @@ quad: Start: 0 Facings: 32 - - -siege: +siegetank: idle: Start: 0 Facings: 32 @@ -65,12 +63,12 @@ siege: Start: 0 Facings: 32 -missile: +missiletank: idle: Start: 0 Facings: 32 -sonic: +sonictank: idle: Start: 0 Facings: 32 @@ -149,6 +147,100 @@ rifle: die5: rifledeath Start: 26 Length: 7 + die6: electro + Start: 0 + Length: * + die-crushed: rifledeath + Start: 54 + Length: 22 + Tick: 1600 + +bazooka: + stand: + Start: 0 + Facings: 8 + stand2: + Start: 0 + Facings: 8 + stand3: + Start: 0 + Facings: 8 + run: + Start: 8 + Length: 6 + Facings: 8 + shoot: + Start: 56 + Length: 5 + Facings: 8 + prone-stand: + Start: 104 + Length: 1 + Facings: 8 + prone-run: + Start: 112 + Length: 3 + Facings: 8 + standup-0: + Start: 96 + Length: 1 + Facings: 8 + prone-shoot: + Start: 136 + Length: 5 + Facings: 8 + die1: rifledeath + Start: 0 + Length: 5 + die2: rifledeath + Start: 5 + Length: 7 + die3: rifledeath + Start: 12 + Length: 7 + die4: rifledeath + Start: 19 + Length: 7 + die5: rifledeath + Start: 26 + Length: 7 + die6: electro + Start: 0 + Length: * + die-crushed: rifledeath + Start: 54 + Length: 22 + Tick: 1600 + +engineer: + stand: + Start: 0 + Facings: 8 + stand2: + Start: 0 + Facings: 8 + run: + Start: 8 + Length: 6 + Facings: 8 + die1: rifledeath + Start: 0 + Length: 5 + die2: rifledeath + Start: 5 + Length: 7 + die3: rifledeath + Start: 12 + Length: 7 + die4: rifledeath + Start: 19 + Length: 7 + die5: rifledeath + Start: 26 + Length: 7 + die6: electro + Start: 0 + Length: * die-crushed: rifledeath Start: 54 Length: 22 @@ -662,7 +754,7 @@ raider: Start: 0 Facings: 32 -deviator: +deviatortank: idle: Start: 0 Facings: 32 @@ -882,6 +974,11 @@ parach: Start: 5 Length: 11 +missile: + idle: + Start: 0 + Facings: 32 + spicebloom: make: Start: 0 diff --git a/mods/d2k/weapons.yaml b/mods/d2k/weapons.yaml index c9791b72c1..093ca190e6 100644 --- a/mods/d2k/weapons.yaml +++ b/mods/d2k/weapons.yaml @@ -439,4 +439,32 @@ WormJaw: Versus: Wood: 0% Concrete: 0% - Damage: 100 \ No newline at end of file + Damage: 100 + +RedEye: + ROF: 50 + Range: 7.5 + Report: MISSILE1 + ValidTargets: Air + Projectile: Missile + Arm: 3 + High: true + Shadow: false + Proximity: true +# Trail: smokey + ContrailLength: 10 + Image: MISSILE + ROT: 20 + RangeLimit: 30 + Speed: 35 + Warhead: + Spread: 3 + Versus: + None: 90% + Wood: 75% + Light: 60% + Heavy: 25% + Explosion: med_explosion + InfDeath: 2 + SmudgeType: Crater + Damage: 40 \ No newline at end of file