# Killing Fever Online
@Crystalwarrior's server overhaul is finally here! A long-teased prospect has been finished over the course of two weeks.
"What is the purpose of this?" - Simple. Code bad, code rewritten, code now better. And now you have a treasure trove of amazing features with it as well thanks to better and cleaner code tremendously increasing the speed by which new features could've been introduced.
## Server Rewrite Changelog
***PLEASE NOTE*** as this was a massive two-week one-coder project there may be _new bugs_ even with _old functionality!_ If you discover an issue, please make an [issue report](https://github.com/Crystalwarrior/KFO-Server/issues) or in `#botchwatch` on the KFO discord. Let me go over everything this introduces **so far**...
### Casing Features Return
- If you are familiar with Vanilla or Case Cafe, all of the Casing features have been properly transferred.
- Each area can once again have /status, /doc, playercounts and etc.
- Your area list will now properly display such information as CMs, number of players, status of the area, etc.
- There is now an /afk system allowing you to inform others when you go afk.
- Jukebox system allows the area to replace on-demand song playing with a "playlist" system.
- CMs are now treated as per-area managers.
- There is no longer a distinction behind "master" CMs - every CM is equal.
- If this is abused in any way, swiftly contact the moderation team to help you resolve such a situation.
- Testimony System is now implemented. Further explanation below.
#### New Testimony System
- You can now record casing testimonies for playback!
- To initiate, someone must be a /cm of the area in a pos unlocking judge buttons (GMs count as CMs for all areas).
- Someone must state the testimony title next. It *must* start with `--` and end with `--` e.g. `--This is my Testimony--` (it can be centered with `~~--Testimony--`)
- Once the testimony title is posted, the Judge must press the **Witness Testimony** button, and the Testimony Recording will begin. Every message said after that point will be recorded as testimony.
- Once the testimony is finished, someone has to say "end". As long as the message contains these three letters *only* (meaning punctuation marks and other fancy symbols are ignored), it will count as an ending to the testimony. You can say a simple `end` or go for a fancy `==>!!END!!<==` if you're feeling cheeky.
- After that point, testimony is recorded and can be accessed with /testimony by anyone to see its contents.
- The CM can replay the testimony title, alerting everyone the testimony has begun (and stopping testimony recording if there still was one), by using the **Cross-Examination** judge button.
- Anyone (preferably the defense attorney) can use the `>` symbol to progress to next statement, `<` to progress to previous statement, and `>4` or `<4` to jump straight to statement 4.
- Witnesses can *add* a new statement after the last accessed one using `++Message`, or `**message` to *amend* (replace) it.
- The CM of the area can also use these commands:
- testimony \[idx] -- Display the currently recorded testimony (indexes will be visible). Optionally, index can be passed to move to that statement. Can be used by anyone.
- testimony_clear -- Clear the current testimony.
- testimony_remove \<idx\> -- Remove the statement at index.
- testimony_amend \<idx> \<msg> -- Edit the spoken message of the statement at index.
- tl;dr shits wack, there's no hardcoded pos restrictions so you don't have to use it for just casing either. Go wild!
### Killing Fever Online features
- /help has been greatly overhauled - it is now a categorized list of all available on-server commands. /help will ALWAYS be the most up-to-date command information. Standalone command documentation pending.
- Hub system, area links have been greatly overhauled according to [this brainstorm](https://github.com/Crystalwarrior/KFO-Server/issues/1). While the linked issue is a more technical post, hub system summary will come next.
#### Whispering
- You can now whisper using /w \<msg> or /w \<id(s)> \<msg> in the in-character chat. id is character ID obtainable from /getarea. If no ID is provided, you will whisper to everyone on the same position as you.
#### Listen to Position
- You can listen to your current position with /listen_pos.
- Any messages outside of that position will be transferred to your OOC.
- To undo, /unlisten_pos.
#### Specator System
- You no longer need to use the "Spectator" character. All you have to do is press the "Spectator" button at the bottom of the character list.
- It no longer disappears, either, and you can speak in OOC when you're a spectator. You can switch back and forth with no trouble anymore. I made AO2's shit work.
- /switch -1 and /switch Spectator both work as well.
#### Hiding in Evidence
- Yes, you heard me right. You can now ***hide in evidence***.
- As a player, you use /hide \<name> or /hide \<idx> where id is the evidence index.
- As a CM, you need to make sure:
- Your area's /evidence_mod is HiddenCM
- That piece of evidence \<can_hide=1>
- As a CM you can also set it up so:
- Hiding in evidence reveals hidden pathways:
- /onelink 4 (create one-way link to area 4)
- /link evidence 0 (link evidence at index 0)
- Now when you /hide in that evidence as a player, you'll see the path!
#### Hub System
- /doc is back to being per-area. Use /info to define hub-specific information.
- CMs are no longer the top dog - The Elder Game Masters have finally arrived to assert their dominance. /gm to become a GM of the hub, /ungm to stop being a GM.
- gm \<id> -- Grant that person GM status
- ungm \<id> -- Remove GM status from that person
- There is no longer a distinction behind "master" GMs - every GM is equal.
- If this is abused in any way, swiftly contact the moderation team to help you resolve such a situation.
- Hubs can now selectively enable/disable the ARUP (ARea UPdate) system. This refers to the extra information such as CMs, Playercounts, etc.
- hub_arup_enable
- hub_arup_disable
- You can also decide if you want area playercounts to be visible or not.
- hub_hide_clients
- hub_unhide_clients
- /help hubs for more info
#### Move Delay system
- The Move Delay System is a combined length total for how many seconds the player will be penalized before they will be able to move again.
- player_move_delay \<id> \[delay] -- Set the player's move delay to a value in seconds.
- area_move_delay \[delay] -- Set the area's move delay to a value in seconds.
- hub_move_delay \[delay] -- Set the hub's move delay to a value in seconds. Can be negative.
- Can be negative. Delay must be from -1800 to 1800 in seconds or empty to check.
#### Area Link System
- Area links are no longer 'dumb' numbers - they are full-fledged ***pathways***.
- What this means is area links now carry extra information, such as:
- locked -- whether or not this link is locked.
- hidden -- whether or not this link is hidden from area list and /area_links.
- target_pos -- what position you will end up in when going through this link.
- can_peek -- whether or not you can peek through this link.
- evidence -- attached evidence from which this link can be seen when hidden in. Yes, you can hide inside evidence.
- Associated commands and more can be seen with /help area_access
#### Area Functionality
- ***ALL*** area preferences are now consolidated into a single /area_pref command! /help area_pref for more info on usage.
- In tl;dr, you can change every true/false toggle on the area using that nifty command and dictate exactly how you want it to work as a CM.
- Some preferences can only be modified by a GM, such as 'can_cm' - if you can /cm this area.
#### Music and Ambience
- *claps hands* music lists can now be changed on a per-client basis. That means you can change your own music list with /musiclist command.
- You can display available music lists with /musiclists.
- CMs can change area's music list with /area_musiclist.
- GMs can change hub's music list with /hub_musiclist.
- CMs can allow if players can use music from their own music lists using 'music_override' preference.
- Otherwise, server+hub+area music lists will be used.
- Area can replace the hub's music list using replace_music pref.
- Areas can now be configured to auto-play last song every time a user enters the area using the music_autoplay preference.
- Areas can block DJing using can_dj preference.
- You can enable/disable jukebox functionality using jukebox preference.
- You can play a random song using /random_music. /help random_music for more info
#### Keys and Character Data
- You can define keys per-character. The key system uses commands such as keys_set, keys_add, keys_remove and keys.
- Use /keys to check your own keys.
- /help characters for more info.
- Move delay will also be saved to the character data.
- Use /save_character_data \<path> to save that data to storage/character_data/ on-server and /load_character_data \<path> to load it.
#### Broadcasting
- You can now /a \<msg> or /a \<id(s)> as a CM or GM. id is area ID obtainable from /area. The msg will be transmitted over targeted areas, or all owned areas.
- For old functionality, the /broadcast_ic command has been renamed to /broadcast \<id(s)>. Clear with /clear_broadcast.
- Your IC messages, Music and Judge Buttons will be broadcasted to owned areas.
- /a will take priority over the /broadcast function however.
- /help hubs for more info.
#### Renamed commands
- /poslock is now /pos_lock
- /savehub is now /save_hub
- /loadhub is now /load_hub
- /key_set etc. are now /keys_set
- /cleanup is now /clear_hub
- There may be more I missed. If a command the way you spell it doesn't work, use /help.