1
0
forked from 0ad/0ad

[Gameplay A24] - Drastically change artillery attacks.

Artillery is not that effective in 0 A.D., partly because their damage
per second is unimpressive (especially compared to rams or war
elephants), partly because of their splash damage.
Splash damage was added in f72d820cd4 (nearly eight years ago). The
values have changed multiple times, as has the exact calculation (see
simulation/components/Attack.js). While it's quite interesting in
theory, in practice it's not that effective. @fatherbushido explained
how it works on the forums. It's important to understand the actual
splash damage depends on the distance to the centre of entities, in
contrast to ordinary attacks, which do full damage when they hit the
footprint (edge).
Splash damage has some serious problems:
- It may have no effect vs entities with footprints longer than the
splash radius, such as many (most?) structures and warships.
- The AI does not take it into account.
- It's anachronistic: exploding shells did not exist yet in 0 A.D.'s
timeframe. Missiles were rigid objections, and even the very largest
projectiles were well under a metre in diameter.

This patch therefore removes splash damage from artillery (except bolt
shooters).
Fireships and fireraisers now deal fire damage instead of a combination
of other damage types.

Basically, stone throwers are good against large unit masses and
structures only, while bolt shooters are unit killers.
Artillery and bolt towers no longer get additional projectiles from
garrisoned units.
Roman artillery does not get a larger range but keeps the increased
damage.

Patch by: @Nescio
Differential revision: D2494
Reviewed by: @borg-, @wraitii
Comments by: @Angen, @Stan
This was SVN commit r24608.
This commit is contained in:
Freagarach 2021-01-14 16:18:26 +00:00
parent c2f5ddfc68
commit 86ddf09640
10 changed files with 59 additions and 132 deletions

View File

@ -4,38 +4,29 @@
<Ranged>
<AttackName>Stone</AttackName>
<Damage>
<Pierce>35</Pierce>
<Crush>25</Crush>
<Crush>90</Crush>
</Damage>
<MaxRange>78</MaxRange>
<MinRange>20</MinRange>
<MaxRange>80</MaxRange>
<MinRange>40</MinRange>
<ElevationBonus>15</ElevationBonus>
<PrepareTime>4500</PrepareTime>
<RepeatTime>5000</RepeatTime>
<Projectile>
<Speed>40.0</Speed>
<Spread>2.5</Spread>
<Gravity>19.81</Gravity>
<LaunchPoint y="3.2"/>
<Spread>6.0</Spread>
<Gravity>9.81</Gravity>
<FriendlyFire>false</FriendlyFire>
<LaunchPoint y="3"/>
<ActorName>props/units/weapons/tower_artillery_projectile.xml</ActorName>
<ImpactActorName>props/units/weapons/tower_artillery_projectile_impact.xml</ImpactActorName>
<ImpactAnimationLifetime>0.3</ImpactAnimationLifetime>
</Projectile>
<Splash>
<Shape>Circular</Shape>
<Range>7</Range>
<FriendlyFire>false</FriendlyFire>
<Damage>
<Hack>0.0</Hack>
<Pierce>25.0</Pierce>
<Crush>5.0</Crush>
</Damage>
</Splash>
<PreferredClasses datatype="tokens">-Human !Organic</PreferredClasses>
</Ranged>
</Attack>
<BuildingAI>
<DefaultArrowCount>1</DefaultArrowCount>
<GarrisonArrowMultiplier>0.2</GarrisonArrowMultiplier>
<GarrisonArrowMultiplier>0</GarrisonArrowMultiplier>
</BuildingAI>
<Cost>
<BuildTime>200</BuildTime>

View File

@ -4,37 +4,27 @@
<Ranged>
<AttackName>Bolt</AttackName>
<Damage>
<Pierce>55</Pierce>
<Crush>5</Crush>
<Pierce>100</Pierce>
</Damage>
<MaxRange>84</MaxRange>
<MinRange>15</MinRange>
<MaxRange>90</MaxRange>
<MinRange>30</MinRange>
<ElevationBonus>15</ElevationBonus>
<PrepareTime>500</PrepareTime>
<RepeatTime>4000</RepeatTime>
<Projectile>
<Speed>125.0</Speed>
<Spread>0.5</Spread>
<Gravity>49.81</Gravity>
<LaunchPoint y="3.2"/>
<Speed>150.0</Speed>
<Spread>1.0</Spread>
<Gravity>9.81</Gravity>
<FriendlyFire>false</FriendlyFire>
<LaunchPoint y="3"/>
<ImpactActorName>props/units/weapons/tower_artillery_projectile_impact.xml</ImpactActorName>
<ImpactAnimationLifetime>0.1</ImpactAnimationLifetime>
</Projectile>
<Splash>
<Shape>Linear</Shape>
<Range>4</Range>
<FriendlyFire>false</FriendlyFire>
<Damage>
<Hack>0.0</Hack>
<Pierce>12.0</Pierce>
<Crush>0.0</Crush>
</Damage>
</Splash>
</Ranged>
</Attack>
<BuildingAI>
<DefaultArrowCount>1</DefaultArrowCount>
<GarrisonArrowMultiplier>0.2</GarrisonArrowMultiplier>
<GarrisonArrowMultiplier>0</GarrisonArrowMultiplier>
</BuildingAI>
<Cost>
<BuildTime>200</BuildTime>

View File

@ -4,11 +4,9 @@
<Melee>
<AttackName>Fire</AttackName>
<Damage>
<Hack>10.0</Hack>
<Pierce>10.0</Pierce>
<Crush>10.0</Crush>
<Fire>30</Fire>
</Damage>
<MaxRange>8.0</MaxRange>
<MaxRange>12</MaxRange>
<PrepareTime>50</PrepareTime>
<RepeatTime>100</RepeatTime>
<RestrictedClasses datatype="tokens">!Ship</RestrictedClasses>
@ -25,9 +23,7 @@
<Range>30</Range>
<FriendlyFire>true</FriendlyFire>
<Damage>
<Hack>300.0</Hack>
<Pierce>300.0</Pierce>
<Crush>300.0</Crush>
<Fire>900</Fire>
</Damage>
</DeathDamage>
<GarrisonHolder disable=""/>

View File

@ -4,28 +4,18 @@
<Ranged>
<AttackName>Stone</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>10.0</Pierce>
<Crush>100.0</Crush>
<Hack>0</Hack>
<Pierce>0</Pierce>
<Crush>150</Crush>
</Damage>
<MaxRange>72.0</MaxRange>
<MinRange>10.0</MinRange>
<MaxRange>80</MaxRange>
<MinRange>40</MinRange>
<PrepareTime>2000</PrepareTime>
<RepeatTime>5000</RepeatTime>
<Delay>0</Delay>
<Splash>
<Shape>Circular</Shape>
<Range>10</Range>
<FriendlyFire>false</FriendlyFire>
<Damage>
<Hack>0.0</Hack>
<Pierce>15.0</Pierce>
<Crush>35.0</Crush>
</Damage>
</Splash>
<Projectile>
<Speed>37.5</Speed>
<Spread>4.0</Spread>
<Speed>40.0</Speed>
<Spread>6.0</Spread>
<Gravity>9.81</Gravity>
<FriendlyFire>false</FriendlyFire>
<LaunchPoint y="3"/>

View File

@ -4,33 +4,31 @@
<Ranged>
<AttackName>Bolt</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>150.0</Pierce>
<Crush>25.0</Crush>
<Hack>0</Hack>
<Pierce>240</Pierce>
<Crush>0</Crush>
</Damage>
<MaxRange>80.0</MaxRange>
<MinRange>26.0</MinRange>
<MaxRange>90</MaxRange>
<MinRange>15</MinRange>
<PrepareTime>5000</PrepareTime>
<RepeatTime>6000</RepeatTime>
<Delay>0</Delay>
<Splash>
<Shape>Linear</Shape>
<Range>8.0</Range>
<FriendlyFire>false</FriendlyFire>
<Damage>
<Hack>0.0</Hack>
<Pierce>75.0</Pierce>
<Crush>5.0</Crush>
</Damage>
</Splash>
<Projectile>
<Speed>150.0</Speed>
<Spread>2.0</Spread>
<Spread>1.0</Spread>
<Gravity>9.81</Gravity>
<FriendlyFire>false</FriendlyFire>
<LaunchPoint y="3"/>
</Projectile>
<PreferredClasses datatype="tokens">Human Siege</PreferredClasses>
<PreferredClasses datatype="tokens">Human</PreferredClasses>
<Splash>
<Shape>Linear</Shape>
<Range>9</Range>
<FriendlyFire>false</FriendlyFire>
<Damage>
<Pierce>80</Pierce>
</Damage>
</Splash>
</Ranged>
</Attack>
<Capturable>

View File

@ -4,34 +4,24 @@
<Ranged>
<AttackName>Stone</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>10.0</Pierce>
<Crush>100.0</Crush>
<Hack>0</Hack>
<Pierce>0</Pierce>
<Crush>210</Crush>
</Damage>
<MaxRange>80.0</MaxRange>
<MinRange>26.0</MinRange>
<MaxRange>80</MaxRange>
<MinRange>40</MinRange>
<PrepareTime>6000</PrepareTime>
<RepeatTime>7000</RepeatTime>
<Delay>0</Delay>
<Projectile>
<Speed>37.5</Speed>
<Spread>4.0</Spread>
<Speed>40.0</Speed>
<Spread>6.0</Spread>
<Gravity>9.81</Gravity>
<FriendlyFire>false</FriendlyFire>
<LaunchPoint y="3"/>
<ImpactActorName>props/units/weapons/rock_explosion.xml</ImpactActorName>
<ImpactAnimationLifetime>0.1</ImpactAnimationLifetime>
</Projectile>
<Splash>
<Shape>Circular</Shape>
<Range>10</Range>
<FriendlyFire>false</FriendlyFire>
<Damage>
<Hack>0.0</Hack>
<Pierce>15.0</Pierce>
<Crush>35.0</Crush>
</Damage>
</Splash>
<PreferredClasses datatype="tokens">Structure</PreferredClasses>
</Ranged>
</Attack>

View File

@ -3,16 +3,8 @@
<Attack>
<Ranged>
<Damage>
<Pierce op="mul">1.1</Pierce>
<Crush op="mul">1.1</Crush>
</Damage>
<MaxRange op="add">8</MaxRange>
<Splash>
<Damage>
<Pierce op="mul">1.1</Pierce>
<Crush op="mul">1.1</Crush>
</Damage>
</Splash>
</Ranged>
</Attack>
<Footprint replace="">

View File

@ -2,20 +2,13 @@
<Entity parent="template_unit_siege_stonethrower">
<Attack>
<Ranged>
<MaxRange>76</MaxRange>
<MinRange>26.0</MinRange>
<Damage>
<Crush>150</Crush>
</Damage>
<MaxRange>75</MaxRange>
<MinRange>25</MinRange>
<PrepareTime>3700</PrepareTime>
<RepeatTime>5000</RepeatTime>
<Splash>
<Shape>Circular</Shape>
<Range>10</Range>
<FriendlyFire>false</FriendlyFire>
<Damage>
<Hack>40.0</Hack>
<Pierce>0.0</Pierce>
<Crush>40.0</Crush>
</Damage>
</Splash>
<Projectile>
<Speed>37.5</Speed>
<Gravity>9.81</Gravity>

View File

@ -1,14 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_siege_boltshooter">
<Attack>
<Ranged>
<Damage>
<Pierce op="mul">1.2</Pierce>
<Crush op="mul">0.5</Crush>
</Damage>
<MaxRange op="add">8</MaxRange>
</Ranged>
</Attack>
<Footprint replace="">
<Square width="5.0" depth="5.0"/>
<Height>3.0</Height>

View File

@ -4,12 +4,10 @@
<Ranged>
<AttackName>Fire</AttackName>
<Damage>
<Hack>50.0</Hack>
<Pierce>0.0</Pierce>
<Crush>50.0</Crush>
<Fire>100</Fire>
</Damage>
<MaxRange>12</MaxRange>
<MinRange>8.0</MinRange>
<MaxRange>15</MaxRange>
<MinRange>10</MinRange>
<PrepareTime>2000</PrepareTime>
<RepeatTime>2000</RepeatTime>
<Delay>0</Delay>
@ -34,9 +32,7 @@
<Range>20</Range>
<FriendlyFire>true</FriendlyFire>
<Damage>
<Hack>200.0</Hack>
<Pierce>200.0</Pierce>
<Crush>200.0</Crush>
<Fire>600</Fire>
</Damage>
</DeathDamage>
<Footprint replace="">