1
0
forked from 0ad/0ad

Convert ranged attack data in entity templates

This was SVN commit r7346.
This commit is contained in:
Ykkrosh 2010-03-07 20:22:15 +00:00
parent a8d810b4b3
commit 36e90e71f2
27 changed files with 208 additions and 6 deletions

View File

@ -3,4 +3,14 @@
<Identity>
<GenericName>Ranged Cavalry</GenericName>
</Identity>
<Attack>
<Hack>0.0</Hack>
<Pierce>10.0</Pierce>
<Crush>0.0</Crush>
<Range>16.0</Range>
<MinRange>10.0</MinRange>
<ProjectileSpeed>25.0</ProjectileSpeed>
<PrepareTime>900</PrepareTime>
<RepeatTime>1500</RepeatTime>
</Attack>
</Entity>

View File

@ -21,4 +21,14 @@
<UnitMotion>
<WalkSpeed>8.0</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>40.0</Pierce>
<Crush>0.0</Crush>
<Range>56.0</Range>
<MinRange>20.0</MinRange>
<ProjectileSpeed>40.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
</Entity>

View File

@ -21,4 +21,14 @@
<UnitMotion>
<WalkSpeed>8.5</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>30.0</Pierce>
<Crush>0.0</Crush>
<Range>40</Range>
<MinRange>16.0</MinRange>
<ProjectileSpeed>30.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
</Entity>

View File

@ -21,4 +21,13 @@
<UnitMotion>
<WalkSpeed>8.0</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>50.0</Pierce>
<Crush>0.0</Crush>
<Range>56.0</Range>
<ProjectileSpeed>25.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
</Entity>

View File

@ -4,4 +4,14 @@
<GenericName>Ranged Infantry</GenericName>
<IconCell>43</IconCell>
</Identity>
<Attack>
<Hack>0.0</Hack>
<Pierce>1.0</Pierce>
<Crush>0.0</Crush>
<Range>1.0</Range>
<MinRange>1.0</MinRange>
<ProjectileSpeed>28.0</ProjectileSpeed>
<PrepareTime>900</PrepareTime>
<RepeatTime>1500</RepeatTime>
</Attack>
</Entity>

View File

@ -4,4 +4,14 @@
<GenericName>Infantry Archer</GenericName>
<IconCell>9</IconCell>
</Identity>
<Attack>
<Hack>0.0</Hack>
<Pierce>40.0</Pierce>
<Crush>0.0</Crush>
<Range>44.0</Range>
<MinRange>20.0</MinRange>
<ProjectileSpeed>40.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
</Entity>

View File

@ -4,4 +4,14 @@
<GenericName>Infantry Javelinist</GenericName>
<IconCell>21</IconCell>
</Identity>
<Attack>
<Hack>0.0</Hack>
<Pierce>45.0</Pierce>
<Crush>0.0</Crush>
<Range>32</Range>
<MinRange>8.0</MinRange>
<ProjectileSpeed>30.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
</Entity>

View File

@ -21,4 +21,14 @@
<UnitMotion>
<WalkSpeed>7.5</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>20.0</Pierce>
<Crush>0.0</Crush>
<Range>28.0</Range>
<MinRange>16.0</MinRange>
<ProjectileSpeed>50.0</ProjectileSpeed>
<PrepareTime>900</PrepareTime>
<RepeatTime>1500</RepeatTime>
</Attack>
</Entity>

View File

@ -21,4 +21,13 @@
<UnitMotion>
<WalkSpeed>5.75</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>35.0</Pierce>
<Crush>30.0</Crush>
<Range>54</Range>
<ProjectileSpeed>30.0</ProjectileSpeed>
<PrepareTime>900</PrepareTime>
<RepeatTime>1500</RepeatTime>
</Attack>
</Entity>

View File

@ -21,4 +21,13 @@
<UnitMotion>
<WalkSpeed>4.75</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>35.0</Hack>
<Pierce>0.0</Pierce>
<Crush>40.0</Crush>
<Range>72</Range>
<ProjectileSpeed>20.0</ProjectileSpeed>
<PrepareTime>900</PrepareTime>
<RepeatTime>1500</RepeatTime>
</Attack>
</Entity>

View File

@ -19,6 +19,16 @@
<UnitMotion>
<WalkSpeed>7.0</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>55.0</Pierce>
<Crush>0.0</Crush>
<Range>28</Range>
<MinRange>8.0</MinRange>
<ProjectileSpeed>25.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
<Footprint>
<Circle radius="0.5"/>
<Height>2.5</Height>

View File

@ -11,6 +11,12 @@
<UnitMotion>
<WalkSpeed>11.2</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>32.0</Pierce>
<Crush>0.0</Crush>
<Range>40.0</Range>
</Attack>
<VisualActor>
<Actor>units/celts/cavalry_javelinist_a.xml</Actor>
</VisualActor>

View File

@ -11,6 +11,9 @@
<UnitMotion>
<WalkSpeed>15.0</WalkSpeed>
</UnitMotion>
<Attack>
<Pierce>32.0</Pierce>
</Attack>
<VisualActor>
<Actor>units/celts/cavalry_javelinist_b.xml</Actor>
</VisualActor>

View File

@ -11,6 +11,12 @@
<UnitMotion>
<WalkSpeed>11.3</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>34.0</Pierce>
<Crush>0.0</Crush>
<Range>40.0</Range>
</Attack>
<VisualActor>
<Actor>units/celts/cavalry_javelinist_e.xml</Actor>
</VisualActor>

View File

@ -24,6 +24,16 @@
<UnitMotion>
<WalkSpeed>14.0</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>50.0</Pierce>
<Crush>0.0</Crush>
<Range>30</Range>
<MinRange>0.0</MinRange>
<ProjectileSpeed>30.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
<VisualActor>
<Actor>units/celts/boudicca_chariot.xml</Actor>
</VisualActor>

View File

@ -14,6 +14,16 @@
<UnitMotion>
<WalkSpeed>9.2</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>47.0</Pierce>
<Crush>0.0</Crush>
<Range>32</Range>
<MinRange>16.0</MinRange>
<ProjectileSpeed>32.0</ProjectileSpeed>
<PrepareTime>900</PrepareTime>
<RepeatTime>1500</RepeatTime>
</Attack>
<VisualActor>
<Actor>units/celts/infantry_javelinist_a.xml</Actor>
</VisualActor>

View File

@ -14,6 +14,16 @@
<UnitMotion>
<WalkSpeed>9.3</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>49.0</Pierce>
<Crush>0.0</Crush>
<Range>34</Range>
<MinRange>16.0</MinRange>
<ProjectileSpeed>34.0</ProjectileSpeed>
<PrepareTime>900</PrepareTime>
<RepeatTime>1500</RepeatTime>
</Attack>
<VisualActor>
<Actor>units/celts/infantry_javelinist_e.xml</Actor>
</VisualActor>

View File

@ -24,6 +24,16 @@
<UnitMotion>
<WalkSpeed>9.0</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>45.0</Pierce>
<Crush>0.0</Crush>
<Range>30</Range>
<MinRange>12.0</MinRange>
<ProjectileSpeed>30.0</ProjectileSpeed>
<PrepareTime>1200</PrepareTime>
<RepeatTime>2000</RepeatTime>
</Attack>
<VisualActor>
<Actor>units/celts/super_unit_4.xml</Actor>
</VisualActor>

View File

@ -22,6 +22,13 @@
<UnitMotion>
<WalkSpeed>9.0</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>60.0</Pierce>
<Crush>5.0</Crush>
<Range>28.0</Range>
<MinRange>8.0</MinRange>
</Attack>
<VisualActor>
<Actor>units/hellenes/xenophon.xml</Actor>
</VisualActor>

View File

@ -12,6 +12,9 @@
<Pierce>1.0</Pierce>
<Crush>3.0</Crush>
</Armour>
<Attack>
<Pierce>40.0</Pierce>
</Attack>
<VisualActor>
<Actor>units/hellenes/infantry_archer_a.xml</Actor>
</VisualActor>

View File

@ -22,6 +22,11 @@
<UnitMotion>
<WalkSpeed>6.8</WalkSpeed>
</UnitMotion>
<Attack>
<Pierce>35.0</Pierce>
<Range>36.0</Range>
<MinRange>12.0</MinRange>
</Attack>
<VisualActor>
<Actor>units/hellenes/infantry_archer_b.xml</Actor>
</VisualActor>

View File

@ -15,6 +15,9 @@
<UnitMotion>
<WalkSpeed>6.7</WalkSpeed>
</UnitMotion>
<Attack>
<Pierce>45.0</Pierce>
</Attack>
<VisualActor>
<Actor>units/hellenes/infantry_archer_e.xml</Actor>
</VisualActor>

View File

@ -18,6 +18,9 @@
<UnitMotion>
<WalkSpeed>7.2</WalkSpeed>
</UnitMotion>
<Attack>
<Pierce>50.0</Pierce>
</Attack>
<VisualActor>
<Actor>units/hellenes/infantry_javelinist_a.xml</Actor>
</VisualActor>

View File

@ -18,6 +18,9 @@
<UnitMotion>
<WalkSpeed>6.7</WalkSpeed>
</UnitMotion>
<Attack>
<Range>36.0</Range>
</Attack>
<VisualActor>
<Actor>units/hellenes/infantry_javelinist_b.xml</Actor>
</VisualActor>

View File

@ -10,6 +10,9 @@
<Max>120</Max>
<RegenRate>0.4</RegenRate>
</Health>
<Attack>
<Pierce>55.0</Pierce>
</Attack>
<VisualActor>
<Actor>units/hellenes/infantry_javelinist_e.xml</Actor>
</VisualActor>

View File

@ -22,6 +22,13 @@
<UnitMotion>
<WalkSpeed>9.0</WalkSpeed>
</UnitMotion>
<Attack>
<Hack>0.0</Hack>
<Pierce>55.0</Pierce>
<Crush>0.0</Crush>
<Range>28.0</Range>
<MinRange>10.0</MinRange>
</Attack>
<VisualActor>
<Actor>units/hellenes/super_unit_2.xml</Actor>
</VisualActor>

View File

@ -148,19 +148,25 @@ sub convert {
$out .= qq{$i</UnitMotion>\n};
}
if ($data->{Actions}[0]{Attack}[0]{Melee}) {
die if $data->{Actions}[0]{Attack}[0]{Melee} and $data->{Actions}[0]{Attack}[0]{Ranged}; # only allow one at once
my $attack = $data->{Actions}[0]{Attack}[0]{Melee} || $data->{Actions}[0]{Attack}[0]{Ranged};
if ($attack) {
$out .= qq{$i<Attack>\n};
for my $n (qw(Hack Pierce Crush Range)) {
$out .= qq{$i$i<$n>$data->{Actions}[0]{Attack}[0]{Melee}[0]{$n}[0]</$n>\n} if $data->{Actions}[0]{Attack}[0]{Melee}[0]{$n};
for my $n (qw(Hack Pierce Crush Range MinRange ProjectileSpeed)) {
$out .= qq{$i$i<$n>$attack->[0]{$n}[0]</$n>\n} if $attack->[0]{$n};
}
if ($data->{Actions}[0]{Attack}[0]{Melee}[0]{Speed}) {
my $s = $data->{Actions}[0]{Attack}[0]{Melee}[0]{Speed}[0];
if ($attack->[0]{Speed}) {
my $s = $attack->[0]{Speed}[0];
# TODO: are these values sane?
if ($s eq '1000') {
$out .= qq{$i$i<PrepareTime>600</PrepareTime>\n};
$out .= qq{$i$i<RepeatTime>1000</RepeatTime>\n};
} elsif ($s eq '1500') {
} elsif ($s eq '1500' or $s eq '1520' or $s eq '1510') {
$out .= qq{$i$i<PrepareTime>900</PrepareTime>\n};
$out .= qq{$i$i<RepeatTime>1500</RepeatTime>\n};
} elsif ($s eq '2000') {
$out .= qq{$i$i<PrepareTime>1200</PrepareTime>\n};
$out .= qq{$i$i<RepeatTime>2000</RepeatTime>\n};
} else {
die $s;
}