0fa25db181
necessary anymore after alayan's changes to item distribution.
250 lines
15 KiB
XML
250 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).
|
|
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"
|
|
scale="1 1 1" 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 200 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 ="28 0 60 20 45 15 32 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="30 0 59 26 40 14 27 0 0 0"
|
|
multi =" 0 0 4 0 0 0 0 0 0 0" />
|
|
<weight single ="30 0 62 27 36 13 27 0 0 0"
|
|
multi =" 0 0 5 0 0 0 0 0 0 0" />
|
|
<weight single ="31 0 56 36 34 12 25 0 0 0"
|
|
multi =" 0 0 6 0 0 0 0 0 0 0" />
|
|
<weight single ="34 0 36 55 30 10 17 0 0 0"
|
|
multi =" 0 0 18 0 0 0 0 0 0 0" />
|
|
</weights>
|
|
|
|
<weights num-karts="5">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="26 16 52 15 46 12 33 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="30 27 48 25 28 10 27 0 0 0"
|
|
multi =" 0 0 5 0 0 0 0 0 0 0" />
|
|
<weight single ="30 27 45 27 27 9 27 3 0 0"
|
|
multi =" 0 0 5 0 0 0 0 0 0 0" />
|
|
<weight single ="32 24 28 38 22 7 20 16 6 0"
|
|
multi =" 0 0 7 0 0 0 0 0 0 0" />
|
|
<weight single ="28 21 9 45 0 6 0 10 18 0"
|
|
multi =" 8 0 16 35 4 0 0 0 0 0" />
|
|
</weights>
|
|
<weights num-karts="9">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="24 12 58 10 54 8 34 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="29 30 45 24 32 7 27 0 0 0"
|
|
multi =" 0 0 6 0 0 0 0 0 0 0" />
|
|
<weight single ="30 26 41 28 26 6 26 10 0 0"
|
|
multi =" 0 0 7 0 0 0 0 0 0 0" />
|
|
<weight single ="33 23 26 45 14 5 16 12 8 0"
|
|
multi =" 0 0 12 0 6 0 0 0 0 0" />
|
|
<weight single ="20 16 7 37 0 3 0 4 15 0"
|
|
multi ="18 0 18 58 4 0 0 0 0 0" />
|
|
</weights>
|
|
<weights num-karts="14">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="22 8 64 5 60 6 35 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="28 31 48 22 34 4 27 0 0 0"
|
|
multi =" 0 0 6 0 0 0 0 0 0 0" />
|
|
<weight single ="30 25 42 29 29 3 24 10 0 0"
|
|
multi =" 0 0 8 0 0 0 0 0 0 0" />
|
|
<weight single ="27 21 23 44 12 3 14 8 6 0"
|
|
multi =" 8 0 16 8 10 0 0 0 0 0" />
|
|
<weight single ="18 14 3 35 0 0 0 0 10 0"
|
|
multi ="24 0 25 65 6 0 0 0 0 0" />
|
|
</weights>
|
|
<weights num-karts="20">
|
|
<!-- bubble cake bowl zipper plunger switch swattr rubber para anvil -->
|
|
<weight single ="20 0 74 0 66 4 36 0 0 0"
|
|
multi =" 0 0 0 0 0 0 0 0 0 0" />
|
|
<weight single ="27 32 48 20 37 3 27 0 0 0"
|
|
multi =" 0 0 6 0 0 0 0 0 0 0" />
|
|
<weight single ="30 24 40 30 28 2 21 10 0 0"
|
|
multi =" 0 0 10 0 5 0 0 0 0 0" />
|
|
<weight single ="25 18 20 50 10 2 10 6 3 0"
|
|
multi ="10 0 20 10 16 0 0 0 0 0" />
|
|
<weight single ="15 12 0 25 0 0 0 0 7 0"
|
|
multi ="30 0 31 80 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>
|