123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <?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.
- min-speed-offset: The speed of the ball is calculated
- by adding the speed-offset to the difficulty's
- max-speed. min-speed-offset is used when the
- ball is closer than min-offset-distance
- to the target.
- max-speed-offset: The additional speed of the ball when
- farther than max-offset-distance.
- speed : defines the initial speed. Mainly kept for
- compatibility with flyable class
- min-offset-distance: The distance under which the ball is
- at minimal speed.
- max-offset-distance: The distance over which the ball is
- at maximal speed. If it is not equal to
- min-offset-distance, the ball speeds between
- both is a weighted average of the min and
- max speed.
- 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="40.0"
- min-speed-offset="9.0"
- max-speed-offset="29.0"
- min-offset-distance="50.0"
- max-offset-distance="250.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 145 45 135 0 0 0"
- multi =" 0 0 25 0 0 0 0 0 0 0" />
- <weight single ="150 135 225 144 135 36 135 15 0 0"
- multi =" 0 0 25 0 0 0 0 0 0 0" />
- <weight single ="160 120 140 205 110 30 100 70 30 0"
- multi =" 0 0 35 0 0 0 0 0 0 0" />
- <weight single ="145 105 45 240 0 24 0 40 80 0"
- multi =" 40 0 80 175 26 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 230 120 160 30 135 0 0 0"
- multi =" 0 0 30 0 0 0 0 0 0 0" />
- <weight single ="150 130 205 152 130 24 130 44 0 0"
- multi =" 0 0 35 0 0 0 0 0 0 0" />
- <weight single ="165 115 130 245 70 18 84 50 30 0"
- multi =" 0 0 60 0 33 0 0 0 0 0" />
- <weight single ="100 80 35 200 0 12 0 16 67 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 159 145 15 120 36 0 0"
- multi =" 0 0 40 0 0 0 0 0 0 0" />
- <weight single ="135 105 115 234 60 12 70 35 24 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 165 148 10 105 27 0 0"
- multi =" 0 0 50 0 25 0 0 0 0 0" />
- <weight single ="125 90 100 262 50 8 50 20 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>
|