Code Monkey home page Code Monkey logo

amnesia's Introduction

Amnesia

๐Ÿงช Tested On ๐Ÿ“ฆ Automated Release

amnesia social image

Summary

As you may have guessed, this mod adds a RogueLike element to 7 Days to Die in a way that runs entirely on the server's end and does not require players to manually download or install anything.

๐Ÿ” This mod only runs on a dedicated server which you can technically run locally and will need to connect to. If you're only looking for a client-side/single-player experience, consider Mostly Dead by Khzmusik.

Support

๐Ÿ—ช If you would like support for this mod, please feel free to reach out to me via Discord (my username is kanaverum).

Features

The Primary Goal of this mod is to improve long-term engagement by introducing a far heavier risk/reward play style that should mix well with a post-apocalyptic survival experience.

The Secondary Goal is to take a meaningful step toward 'evergreen' servers by reducing how often map wipes need to occur due to total exhaustion of all challenge to the players (i.e. when most players have reached max level and no longer feel they have anything exciting to work towards). So even though it is the case that other reasons for wiping a map may be unavoidable, Amnesia is meant to help with player engagement/boredom/challenge/etc.

Memory Loss

After reaching an admin-configurable level (which defaults to 1), a player will receive the debuff Fragile Memory upon death, along with Near Death Trauma and an XP Debt to work off.

Dying with the Fragile Memory debuff will cause a player to Lose Memory, resulting in no XP Debt or the Near Death Trauma debuff, but will trigger a series of admin-configurable changes to the player: levels being reset, forgetting books/schematics/crafting, even forgetting kill stats for pvp/death/zombies. More details on settings and defaults are listed in the Admin Configuration section.

Memory Treatment

Players can recover from Fragile Memory with the help of the new Treatment service offered by any Trader.

flowchart LR
    alive[[Alive]]-->incap[[Incapacitated]]
    incap-->|not fragile|fragile[[Fragile Memory]]
    incap-->|fragile|amnesia[Lose Memory, Reduce Levels by LevelPenalty or Reset to LongTermMemoryLevel]

    amnesia-->fragile
    fragile-->incap

    fragile-->|receive Treatment|alive
  • โš–๏ธ The cost of this service will depend on the Player's current Level, so continued success eventually becomes a heavier burden.
    • This is meant to increase the pressure as a player grows in level and also offset the ease at which a player will eventually be able to produce money.
  • ๐Ÿ›ก๏ธ This dialog-based services approach prevents skills like Better Barter or consumables such as Pumpkin Cheesecake from having any impact on the cost of Treatment.
  • โš™๏ธ Higher XP growth is generally recommended; possibly 2x or 3x. Regular xp growth can be used, but may be very challenging. This is definitely something worth discussing with your community if you want to try to keep the server engaging for all players past 3-4 months (your mileage may vary).

Memory Therapy

Grandpa's Fergit'n Elixir has been removed from the game so its cost can be based on player level. Just like Treatement, players will find Therapy services offered by any trader.

  • โš–๏ธ The cost of this service will depend on the Player's current Level... the larger your skill point pool to reassign, the higher the cost.
  • ๐Ÿช™ This should help to encourage lower-level players to invest in skill reassignment earlier instead of putting it off for later.
  • ๐Ÿค I expect this will encourage division of responsibilities on teams vs everyone reclassifying as loot monsters or miners as the team is building up resources.

Admin Configuration

Every single one of these settings can be adjusted from the admin console live and should take all considerations into account for you automatically. If you see any issue with these at all, please reach out by creating a new GitHub Issue and I'll take a look!

Core Options

Option Name Default Description
LongTermMemoryLevel 1 The number of levels a player must exceed before Memory Loss on death begins. This will also represent the level a player is reset to on death (if Memory Loss is not prevented in some way: PVP, Blood Moon, or Memory Boosters).
LevelPenalty 0 The number of levels to lose on memory loss; if this is set to 0, memory loss will cause player to reset to LongTermMemoryLevel.
PositiveOutlookMaxTime 3600 The maximum number of seconds that can be acquired for the Positive Outlook buff (2x XP boost).
PositiveOutlookTimeOnFirstJoin 3600 How many seconds of Positive Outlook buff to grant a brand new player to the server.
PositiveOutlookTimeOnMemoryLoss 3600 How many seconds of Positive Outlook buff to grant a player who just experienced Memory Loss.
PositiveOutlookTimeOnKillName Empty Names and Values to reward the entire server when any player defeats the given entity. This is best applied to boss zombies such as Vanilla's zombieDemolition and modded zombies. Note that this value is adjusted with the list command rather than the set command; see admin console for more details.
ProtectMemoryDuringBloodmoon true Whether deaths during Blood Moon will be PREVENTED from causing Memory Loss.
ProtectMemoryDuringPvp true Whether deaths due to PVP will be PREVENTED from causing Memory Loss.
TreatmentCostBase 0 Base cost of Treatment (used to recover from FragileMemory ailment).
TreatmentCostMultiplier 1200 Level Multiplier cost added to Treatment.
TherapyCostBase 0 Base cost of Therapy (used to reset skill points).
TherapyCostMultiplier 600 Level Multiplier cost added to Therapy.
ForgetLevelsAndSkills true Whether to forget levels, skills, and skill points on Memory Loss.
ForgetBooks false Whether books should be forgotten on memory loss. It's recommended to keep this as false because A21 is expected to have hundreds of books to collect for crafting purposes.
ForgetCrafting false Whether crafting magazines should be forgotten on memory loss.
ForgetSchematics false Whether schematics should be forgotten on memory loss.
ForgetKdr false Whether players/zombies killed and times died should be forgotten on memory loss.

DISABLED Experimental Options

โš ๏ธ While it is possible to remove completed quests from a remote player, the trader relationship dictionary is managed on the client's end and does not currently reflect those removals... this results in the player reward system getting real jacked up; tier unlock milestone rewards end up getting offered again and then no quests can be accepted. ๐Ÿคž I'm hoping to support this in the future if I can figure out a way to update Trader Relationships without requiring the player to be disconnected.

Option Name Default Description
NameForgetNonIntroQuests false [DISABLED FOR NOW] whether to forget non-intro quests (and trader tier levels) on memory loss

File Example

Here's an example of what I'm trying out on my server. All of these options can be set individually via the admin console / telnet, or you could simply create an amnesia.xml file within your map's instance directory (the same folder you'll find your server's players.xml file in).

<config>
  <LongTermMemoryLevel>50</LongTermMemoryLevel>
  <LevelPenalty>0</LevelPenalty>
  <PositiveOutlookMaxTime>3600</PositiveOutlookMaxTime>
  <PositiveOutlookTimeOnFirstJoin>0</PositiveOutlookTimeOnFirstJoin>
  <PositiveOutlookTimeOnMemoryLoss>0</PositiveOutlookTimeOnMemoryLoss>
  <PositiveOutlookTimeOnKill>
    <entry name="zombieScorcherPLUS" caption="[FF007F]Scorcher[-]" value="900" />
    <entry name="zombieWightRadiationShowerPLUS" caption="[FAE500]Radiation Shower Wight[-]" value="300" />
    <entry name="zombieDemolition" caption="[8000FF]Demolition Zombie[-]" value="60" />
  </PositiveOutlookTimeOnKill>
  <ProtectMemoryDuringBloodmoon>true</ProtectMemoryDuringBloodmoon>
  <ProtectMemoryDuringPvp>true</ProtectMemoryDuringPvp>
  <TreatmentCostBase>0</TreatmentCostBase>
  <TreatmentCostMultiplier>1200</TreatmentCostMultiplier>
  <TherapyCostBase>0</TherapyCostBase>
  <TherapyCostMultiplier>600</TherapyCostMultiplier>
  <ForgetLevelsAndSkills>true</ForgetLevelsAndSkills>
  <ForgetBooks>false</ForgetBooks>
  <ForgetCrafting>false</ForgetCrafting>
  <ForgetSchematics>false</ForgetSchematics>
  <ForgetKdr>false</ForgetKdr>
  <ForgetNonIntroQuests>false</ForgetNonIntroQuests>
</config>

๐Ÿ“ a few of the zombies I'm referencing come from Server Side Zombies PLUS.

Setup

Without proper installation, this mod will not work as expected. Using this guide should help to complete the installation properly.

If you have trouble getting things working, you can reach out to me for support via Support.

Environment / EAC / Hosting Requirements

Environment Compatible Does EAC Need to be Disabled? Who needs to install?
Dedicated Server Yes no only server
Peer-to-Peer Hosting Not Yet only on the host only the host
Single Player Game Not Yet Yes self (of course)

๐Ÿค” If you aren't sure what some of this means, details steps are provided below to walk you through the setup process.

Map Considerations for Installation or Uninstallation

  • Does adding this mod require a fresh map?
    • No! You can drop this mod into an ongoing map without any trouble.
  • Does removing this mod require a fresh map?
    • No! You can remove this mod from an ongoing map without any trouble.
    • Any buffs currently applied to players from this mod will be silently removed when they log in next.
    • Journal Entries added to the player Journal will unfortunately remain with their Localization stubs (but will otherwise have no text within them and will not impact gameplay at all).

Windows/Linux Installation (Server via FTP from Windows PC)

  1. ๐Ÿ“ฆ Download the latest release by navigating to this link and clicking the link for amnesia.zip
  2. ๐Ÿ“‚ Unzip this file to a folder named amnesia by right-clicking it and choosing the Extract All... option (you will find Windows suggests extracting to a new folder named amnesia - this is the option you want to use)
  3. ๐Ÿ•ต๏ธ Locate and create your mods folder (if missing):
    • Windows PC or Server: in another window, paste this address into to the address bar: %APPDATA%\7DaysToDie, then enter your Mods folder by double-clicking it. If no Mods folder is present, you will first need to create it, then enter your Mods folder after that
    • FTP: in another window, connect to your server via FTP and navigate to the game folder that should contain your Mods folder (if no Mods folder is present, you will need to create it in the appropriate location), then enter your Mods folder. If you are confused about where your mods folder should go, reach out to your host.
  4. ๐Ÿšš Move this new amnesia folder into your Mods folder by dragging & dropping or cutting/copying & pasting, whichever you prefer
  5. โ™ป๏ธ Restart your server to allow this mod to take effect and monitor your logs to ensure it starts successfully:
    • you can search the logs for the word Amnesia; the name of this mod will appear with that phrase and all log lines it produces will be presented with this prefix for quick reference

Linux Server Installation (Server via SSH)

  1. ๐Ÿ” SSH into your server and navigate to the Mods folder on your server
    • if you installed 7 Days to Die with LinuxGSM (which I'd highly recommend), the default mods folder will be under ~/serverfiles/Mods (which you may have to create)
  2. ๐Ÿ“ฆ Download the latest amnesia.zip release from this link with whatever tool you prefer
    • example: wget https://github.com/jonathan-robertson/amnesia/releases/latest/download/amnesia.zip
  3. ๐Ÿ“‚ Unzip this file to a folder by the same name: unzip amnesia.zip -d amnesia
    • you may need to install unzip if it isn't already installed: sudo apt-get update && sudo apt-get install unzip
    • once unzipped, you can remove the amnesia download with rm amnesia.zip
  4. โ™ป๏ธ Restart your server to allow this mod to take effect and monitor your logs to ensure it starts successfully:
    • you can search the logs for the word Amnesia; the name of this mod will appear with that phrase and all log lines it produces will be presented with this prefix for quick reference
    • rather than monitoring telnet, I'd recommend viewing the console logs directly because mod and DLL registration happens very early in the startup process and you may miss it if you connect via telnet after this happens
    • you can reference your server config file to identify your logs folder
    • if you installed 7 Days to Die with LinuxGSM, your console log will be under log/console/sdtdserver-console.log
    • I'd highly recommend using less to open this file for a variety of reasons: it's safe to view active files with, easy to search, and can be automatically tailed/followed by pressing a keyboard shortcut so you can monitor logs in realtime
      • follow: SHIFT+F (use CTRL+C to exit follow mode)
      • exit: q to exit less when not in follow mode
      • search: /Amnesia [enter] to enter search mode for the lines that will be produced by this mod; while in search mode, use n to navigate to the next match or SHIFT+n to navigate to the previous match

Philosophy

I want for there to be a way to keep maps/players in a 'healthy' state of play for 6 months or beyond - perhaps even getting to the point where maps can be evergreen: keeping a map active until the following 7 Days to Die Alpha Release (barring patches that The Fun Pimps determine will require map wipes).

As an 7DTD admin and modder for a few years now, I've noticed some problematic patterns and this mod was created to take a stab at addressing some of them.

๐Ÿ“Š Progression is a core piece of any RPG. Once the opportunity to progress has faded or become convoluted, player engagement/enjoyment evaporates with time.

Observation Problem How Amnesia attempts to address it
Many admins wipe maps within 1-2 months - often for reasons related to map corruption (not addressed in this mod) or player balance. New players are often discouraged the steep level difference between them and others who started earlier while more casual players are discouraged from the raging progress of highly engaged players. Dynamic rebalancing of the risk/reward structure that directly impacts player progress offers a new challenge for engaged players and rewards the more cautious play style of casuals. It also provides hope for the new players that if they play carefully, they can grow in level and meet other more aggressive players where they are. More details about each of these player types in subsequent rows.
Wasteland GameStage changes are... game breaking: Level 50 players in Wasteland will be looting end-game, max level gear. Wasteland is really cool and I love the changes TFP made, but dying does not currently provide a significant deterrent to acquiring all the end-game gear. There is NO REASON to avoid Wasteland since it's a treasure-trove. Rather than nerfing Wasteland, I find it much more fulfilling to provide a meaningful but not debilitating drawback to death: dynamic, configurable player state reset. Additional suggestions are to gate the Wasteland behind instant-death radiation without a full rad suit similar to Darkness Falls (see standalone mod Radiation Wasteland โ€“ Server Side) or add an environmental effect to limit time spent in the Wasteland (see Immersive Radiation for the Wasteland).
Highly Engaged Players log in regularly and level up quickly. These same players burn out of maps quickly and become disengaged. Amnesia rewards the risky behavior and thrill-seeking growth that Highly Engaged Players pursue and meets them with a greater challenge to avoid dying. Dying enough will reset their levels (and more, if configured), but will also encourage them with a one-time hour-long XP boost to encourage further engagement.
New/Casual/Cautious Players have a hard time feeling like they can't catch up to others. This discourages new players from sticking with a server community for long since they don't have time time to invest in keeping up with highly engaged players and encourages. So they leave for another server that's more "fresh" or they leave 7DTD entirely. Amnesia supports variable progression that can be tuned by the admin. Level and KDR stat resets help to keep these players feeling like they have the opportunity to advance in meaningful ways. Cautious players will simply die less often since they're more risk adverse. While their growth will be slower, they will maintain their growth more often.

โš ๏ธ I will admit Amnesia is not the kind of thing I expect all players will prefer. Keep this in mind and discuss with your community if this is something they're comfortable trying out. I'd encourage an open dialog about options/settings so there are no unpleasant surprises or unnecessary drama when player characters eventually suffer memory loss.

Attribution

amnesia's People

Contributors

jonathan-robertson avatar

Stargazers

 avatar

Watchers

 avatar  avatar

amnesia's Issues

๐Ÿ’ฌ Add Dialog Option to Get Treatment From Trader

dialogs.xml

<config>
    <!-- <append xpath="/dialogs">
        <response id="recovery" text="dialog_trader_response_recover" nextstatementid="admin">
            <requirement type="Admin" requirementtype="Hide" />
        </response>
    </append> -->
    <insertBefore xpath="/dialogs/dialog[@id='trader' or @id='traderTest']/statement[@id='start']/response_entry[@id='admin']">
        <response_entry id="background" />
        <!-- <response_entry id="recover" /> -->
    </insertBefore>
</config>

buffs.xml

        <buff name="buffAmnesiaRecoverLife" hidden="true" remove_on_death="false">
            <duration value="0" />
            <effect_group>
                <passive_effect name="RunSpeed" operation="perc_set" value="0" />
                <passive_effect name="WalkSpeed" operation="perc_set" value="0" />
                <passive_effect name="CrouchSpeed" operation="perc_set" value="0" />
                <passive_effect name="JumpStrength" operation="perc_set" value="0" />

                <triggered_effect trigger="onSelfBuffStart" action="ModifyScreenEffect" intensity="1" fade="1" effect_name="infection" />
                <triggered_effect trigger="onSelfBuffRemove" action="ModifyScreenEffect" intensity="0" fade="1" effect_name="infection" />

                <triggered_effect trigger="onSelfBuffStart" action="ShowToolbeltMessage" message_key="buffAmnesiaRecoverLifeTooltip" />
            </effect_group>
        </buff>
        <buff name="buffAmnesiaRecoverLifeMaxed" hidden="true" remove_on_death="false">
            <duration value="2" />
            <effect_group>
                <triggered_effect trigger="onSelfBuffStart" action="RemoveBuff" buff="buffAmnesiaRecoverLife" />
                <triggered_effect trigger="onSelfBuffStart" action="ShowToolbeltMessage" message_key="buffAmnesiaRecoverLifeMaxedTooltip" />
            </effect_group>
        </buff>
        <buff name="buffAmnesiaRecoverLifeMissingPoint" hidden="true" remove_on_death="false">
            <duration value="2" />
            <effect_group>
                <triggered_effect trigger="onSelfBuffStart" action="RemoveBuff" buff="buffAmnesiaRecoverLife" />
                <triggered_effect trigger="onSelfBuffStart" action="ShowToolbeltMessage" message_key="buffAmnesiaRecoverLifeMissingPointTooltip" />
            </effect_group>
        </buff>
        <buff name="buffAmnesiaRecoverLifeSuccess" hidden="true" remove_on_death="false">
            <duration value="2" />
            <effect_group>
                <triggered_effect trigger="onSelfBuffStart" action="RemoveBuff" buff="buffAmnesiaRecoverLife" />
                <triggered_effect trigger="onSelfBuffStart" action="ShowToolbeltMessage" message_key="buffAmnesiaRecoverLifeSuccessTooltip" sound="spawnInStinger" />
            </effect_group>
        </buff>

โš™๏ธ Add support for enable/disable different levels of player wipe

For Example

  • One admin may want to support erasure of skill and levels, but not of books

  • Level (Default: Reset to 1)

  • XP to Next Level (Default: Reset to 0)

  • XP Deficit (Default: Reset to 0)

  • Unspent Skill Points (Default: Reset to 0)

  • Learned Skills (Default: Unlearn All)

  • Crafting Recipes (Default: Unlearn All)

  • Book Collection (Default: Forget All)

  • Current Quests (Default: Remove All)

  • Trader Progress (Default: Reset)

  • Map Explored (Default: ?)

  • Map Waypoints (Default: ?)

  • Sleeping Bag Position (Default: Retain)

  • LCB Ownership (Default: Retain)

  • Current Party (Default: Remain)

  • Allies/Friends (Default: Keep)

๐Ÿ†• Add Support for A21

7DTD A21 Experimental hasn't been released yet, but I plan to have support for A21 ready in time for the general release of the game.

๐ŸŽ– Represent kill counts in message chat

Add ranking visuals as a prefix for player and zombie kill counts (for recognition/reputation).

Also determine titles to accompany player names in chat.

[Red]A[Green]S Battleborne the Zombie Slayer: ""

๐Ÿฅ Add Memory Therapy to Trader

  • Remove forgetting elixir item
  • Add option to respec at trader
  • Set cost based on level, maybe 1/2 the cost of your memory recovery

Tasks

  • add console command to trigger respec
  • remove forgetting elixir from loot
  • remove forgetting elixir from traders
  • add Therapy option at trader
  • add Therapy price
  • add supporting dialog and purchase processes for Therapy

Tests

  • reset skill points via Therapy properly flushes purchased skills and returns skill points

๐Ÿ’€ Change death text to inform player of what to expect based on remainingLives

More Lives Remaining

Hours later you awake in a familiar place. Groggy and sore from you recent adventure, you wonder how you ever managed to make it back alive.

This server provides a set number of lives before total character deletion and this requires you to evaluate every risky situation more realistically. You have x/y Remaining Lives and are about to use one to return from the brink of death. You can Recover Lives by visiting Trader Jen and paying for her experimental rejuvenation treatments.

About to be Wiped

Darkness closes in around you as everything - even your own body - begins to feel more and more distant. You know you won't be coming back.. not this time.

IMPORTANT: If you were just killed due to game glitches, or suspect another player of defeating you with hacking or exploits, DO NOT RESPAWN. Instead, reach out to an admin. After investigating your admin may decide it's appropriate to provide you with another life to prevent your character from resetting.

Image

โ™ป๏ธ Add minimum level value that can be upgraded only by reaching level 300

๐Ÿ”ฌ Instead, what if the player who reaches 300 automatically resets to something like level 50 and this is his new minimum level forevermore?
๐Ÿ”„ each time the player reaches 300, an extra x levels are added to his minimum count. That would extend the game to last far longer even for driven players.
๐ŸŽ–๏ธ This could perhaps be represented as some kind of Prestige value somewhere for other players to see.
๐Ÿ† This way, players "always" have something to work toward

๐Ÿš‹ Buff/Debuff during final life (most risk)?

Final Life (Best Life?)

In the final stage (living your final life), this buff will show all the time and possibly flash.

This final stage will provide certain benefits (which can be disabled/enabled by admin) possibly coming from within this list:

  • steep bonus to xp gained (2x? 3x? - to be set by admin)
  • bonus critical/dismemberment chance? (zombies)
  • low boost to hp recovery?
  • maybe bonus discount for services purchased/sold?
  • greatly reduced chance of breaking leg?
  • boost chance of finding ammo?
  • boost chance of finding healing items?
  • boost change of finding coins?

๐Ÿง  Reset to Skills Acquired at Start Level

Description

Instead of resetting and freeing up skill points (free forgetting elixir effect), record the 49th skill point set (or record at player level 50?) and apply that config upon reset.

Tasks

  • Record each skill invested by each player to files
  • Save skill progress to a file, load it from a file
  • Allow viewing of each skill via console
  • Track unspent skill points
    • wait... a final sync package sends when the player dies, right? So... we don't need to track this during gameplay, right?
    • except for... perhaps the forgetting elixir effect? If this is fired from the server, does this mess things up? Shouldn't. Only rewinding should care about currently unused skill points; full memory reset would calculate total skill points expected.
  • Update reset pattern to roll back to a given level, first consuming unspent points, then consuming spent points
  • Add integrity check on player data file sync
  • Reset with core tools, then replay skills chosen, spending as many skill points as able

Gold Plating?

  • Add console commands to add x, remove x levels
  • Add reconciliation logic for moments when the server failed to record updates?
  • Track skill points added via game events?
  • Track skill points added via quests?

Related

๐Ÿ”ซ Prevent loss of lives from PVP kills

Might include this as an option, but discouraging PVP is usually a horrible idea.

Drop style would be based on server's rules. So if the server is set to drop the backpack, that's all that would drop on death.

๐Ÿ‘œ Add support for bag drop control based on remaining lives

For example...

Lives Remaining Drop On Defeat
2/2 Drop Nothing
1/2 Drop Backpack Only
0/2 Drop Everything

๐Ÿ’ญ Might have to actually simulate bag drop and inventory manipulation since trying to feed spoofed GameStat changes are tough to do on time (tricks player into thinking server configs are different from what they actually are).

โš™๏ธ Adjust Workflow for Memory Loss

Current

  1. Once player exceeds the long-term memory threshold, dying causes memory loss
  2. Player can use Trader Jen's Memory Booster to add Hardened Memory buffs which operates similar to a one-time shield against memory loss
flowchart LR
    natural[[Natural]]-->incap[[Incapacitated]]
    natural-->|use memory booster|hard[[Hardened Memory]]
    hard-->incap-->|hardened|natural
    incap-->|not hardened|amnesia[Lose Memory, Reset to Level 50]
    amnesia-->natural

Planned

  1. Players will receive a long-term ailment/debuff called "Fragile Memory" upon death once they have reached the long-term-memory threshold. Player who dies with Fragile Memory will experience Memory Loss (and keep Fragile Memory)
  2. Player can use Trader Jen's Memory Booster to cure Fragile Memory (and this explanation will be included in the Fragile Memory debuff description for reference any time).
flowchart LR
    natural[[Natural]]-->incap[[Incapacitated]]
    incap-->|not fragile|fragile[[Fragile Memory]]
    incap-->|fragile|amnesia[Lose Memory, Reset to Level 50]

    amnesia-->fragile
    fragile-->incap

    fragile-->|use memory booster|natural

Why the Change?

The current flow is confusing players and there isn't a natural way to warn players when Amnesia activates. This adjustment will serve both purposes: giving players a warning, and also fitting within the existing "injury/ailment needs a cure" workflow that players are already used to.

โ™ป๏ธ Lose Configurable Number of Levels on Reset

Description

๐ŸŽ‰ Thanks to Waymaran#4137 (Discord) for this idea!

... could you put another option that subtracts 10 lvl when you die? In other words, you can configure so many lvl that you lose when you die. Eg I would configure that 10 lvl is lost when dying successively unless you use the booster pill. Thanks, I'm just asking.


Depends on

Bonus

  • also add a console command to add levels to or remove levels from a given player

โš”๏ธ Remove Quests the Right Way! ๐ŸŽ‰

Found out a very likely approach to removing quests!
Server will be reading player data already on death.
Instead of having to disconnect player so player can come back with manipulated player data file... the server can send the player a console command to have the player's client issue the command instead (which is supported).

ConnectionManager.Instance.Clients.ForEntityId(player.entityId)
?.SendPackage(NetPackageManager.GetPackage<NetPackageConsoleCmdClient>().Setup($"removequest {questId}", true));

๐Ÿฅ Replace Pills with Treatments

Idea

  • No more pills
  • Receive treatment at any trader for a cost
  • Cost of treatment goes up based on player's current level

Considering

  • Add option to heal other ailments at trader (flat rate, instant heal)

Tasks

  • add dialog options
  • add system for purchasing and getting change
  • remove fragile memory when purchase of treatment is successful
  • sync and display sale price of treatment
  • remove memory pills
  • include responses (toolbelt tips, sounds) for all conversation terminators (or use quests)
  • update cost colors to match quest highlight color
  • test with all other mods enabled

Fix NRE in EntityKilled.Handle

2022-09-26T23:22:00 1189.580 EXC Object reference not set to an instance of an object
at Amnesia.Handlers.EntityKilled.Handle (Entity killedEntity, Entity killerEntity) [0x00000] in <77e44bbccb234bb7ac057ede33f51237>:0

UnityEngine.StackTraceUtility:ExtractStringFromException(Object)
Log:Exception(Exception)
Amnesia.Utilities.ModLog:Error(String, Exception)
Amnesia.Handlers.EntityKilled:Handle(Entity, Entity)
ModEvent`2:Invoke(Entity, Entity)
EntityAlive:DMD<EntityAlive::OnEntityDeath>(EntityAlive)
EntityAnimal:OnEntityDeath()
EntityAlive:DMD<EntityAlive::ClientKill>(EntityAlive, DamageResponse)
EntityAlive:Kill(DamageResponse)
EntityAlive:ProcessDamageResponseLocal(DamageResponse)
EntityAlive:damageEntityLocal(DamageSource, Int32, Boolean, Single)
EntityAlive:DamageEntity(DamageSource, Int32, Boolean, Single)
EntityAnimal:DamageEntity(DamageSource, Int32, Boolean, Single)
BlockDamage:OnEntityCollidedWithBlock(WorldBase, Int32, Vector3i, BlockValue, Entity)
ChunkCluster:CheckCollisionWithBlocks(Entity)
World:CheckEntityCollisionWithBlocks(Entity)
Entity:ccEntityCollisionResults()
Entity:ccEntityCollision(Vector3)
Entity:entityCollision(Vector3)
EntityAlive:DefaultMoveEntity(Vector3, Boolean)
EntityAlive:MoveEntityHeaded(Vector3, Boolean)
EntityAlive:OnUpdateLive()
EntityAnimal:OnUpdateLive()
EntityAlive:OnUpdateEntity()
World:TickEntity(Entity, Single)
World:TickEntitiesSlice(Int32)
World:TickEntitiesFlush()
World:TickEntities(Single)
GameManager:UpdateTick()
GameManager:gmUpdate()
GameManager:Update()

๐Ÿ’ฌ Add Opt-In Mode

On some servers, players might not all want to participate in Amnesia's features. For those situations, Opt-In mode provides players interested in engaging with this feature certain benefits at the cost of having a limited number of lives before being reset.

Upon reset, players will return to level 1 and whatever other options set by the admin, but will be removed from the limited lives mechanic.

The XP multiplier while enrolled in Opt-In mode can be set by the admin.

๐Ÿ“ Add buff explaining lives mechanic

General Buff (Informational)

When a player dies, this buff can show for some period of time.

It will provide guidance to seek out Trader Jen to receive intense treatment to restore lives (for money, a level, and the loss of a random assigned skill point or loose skill point - a feature to be added later).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.