248 lines
15 KiB
XML
248 lines
15 KiB
XML
<?xml version="1.0"?>
|
|
<powerup>
|
|
<item name="zipper" icon="zipper_collect.png" />
|
|
<item name="bowling" icon="bowling-icon.png"
|
|
model="bowling.spm" speed="4.0"
|
|
min-height="0.2" max-height="1.0"
|
|
force-updown="1" force-to-target="40"
|
|
max-distance="25" />
|
|
<item name="bubblegum" icon="bubblegum-icon.png" />
|
|
<item name="cake" icon="cake-icon.png"
|
|
model="cake.spm" speed="50"
|
|
min-height="0.2" max-height="1.0"
|
|
force-updown="25" max-distance="90" />
|
|
<item name="anchor" icon="anchor-icon.png"
|
|
model="anchor.spm" />
|
|
<item name="switch" icon="swap-icon.png" />
|
|
<item name="swatter" icon="swatter-icon.png" />
|
|
<!-- interval: How long a single bounce takes.
|
|
max-height: The maximum height of a bounce.
|
|
min-height: Unused mostly, but defines implicitly
|
|
the starting height (as average of
|
|
max and min height).
|
|
fast-ping-distance: When the ball is closer than
|
|
this to the target, it will bounce
|
|
low and at a high rate.
|
|
target-distance: When the ball is closer than
|
|
this to the target, it will aim
|
|
directly at the target.
|
|
target-max-angle: Once the ball is aiming for its
|
|
target, it can at most change the angle
|
|
this much per second(!).
|
|
min-interpolation-distance: how far the control
|
|
points (which are center of squads)
|
|
must be from each other. A large value
|
|
allows smoother turning (no abrupt
|
|
change of direction), but a large
|
|
value can result in the ball being
|
|
off track (e.g. a value of 30 results
|
|
on the ramp in sand track that the
|
|
ball goes to the left of the tunnel,
|
|
bouncing on the pyramid). Quite
|
|
catastrophal on the startrack and
|
|
skyline).
|
|
squash-slowdown: How much karts that are
|
|
squashed are slowed down.
|
|
squash-duration: How long karts stay squashed.
|
|
delete-timer: How long before the ball is removed
|
|
if no suitable target is found.
|
|
early-target-factor: the rubber ball can use the
|
|
relative position of the kart to the
|
|
center of the track for improved targeting
|
|
(i.e. the ball will align its relative
|
|
position to the center of the track early).
|
|
This allows a lower target-distance to be
|
|
used since the ball is better aligned,
|
|
hopefully reducing the frequency of
|
|
tunneling.
|
|
-->
|
|
<item name="rubber-ball" icon="rubber_ball-icon.png"
|
|
model="rubber_ball.spm" speed="35.0"
|
|
interval="1"
|
|
max-height="4.0" min-height="0"
|
|
fast-ping-distance="50"
|
|
early-target-factor="1"
|
|
target-distance="15" target-max-angle = "90"
|
|
min-interpolation-distance="5"
|
|
squash-slowdown="0.5" squash-duration="2"
|
|
delete-time="5.0" max-height-difference="10" />
|
|
<item name="parachute" icon="parachute-icon.png"
|
|
model="parachute.spm" />
|
|
<item name="plunger" icon="plunger-icon.png"
|
|
model="plunger.spm" speed="35"
|
|
min-height="0.2" max-height="1.0"
|
|
force-updown="35" force-to-target="15"
|
|
max-distance="25" />
|
|
|
|
<!-- This defines the probabilities to get each type of item depending on
|
|
the position of the kart and number of karts in the race.
|
|
For each race mode (race, time-trial, soccer etc) there is one
|
|
weight-list entry (e.g. race-weight-list etc). Each of those lists
|
|
contains a list (1 or more entries) of weights for a certain number
|
|
of karts in the race. This offers two advantages:
|
|
1) the frequency of global items (like switch) can be reduced for
|
|
higher number of karts (so that game play does not get dominated
|
|
by frequent global items)
|
|
2) to take into account the balance changes when the number of karts
|
|
is different. Typically, the higher the number of karts, the
|
|
stronger the difference in "powerup quality" between the first and
|
|
the last.
|
|
Each of those weight tags is stored into a WeightsData object.
|
|
At race time, a new WeightsData object is created from the list for
|
|
the current race type depending on number of karts in the race.
|
|
If there is a WeightsData object for the same kart number, it is
|
|
copied, otherwise an interpolated WeightsData object is created
|
|
from the two WeightsData objects that are closest to the current
|
|
number of karts. If there is only one WeightsData for the race
|
|
mode, it is used for any number of karts.
|
|
Each Weights entry itself can contain one or more weight tags:
|
|
The first entry is for the kart with rank 1, the last weight entry
|
|
for the last kart. The remaining entries are evenly distributed
|
|
between the first and last kart (exception is follow-the-leader,
|
|
where the first entry is for the leader, the second entry for
|
|
the first non-leader kart, and the last entry for the last
|
|
kart. So the 3rd till second-last entries are distributed
|
|
evenly instead of the 2nd till second-last).
|
|
For example, with 5 karts and 5 entries those points will
|
|
match positions 2, 3, 4. With 10 karts (and 5 entries), they
|
|
will correspond to 3,25 ; 5,5 ; 7,75. It is not an issue if
|
|
the kart number is not an integer value, since the actual
|
|
weights will be interpolated.
|
|
|
|
The order of items must correspond to powerup_manager.hpp.
|
|
Each weight entry contains two list of integer values that
|
|
represent the probability that a particular item is picked
|
|
(the integer weight is divided by the sum of all weights to
|
|
get the actual probability). The first line (single=...)
|
|
corresponds to the weights of getting one specific item,
|
|
the second line (multi) to the weight at which it will yeld
|
|
a triple item rather than a single one. The probability to get
|
|
an item is its weight divided by the sum of weights of all items
|
|
(single AND multi). It is recommended to keep that sum equal
|
|
to 1000 to easily keep track of probabilities.
|
|
'Global' items which affect all karts (switch, parachute) should
|
|
be quite rare, since otherwise the item might be used
|
|
too often (compared with many items which will only
|
|
affect a karts or two) - especially with increasing number of
|
|
karts in a race.
|
|
The distribution should give more similar items to different ranks
|
|
when there are few karts, but have more important differences when
|
|
there are more karts. -->
|
|
|
|
<race-weight-list>
|
|
<weights num-karts="1">
|
|
<!-- The entry for '1' kart lists more than a single weight
|
|
because the others are used for interpolation when
|
|
there are two karts or more. -->
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="140 0 300 100 225 75 160 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="150 0 295 130 200 70 135 0 0 0"
|
|
multi =" 0 0 20 0 0 0 0 0 0 0" />
|
|
<weight single ="150 0 310 135 180 65 135 0 0 0"
|
|
multi =" 0 0 25 0 0 0 0 0 0 0" />
|
|
<weight single ="155 0 280 180 170 60 125 0 0 0"
|
|
multi =" 0 0 30 0 0 0 0 0 0 0" />
|
|
<weight single ="170 0 180 275 150 50 85 0 0 0"
|
|
multi =" 0 0 90 0 0 0 0 0 0 0" />
|
|
</weights>
|
|
<weights num-karts="5">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="130 80 260 75 230 60 165 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="150 135 240 125 140 50 135 0 0 0"
|
|
multi =" 0 0 25 0 0 0 0 0 0 0" />
|
|
<weight single ="150 135 225 135 135 45 135 15 0 0"
|
|
multi =" 0 0 25 0 0 0 0 0 0 0" />
|
|
<weight single ="160 120 140 190 110 35 100 80 30 0"
|
|
multi =" 0 0 35 0 0 0 0 0 0 0" />
|
|
<weight single ="140 105 45 225 0 30 0 50 90 0"
|
|
multi =" 40 0 80 175 20 0 0 0 0 0" />
|
|
</weights>
|
|
<weights num-karts="9">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="120 60 290 50 270 40 170 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="145 150 225 120 160 35 135 0 0 0"
|
|
multi =" 0 0 30 0 0 0 0 0 0 0" />
|
|
<weight single ="150 130 205 140 130 30 130 50 0 0"
|
|
multi =" 0 0 35 0 0 0 0 0 0 0" />
|
|
<weight single ="165 115 130 225 70 25 80 60 40 0"
|
|
multi =" 0 0 60 0 30 0 0 0 0 0" />
|
|
<weight single ="100 80 35 185 0 15 0 20 75 0"
|
|
multi =" 90 0 90 290 20 0 0 0 0 0" />
|
|
</weights>
|
|
<weights num-karts="14">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="110 40 320 25 300 30 175 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="140 155 240 110 170 20 135 0 0 0"
|
|
multi =" 0 0 30 0 0 0 0 0 0 0" />
|
|
<weight single ="150 125 210 145 145 15 120 50 0 0"
|
|
multi =" 0 0 40 0 0 0 0 0 0 0" />
|
|
<weight single ="135 105 115 220 60 15 70 40 30 0"
|
|
multi =" 40 0 80 40 50 0 0 0 0 0" />
|
|
<weight single =" 90 70 15 175 0 0 0 0 50 0"
|
|
multi ="120 0 125 325 30 0 0 0 0 0" />
|
|
</weights>
|
|
<weights num-karts="20">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="100 0 370 0 330 20 180 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="135 160 240 100 185 15 135 0 0 0"
|
|
multi =" 0 0 30 0 0 0 0 0 0 0" />
|
|
<weight single ="150 120 200 150 140 10 105 50 0 0"
|
|
multi =" 0 0 50 0 25 0 0 0 0 0" />
|
|
<weight single ="125 90 100 250 50 10 50 30 15 0"
|
|
multi =" 50 0 100 50 80 0 0 0 0 0" />
|
|
<weight single =" 75 60 0 125 0 0 0 0 35 0"
|
|
multi ="150 0 155 400 0 0 0 0 0 0" />
|
|
</weights>
|
|
</race-weight-list>
|
|
|
|
<ftl-weight-list>
|
|
<weights num-karts="1">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<!-- This is the entry for the leader: -->
|
|
<weight single ="35 0 25 35 25 15 25 0 0 0"
|
|
multi ="20 0 0 20 0 0 0 0 0 0" />
|
|
<!-- This is the entry for the first non-leader karts: -->
|
|
<weight single ="25 0 60 25 58 2 30 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="35 0 55 35 25 3 25 0 0 0"
|
|
multi =" 0 0 10 0 12 0 0 0 0 0" />
|
|
<weight single ="25 0 40 45 15 5 15 10 5 0"
|
|
multi ="10 0 15 15 0 0 0 0 0 0" />
|
|
<!-- This is the entry for the last kart: -->
|
|
<weight single ="20 0 15 25 0 0 0 0 15 0"
|
|
multi ="20 0 25 80 0 0 0 0 0 0" />
|
|
</weights>
|
|
</ftl-weight-list>
|
|
|
|
<battle-weight-list>
|
|
<weights num-karts="1">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="10 30 60 0 0 10 30 0 0 0"
|
|
multi =" 0 0 5 0 0 0 0 0 0 0" />
|
|
</weights>
|
|
</battle-weight-list>
|
|
|
|
<soccer-weight-list>
|
|
<weights num-karts="1">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single =" 0 30 60 0 0 10 30 0 0 0"
|
|
multi =" 0 0 5 0 0 0 0 0 0 0" />
|
|
</weights>
|
|
</soccer-weight-list>
|
|
|
|
<tutorial-weight-list>
|
|
<weights num-karts="1">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single =" 0 0 0 0 0 0 0 0 0 0"
|
|
multi =" 0 0 100 0 0 0 0 0 0 0" />
|
|
</weights>
|
|
</tutorial-weight-list>
|
|
|
|
|
|
</powerup>
|