Skip to content

LM3/4 - LVL Modifiers - Hotspots and Barricades #447

@UltimaOath

Description

@UltimaOath

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

# This system combines the kills of all players together for simplicity sake; while I like the
# idea of doing this per-player it would add an unncessary layer of complexity to manage the
# chunks on a per-player basis.
# All entities initially start at Level 1 (or the minLevel set for the scenario).

presets:
  hotspot_Levelling:
    # This Strategy Preset controls the player-variable based level modification system.
    name: 'LVLling Strategy - Hotspot'
    strategies:
      hotspot-levelling:
      # The Level Multiplier will multiply the final value by this amount, providing the scale
      # to how the levels are adjusted. A lower multiplier will stretch the scale out, meaning
      # it would take more entities to increase the level.
        level-multiplier: 1.25
      # The Level Modifier will add an amount to the final value prior to applying the multiplier.
      # This helps to provide a strength component to the scale. A higher modifier will
      # add value to the average level before it's applied to new entities.
        level-modifier: 2.0
      # 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.
        cooldown-timer: 600s  # 10 minutes
      # These set of settings represent the 'Barricade' system; this measures the time that a player
      # chooses to remain in an affected chunk. If the player exceeds 'timer', then the 
      # 'penalty' modifier is applied to the formula. This will continue on loop every 'timer' time
      # until all players have left the affected chunks, in which case the cooldown begins and if
      # the area is left alone after 'cooldown' time the penality is dropped from affected chunks.
      # The modifier becomes capped at the 'cap', though entities can not receive a level higher than max.
      # The barricade penality is reduced by the 'cooldown-regen' every 'cooldown' time.
        barricade-penalty: 0.25
        barricade-cooldown-regen: '-0.5'
        barricade-cap: 5
        barricade-timer: 5m
        barricade-cooldown: 15m
      # These set of settings represent the 'Heatmap' system; this measures the number of times a player has
      # entered a chunk, and that measurement is totalled to generate a modifier to apply to levels. This system
      # is distinct from 'barricade', because this does not take into account the amount of time spent in a place.
      # This would generate a heatmap of sorts which is made up of lines of chunks which players have travelled
      # through currently or in the past; if a particular route is more travelled, then that route will generate
      # a higher modifier score in comparison to a lesser travelled route. These travel paths are forgotten
      # once the cooldown timer has elapsed and no player (new or otherwise) had been through this chunk.
      # If a player has already been in a chunk recently, and recount is true, then the modifier will be increased.
      # If the same player came throughh a chunk withh recount set to false, then the modifier will not increase,
      # unless the cooldown has passed. If the cooldown has passed without an update, then the penality is 
      # reduced by the 'cooldown-regen' every 'cooldown' time.
        heatmap-penalty: 0.25
        heatmap-cooldown-regen: '-0.5'
        heatmap-cap: 5
        heatmap-cooldown: 15m
        recount-players: true
      # This represents any nearby chunks that are affected by the new level average; if a chunk
      # is already set to a different level or has not been set yet, the highest level available
      # between the three will be used. If this is set to zero, then setting not used.
        apply-to-nearby-chunks: 5

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions