Global Progression is a plugin primarily designed to balance PVP servers by globally unlocking blueprints as they are learned by players. The plugin is meant to mitigate the dominating effect that a server's "established" players will have on new players.
In order to retain the value of learning blueprints, there is a configurable delay and player threshold for blueprint learning. This will mean that the first X players (threshold) who learn the blueprint will have an advantage for Y seconds (delay) until that blueprint is globally unlocked.
For example: if the player threshold is set to 4 and a delay of 3600 (seconds), the first 3 players to learn the blueprint will exclusively have the blueprint unlocked until the 4th player learns it. And once the 4th player learns the blueprint, a countdown begins and the blueprint will unlock for ALL players after 3600s (1hr). Additionally, a blueprint that is on countdown can be BLOCKED from any additional players learning it until it is globally unlocked, giving additional incentive to research.
It is recommended to load this plugin initially with a freshly wiped server (including blueprints!)
Features
- Ignore list - Players can be excluded from triggering global unlocks and learning global blueprints. (Permission-based)
- Player Threshold - Configurable number of players who need to learn a blueprint to start the global unlock countdown (default 1)
- Delay - Configurable amount of time in seconds to unlock a blueprint after the player threshold is met; a delay of 0 will instantly unlock the blueprint globally (default 600s)
- Blocking - Block players from learning a blueprint while the blueprint is on countdown (default false)
Permissions
- globalprogression.admin - Admin permission; gives access to console commands
- globalprogression.ignore - Players with this permission will be a part of the "ignore list", so they will not trigger blueprint unlocks, nor learn globally-unlocked blueprints.
Commands
Console Commands
Require permission globalprogression.admin:
gp.refresh- Refresh unlocked blueprints by checking all active/sleeping players' blueprints and unlocking them globally. Does not include players who have joined previously but have no sleeper! May not be the most performant...
Chat Commands
/gpq- Print a list of currently queued blueprints for unlocking
Configuration
Default config, with commentary:
{
"First Load": false, // indicates first time loading plugin; true will force additional processing to take place (basically, running a refresh)
"Blocking": false, // Whether to block players from learning a blueprint that is currently pending (counting down to unlock globally)
"Global Unlock Threshold": 1, // Number of players who must learn a blueprint to start the unlock countdown
"Learning Delay": 600, // Number of seconds to countdown until global unlock
"Tick Rate": 1.0, // Internal tick rate in seconds for countdown checks
"Unlocked Blueprints": [], // List of globally unlocked blueprints (item shortnames)
"Pending Blueprints": {}, // Dictionary of pending unlocks (shortname, counter, unlock time)
}
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

