Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Comprehensive Slash Command Documentation #402

Merged
merged 7 commits into from
May 24, 2022

Conversation

DrOverbuild
Copy link
Contributor

This PR takes the original command documentation from the README and adds comprehensive details for each command available in game.

This creates a new file /docs/Commands.md. All available commands are split up by their use — general commands, moderation, server operation, and development. They are then sorted by their required permission level and then by alphabetical order.

This detailed list of commands should help both server operators run their servers and contributors get started with development.

This PR also pioneers a common practice among many open source projects, where markdown documentation is placed in a top level docs folder. In this folder we can continue to contribute markdown documentation in order to help with server setup and operation, as well as development and contributions. Documentation here would be more specific to Darkflame Universe and its development than documentation found at https://lu-dev.net.

@Jettford
Copy link
Collaborator

Jettford commented Jan 22, 2022

Would it be possible, to move this to a vanity xml file or something along those lines so you could include this with a bit of server code. to allow something like the following?

/help <command>
/help <type (moderation, general, developer etc)>

@DrOverbuild
Copy link
Contributor Author

I certainly think a /help command would be helpful but I think a markdown page is also just as helpful. It just really depends on the context. For example, if I can’t remember the commands I’m looking for it would be much easier to browse through a markdown page than scroll through a bunch of messages in chat. But if I’m in game and need to remember the usage of a command, /help would be far easier.

If we held this data in xml, json, or even in the database, we would probably want to come up with a way to automatically build a markdown file based on the data to keep the /help command synchronized with the markdown page.

@cooltrain7
Copy link
Contributor

cooltrain7 commented Jan 23, 2022

This looks great, imo both are a good idea. I personally would like commands with no requirement to show as 0 and not just blank. As for gmlevel, you might want to note (somehow) that it depends on having a max gmlevel higher than 0.

I think setting up commands as an class might be a good idea, then during startup you load your xml/json for the commands with the name, argument, and help paramaters. Though thats another PR.

@DrOverbuild
Copy link
Contributor Author

I think setting up commands as an class might be a good idea, then during startup you load your xml/json for the commands with the name, argument, and help paramaters. Though thats another PR.

Yes, while reading through the code trying to understand what each command does, I badly wanted to refactor the entire command handler. I’ve built command handlers that make use of polymorphism: each command has a class that overrides a method. It makes handling commands much easier, but yeah, that’s another PR.

@codeshaunted
Copy link
Member

I think setting up commands as an class might be a good idea, then during startup you load your xml/json for the commands with the name, argument, and help paramaters. Though thats another PR.

Yes, while reading through the code trying to understand what each command does, I badly wanted to refactor the entire command handler. I’ve built command handlers that make use of polymorphism: each command has a class that overrides a method. It makes handling commands much easier, but yeah, that’s another PR.

Class per command seems overkill. You could clean up our current system a lot if you used a registration function that took the command name, args, and a lambda for the code.

@sersorrel
Copy link
Contributor

feedback based on my own notes, which I never got around to making a pr for:

  • mute requires GAME_MASTER_LEVEL_JUNIOR_DEVELOPER, which is 6, not 2
  • mailitem requires GAME_MASTER_LEVEL_MODERATOR, which is 3, not 8
  • shutdownuniverse requires GAME_MASTER_LEVEL_OPERATOR, which is 9, not 8
  • teleport requires GAME_MASTER_LEVEL_JUNIOR_MODERATOR, which is 2, not 8
  • inspect's first argument is required, not optional, and isn't an entity ID
  • speaking of inspect: I guess it doesn't really need to be documented in detail right here? but it would be nice to have documentation for it somewhere...
    my notes on inspect (mostly untested, probably not terribly accurate)
    inspect <component> (-m <waypoint> | -a <animation> | -s | -p | -f (faction) | -t)
    • finds the closest entity with the given component or LDF variable (ignoring players and racing cars)
    • prints its ID(?), distance from the player, and whether it is sleeping, as well as the the IDs of all components the entity has
    • with -m, if the entity has a moving platform component, sends it to the given waypoint, or stops the platform if waypoint is -1
    • with -a, plays the given animation on the entity(?)
    • with -s, prints the entity's settings and spawner ID
    • with -p, prints the entity's position
    • with -f, if the entity has a destroyable component, prints whether the entity is smashable and its friendly and enemy faction IDs; if faction is specified, adds that faction to the entity
    • with -t, if the entity has a phantom physics component, prints the effect type, direction, directional multiplier, and whether the effect is active; in any case, if the entity has a trigger, prints the trigger ID

currently undocumented:

  • /gminvis: toggles invisibility for the character, though it's currently a bit buggy; requires nonzero gmlevel
  • /gmimmume <value>: sets the character's GMImmune state (pass 1 to make yourself immune to damage, 0 to undo); requires gmlevel 8
  • alternate names for commands (gmlevel is also setgmlevel and makegm, playanimation is also playanim, setinventorysize is also setinvsize, teleport is also tele)
  • testmap accepts an optional "force" argument between the zone and clone ID, to forcibly transfer to a zone that isn't marked as accessible (this can softlock your character, though, if you e.g. try to teleport to Frostburgh)

miscellaneous other suggestions:

  • for skip-ags and skip-sg, it might be useful to include the names of the missions, which (I think) are "Impress the Sentinel Faction" and "Monarch of the Sea" respectively
  • under lookup, "discription" should be "description"
  • under leave-zone, "Nimbus station" should be "Nimbus Station"

@codeshaunted
Copy link
Member

feedback based on my own notes, which I never got around to making a pr for:

* `mute` requires GAME_MASTER_LEVEL_JUNIOR_DEVELOPER, which is 6, not 2

* `mailitem` requires GAME_MASTER_LEVEL_MODERATOR, which is 3, not 8

* `shutdownuniverse` requires GAME_MASTER_LEVEL_OPERATOR, which is 9, not 8

* `teleport` requires GAME_MASTER_LEVEL_JUNIOR_MODERATOR, which is 2, not 8

* `inspect`'s first argument is required, not optional, and isn't an entity ID

* speaking of `inspect`: I guess it doesn't really need to be documented in detail right here? but it would be nice to have documentation for it _somewhere_... my notes on `inspect` (mostly untested, probably not terribly accurate)
  `inspect <component> (-m <waypoint> | -a <animation> | -s | -p | -f (faction) | -t)`
  
  * finds the closest entity with the given component or LDF variable (ignoring players and racing cars)
  * prints its ID(?), distance from the player, and whether it is sleeping, as well as the the IDs of all components the entity has
  * with `-m`, if the entity has a moving platform component, sends it to the given waypoint, or stops the platform if `waypoint` is -1
  * with `-a`, plays the given animation on the entity(?)
  * with `-s`, prints the entity's settings and spawner ID
  * with `-p`, prints the entity's position
  * with `-f`, if the entity has a destroyable component, prints whether the entity is smashable and its friendly and enemy faction IDs; if `faction` is specified, adds that faction to the entity
  * with `-t`, if the entity has a phantom physics component, prints the effect type, direction, directional multiplier, and whether the effect is active; in any case, if the entity has a trigger, prints the trigger ID

currently undocumented:

* `/gminvis`: toggles invisibility for the character, though it's currently a bit buggy; requires nonzero gmlevel

* `/gmimmume <value>`: sets the character's GMImmune state (pass `1` to make yourself immune to damage, `0` to undo); requires gmlevel 8

* alternate names for commands (`gmlevel` is also `setgmlevel` and `makegm`, `playanimation` is also `playanim`, `setinventorysize` is also `setinvsize`, `teleport` is also `tele`)

* `testmap` accepts an optional "force" argument between the zone and clone ID, to forcibly transfer to a zone that isn't marked as accessible (this can softlock your character, though, if you e.g. try to teleport to Frostburgh)

miscellaneous other suggestions:

* for `skip-ags` and `skip-sg`, it might be useful to include the names of the missions, which (I _think_) are "Impress the Sentinel Faction" and "Monarch of the Sea" respectively

* under `lookup`, "discription" should be "description"

* under `leave-zone`, "Nimbus station" should be "Nimbus Station"

All of this is just more reason to entirely refactor the slash command system. We could refactor it to have a dynamic help command based on register commands, args, etc.

@Xiphoseer
Copy link
Contributor

Xiphoseer commented Feb 5, 2022

This PR essentially adds a HTML file, not a markdown file. Markdown does have a way to generate tables, it might be nice to use that.

My 2ct suggestion:

  • Add one file per command. This makes ot much easier for git to track changes
  • Use https://jekyllrb.com/docs/front-matter/ for metadata like required GM level, summary, tags, related commands
  • Add a nice html layout page that uses the markdown and metadata
  • Publish that as a DLU github pages

IMO having the docs in the implementation might be nice, but I'm not sure it makes sense to hide good docs in there, especially as fields in classes. That works for summaries but nor so much for full explainers that don't fit in chat.

A good middleground may also be scraping them from comments in the source, but that's more involved.

@Xiphoseer Xiphoseer added the docs There's something wrong or missing with the documentation label Feb 5, 2022
@MichaelFedora
Copy link

Github flavored markdown does have table formatting, re:

| Command | Usage    | Description                                                 | Admin Level Requirement |
| ------- | -------- | ----------------------------------------------------------- | ----------------------- |
| credits | /credits | Displays the names of the people behind Darkflame Universe. | 0                       |

as well as

Command|Usage|Description|Admin Level Requirement
-|-|-|-
credits|/credits|Displays the names of the people behind Darkflame Universe.|0

produce

Command Usage Description Admin Level Requirement
credits /credits Displays the names of the people behind Darkflame Universe. 0

whether in comments or in .md files. I think using that is better than doing <table> whatnot. (depending on the editor, you can make it auto-format so you don't have to re-do spacing every time as well, btw).

--

re: xipho:

  • one file per command would be hell for upkeep / maintenance IMO
  • nice dedicate docs page might be good but since we're on GitHub, might as well stick a flavored markdown file in the repo, no?

alternatively, re-doing the command handler and just doing in-game docs might would be more useful (but more time consuming)

@Xiphoseer
Copy link
Contributor

one file per command would be hell for upkeep / maintenance IMO

Can you elaborate on that? I would think that it reduces maintenance burden because you cannot ever have "reorder to make alphabetic" PRs and you need to keep it up to date whether it's a single file or multiple.

nice dedicate docs page might be good but since we're on GitHub, might as well stick a flavored markdown file in the repo, no?

Yeah, every one of those steps I added was meant to be an optional addition to the previous step. I.e. adding the docs to the repo would be nice and then we could turn them into pages if they're sufficiently helpful.

Jekyll supports GitHub flavored Markdown by default 1, so it's really just added flexibility in styling.

Footnotes

  1. https://jekyllrb.com/docs/configuration/markdown/

@MichaelFedora
Copy link

MichaelFedora commented Feb 8, 2022

Can you elaborate on that? I would think that it reduces maintenance burden because you cannot ever have "reorder to make alphabetic" PRs and you need to keep it up to date whether it's a single file or multiple.

You don't have to re order commands unless you are re-naming them 🤔 You just add entries in between others. If people are adding commands at the bottom/top/in the wrong spot, those can be called out in the PR.

There is a balance between "having to modify X files" and "having to modify a file X times"; I would call the former hell over the latter, but I will agree that it's a preference.

I will further say that as an end-user I'd prefer all the commands to be in one place for a reference rather then sprawled between 50 different files. So I still think there is reason to support the mono-doc.

If the command list gets very large, it can be segmented into category based docs (a good compromise) but because there are so little right now that still seems like to be more tedious then beneficial.

@codeshaunted
Copy link
Member

Can you elaborate on that? I would think that it reduces maintenance burden because you cannot ever have "reorder to make alphabetic" PRs and you need to keep it up to date whether it's a single file or multiple.

You don't have to re order commands unless you are re-naming them 🤔 You just add entries in between others. If people are adding commands at the bottom/top/in the wrong spot, those can be called out in the PR.

There is a balance between "having to modify X files" and "having to modify a file X times"; I would call the former hell over the latter, but I will agree that it's a preference.

I will further say that as an end-user I'd prefer all the commands to be in one place for a reference rather then sprawled between 50 different files. So I still think there is reason to support the mono-doc.

If the command list gets very large, it can be segmented into category based docs (a good compromise) but because there are so little right now that still seems like to be more tedious then beneficial.

All of these problems are solved by a commands system rework with a dynamic help command. You could even make it generate a documentation file if you feel so inclined.

@Jettford
Copy link
Collaborator

While yes it would that is a lot of effort and something that this person may not be able/willing to do so in the meantime before someone else gets around to it we should just merge this.

@EmosewaMC
Copy link
Collaborator

I think this is fine for now. Some semantic differences and this should def be rebased on main but unless someone else is going to refractor the slash command system, this gives users the ability to at least know what the commands are without having to combine through a cpp file.

@codeshaunted
Copy link
Member

While yes it would that is a lot of effort and something that this person may not be able/willing to do so in the meantime before someone else gets around to it we should just merge this.

I disagree, I think this will just get left to rot as new commands get added or old ones change. Better to wait for a full-fledged solution than ship a half baked one.

@DrOverbuild
Copy link
Contributor Author

I disagree, I think this will just get left to rot as new commands get added or old ones change. Better to wait for a full-fledged solution than ship a half baked one.

I would suggest requiring any contributors to update this document before approving their PR if it includes an update to a command or a new command. Although, I suppose that would be too much overhead.

@Jettford
Copy link
Collaborator

I would suggest requiring any contributors to update this document before approving their PR if it includes an update to a command or a new command. Although, I suppose that would be too much overhead.

I think that commands are a rare addition and would be something manageable.

@Jettford Jettford requested a review from aronwk-aaron May 20, 2022 17:53
@Jettford
Copy link
Collaborator

and we could even go as far as using something along the lines of this to verify if the command handler file is changed both are.

Copy link
Member

@aronwk-aaron aronwk-aaron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine with this doc, as long as it is actually markdown.
please use something like this to just convert the table from html to md. https://jmalarcon.github.io/markdowntables/
Tested it and this works pretty well

@Jettford
Copy link
Collaborator

Jettford commented May 20, 2022

@DrOverbuild Here is a markdown version of your documentation (no idea why it thinks it is Ruby) you can use to fulfil the above feedback. (Thanks for the tool Aaron)

@DrOverbuild
Copy link
Contributor Author

Thank you for the feedback, I will update with markdown tables, along with addressing sersorrel's feedback when I can get a chance to look at this.

@aronwk-aaron
Copy link
Member

DrOverbuild Here is a markdown version of your documentation (no idea why it thinks it is Ruby) you can use to fulfil the above feedback. (Thanks for the tool Aaron)

Laziness is one of the three virtues

@codeshaunted
Copy link
Member

I disagree, I think this will just get left to rot as new commands get added or old ones change. Better to wait for a full-fledged solution than ship a half baked one.

I would suggest requiring any contributors to update this document before approving their PR if it includes an update to a command or a new command. Although, I suppose that would be too much overhead.

and we could even go as far as using something along the lines of this to verify if the command handler file is changed both are.

I don’t see why this energy can’t just be put into making a real commands system. The current one is a holdover from the early days and has a lot of issues. In my mind it’s a much better use of our time to just update the system rather than fiddle with markdown files forevermore.

@Jettford
Copy link
Collaborator

That is outside of the scope of this pull request, this is a good in-between while we await someone to refactor that system.

(thanks to @sersorrel for this information, in discussion of DarkflameUniverse#402)
@DrOverbuild
Copy link
Contributor Author

Alright I have rebased from the latest main branch, converted all of the tables to markdown, and updated with @sersorrel's notes. (Thank you sersorrel very much for your feedback!)

@aronwk-aaron aronwk-aaron self-requested a review May 23, 2022 14:16
Copy link
Member

@aronwk-aaron aronwk-aaron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@aronwk-aaron
Copy link
Member

Merging, maintainers are aware if something is added or changed with slash commands, this will need to be updated.
I will also make an issue about refactoring the slash command system so that that can be tracked separately. Docs are needed and waiting months for someone to refactor the slash command system is not a good reason to not get this in here now.

@codeshaunted
Copy link
Member

Was this really merged with no reference to it in the README?

@Jettford
Copy link
Collaborator

The documentation for the slash commands is for server maintainers not the average user, I don't see to much of a reason that it needs to be but if you think it should be there, then just add it.

RediPanda added a commit to YulxVol-Studios/DarkflameServer that referenced this pull request Jul 8, 2022
* Leaderboard Scoring Updates

* Leaderboard Scoring Updates

* Check user input for the "/runmacro" command

Presents users from specifying a file path, and looking up macros in the 
expected folder.

* Add proper sanitizing for input to SQLite database.

Adds function `ExecuteQueryWithArgs(query, ...)` to allow for queries 
with user input.

There is a known issue, that the funciton does not work with 
std::string. All strings must be converted to c strings.

* Additional SQLite lookup sanitizing with CDClientDatabase::ExecuteQueryWithArgs()

* Additional SQLite lookup sanitizing.

Using CDClientDatabase::ExecuteQueryWithArgs() across all known lookups.

* Comply with Xiphoseer required changes.

Remove the CDClientDatabase::ExecuteQueryWithArgs() function and replace 
it with CDClientDatabase::CreatePreppedStmt().

This prevents a developer from accidently using %s, or incorrectly 
passing std::string, and causing a silent error.

* Fix whitespace

* Fix whitespace

Convert to tabs and remove trailing whitespace

* Fix UserManager not logging chosen name properly

* Fix MasterServer not always closing database connection on exit

* Use exit code macros

* Improve GitHub issue templates

* Adjust chosen character name logging

* Explain in issue templates how to get Git commit SHA

* Fetch zlib library over HTTPS

* Added a GM send after QB complete

* resolved MacOS compilation warnings

* special case for pets

* Client does calcs

* uses number of bricks now

* removed unnccessary work

* dirty bit

* fixed erronous log

* Fixed skills proxies

* Added migration for plunger gun

* added comment

* updated initial migration

Made it so people wont accidentally wipe their database if 0_initial.sql is ever run again

* Sped up server shutdown

* Destroying database specifier

* correct exit

* added returns

* Update MasterServer.cpp

* Chat log no longer needed

* Spacing

* separated world server to more functions

* more specific logging

* incorrecly named variable

* Updated logging

* check if map exists for testmap

* simplify

* fix tabs/spaces

* missed a semicolon

* Prevent integer underflow in item removal

Previously, the only check that the user wasn't trashing more items than they had was clientsided, and this could be bypassed by contacting the server to remove items via a console or the like, and then trashing them before the server could respond, resulting in the count for the items being less than iStackCount. This check prevents that underflow.

* Vault corrections

* Ensure items correctly removed from missions

Doubt it would have affected anyone, but technically if you had a mission to collect something interactable, and you deleted the items at the same time as interacting with something, this would have counted incorrectly. I'm being defensive because I was an idiot who couldn't read, but in my defence, it was late when I made the first edit, and I'm also a blundering idiot!

* Added a bracket... -_-

Maybe I should write and test code on my computer rather than using Git as an IDE and commits as the save button...

* Update GameMessages.cpp

I promise I'm not farming changes. I woke up at like 4AM and realised that I'd screwed up in an obvious way. Note to self: You are ALLOWED to change variables.

Wasn't caught in testing because, well, it turns out it's actually impossible to test the edge case this covers, due to the script for the brick console.

* implement some missing scripts

* fix comparator

* fix copy past error

* update script path for fans

* Simplify some stuff
Remove render component in startup

* fix volumen physics name

* tabs and log

* make the hydrant match the lua script

* update the Effect ID

* remove log

* rock hydrants work

* honor the logic in the lua script

* missed semicolon

* scope

* ugh, another semicolon

* cleaning up some stuff

* Fixed Racing Mission

* Try, Try Again achievement now progresses when the player gets last place in a race of 3 or more players, or when solo racing is enabled.
* Race Series 1 mission from Velocity Lane now progresses correctly.

* Fixes

* remove dereference
(I think that's what it is called)

* cleanup logs, fix overrides, define LOTs in header

* also apply overrides to AG fans

* case for putting you back into FB when leavign space blizzard

* Fix solo_racing for Frostburgh's Space Blizzard Racetrack

* Fix migration 0 for cd server
setting every component to 1901 instead of just component 39
Add migration to fix it for existing users
and set the values back to what they were

* make newline at end of file

* isPlayer changes

Changed isPlayer to check for whether the entity has a character instead of checking system address of entity.

* Grammar error

Level reward needed an underscore

* Updated AddItemToInventorySync

AddItemToInventorySync now sends the correct loot source type

* Vendor buyback inventory

Fixed vendor buyback inventory so it properly scrolls when the player adds enough items to it.

* added lootsource send in GM

WIP commit

* corrected number

* Specified enum

the LOOT_SOURCE enum is now attached to all loot sources.

* loot source for item drops

Added support for Items to have a loot source attached to them when dropped or rolled.  This fixes the issue where achievements would give the item before it appeared in the achievement window.

* Revert "isPlayer changes"

This reverts commit 2e61839.

* missed change for forge

* removed debug logs

* commit

* removed logs

* changed loot sources to none

Changed loot sources for some scripts to none so they properly give loot to the player.

* Skill Tasks changes

Addressed an issue where the Spinjitzu Initiate achievement would not progress.  This also allows mission tasks that specify that the player must get a kill on an enemy with a skill to progress.  Tested mission 1935 and 1139 and both missions progressed and completed as intended.

* Corrected action for OverTimeBehavior

* Typo in NsConcertInstruments

* Updated vendor component

Fixed a few issues in VendorComponent.
- Corrected serialization to only happen on construction.
- Added functionality to refresh the vendor based on info from the vendor component table
- some whitespaceing inconsistencies.
- Sorted includes.
Tested the vendor in Nimbus Station and when the player re-enters the world, the vendor inventory refreshes, as opposed to previously where the world would need to reset in order to refresh the inventory.

* corrected serialization

* added comments

* Vendor refresh change

Changed vendor refresh to happen as soon as it is able to.

* Added Loot Buff Behavior

Added functions and methods to support the pickup radius.  Functionality includes:
Corrected serialization for ControllablePhysicsComponent which correctly serializes the pickup radius to the client.
A method to add the pickup radius to the list of active pickup radii the component has.
A method to remove and re-calculate the largest active radii the component currently has.

Tested equipping all variations of the LootBuff behavior (passive skills, items, item skills) and all functioned as intended.  Tested equipping multiple items with a loot buff and then unequipping them in different orders.  Tested adding pickup radii of different values and the server correctly adjusted the pickup radius to the largest one currently equipped.

* Serialize ape when changing armor value

* Added back brick inventory resizing

* Added animation

Added the GM animation and stun for the Nexus Tower Paradox Panels for mission 1281.  Tested on local instance and animation played correctly when having the mission and did not play at all before or after completing the mission

* Split out Darkitect reveal into it's own file
add reveal to Fong

* Update RebuildComponent.h

Quickbuilds jump fix

Corrected an error where the builder was erronously changed to an empty lwoobjid when a quickbuild was completed, causing the builds to no longer jump on completion (if configured to do so.)  Packet captures from live show that we do not want to get rid of the builder during resetting or during completion of the build so the file has been changed to not clear the builder in those cases.

* Implement Rocket Launch Lup Component

* Add precondition check

* Client handles rocket being unequiped
when closing the dialog
and when launching

* Styling edits

* fix Java doc comments
removed unused param

* remove sysaddr from call in Game Messages

* bump patch version

- Quickbuilds jump on completion
- Fong now plays darkitect cutscene on a mission completion
- Nexus Tower panels now play the repair animation
- Vendors can now refresh
- Loot magnet abilities now work
- Spinjitzu Initiate now works
- Achievement items now get moved to the players inventory as they did in live, by popping up from the achievement box
- pop up when you get a new life container now shows up as it did in live
- Parrot in Nexus Tower is no longer an oar
- Fixed an item underflow bug
- Vaults for Items and Models now are the same size and start out at the correct size
- The buy back inventory for vendors now allows you to scroll (only after backing out of the menu first for some reason)
- Untamed pets no longer cause client hitches in Nimbus Station and Forbidden Valley
- When shutting down, the server now shuts down in 1 second instead of 75
- Plunger gun is no longer a main hand item
- Skills for proxy items no longer require a reload to be used
- Resolved some MacOS compilation warnings
- Quickbuilds now play a celebration on completion
- Bug reports are more specific
- Property viewer and plaques now work as they did in live and display all the correct information
- Properties now also save more often instead of every 10 minutes
- Avant Gardens Survival buff station now works
- Exploding dummy for Nexus Tower combat training now works and allows progression
- Racing missions for smashables now work
- Apes now act as they did in live
- Dragons on Crux Prime now spawn the quick build for insta smashes
- Civilian players can no longer use /playanim
- Proxy items no longer grant extra stats
- Shooting gallery daily missions now work
- Operators can now spawn race cars in non-racing worlds
- Level rewards now show their achievement as they did in live

We really need to do this monthly so the notes arent this long lol

* Proper Rocket Holding
Sanity checks on Prop and LUP launchpads to not open if no valid rocket
Add serialization for sending item configs
so that rockets show for other players

* Exclude space blizzard from Zone ghosting

* replace the survey link with the repo link
(not that anything can load in the in-game browser anyway)

* Set url from world config instead of hardcoding

* Add AM Teapot server
Resolves DarkflameUniverse#224

* get zones from settings

* remove cdclient include

* resolves DarkflameUniverse#556

* climbable server side settings

* explicit set to 0

* resolve comments

* maybe fix it

* Added Comprehensive Slash Command Documentation (DarkflameUniverse#402)

* Added documentation for all available commands

* Adjust formatting, removing backtick characters

* Replace HTML tables with Markdown tables

* Formatting changes

* Suggestions from @sersorrel in DarkflameUniverse#402 and other minor edits

* Add detailed usage for /inspect

(thanks to @sersorrel for this information, in discussion of DarkflameUniverse#402)

* Fixed display logic for NS Survival leaderboard

* Update Docker.md with buildkit and submodule notes. (DarkflameUniverse#458)

* Update Docker.md

Add link to enabling docker buildkit. Add note to remember to clone submodules.

* Remove unpacked client option

Unpacked client does not have required directories/files (e.g. /versions/trunk.txt) and thus the packed client is required.

* Add note about renaming CDClient.fdb

DarkflameSetup will fail because it cannot find cdclient.fdb. However, CDClient.fdb exists. Renaming it fixes the issue.

* Remove extra "client"

* Add instructions on solving missing DLL issue (DarkflameUniverse#379)

* Add instructions on solving missing DLL issue

* Repair formatting to be consistent

* only make teams for minigames
if we have more than one participant

* Fix overrides in ActMine (DarkflameUniverse#568)

* Corrected string to long conversion

For Windows, the definition for a long is 32 bits, not 64 bits like on other operating systems.  This caused an issue on Windows only where a number larger than 32 bits was attempted to be converted to a long, the WorldServer would crash.  This commit replaces all instances of `stol` with `stoull` to further define a long and reduce ambiguity of number length.

* Fix unhealthy docker containers (DarkflameUniverse#574)

* Add curl to brickfix dockerfile.

* Add curl to AccountManager docker.

* Fix issue preventing container from building.

* Move owner override

Mover owner override to be earlier so that we dont try to get the team of an entity that doesnt have a team and may be a child entity of a player.  Tested changes with a team of two players and players were correctly given credit for kills

* Fix item getter for moving items

This fixes an issue where the item would get overwritten and would effectively fetch a "random" item in the inventory to move instead of the requested one.

* Address bricks selling 1 at a time

Bricks have a stack size of zero in the cdclient so we need to make sure to give them a full stack size of 999 as we do for the bricks inventory with the selling inventory.

* Don't give activity loot for Battle of Nimbus Station

Address an issue on Brick Mesa where Battle of Nimbus Station was dropping activity loot.  Tested completing Battle of Nimbus Station and ending early and was not given loot as is expected.

* Revert "Don't give activity loot for Battle of Nimbus Station"

* Add /setlevel slash command

Add the setlevel slash command.  Command accepts parameters of the requested level and a player to set the level of.  This also adjects the uscore of the player accordingly.  The player must re-log upon using the command to see any updates to themselves or others.

* Add setlevel to commands doc

* Address quickbuilds being unbuildable

Address an issue where quickbuilds would become unbuildable.  The main issue lied within serializing parent/child info too often for some reason / serializing it when the info wasnt dirty.  Only serializing this info when it is actually dirty and has changed has addressed the issue and allows quickbuilds to never break.

* Properly place build activator

The build activator as a result of the previous changes was spawning at the wrong position.  This commit pulls the activators position from the settings (should they exist) and sets them accordingly.

* Added comment

* Address reviews

Changed the activator position parsing to have TryParse so that we dont throw an exception trying to load the position.  Should the loading of the activator position fail the game will default to the position of the entity.

change delimiter value to hex

Updated the character delimiter used for rebuild_activator settings to use hex

Remove extra parsing of activator position

in Entity.cpp we were parsing the activator position but when doing so where we were, this was after we had ended up spawning the activator since that is now in the constructor of the rebuild component.  The extra parsing has been removed.

Simplify dirty parent/child info

Simplify the if condition for parent child info.  This info only needs to be written should it be changed (dirty) or if the packet being sent is a construction, meaning that a requesting player needs all base data and needs to know what parents/children an entity has at that time.

get rid of extra parenthesis

Left over extra parenthesis were around these conditions on accident

* remove children

We need to make sure we are actually deleting children from the vector of children when they are deleted as entities.

* Add to common vars and dnet

Added values to enums on dnet and common vars that were missing

* Add GM

Added GM for UseItemRequirementsResponse that was missing in current implementation

* Add pet imagination draining

Address an issue where pets did not consume imagination when they were spawned.

* Added config setting

Added a config setting to allow players to disable pets consuming imagination.  This value defaults to zero as a feature of DLU.

* inverted config check

Since most people are not regularly updating their config files, this needs to assume the value is disabled rather than enabled.

* Dont take imagination on initial tame

* update name

Pets will take imagination by default now

* Move to new branch

Added comments

Added some comments and changed a variable name to be less ambiguous.

* Move to new branch

Added comments

Added some comments and changed a variable name to be less ambiguous.

* The shooting Gallery now properly ends when a player leaves the instance

The shooting Gallery now properly ends when a player leaves the instance

Frakjaw player update

Update the Frakjaw battle instance script to remove players when they leave the instance

Simplify comparison

Simplify comparison for entity pointer to be implicit

* Update README.md

* Added item precondition checks

Added item precondition checks for items so players who do not meet the conditions cannot use the items.  tested with the faction bag tokens and they only gave the tokens when a player met all the preconditions or was a Game Master of level 6+

* Fix issue with dropship computer

The dropship computer now no longer gives a player a second mission item should they interact with it again after mission completion

* Add new contributors to contributions list

* Update Credits markdown data

* Revert "Update Credits markdown data"

This reverts commit e24ad43.

* Update CREDITS.md

* Update Xiphoseers position on the project

* Reflect the same order as that in the CREDITS.md file

* Replace list with new formatting

* Update CREDITS.md with more accurate information

* Update README.md

* Update Darwins link on the README

* Update to simpler list.

* removing myself from the situation

* yoink

I just want mounts to work, this isn't fun

* Update README.md

* Address players leaving Battle of Nimbus Station causing a crash that wont save (DarkflameUniverse#600)

* Address issue with Inventor Beehive and Buccaneer Monkey ability on valiant weapon (DarkflameUniverse#604)

* Add Script

Add the FireFirstSkillonStartup script to allow for scripts that use this to function.

* Add comments

* Address incorrect stun played by growl speakers (DarkflameUniverse#605)

Add the FireFirstSkillonStartup script to allow for scripts that use this to function.

Add comments

Fix QB Stunner scripts

Use SetVar for variable

Remember that variables for scripts need to be stored in the entity since a script can be used across multiple entities.

Remove unused variable

Specify Unsigned Int

Start skill asap, not next tick

* breakout possessor from char comp (DarkflameUniverse#606)

* breakout possessor from char comp
Use the correct component for possessor
cleanup scirps that were using possessor improperly
beginnings of mounts

* fix comments
added bounds check

* Add Aarch64 support (DarkflameUniverse#231)

* added mariadb-connector-cpp submodule

* raknet aarch64 support

* fix compile errors

* mariadb connector swap (in progress)

* update CMakeLists, add preprocessor definition to switch between mysql and mariadb connectors

* update types with missing aarch64 check

* corrected adding extra flag to properly compile mariadbconn in CMakeLists

* updated readme with arm builds section

* fix build failure if test folder does not exist

* Remove mysql connector from all builds, add mariadbconnector to windows build

* readd Linux check for backtrace lib to CMakeLists.txt

* Separate system specific mariadbconncpp extra compile flags

* Copy dlls to exes directory once built

* fetch prebuilt binaries on windows so that ClangCL can be used

* Delay load dll so that plugin directory is set correctly

* Fixed typo in glibcxx compile flag

* whitespacing, spaces -> tabs

* Updated README.md, included instructions to update

* Updated README.md

added libssl-dev requirement and removed mysql connector references from macOS builds section

* apple compile fixes for zlib and shared library name

* add windows arm64 checks to raknet

* remove extra . in shared library location

* Setup plugins directory for the connector to search in, pass openssl_root_dir on for apple

* Fix copy paths for single config generators and non windows

* change plugin folder location, another single config generator fix

* GENERATOR_IS_MULTI_CONFIG is a property not a variable

* Fixed a few errors after merge

* Fix plugin directory path, force windows to look at the right folder

* fixed directory name for make_directory command

* Update README.md

Updated MacOS, Windows build instructions.

* set INSTALL_PLUGINDIR so that the right directory is used

* Support for relative rpath for docker build

* added mariadb-connector-cpp submodule

* raknet aarch64 support

* fix compile errors

* mariadb connector swap (in progress)

* update CMakeLists, add preprocessor definition to switch between mysql and mariadb connectors

* update types with missing aarch64 check

* corrected adding extra flag to properly compile mariadbconn in CMakeLists

* updated readme with arm builds section

* fix build failure if test folder does not exist

* Remove mysql connector from all builds, add mariadbconnector to windows build

* readd Linux check for backtrace lib to CMakeLists.txt

* Separate system specific mariadbconncpp extra compile flags

* Copy dlls to exes directory once built

* fetch prebuilt binaries on windows so that ClangCL can be used

* Delay load dll so that plugin directory is set correctly

* Fixed typo in glibcxx compile flag

* whitespacing, spaces -> tabs

* Updated README.md, included instructions to update

* Updated README.md

added libssl-dev requirement and removed mysql connector references from macOS builds section

* apple compile fixes for zlib and shared library name

* add windows arm64 checks to raknet

* Setup plugins directory for the connector to search in, pass openssl_root_dir on for apple

* Fix copy paths for single config generators and non windows

* change plugin folder location, another single config generator fix

* GENERATOR_IS_MULTI_CONFIG is a property not a variable

* Fixed a few errors after merge

* Fix plugin directory path, force windows to look at the right folder

* fixed directory name for make_directory command

* Update README.md

Updated MacOS, Windows build instructions.

* set INSTALL_PLUGINDIR so that the right directory is used

* Support for relative rpath for docker build

* Rebase on main

* Remove extra git submodule

* Update CMakeLists.txt

* Remove CMakeLists.txt file from mariadb

Remove the CMakeLists.txt file from the mariaDBConnector so we dont build the tests.  Also add a config option to the CMakeVariables.txt so you can build the connector with multiple jobs

* Compile on windows

Specify the mariadbcpp.dll file location with a defined absolute path so windows knows it actually exists.

* default to 1 job

Default mariadb jobs running in parallel to 1 instead of 4

* Move mariadbcpp.dll file to the expected directory on windows

* Changed plugin

Updated the plugin location from the project binary directory to the expected location, the mariadb binary directory.

* Addressed windows dll issues by moving files to the expected directory instead of a directory that wouldnt get created

* Update README

Co-authored-by: Aaron Kimbrell <aronwk.aaron@gmail.com>
Co-authored-by: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com>

* Improve CI (DarkflameUniverse#345)

* Don't upload artifacts unless on main

* Fix if/endif mismatch warning

* Add thirdparty CMakeLists

* Keep more warnings around

* Remove more RakNet warnings

* Fix indentation and divided the cmake into libraries and bins

- Each library and binary got their own CMakeLists.txt
- Indentation was fixed everywhere
- Weird if statement flows replaced

* Revert "Fix indentation and divided the cmake into libraries and bins"

This reverts commit 005a124.

* Add async value assignments

Resolves a warning where on some compilers this thread would _not_ be run async and would instead be run synchronous with the main thread, halting execution.

* Revert "Add async value assignments"

This commit was meant to be done on a seaparate branch but was accidentally pushed upstream to this branch.

* Fix Merge Conflict

* Resolve errors

Resolve errors with using continue() outside a foreach loop.

* breakout mariadb to thirdparty cmake

Move the mariadb cmake to its own directory to make each cmake file more focussed.

Co-authored-by: Jett <55758076+Jettford@users.noreply.github.com>
Co-authored-by: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com>

* Implement Precompiled Headers (DarkflameUniverse#591)

When applied, this will speed up compile times dramatically.

* Add Venture Vision Behavior (DarkflameUniverse#609)

Add the Venture Vision behavior and associated functionality.  Pet digs still do not show up however.

The Kit bonus for factions have been tested and properly grant and take away the buff when it is casted and uncasted.  Tested as well using multiple Venture Vision behaviors at once and the vision only went away when there were zero equipped at once.

Remove extra includes

Convert to Tabs

Remove extra forward declaration

* Optimize scripts for faster compilation (DarkflameUniverse#597)

* Implement Precompiled Headers

* First volume of optimizations

* Scripts A-B

Gonna be doing this in alphabetical order now.

* C Scripts and remove unneeded includes from base cppscripts header

Remove the MissionComponent and Loot includes from all base scripts and place their needed includes in the respective scripts.

* D scripts

* F scripts

* F scripts 2

Finish up removing extraneous includes from scripts that start with the letter F

* G scripts

Removing extraneous includes from scripts that start with the letter G

* I scripts

Removing extraneous includes from scripts that start with the letter I

* M-Z scripts

Removing extraneous includes from scripts that start with the letter M-Z

* Revert "Implement Precompiled Headers"

This reverts commit d79d8d4.

* Revert "Revert "Implement Precompiled Headers""

This reverts commit 0597faf.

* Add back in PCH

Add back in PCH

* Fix CMake

Whitespace

Remove duplicate file glob

Remove newline

* Address modular build not returning parts upon switching some out (DarkflameUniverse#614)

* Address items not re-equipping upon exiting build mode (DarkflameUniverse#615)

* Implement Precompiled Headers

* fix cmake

* Fix modular builds not returning parts

Modular builds would not search inventory A for their corresponding item and by default would only look in the models bag.  This PR forces the item to be looked for in the inventory its coming from (inventoryA) as a second resort before doing the final search in the default inventory of the item.

Tested modular building a car and a rocket and when replacing parts the part that was already placed was returned to the inventory correctly.

* Push equipped items upon entering build mode

Fixes an issue where leaving build mode anywhere would not re-equip your items.  This also implements the feature to set your stats back to full, as was done in the live game.

Tested exiting build mode on a property with full venture gear and all gear was re-equipped and stats were set to the expected values.

* Fix item collection missions  (DarkflameUniverse#617)

* Implement Precompiled Headers

* fix cmake

* Fix modular builds not returning parts

Modular builds would not search inventory A for their corresponding item and by default would only look in the models bag.  This PR forces the item to be looked for in the inventory its coming from (inventoryA) as a second resort before doing the final search in the default inventory of the item.

Tested modular building a car and a rocket and when replacing parts the part that was already placed was returned to the inventory correctly.

* Push equipped items upon entering build mode

Fixes an issue where leaving build mode anywhere would not re-equip your items.  This also implements the feature to set your stats back to full, as was done in the live game.

Tested exiting build mode on a property with full venture gear and all gear was re-equipped and stats were set to the expected values.

* Fix item collection missions

Item collection missions are only supposed to take items should they be in the items inventory or the hidden inventory and no others.  This change removes the global inventory find of items and only removes it from the two inventories that items get taken from in live, ITEMS and HIDDEN

Tested completing mission 470 and 477 as well as 622 and the correct items were taken or not taken, based on the inventory the target item was in.

* Add openssl to list of package requirements

I forgot to add this to the list of needed packages.

* Fix nested preconditions not evaluating costs (DarkflameUniverse#618)

Fixed an issue with some builds that had preconditions not taking items from the players due to the evaluate costs parameter not being passed to nested conditions.

Tested the build in Avant Gardens and it now correctly takes items from the player upon completion.

Co-authored-by: Verathian <verathian@gmail.com>
Co-authored-by: TheMatt2 <TheMatt2@users.noreply.github.com>
Co-authored-by: TheMatt2 <22862051+TheMatt2@users.noreply.github.com>
Co-authored-by: Marcono1234 <Marcono1234@users.noreply.github.com>
Co-authored-by: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com>
Co-authored-by: Gie "Max" Vanommeslaeghe <gievanom@hotmail.com>
Co-authored-by: Aaron Kimbre <aronwk.aaron@gmail.com>
Co-authored-by: NinjaOfLU <theninjaoflu@gmail.com>
Co-authored-by: Majo <git@maxoverlack.dev>
Co-authored-by: Jasper Reddin <jbreddin@uams.edu>
Co-authored-by: HailStorm32 <demetriv.s.7@gmail.com>
Co-authored-by: luke-sparks <49217947+luke-sparks@users.noreply.github.com>
Co-authored-by: Jett <55758076+Jettford@users.noreply.github.com>
Co-authored-by: Shane Clark <ff.shane.clark@outlook.com>
Co-authored-by: Avery <averysumner@gmail.com>
Co-authored-by: jumpy-badger <the.jumpy.badger@gmail.com>
Co-authored-by: Daniel Seiler <hi@dseiler.eu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs There's something wrong or missing with the documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants