new AttackLoyalty, range and stay alive option for Capture

AttackLoyalty for d2k Deviator which captures units
also shooting a fake missile (see issue #2251)

CaptureActor now supports Generals styles gameplay
but is disabled by default (see issue #2274)
fixes the annoyance that engineers will not take
the shortest root to the building by the way

removing ProvidesCustomPrerequisite because it's
tooltip messages relies on hardcoded hacks
This commit is contained in:
Matthias Mailänder
2012-06-30 17:06:29 +02:00
committed by Chris Forbes
parent c2321e3eea
commit e89ee2c131
13 changed files with 286 additions and 92 deletions

View File

@@ -1,6 +1,6 @@
#region Copyright & License Information #region Copyright & License Information
/* /*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * Copyright 2007-2012 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made * 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 * available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information, * as published by the Free Software Foundation. For more information,
@@ -10,6 +10,7 @@
using System.Linq; using System.Linq;
using OpenRA.Traits; using OpenRA.Traits;
using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities namespace OpenRA.Mods.RA.Activities
{ {
@@ -25,9 +26,6 @@ namespace OpenRA.Mods.RA.Activities
if (target == null || !target.IsInWorld || target.IsDead()) return NextActivity; if (target == null || !target.IsInWorld || target.IsDead()) return NextActivity;
if (target.Owner == self.Owner) return NextActivity; if (target.Owner == self.Owner) return NextActivity;
if( !target.OccupiesSpace.OccupiedCells().Any( x => x.First == self.Location ) )
return NextActivity;
var capturable = target.TraitOrDefault<Capturable>(); var capturable = target.TraitOrDefault<Capturable>();
if (capturable != null && capturable.CaptureInProgress && capturable.Captor.Owner.Stances[self.Owner] == Stance.Ally) if (capturable != null && capturable.CaptureInProgress && capturable.Captor.Owner.Stances[self.Owner] == Stance.Ally)
return NextActivity; return NextActivity;
@@ -36,8 +34,14 @@ namespace OpenRA.Mods.RA.Activities
if (sellable != null && sellable.Selling) if (sellable != null && sellable.Selling)
return NextActivity; return NextActivity;
target.Trait<Capturable>().BeginCapture(target, self); var captures = self.TraitOrDefault<Captures>();
self.World.AddFrameEndTask(w => self.Destroy()); var capturesInfo = self.Info.Traits.Get<CapturesInfo>();
if (captures != null && Combat.IsInRange(self.CenterLocation, capturesInfo.Range, target))
target.Trait<Capturable>().BeginCapture(target, self);
else
return Util.SequenceActivities(self.Trait<Mobile>().MoveWithinRange(Target.FromActor(target), capturesInfo.Range), this);
if (capturesInfo != null && capturesInfo.wastedAfterwards)
self.World.AddFrameEndTask(w => self.Destroy());
return this; return this;
} }

View File

@@ -0,0 +1,43 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 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.Traits;
using OpenRA.Mods.RA.Activities;
namespace OpenRA.Mods.RA
{
public class AttackLoyaltyInfo : AttackFrontalInfo
{
public override object Create(ActorInitializer init) { return new AttackLoyalty(init.self, this); }
}
public class AttackLoyalty : AttackFrontal
{
public AttackLoyalty(Actor self, AttackLoyaltyInfo info)
: base( self, info ) {}
public override void DoAttack(Actor self, Target target)
{
if (!CanAttack (self, target)) return;
var weapon = Weapons[0].Info;
if (!Combat.IsInRange(self.CenterLocation, weapon.Range, target)) return;
var move = self.TraitOrDefault<IMove>();
var facing = self.TraitOrDefault<IFacing>();
foreach (var w in Weapons)
w.CheckFire(self, this, move, facing, target);
if (target.Actor != null)
target.Actor.ChangeOwner(self.Owner);
}
}
}

View File

@@ -1,6 +1,6 @@
#region Copyright & License Information #region Copyright & License Information
/* /*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * Copyright 2007-2012 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made * 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 * available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information, * as published by the Free Software Foundation. For more information,
@@ -22,6 +22,8 @@ namespace OpenRA.Mods.RA
class CapturesInfo : ITraitInfo class CapturesInfo : ITraitInfo
{ {
public string[] CaptureTypes = {"building"}; public string[] CaptureTypes = {"building"};
public int Range = 3;
public bool wastedAfterwards = true;
public object Create(ActorInitializer init) { return new Captures(init.self, this); } public object Create(ActorInitializer init) { return new Captures(init.self, this); }
} }
@@ -40,7 +42,7 @@ namespace OpenRA.Mods.RA
{ {
get get
{ {
yield return new CaptureOrderTargeter(Info.CaptureTypes, target => CanEnter(target)); yield return new CaptureOrderTargeter(Info.CaptureTypes, target => CanCapture(target));
} }
} }
@@ -55,24 +57,23 @@ namespace OpenRA.Mods.RA
public string VoicePhraseForOrder(Actor self, Order order) public string VoicePhraseForOrder(Actor self, Order order)
{ {
return (order.OrderString == "CaptureActor" return (order.OrderString == "CaptureActor"
&& CanEnter(order.TargetActor)) ? "Attack" : null; && CanCapture(order.TargetActor)) ? "Attack" : null;
} }
public void ResolveOrder(Actor self, Order order) public void ResolveOrder(Actor self, Order order)
{ {
if (order.OrderString == "CaptureActor") if (order.OrderString == "CaptureActor")
{ {
if (!CanEnter(order.TargetActor)) return; if (!CanCapture(order.TargetActor)) return;
self.SetTargetLine(Target.FromOrder(order), Color.Red); self.SetTargetLine(Target.FromOrder(order), Color.Red);
self.CancelActivity(); self.CancelActivity();
self.QueueActivity(new Enter(order.TargetActor));
self.QueueActivity(new CaptureActor(order.TargetActor)); self.QueueActivity(new CaptureActor(order.TargetActor));
} }
} }
bool CanEnter(Actor target) bool CanCapture(Actor target)
{ {
var c = target.TraitOrDefault<Capturable>(); var c = target.TraitOrDefault<Capturable>();
return c != null && ( !c.CaptureInProgress || c.Captor.Owner.Stances[self.Owner] != Stance.Ally ); return c != null && ( !c.CaptureInProgress || c.Captor.Owner.Stances[self.Owner] != Stance.Ally );
@@ -104,9 +105,11 @@ namespace OpenRA.Mods.RA
IsQueued = forceQueued; IsQueued = forceQueued;
var Info = self.Info.Traits.Get<CapturesInfo>();
if (captureTypes.Contains(ci.Type)) if (captureTypes.Contains(ci.Type))
{ {
cursor = useEnterCursor(target) ? "enter" : "enter-blocked"; cursor = (Info.wastedAfterwards) ? (useEnterCursor(target) ? "enter" : "enter-blocked") : "attack";
return true; return true;
} }

View File

@@ -127,6 +127,7 @@
<Compile Include="Attack\AttackBase.cs" /> <Compile Include="Attack\AttackBase.cs" />
<Compile Include="Attack\AttackFrontal.cs" /> <Compile Include="Attack\AttackFrontal.cs" />
<Compile Include="Attack\AttackLeap.cs" /> <Compile Include="Attack\AttackLeap.cs" />
<Compile Include="Attack\AttackLoyalty.cs" />
<Compile Include="Attack\AttackMedic.cs" /> <Compile Include="Attack\AttackMedic.cs" />
<Compile Include="Attack\AttackOmni.cs" /> <Compile Include="Attack\AttackOmni.cs" />
<Compile Include="Attack\AttackPopupTurreted.cs" /> <Compile Include="Attack\AttackPopupTurreted.cs" />

View File

@@ -23,12 +23,10 @@
# create a shellmap (currently just a blank placeholder) # create a shellmap (currently just a blank placeholder)
# rework chrome UI, dialoges, tabs # rework chrome UI, dialoges, tabs
# add sonic tank weapon (currently uses tesla) # add sonic tank weapon (currently uses tesla)
# make deviator change the allegiance of ememy units (currently shoots rockets)
# starport prices should vary # starport prices should vary
# black spots on buildings should be fading team colors # black spots on buildings should be fading team colors
# gamefile extraction (setup/setup.z) from CD fails # gamefile extraction (setup/setup.z) from CD fails
# support patch 1.06 gamefiles: DATA.R8 has more frames and currently fails to extract, also featuring new terrain with white houses and new unit: grenade thrower # support patch 1.06 gamefiles: DATA.R8 has more frames and currently fails to extract, also featuring new terrain with white houses and new unit: grenade thrower
# infantry-only areas (Rough) do not show the dark-green mouse cursor
# put TilesetBuilder.Export into OpenRA.Utility to call the functions directly when extracting game-files (instead of opening a GUI) # put TilesetBuilder.Export into OpenRA.Utility to call the functions directly when extracting game-files (instead of opening a GUI)
# group number metrics are off # group number metrics are off
# add bibs # add bibs

View File

@@ -1,16 +1,14 @@
CARRYALL: ^CARRYALL:
Inherits: ^Helicopter Inherits: ^Helicopter
Buildable: Buildable:
Queue: Plane Queue: Plane
BuildPaletteOrder: 110 BuildPaletteOrder: 110
Prerequisites: anyhightech
BuiltAt: hightecha
Owner: atreides,harkonnen,ordos
Valued: Valued:
Cost: 1200 Cost: 1200
Tooltip: Tooltip:
Name: Carryall Name: Carryall
Description: Fast drop ship.\n Unarmed Description: Fast drop ship.\n Unarmed
Icon: carryallicon
Health: Health:
HP: 500 HP: 500
Armor: Armor:

View File

@@ -50,6 +50,60 @@ REFA:
Owner: atreides Owner: atreides
RenderBuildingWarFactory: RenderBuildingWarFactory:
Image: REFA Image: REFA
FreeActor:
Actor: HARVESTERA
InitialActivity: FindResources
SpawnOffset: 1,2
Facing: 64
HARVESTERA:
Inherits: ^HARVESTER
Buildable:
Prerequisites: heavya,refa
Owner: atreides
RenderUnit:
Image: HARVESTER
TRIKEA:
Inherits: ^TRIKE
Buildable:
Prerequisites: lighta
Owner: atreides
RenderUnit:
Image: TRIKE
QUADA:
Inherits: ^QUAD
Buildable:
Prerequisites: lighta
Owner: atreides
RenderUnit:
Image: QUAD
SIEGETANKA:
Inherits: ^SIEGETANK
Buildable:
Prerequisites: heavya, radara
Owner: atreides
RenderUnit:
Image: SIEGETANK
MISSILETANKA:
Inherits: ^MISSILETANK
Buildable:
Prerequisites: heavya
Owner: atreides
RenderUnit:
Image: MISSILETANK
CARRYALLA:
Inherits: ^CARRYALL
Buildable:
Prerequisites: hightecha
BuiltAt: hightecha
Owner: atreides
RenderUnit:
Image: CARRYALL
BARRA: BARRA:
Inherits: ^BARRACKS Inherits: ^BARRACKS

View File

@@ -32,6 +32,60 @@ REFH:
Owner: harkonnen Owner: harkonnen
RenderBuildingWarFactory: RenderBuildingWarFactory:
Image: REFH Image: REFH
FreeActor:
Actor: HARVESTERH
InitialActivity: FindResources
SpawnOffset: 1,2
Facing: 64
HARVESTERH:
Inherits: ^HARVESTER
Buildable:
Prerequisites: heavyh,refh
Owner: harkonnen
RenderUnit:
Image: HARVESTER
TRIKEH:
Inherits: ^TRIKE
Buildable:
Prerequisites: lighth
Owner: harkonnen
RenderUnit:
Image: TRIKE
QUADH:
Inherits: ^QUAD
Buildable:
Prerequisites: lighth
Owner: harkonnen
RenderUnit:
Image: QUAD
SIEGETANKH:
Inherits: ^SIEGETANK
Buildable:
Prerequisites: heavyh, radarh
Owner: harkonnen
RenderUnit:
Image: SIEGETANK
MISSILETANKH:
Inherits: ^MISSILETANK
Buildable:
Prerequisites: heavyh
Owner: harkonnen
RenderUnit:
Image: MISSILETANK
CARRYALLH:
Inherits: ^CARRYALL
Buildable:
Prerequisites: hightechh
BuiltAt: hightechh
Owner: harkonnen
RenderUnit:
Image: CARRYALL
BARRH: BARRH:
Inherits: ^BARRACKS Inherits: ^BARRACKS

View File

@@ -32,6 +32,11 @@ REFO:
Owner: ordos Owner: ordos
RenderBuildingWarFactory: RenderBuildingWarFactory:
Image: REFO Image: REFO
FreeActor:
Actor: HARVESTERO
InitialActivity: FindResources
SpawnOffset: 1,2
Facing: 64
BARRO: BARRO:
Inherits: ^BARRACKS Inherits: ^BARRACKS
@@ -160,6 +165,14 @@ MCVO:
RenderUnit: RenderUnit:
Image: DMCV Image: DMCV
HARVESTERO:
Inherits: ^HARVESTER
Buildable:
Prerequisites: heavyo,refo
Owner: ordos
RenderUnit:
Image: HARVESTER
COMBATO: COMBATO:
Inherits: ^COMBAT Inherits: ^COMBAT
Buildable: Buildable:
@@ -171,7 +184,7 @@ RAIDER:
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 15 BuildPaletteOrder: 15
Prerequisites: anylight Prerequisites: lighto
Owner: ordos Owner: ordos
Valued: Valued:
Cost: 200 Cost: 200
@@ -197,17 +210,50 @@ RAIDER:
SecondaryOffset: 0,0,0,-4 SecondaryOffset: 0,0,0,-4
AutoTarget: AutoTarget:
QUADO:
Inherits: ^QUAD
Buildable:
Prerequisites: lighto
Owner: ordos
RenderUnit:
Image: QUAD
SIEGETANKO:
Inherits: ^SIEGETANK
Buildable:
Prerequisites: heavyo, radaro
Owner: ordos
RenderUnit:
Image: SIEGETANK
MISSILETANKO:
Inherits: ^MISSILETANK
Buildable:
Prerequisites: heavyo
Owner: ordos
RenderUnit:
Image: MISSILETANK
CARRYALLO:
Inherits: ^CARRYALL
Buildable:
Prerequisites: hightecho
BuiltAt: hightecho
Owner: ordos
RenderUnit:
Image: CARRYALL
DEVIATORTANK: DEVIATORTANK:
Inherits: ^Tank Inherits: ^Tank
Valued: Valued:
Cost: 800 Cost: 800
Tooltip: Tooltip:
Name: Deviator Name: Deviator
Description: Long range artillery.\n Strong vs Infantry, Tanks, Air\n Weak vs Buildings Description: Will cause no actual damage.\nFires a warhead which changes allegiances\n but does not effect buildings or tanks.
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 50 BuildPaletteOrder: 50
Prerequisites: anyheavy Prerequisites: heavyo
Owner: ordos Owner: ordos
Mobile: Mobile:
Speed: 6 Speed: 6
@@ -218,8 +264,12 @@ DEVIATORTANK:
RevealsShroud: RevealsShroud:
Range: 6 Range: 6
RenderUnit: RenderUnit:
AttackFrontal: # Captures:
PrimaryWeapon: MammothTusk # CaptureTypes:
# Range: 5
# wastedAfterwards: false
AttackLoyalty:
PrimaryWeapon: FakeMissile
PrimaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25 PrimaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25
PrimaryRecoil: 1 PrimaryRecoil: 1
AutoTarget: AutoTarget:

View File

@@ -41,8 +41,6 @@
Tooltip: Tooltip:
Name: Windtrap Name: Windtrap
Description: Provides power for other structures Description: Provides power for other structures
ProvidesCustomPrerequisite:
Prerequisite: anypower
Building: Building:
Power: 100 Power: 100
Footprint: xx xx xx Footprint: xx xx xx
@@ -60,7 +58,6 @@
Buildable: Buildable:
Queue: Building Queue: Building
BuildPaletteOrder: 30 BuildPaletteOrder: 30
Prerequisites: anypower
Hotkey: b Hotkey: b
Valued: Valued:
Cost: 400 Cost: 400
@@ -104,8 +101,6 @@
Tooltip: Tooltip:
Name: High Tech Factory Name: High Tech Factory
Description: Produces Carryalls Description: Produces Carryalls
ProvidesCustomPrerequisite:
Prerequisite: anyhightech
Building: Building:
Power: -30 Power: -30
Footprint: _x_ xxx xxx Footprint: _x_ xxx xxx
@@ -180,9 +175,6 @@
Buildable: Buildable:
Queue: Building Queue: Building
BuildPaletteOrder: 10 BuildPaletteOrder: 10
Prerequisites: anypower
ProvidesCustomPrerequisite:
Prerequisite: anyref
Valued: Valued:
Cost: 1400 Cost: 1400
Tooltip: Tooltip:
@@ -207,11 +199,6 @@
Capacity: 2000 Capacity: 2000
CustomSellValue: CustomSellValue:
Value: 600 Value: 600
FreeActor:
Actor: HARVESTER
InitialActivity: FindResources
SpawnOffset: 1,2
Facing: 64
^SILO: ^SILO:
Inherits: ^Building Inherits: ^Building
@@ -245,8 +232,6 @@
Buildable: Buildable:
Queue: Building Queue: Building
BuildPaletteOrder: 50 BuildPaletteOrder: 50
ProvidesCustomPrerequisite:
Prerequisite: anylight
Valued: Valued:
Cost: 1000 Cost: 1000
Tooltip: Tooltip:
@@ -282,8 +267,6 @@
Buildable: Buildable:
Queue: Building Queue: Building
BuildPaletteOrder: 50 BuildPaletteOrder: 50
ProvidesCustomPrerequisite:
Prerequisite: anyheavy
Valued: Valued:
Cost: 2000 Cost: 2000
Tooltip: Tooltip:
@@ -322,8 +305,6 @@
Buildable: Buildable:
Queue: Building Queue: Building
BuildPaletteOrder: 60 BuildPaletteOrder: 60
ProvidesCustomPrerequisite:
Prerequisite: anyradar
Valued: Valued:
Cost: 1400 Cost: 1400
Tooltip: Tooltip:
@@ -349,8 +330,6 @@
Tooltip: Tooltip:
Name: Starport Name: Starport
Description: Provides a dropzone for vehicle reinforcements Description: Provides a dropzone for vehicle reinforcements
ProvidesCustomPrerequisite:
Prerequisite: anystarport
Buildable: Buildable:
Queue: Building Queue: Building
BuildPaletteOrder: 60 BuildPaletteOrder: 60

View File

@@ -207,21 +207,42 @@ CRATE:
SelectionShares: 2 SelectionShares: 2
NoBaseSelectionShares: 9001 NoBaseSelectionShares: 9001
Unit: mcvo Unit: mcvo
GiveUnitCrateAction@Trike: GiveUnitCrateAction@TrikeA:
SelectionShares: 7 SelectionShares: 7
Unit: trike Unit: trikea
GiveUnitCrateAction@Quad: GiveUnitCrateAction@TrikeH:
SelectionShares: 7
Unit: trikeh
GiveUnitCrateAction@QuadA:
SelectionShares: 6 SelectionShares: 6
Unit: quad Unit: quada
GiveUnitCrateAction@QuadH:
SelectionShares: 6
Unit: quadh
GiveUnitCrateAction@QuadO:
SelectionShares: 6
Unit: quado
GiveUnitCrateAction@Raider: GiveUnitCrateAction@Raider:
SelectionShares: 6 SelectionShares: 6
Unit: raider Unit: raider
GiveUnitCrateAction@SiegeTank: GiveUnitCrateAction@SiegeTankA:
SelectionShares: 6 SelectionShares: 6
Unit: siegetank Unit: siegetanka
GiveUnitCrateAction@MissileTank: GiveUnitCrateAction@SiegeTankH:
SelectionShares: 6 SelectionShares: 6
Unit: missiletank Unit: siegetankh
GiveUnitCrateAction@SiegeTankO:
SelectionShares: 6
Unit: siegetanko
GiveUnitCrateAction@MissileTankA:
SelectionShares: 6
Unit: missiletanka
GiveUnitCrateAction@MissileTankH:
SelectionShares: 6
Unit: missiletankh
GiveUnitCrateAction@MissileTankO:
SelectionShares: 6
Unit: missiletanko
GiveUnitCrateAction@CombatA: GiveUnitCrateAction@CombatA:
SelectionShares: 5 SelectionShares: 5
Unit: combata Unit: combata

View File

@@ -27,18 +27,17 @@
Transforms: Transforms:
TransformSounds: BUILD1.aud TransformSounds: BUILD1.aud
HARVESTER: ^HARVESTER:
Inherits: ^Vehicle Inherits: ^Vehicle
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 10 BuildPaletteOrder: 10
Prerequisites: anyref,anyheavy
Owner: atreides,harkonnen,ordos
Valued: Valued:
Cost: 1100 Cost: 1100
Tooltip: Tooltip:
Name: Spice Harvester Name: Spice Harvester
Description: Collects Spice for processing.\n Unarmed Description: Collects Spice for processing.\n Unarmed
Icon: harvestericon
Selectable: Selectable:
Priority: 7 Priority: 7
Bounds: 42,42 Bounds: 42,42
@@ -62,18 +61,17 @@ HARVESTER:
Range: 4 Range: 4
-AttackMove: -AttackMove:
TRIKE: ^TRIKE:
Inherits: ^Vehicle Inherits: ^Vehicle
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 15 BuildPaletteOrder: 15
Prerequisites: anylight
Owner: atreides,harkonnen
Valued: Valued:
Cost: 200 Cost: 200
Tooltip: Tooltip:
Name: Scout Trike Name: Scout Trike
Description: Weak Scout.\n Decent vs. Infantry Description: Weak Scout.\n Decent vs. Infantry
Icon: trikeicon
Selectable: Selectable:
Bounds: 24,24 Bounds: 24,24
Health: Health:
@@ -91,18 +89,17 @@ TRIKE:
PrimaryOffset: 0,0,0,-4 PrimaryOffset: 0,0,0,-4
AutoTarget: AutoTarget:
QUAD: ^QUAD:
Inherits: ^Vehicle Inherits: ^Vehicle
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 30 BuildPaletteOrder: 30
Prerequisites: anylight
Owner: atreides,harkonnen,ordos
Valued: Valued:
Cost: 400 Cost: 400
Tooltip: Tooltip:
Name: Quad Name: Quad
Description: Fast scout vehicle, armed with \nrockets.\n Strong vs Vehicles\n Weak vs Infantry Description: Fast scout vehicle, armed with \nrockets.\n Strong vs Vehicles\n Weak vs Infantry
Icon: quadicon
Health: Health:
HP: 120 HP: 120
Armor: Armor:
@@ -154,18 +151,17 @@ QUAD:
Selectable: Selectable:
Bounds: 30,30 Bounds: 30,30
SIEGETANK: ^SIEGETANK:
Inherits: ^Tank Inherits: ^Tank
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 80 BuildPaletteOrder: 80
Prerequisites: anyradar
Owner: atreides,harkonnen,ordos
Valued: Valued:
Cost: 600 Cost: 600
Tooltip: Tooltip:
Name: Siege Tank Name: Siege Tank
Description: Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft Description: Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
Icon: siegetankicon
Health: Health:
HP: 75 HP: 75
Armor: Armor:
@@ -189,18 +185,17 @@ SIEGETANK:
Selectable: Selectable:
Bounds: 30,30 Bounds: 30,30
MISSILETANK: ^MISSILETANK:
Inherits: ^Tank Inherits: ^Tank
Valued: Valued:
Cost: 800 Cost: 800
Tooltip: Tooltip:
Name: Missile Tank Name: Missile Tank
Description: Long range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft Description: Long range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
Icon: missiletankicon
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 50 BuildPaletteOrder: 50
Prerequisites: anyheavy
Owner: atreides,harkonnen,ordos
Mobile: Mobile:
Speed: 6 Speed: 6
Health: Health:

View File

@@ -239,36 +239,30 @@ TowerMissle:
SmudgeType: SandCrater, RockCrater SmudgeType: SandCrater, RockCrater
Damage: 25 Damage: 25
MammothTusk: FakeMissile:
ROF: 60 ROF: 90
Range: 8 Range: 8
Burst: 1
Report: MISSLE1 Report: MISSLE1
Burst: 2 Projectile: Bullet
ValidTargets: Ground, Air Speed: 35
Projectile: Missile
Speed: 30
Arm: 2
High: true High: true
Shadow: false Angle: .2
Proximity: true Inaccuracy: 70
# Trail: smokey Image: MISSILE
ContrailLength: 10 Trail: smokey
Inaccuracy: 3 ContrailLength: 30
Image: DRAGON
ROT: 5
RangeLimit: 40
Warhead: Warhead:
Spread: 6 Spread: 10
Versus: Versus:
None: 90% Wood: 0%
Wood: 75% Heavy: 0%
Light: 60% Concrete: 0%
Heavy: 25% Explosion: large_explosion
Explosion: med_explosion WaterExplosion: large_splash
WaterExplosion: med_splash
InfDeath: 2
SmudgeType: SandCrater, RockCrater SmudgeType: SandCrater, RockCrater
Damage: 45 Damage: 0
ImpactSound: kaboom12
155mm: 155mm:
ROF: 85 ROF: 85