<!--
Game stage spawning: All game stage spawning starts with a "Spawner" which is a named object referenced in the code
or other data (like POIs). The spawner itself contains all of the gamestage information for that particular spawner.
Examples: BloodMoonHorde spawner, or a large POI spawn, or a POI spawn that contains football players.
Each spawner defines a set of game stages. An individual game stage defines the actual spawning and spawning progression
for that specific stage. The game stage number is an estimate of "difficulty", higher game stages should be harder than
lower game stages.
<spawner name="BloodMoonHorde">
<gamestage stage="1">
// Starting spawn stage is in this first entry.
// It will spawn up to 300 zombies, but only 8 can be alive at any one time due to performance reasons.
// Zombies will be spawned from the ZombiesNight spawn group defined in entitygroups.xml
// (Optional) The duration of this stage is 1 game hour, after that game hour the next spawn will start OR the spawning will complete
// if there are no more spawns.
// (Optional) Interval is a delay in seconds between the end of a spawn group and the next one
// If we have a use for it this could also trigger a stinger sound.
<spawn group="ZombiesNight" num="300" maxAlive ="8" duration="1" interval="60"/>
// After 300 zombies have been killed this defines a kind of "station keeping" mode
// where there will be one zombie sent to harass the players until sunrise.
<spawn group="ZombiesNight" num="9999999" maxAlive="1"/>
maxAlive is now per player, not per party
</gamestage>
</spawner>
The code will use the highest stage that is less than or equal to your computed stage.
There is no cap on gamestage. If you feel like defining a stage="5000" - go nuts.
The gamestage is calculated once, when the "event" occurs.
When the blood moon rises the game considers nearby players as "a party" and figures out the accumulated gamestage.
This gamestage will be in effect for the duration of the event.
If players log in later or drop out, such as during the blood moon event, the gamestage will not change.
- - - - - - -
There is a metric which maps a player or group of players to a game stage number.
daysSurvived:
This is a running total, kept for every individual player.
Every 24 hours GAME time 1 (day) is added.
On every death "daysAliveChangeWhenKilled" is subtracted from the total.
After this the daysAlive is capped.
It is low-capped at 0, high-capped at "your player level".
At player level 41 you can have a daysSurvived value anywhere from 0 to 41.
gameStage = ( playerLevel + daysSurvived ) * difficultyBonus
So if a player was level 10 and survived 4 days playing when the game stage points are calculated the game stage points would be
gameStage = (Player Level 10 + Days Survived 4 ) X difficultyBonus 1.2
The total would be 16.8 or 16 game stage points.
If the same player was level 10 and had survived 25 days and died 2x:
25 days - 2 x 2 (daysAliveChangeWhenKilled) = 21
Then daysAlive of 21 gets capped to player level so 10.
This is how the gamestage of a PARTY is calculated:
The gamestage of all (up to) 6 players is calculated.
The players are sorted by gamestage.
The highest GS number is multiplied by "startingWeight".
This then loops down the list and "startingWeight" is multiplied by "diminishingReturns" every time.
Example:
Players with GS 120, 30, 60, 91, 5, 80.
startingWeight= 1.7, diminishingReturns=0.5
So we get
120 * 1.70 = 204
91 * .85 = 77
80 * .42 = 34
60 * .21 = 13
30 * .82 = 24
5 * .11 = 1
... or a total party GS of 353
- - - - - - -
Which gameStage list of spawn groups is actually picked and "ran" if it calculates a GS of 15?
It rounds down.
At a GS of 15 the <gamestage stage="14"> is used.
At a GS of 14 <gamestage stage="12"> is used.
- - - - - - -
Console command: gamestage
Displays your current gamestage.
Console command: forcegamestage
This will force a gamestage for testing.
The calculation will not run at all but you jump directly to the spawn set for this stage.
-->