* breakout the component types into a scoped enum
tested that things are the same as they were before
* fix missed rename
* fix brick-by-brick name to be crafting
because that's what it is
* Make wrapper for casting skills
this is to reduce magic numbers in the code base
Only updated one use of this to demo that this works.
Will be do more in a sepearate PR.
Also, inadvertantly fix damage stacking and self-damage in the teslapack
* add skill<->behavior caching
* explicit by reference
* address emo's feedback
* Split out LUTriggers into it's own component
* some cleanup
* fix debug log
* use emplace and tryParse
* slight refactor to make the work on startup
rather than at runtime
Also TODO's for getting targets via all the possible methods
* address feedback
* 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>
* Fix overread in projectile behavior
* Fix stuns
* Correctly read in bitStream
* Fix projectile behavior
* Address movement type issues
* Update shutdown time to be accurate
* Fix small issues
* Fix trading taking the wrong item
* Add missing returns
* Improve further
Do all verification first. Then actually do the trade. Prevents possible cheating attempts
* 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
* Cleanup Behavior streams
* 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.
- Give entities that have a script component ID of zero a script component still
- Progress scripted entity missions within the for loop as we do for script calls
Tested that Boogie Down is (finally) completable.
Tested that Mission 737 is still completable
Checked that missions progressed inside OnEmoteReceived scripts to not double trigger progression
Allows the server to be run from a non-build directory. Also only read or write files relative to the build directory, regardless of where the server is run from
* Implement basic functionality
Implements the basic functionality and parsing of property behaviors.
Unhandled messages and logged and discarded for the time being. The only implemented message is a basic one that sends the needed info the the client side User Interface to pop up.
* Stop adding movingpla comps where they aren't needed
* move stuff around to make it more congruent
* invert if else block logic patter
Since setting up the comp will be longer han just adding the path
will make the readability flow better
* address feedback
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>
* First iteration of pack reader and interface
* Fix memory leak and remove logs
* Complete packed asset interface and begin on file loading replacement
* Implement proper BinaryIO error
* Improve AssetMemoryBuffer for reading and implement more reading
* Repair more file loading code and improve how navmeshes are loaded
* Missing checks implementation
* Revert addition of Manifest class and migration changes
* Resolved all feedback.
Implements the basic functionality and parsing of property behaviors.
Unhandled messages and logged and discarded for the time being. The only implemented message is a basic one that sends the needed info the the client side User Interface to pop up.
Tested that the User Interface properly shows up with zero behaviors on it. No other functionality is changed.
* 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
* Properly store BBB in database
Store the BBB data in the database as the received SD0 packet as opposed to just the raw lxfml. Addressed several memory leaks as well.
* Add Sd0Conversion
Add brick by brick conversion commands with 2 parameters to tell the program what to do with the data.
Add zlib -> sd0 conversion. Files look good at a glance but should be tested in game to ensure stability. Tests to come.
* moving to laptop
ignore this commit. I need to move this to my laptop
* Add functionality to delete bad models
Adds functionality to delete bad models. Models are batched together and deleted in one commit.
More testing is needed to ensure data safety. Positive tests on a live database reveal the broken models were truncated and complete ones were kept around successfully. Tests should be done to ensure larger sd0 models are properly saved and not truncated since this command should be able to be run any time.
Valgrind tests need to be run as well to ensure no memory leaks exist.
* Delete from query change
Changed from delete to delete cascade and instead deleting from properties_contents as opposed to ugc.
* Address numerous bugs
DELETE CASCADE is not a valid SQL command so this was changed to a better delete statement.
Added user confirmation before deleting a broken model.
Address appending the string model appending bad data, causing excess deletion.
Addressed memory leaks with sql::Blob
* Error handling for string
* Even more proper handling...
* Add bounds check for cli command
Output a message if a bad command is used.
Update MasterServer.cpp
* Remove user interference
-Add back in mariadb build jobs so i dont nuke others systems
- Remove all user interference and consolidate work into one command since 1 depends on the next.
* Add comments
test
Revert "test"
This reverts commit fb831f268b7a2f0ccd20595aff64902ab4f4b4ee.
* Update CMakeMariaDBLists.txt
Test
* Improve migration runner
Migration runner now runs automatically.
- Resolved an issue where extremely large sql queries caused the database to go into an invalid state.
- Made migrations run automatically on server start.
- Resolved a tiny memory leak in migration runner? (discarded returned pointer)
- Moved sd0 migrations of brick models to be run automatically with migration runner.
- Created dummy file to tell when brick migrations have been run.
* Update README
Updated the README to reflect the new server migration state.
* Make model deleter actually delete models
My complicated sql actually did nothing... Tested that this new SQL properly gets rid of bad data.
* Revert "Update CMakeMariaDBLists.txt"
This reverts commit 8b859d8529.
* 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
* Use RecastNavigation CMakeLists
* Use tinyxml2 CMakeLists
* Use bcrypt CMakeLists
* Move variable init to CMakeLists
This has to be done here to prevent missing dependency errors.
* General improvements
Only link dynamic if on gnu
use more thirdparty cmakes
* Disable tinyxml2 testing
* 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
* Add GameMessages
* General AMF cleanup
Proper memory management as well as style cleanup
* 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 GameMessages.h
* Add GM
* Comment out function
* Spacing
* eof
* 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
* if we are deleting entities, and we add an entity
to delete, dont throw it out
* made it all uniform
* change update back to how it was
since it's an unordere map and
wouldn't be guaranteed to update even in this secnario
* 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.
* Bump patch version
* Improvements to PlayerContainer
Resolved a memory leak in the player container, removed commented out code and resolved a warning in Behavior.cpp
* Make it a unique ptr
* Improvements to PlayerContainer
Resolved a memory leak in the player container, removed commented out code and resolved a warning in Behavior.cpp
Make it a unique ptr
* Update PlayerContainer.cpp
* 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.
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.
* 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.
* 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