This is quite a big build to get out before Christmas, but there's a lot to enjoy over the holidays!
There's heaps of quality of life changes - check out the full changelog for all of them, but some highlights include:
- Class-Change and Flip buttons on enemy siege engines
- Flags that fall into the void are instantly returned
- Trampolines can bounce more items/players simultaneously
- Grain plants can be "cut" by archers by hitting the tile at the base of the plant with an arrow
- Players can only report a player once per round (avoids spam/abuse)
- Fireplace Improvements for TDM (voted by community in #democracy channel)
- Arrows become fire arrows when passing through fire.
- Extra commands for sandbox/testing: !allmats, !woodstone, !stonewood
- New brighter and more descriptive hover messages for killstreaks and resources - let us know if the colours need tuning!
Big thanks to all the github contributors[github.com]
that made this such a busy month, for everyone who voted in #democracy, and everyone involved in discussions over on Discord[discord.gg]
- your involvement is what makes this game so great!
3D rendering capabilities have been added for custom scripts. This can be used for in-world animated 3d objects, but also for fully 3d modded servers. Community member GoldenGuy has started working on a Doom/Wolfenstein inspired FPS mod using the changes - youtube preview here
. We look forward to seeing what else the community does with these new capabilities.
Several tournaments worth of accolades have been added, and some extra community and moderation accolades have been assigned. Congratulations to everyone, and thanks to the community for getting behind this system!
We'll be trying to get another update out before we enter a mead-infused hibernation over the new year period, but hopefully this sates your hunger til then!
Let me know if I've missed anyone's changes in the changelog, it was a big one - and as always, Have Fun!
[added] New hover messages
[modified] trampoline logic: configurable cooldown limit + less drastic safety protocol + simplified cooldown timer check (thanks makmoud98)
[modified] holiday script; improved efficiency by only syncing when necessary (thanks makmoud98)
[fixed] removed chance for string hash collisions to cause problems with command ids
[modified] string hash function for something a little less likely to involve collisions
[added] kag_clap emote sprite (not implemented ingame)
[added] "g_locale_warnings" variable to log missing translations (thanks asu)
[added] Grain plants can be 'cut' by arrows when shot at the block below (thanks epsilon)
[fixed] emote menu disappears when you die (thanks epsilon)
[modified] Arrows pass through migrants (thanks epsilon)
[added] raycast check for vehicle seats (thanks epsilon)
[added] Normal arrows are ignited when passing through flames (thanks epsilon)
[fixed] unique player can only report another unique player once per round (thanks vik)
[added] Instantly return flags that fall into the void (thanks epsilon)
[fixed] bug where dead player isn't detached from quarters when sleeping (thanks epsilon)
[added] fireplace improvements for tdm - lights arrows, cooks fish, can be extinguished (thanks epsilon)
[added] archers don't auto-switch to special arrows (prevents accidentally wasting them) (thanks epsilon)
[added] !allmats, !stonewood, !woodstone commands (thanks blubahub)
[added] better crouch code (thanks epsilon)
[added] sponge handling tweaks
[added] placeholder support tier info + new extra.dat file for storing it
[added] better saw collision filter (thanks epsilon)
[fixed] emitsound for spectators (thanks monkey_feats for the report)
[added] flip and change class buttons on enemy siege engines (thanks epsilon)
[added] extra criteria for gold auto-pickup (less inventory clutter unless you are already collecting gold) (thanks epsilon)
[removed] guidelines from steam_content_ru file
[renamed] store_content_en.txt -> steam_content_en.txt
[added] Missing flags from the fotw steampage list (both eng/ru) (thanks biurza)
[added] moderation accolade support
[added] shield accolade badge
[modified] accolades_data.cfg with OKSA/Forum/Discord staff + more tournaments (thanks bunnie, paralogia)
[fixed] bad condition in script Render::SetTransform error check
[added] new render transform functions
[added] copy operator for Random objects (thanks ShadowBlitz16 for the report)
[added] script-visible string::getHash() function
[added] join processing hooks
if present, should return -1 for "don't care", 1 for "force-join", 0 for "force-kick"
first meaningful result is used (ie, script order matters)
`int onProcessPreJoin(CRules@ this, const string &in username)`
called after token auth and banflags, before anything else is checked (even slots)
`int onProcessFullJoin(CRules@ this, const string &in username)`
called if the server's slots are full, allows bypassing the slot restriction
`int onProcessJoin(CRules@ this, const string &in username)`
called if all other checks passed, can be used to deny entry at that stage
(including to override onProcessPreJoin result)
note: the CPlayer is NOT created at this stage - you only have the username to work from
the user's token _is_ authorised, so "they are who they say they are"
[added] Matrix script namespace for generating/manipulating matrix contents into float arrays
void Matrix::Multiply(const array<f32> &in a, const array<f32> &in b, array<f32> &inout into)
void Matrix::MultiplyImmediate(const array<f32> &inout a, const array<f32> &in b)
void Matrix::SetScale(const array<f32> &inout a, float x, float y, float z)
void Matrix::SetTranslation(const array<f32> &inout a, float x, float y, float z)
void Matrix::SetRotationRadians(const array<f32> &inout a, float x, float y, float z)
void Matrix::SetRotationDegrees(const array<f32> &inout a, float x, float y, float z)
void Matrix::MakeIdentity(const array<f32> &inout a)
void Matrix::MakeOrtho(const array<f32> &inout a, f32 w, f32 h, f32 d)
void Matrix::MakePerspective(const array<f32> &inout a, f32 fov_rad, f32 aspect, f32 znear, f32 zfar)
[added] extra comments for scriptrenderexample
[added] 3d example to ScriptRenderExample
[modified] vertex normals exposed to script (Vertex nx, ny, nz properties)