Alright, I have decided to throw up the current version of my code.
Nothing too fancy but it has a few important fixes that honestly should have been out an eternity ago and one or two new features/changes.
It could be buggier elsewhere, and the documentation changes are very unfinished (the comments were moved much lower though) along with any new features it has being incomplete.
Additionally there is now added support to use this modification for single-player and as a client in multiplayer! (Though ridiculously raw right now and almost featureless, will likely work on this aspect once the new update to barotrauma has been finally released and have the time to work on making it work for that new version).
First off the immediate basic changes I can think of:
- new "In game info" list which allows the host to view all clients and creatures which exist for a brief oversight, this does not currently work properly for multiplayer and has been explicitly disabled as a client until I get more information and the next game update is released (For its much improved permissions changes).
- new spy mechanic via in game info, which will allow hosts to view the inventory and field of view / HUD information from a clients perspective, this also allows for item manipulation of a character/client and acts as a method to both quickly find the character, as well as a double click allowing control of none clients such as fish.
- The mass disconnection due to respawning fish dying (As their invisible and do not exist to clients) is resolved, it should have been out far far earlier but the mod had broken/cheaty issues for clients in its state when realizing this and I apologize for being too busy.
- Name colouring for characters has been improved, including Coalition/Renegade team colours alongside the colour changes to a characters state such as husk infections.
- Client/Server code syncing additions, if a client is running this modification and joins a server also running this modification (Which allows for this in its nilmodsettings.xml) A few specific variables will be synced to the client, although basic right now this syncs the modification so it looks much better for the clients side such as less jumpy fire changes, as well as opening up new changes such as ocean colour or allowing clients the same full-info hud as the host.
- New additional "Zoom boost" handling on controlling a none human creature for the host, keeping their camera further zoomed out for larger fish such as molochs and increasing the range slightly.
- Possible fixes (Or breaks) to Health regeneration variables.
- Ability to change host name from the net lobby on the fly.
- Ability to enforce clients to specific teams and ability to allow unbalanced teams (This is more for tornament-style barotrauma setups), controls for this are near the players names and I will likely make it less cluttered in the future. For now the host cannot enforce which team he defaults to (I have yet to write up GUI on this).
- Fixes since last release to how armour code was handled, please ensure you correctly check or wipe the Armour variables in ServerModAllCharacterSettings if you have not already from what was written in the opening post months ago.
- Added "Admin" slots and "Spectator" slots, these are a fixed number of slots for those with the Ban permission or have decided not to play in the round which will NOT count towards the player counts for a server on the server list or joining the server. As a note however if one is both an "Admin" and a "Spectator" they will count towards both (such as 1/2 and 1/4 for admin and spectator slots). additionally those beyond the slot counts will count as normal players so a server that has a spectator who decides to play will turn a server 17/16 (But not allow an additional spectator to join). a spectator cannot join if the server is 16/16. Please note this can effect bandwidth if you have too many players spectating or playing.
- Added support for automatic campaign starts (However odds are it will get stuck on the same undoable save so its ill advised and untested) and improved support for the dedicated server with Timing fixes (which fixes the railgun usage, submarine movement and other oddities), config loading fixes and improvements to displayed information on start.
- Added additional information to loading screens if/where available, this is also incomplete for now. This information also includes the external IP of the server both for client and dedicated servers if available.
- Additional logging for status effect damages, modifications to logging of damage information to better log Player vs Player, Fish vs Player and Player vs Fish damage distinction.
- Further improvements to methods designed to attempt to tackle Desync issues and networking issues, such as further avoiding character deletions which may cause unknown packet header spam to clients and occasional item/character/hull Sync changes to periodically re-sync positions (Such as diving suits in the wrong place after a crash). Please ensure you don't set the sync variables too high or this will actually cause issues if your bandwidth is insufficient for it.
- Characters now sync their basic status more inline with how it will be handled next update, which should help reduce odd issues in character networking (But not all of them).
- Minor improvements to battery syncing for respawn shuttles.
- Slight work on XML format for documentation, moved to bottom of file and slight addition to the information available (Still needs way more work).
- Modified thrown error for item position updates (Is thrown once but repeats without opening the console again, included server/client position information if a client wishes to track down the source and attempt to stop the error for others such as deconstructing a bad detached button, hosts could be told the position to aid in fixing potentially). Sadly this error cannot be fixed as the network syncing on attachment code is fundamentally broken right now.
- Addition of a new "Stun Resistance" mechanism on a per-creature basis for those who have learned how to modify the XML's server-side only using the "BypassMD5" Setting.
That is more or less most of the changes I can remember, for the new stun resistance the variables are:
stunresistbase="0.00" (0.00 - 1.00) where the resistance to stun will always be at least that % (0.10 being 10% minimum resistance to stun damage).
stunresistincreasemult="0.00" (0.01 = 1% of stun after calculated resistance is converted into additional stun resistance for the next attack).
stunresistdecreasespeed="0.01" (0.01 = 1% flat stun resistance removed per second such as 10% resistance taking 10 seconds to fade at 0.01).
stunresistendmult="1.0" (0.1 = Set stun resistance to 10% of its current total stun resistance once the character wakes up from a stun allowing you to effectively reset or retain this at will)
Stun resistance is applied to an attack, but the stun resistance added from that attack will not take effect until the next attack, stun resistance increase is based off the final (After stun resistance) value of the hit, not the original size of the stun, so each additional stun will have diminishing gains in resistance.
If a character has resistance then it will show in the logs the current resistance value, it applies to weapons and status effects alike.
And for adding it should look something like (on where to add this):
<Character name ="" stunresistbase="0.15" stunresistincreasemult="0.01" stunresistdecreasespeed="0.01" stunresistendmult="0.2">
Please note players cannot join your server if you edit the XMLs but do not setup "BypassMD5" as the content packages will no longer match.
If you have issues with the update, please let me know.
Host of ARS (A Random Server)