-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LM3/4 - LVL Modifiers - Hotspots and Barricades #447
Comments
Got bored after waking up and decided randomly to sudocode this idea; I also had a few modifications to the general concept mostly associated with converting the entire thing into three separate level modifiers rather than true levelling strategies. presets:
lvl-mod_Hotspots:
# This Level Modifier covers the 'Hotspots' mechanic.
# HOTSPOTS_MOD = ( ( SUM-ENTITY-LEVELS ) / ( ENTITY-COUNT ) ) + HOTSPOTS-PENALTY ) x HOTSPOTS-MULTIPLIER )
name: 'LVL Modifier - Hotspots'
strategies:
hotspots_Modifier:
# The hotspots penalty will add the specified amount to the final hotspots mod value prior
# to applying the hotspots multiplier. This adds additional strength to future levels being
# applied. A higher value will cause greater leaps in strength over time.
hotspots-penalty: 2.0
# The hotspots multiplier will multiply the specified amount to the final hotspots value after
# the previous hotspot penalty. This is used to stretch or shrink the scale of how many more
# entities it would take to jump to the next difficulty tier. A lower value will stretch the scale
# while a higher value would shrink the scale exponentially.
hotspots-multiplier: 1.25
# This is the highest value (cap) the hotspot modifier can apply to a level.
hotspots-cap: 10
# This cooldown will apply to each entity killed, and the entities will be dropped from
# the list once the cooldown has been reached based on that entities' killtime.
hotspots-cooldown: 10m
# This will apply any affects of this modifier to all surrounding chunks within this distance.
# Each of these modifiers are unique, so would stack on to each other.
apply-to-nearby-chunks: 5
lvl-mod_Barricades:
# This Level Modifier covers the 'Barricades' mechanic.
# BARRICADES_MOD = ( BARRICADE-PENALTY x INSTANCE )
name: 'LVL Modifier - Barricades'
strategies:
barricades_Modifier:
# The barricades penalty will add the specified value for each elapsed timer instance, up to the cap.
barricades-penalty: 0.25
# This is the highest value (cap) the barricade modifier can apply to a level.
barricades-cap: 10
# This is the timer associated with how often this modifier is updated.
barricades-timer: 45s
# This cooldown will drop players from the list based on the timestamp of the players' exit.
barricades-cooldown: 5m
# This will apply any affects of this modifier to all surrounding chunks within this distance.
# Each of these modifiers are unique, so would stack on to each other.
apply-to-nearby-chunks: 5 Hotspots Modifier: We start with a log associated with this modifier, which contains the primary list of chunk ids and the chunk's modifier value with each chunk id containing a nested secondary list of entity ids, entity levels, and timestamps of death. Each entry will remain within the log for the We then use the following formula to generate a modifier score for each chunk based on the nested information within each chunk: Barricades Modifier: We start with a log associated with this modifier, which contains the primary list of player ids with each player id containing a nested secondary list of chunk ids connected to the player, and one or more timestamps associated with when the When the Each nested entry will remain within the log for the We then use the following formula to generate a modifier score for each chunk based on the formation of the second log mentioned at the beginning: |
Updated my last post to make the processing less taxing, absorbing 'heatmaps' into the 'barricades' system, and gave a stronger explaination of the backend. |
Suggested to shift formatting into a new Example: presets:
lvl-mod_Hotspots:
name: 'LVL Modifier - Hotspots'
strategies:
modifiers:
hotspots-mod:
hotspots-penalty: 2.0
hotspots-multiplier: 1.25
hotspots-cap: 10
hotspots-cooldown: 10m
apply-to-nearby-chunks: 5
hotspots-placeholder: hotspots_mod #would create placeholder `%hotspots_mod%` for use
lvl-mod_Barricades:
name: 'LVL Modifier - Barricades'
strategies:
modifiers:
barricades-mod:
barricades-penalty: 0.25
barricades-cap: 10
barricades-timer: 45s
barricades-cooldown: 5m
apply-to-nearby-chunks: 5
barricades-placeholder: barricades_mod #would create placeholder `%barricades_mod%` for use |
Please use the next post for 'final form', as this was initial concept and has changed significantly in the second interation.
Initial concept in Discord:
https://discord.com/channels/752310043214479462/756850940694495253/1080675231309500436
The idea is that the world is level 1/minlevel, player(s) go to kill entities; their levels, the chunk they died in, and time of death are recorded in a list. A secondary list is made and sorted into the different affected chunks. Those chunks are given an 'average level value' which is generated by taking 'a sum of the levels of all entities which died in the same chunk' and 'a count of all entities which were used in the sum', then applying the modifier and multiplier settings will begin to increase the average over time based on the number of entities killed and the level of those entities being taken into account.
This map of chunks with their level averages set is what sets the level of any subsequently spawned in entities within the affected chunks. These higher level entities will help to boost the average faster if players are determined to stay in the area, and if a player can handle it they are rewarded with the higher level entities. If they can't they can leave the area to an unaffected area of chunks or to an area with a lower average at the time until things calm down in the area they were working in. Using the 'nearby chunks' feature helps to spread the effect out away from the player as they travel around.
Once an entities' killtime has exceeded the cooldown timer, that entity is dropped from the list and therefore it is no longer affecting the averages. There are two effects to this: if the player has left or stopped fighting then the average will begin to reduce. If the player remains and is still fighting it out, then it is only adding fuel to the fire as the lower levels are removed from the averages and are replaced with higher levels. (edited)
I could also see this being a
lvl-mod_
rather than an actual strategy; it would override whatever level was set in a strategy by changing the levels of future spawned entities only in the affected chunks, but leaving the unaffected chunks to the original strategy.A sample/demonstration excel spreadsheet regarding this system is available here.
UPDATE: Added
barricade
mechanic, which changes the formula used in excel to:CURRENT-LVL-AVERAGE = ((((( SUM-ENTITY-LEVELS ) / ( ENTITY-COUNT )) + LVL-MOD) x LVL-MULTI) + BARRICADE-PENALTY) + HEATMAP-PENALTY
Where the entities are only those killed in affected chunks being searched.
UPDATE 2: Added
heatmap
mechanic, which applies a modifier based on the paths that players commonly take rather than the duration they spend in a specific chunk.The text was updated successfully, but these errors were encountered: