* load values once
so that it doesn't check every time
don't return, just skip
don't realod char
* address feedback
* don't drop the only item you can't get again
* address most feedback
* move settings for HC mode
* fix comment
* claenup whitespace
* moving branch
* Add deleteinven slash command
* Change name of BRICKS_IN_BBB
* Use string_view instead of strcmp
* Clean up include tree
* Remove unneeded headers from PCH files
Removes unneeded headers from pre-compiled headers. This increases compile time, however reduces development time for most files.
* Update Entity.h
* Update EntityManager.h
* Update GameMessages.cpp
* There it compiles now
Co-authored-by: Aaron Kimbrell <aronwk.aaron@gmail.com>
* Add speed base readling and writing
to the level prograssion component
Add retroactive fix to the world transfer
TODO: see about versioning charxml fixes to make them not run every time
* version all current changes
* cleanup speed behavior
add calculate for future use in scripts
make < 1 speed multiplier possible
tested wormholer and it plays anims correctly
* cap the lower end of the speed multiplier
until the ending the behavior on hit properly works
* address feedback
add emun for character version
make set ignore multipliers consistent in speed behavior
switch case for char version upgrades
* remove the ability to stack speed boosts
* update value on level ups
* Add failArmor server side
Address out of bounds reading in behavior
Address the basicAttackBehavior reading out of bounds memory and reading bits that didnt exist, which occasionally caused crashes and also caused the behavior to do undefined behavior due to the bad reads.
Tested that attacking a wall anywhere with a projectile now does not crash the game. Tested with logs that the behavior correctly returned when there were no allocated bits or returned when other states were met.
Add back logs and add fail handle
Remove comment block
Revert "Add back logs and add fail handle"
This reverts commit db19be0906fc8bf35bf89037e2bfba39f5ef9c0c.
Split out checks
* Remove case 2
* Update SkillComponent.cpp
Unintentionally, bricks were not creating new stacks if you tried to get another stack. This prevents some missions from being completed. This issue is now fixed
Brick building as of right now does not implement the undo action properly. This commit addresses the issue with undoing button being non-functional server side and implements the GM needed for addressing further issues.
Implement GameMessage UnUseModel which is called when a model in BrickBuilding is UnUsed. Important for UGC content down the line. Final code has been tested as follows:
1. Placed a model in brick build
2. saved placed a brick
3. repeat 2 and 3 twice more for 6 total models
4. Place a new model in brick mode and then edit all 7 models into one brick model instance
5. Pressing undo returns the converted model to the inventory and properly discards the other 6 without crashing. Intended live behavior is to store this in the inventory instead however behind the scenes work is needed to implement UGC models properly.
Implement enum
Implement the BlueprintSaveResponseType enum so there are less magic numbers sent via packets.
Correct int sizes from unsigned int to uint32_t
Add deserialize test
Add a test for de-serializing a GM that is sent to the client. Assertions verify the data is in the correct order and has no extra information.
Implement GTest as a testing infrastructure.
Make windows output binaries to the build folder instead of the release type folder (potentially issue further down the line)
Add a simple unit test for DestroyableComponent
* Fix Pet Taming
* Fix Pet Taming
* fix pet taming path loading
just make it go to build file since the asset managet handles intermediate steps
there is never res in the path in the live db, so no need to check
* special case BrickModels to uppercase if unpacked
remove redundent variable
Co-authored-by: Aaron Kimbrell <aronwk.aaron@gmail.com>
* Add behaviors migration
Add migration for behaviors. Tested that the tables get altered correctly, names are set correctly.
Tested that I can place models, both regular and Brick-by-Brick ones and that they get deleted properly. Tested that picking up models and re-placing them down properly updates them in the tables.
* Only update when empty
* Mounts -v2
* fix stun state and make comments a bit nicer
* remove extra serilization
* update the char position a bit more correctly
* make vehicles face thr player's direction
* address feedback
* fix compiling for real this time
* removed uneeded check
* Correct death plane size
The death plane file size is not in units but is actually in 4x2 tiles.
* Make it a bit bigger for now
* Enjoy your crust
"These things add flavor they said"
Move the position of the death barrier down 13.521004 units so we effectively only extend its hitbox in the -Y direction as opposed to the +Y direction, resolving an issue in Battle of Nimbus Station where the death plane was too tall
* Fix racing lap times
* Address NPC proxies
NPCs are supposed to equip the sub items of items they equip and were not doing so. This PR adds this functionality and fixes and issue where Neido on Crux Prime was not wearing their sword.
Tested that Neido has their sword and that other NPCs that wear proxies also get their proxies equipped. Had no issues with any other world crashing.
* Split out Level progression component
from Character Component
This is to get to the Player forced movement Comp in a sane way
* move XML to component insted of abusing charComp
* use overrides
should probably make everything that calls that call it correctly
* fix linking issue
* Add proper Player Force movement component
Not used, yet
* Split out Level progression component
from Character Component
This is to get to the Player forced movement Comp in a sane way
* move XML to component insted of abusing charComp
* use overrides
should probably make everything that calls that call it correctly
* fix linking issue
* General AMF cleanup
Proper memory management as well as style cleanup
* General optimizations
Fix AMFArray so values are properly deleted when you leave the scope it was created in.
Add bounds check for deletion so you don't double delete.
Remove all AMFdeletions that are contained in an array since the array now manages its own memory and deletes it when it is no longer needed.
* Better tests and fix de-serialize
Fix de-serialize to be correct and implement a test to check this
* Update AMFDeserializeTests.cpp
* Update AMFFormat.cpp
* Update CMake configuration for easier maintenance
* Incorrect casing fix
* Move package requirement
* Update CTest linking
* Add logs to the CMake
* Add linking for common libraries
Added linking for common libraries in tests subdirectory.
* Move test subdirectory higher up for some reason
* Whitespace a log removal
Missed new line
* Add dCommon to dChatFilter
* Update library output dir
* Correct libBcrypt
* Further refactor CMake behaviour
* Repair bad comments and update library defines
* Revert to old include directory method
* Implement platform defines
* Add missing include
Mac needs a specific include for defining platform. Does not compile without this.
Co-authored-by: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com>
* Add friends list migration
* Change friends to use charID
Update friends table to use charID and not LWOOBJID variant.
* Fix remove friend
Fix remove friend and make the query more readable at a glance.
* Add and remove friends in the container
Properly add and remove friends in the player container
* add enums
* Add best friends and basic GM support V1
* Add more features
* not online / doesnt exist implementation
Implements the not online and invalid character response codes
* Address players not being removed
Fix an issue where players would not be marked as offline in the friends list due to the message not being sent in all circumstances.
Tested changes on 3 clients, switching characters, logging out from character select, switching characters, world transfer and my friends list looked as it was supposed to.
* Implement proper friends system
Remove debug logs
Track count of best friends
Add best friends list cap of 5
Add config option and best friend update
Add a config option and implement the last missing best friend serialization
Added comments and fixed remove best friend bug
Added some comments and addressed an issue where removing best friends would not remove them from your internal count of friends.
properties and logs fixes
whoops, had an issue
send reply if already BFFs
Send the correct objectID
I really need to rename these
Fix white space
goon
* Replace queries with unique ptrs
* remove user from player container on deletion
Remove the user from the player container when they delete their character.
* 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.
* 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 d79d8d4991.
* Revert "Revert "Implement Precompiled Headers""
This reverts commit 0597faf308.
* Add back in PCH
Add back in PCH
* Fix CMake
Whitespace
Remove duplicate file glob
Remove newline
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
* 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>
* 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
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
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.
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.
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.
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
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
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.
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.
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.
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.
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.
* 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.
clone id is correctly assigned, reputation now shows up, rejection verdict is sent correctly (not sure about where the reason goes if it even goes here).
* Implement ZoneTable PlayerLoseCoinsOnDeath
- Adds a check on death if the character should drop coins in the current zone
* Refactored PlayerLoseCoinOnDeath into dZoneManager
* Coin death drops use LootGenerator
* Refactored again with use of CDZoneTableTable
* Remove duplicate CDZone call during initialization
* Added check to prevent accidental sentinel passive proc
Added a boolean to check if the player is at zero armor already and if so, do not trigger the passive ability.
* Renamed variable and condensed armor check
* Grammatical changes in comments
* Grammatical fixes in comments
Small grammatical fixes found in comments throughout the code.
* Added descriptions to functions
Added descriptions to functions that didn't have them to keep the code well documented
* Created RacingTaskParam.h
Created RacingTaskParam so eliminate magic numbers in the original implementation of completing racing missions.
* Updated magic numbers in Mission.cpp
Updated magic numbers in Mission.cpp to a meaningful name.
* Implemented racing smashable task progression
Previously, races did not progress tasks for smashing Entities. Now all achievements tracking smashables track them correctly. This has been implemented in the three Entities that can be smashed in a race (imagination boxes, track specific smashables, Forbidden Valley dragon eggs).
* Updated race imagination task progression
Race imagination now no longer uses a magic number when passed to missionComponent. Instead we use a number defined in an enum located in RacingTaskParam.h
* Updated Race task checks
Racing tasks for completing races without smashing now no longer auto complete the whole chain of missions. Tasks that track placing on tracks and races overall now properly complete. Tasks that count how many missions in a zone are completed now function. Tasks that track race completions in multiple areas now function.
* Updated RacingControlComponent.cpp
Fixed any tasks that required 3 players to now require 3 or more players in a race to progress. This restriction is ignored if the world config opted in for solo racing to allow progression in solo worlds. Updated magic numbers sent into missionComponent->Progress to an enum created in this PR. Fixed some indentation.
* Fixed a grammatical error in variable name
Fixed a grammatical error in the enum for task params
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.