resolves a memory leak in BrickDatabase, adds stability to character save doc.
Tested that saving manually via force-save, logout and /crash all saved my position and my removed banana as expected.
The doc was always deleted on character destruction and on any updates, so this is just a semantic change (and now we no longer have new'd tinyxml2::documents on the heap)
* WIP, but working
* Scaffolding
* testing and making it compile again
* move all commands to functions
* renaming to compile
* fix failing tests
idk how these werent failing before. Seems to have been magic.
* move commandss into their namespace
make help command useful
fix mac error
TODO: remove the multiple not founds/ rework the structure to split into help and handling
* Just need to fill out the fields, but it's all there templated
* Add all aliases, register missing commands
* All help text
* remove test logs
* improvements
pass through added code for optimizations and cleanup as well as reduce the amount of scoping for readability and maintainability
* Update SlashCommandHandler.cpp
* only save command if it is a GM command
* simplify if checks
* remove broken delimiter
* Update SlashCommandHandler.cpp
* Update SlashCommandHandler.cpp
---------
Co-authored-by: David Markowitz <EmosewaMC@gmail.com>
* chore: Remove dpEntity pointers from collision checking
* Update fn documentation in ProximityMonitorComponent.h
* use more idiomatic method to calculate vector index
* feedback
* missed a ranges::find replacement
* adjust for feedback. last changes tonight.
* okay, also remove unneeded include. then sleep.
* for real tho
* update to use unordered_set instead of set
* WIP
* get rid of redundent case and some formatting issues
* move some things around for cleaner diffs
* remove dead code that does nothing and add connection check
* fix whitespace
* address feedback
Should be 100% live accurate as far as logic and bitstream reads goes.
Tested with all valiant weapons and crux prime weapons (drops from dragons) that combat does not desync and that the client reports the same level and amount of skill deserialize issues as before.
fixes an issue when stew blaster would stop for non-players and would stand still permanently due to enemy hitboxes being removed. Tested that stewblaster only stops for players and starts moving when there are no players in the vicinity
* remove goto
* Update MovementAIComponent.cpp
* convert to PathWaypoint
Easier for usage with paths
* add path parsing
* ref removal, simplification of work
* it works
* Update MovementAIComponent.cpp
* disable pathing for combat
we just need it for npcs for now, combat ai can be done later
* fixed stuttery enemies
wow
* start at ramped up speed
* add pausing and resuming
* Update MovementAIComponent.cpp
* Update MovementAIComponent.h
* Update CMakeLists.txt
* Remove news in behavior members
Tested that GrowingFlowers still have their SkillEvent fired with the correct parameters, gftikitorch works, sharks eating stinky fish still work
* explicitly default move assignment and copy operators/constructors
---------
Co-authored-by: jadebenn <jadebenn@users.noreply.github.com>
was using very old code from pre-foss that has not been updated with the new behavior knowledge. The code has been updated accordingly to what the client expects.
Tested that ice shurikens can now destroy the legs of the skeleton towers in crux prime. Tested that the following weapons can still do damage to enemies and objects in the world:
surikens of ice
serratorizer
Super Morning Star
Super Dagger
elite long barrel blaster (charge and normal)
Mosaic Wand
Tested that players show up as normal on each others screens, tested that money magnet still works with item 8600, tested that gravity still works in Moon Base.
* add movement ai skeleton
Zone loading code is tested to load and read the correct values using logs. other ldf data is unaffected as I walked around crux and dragons/apes can still spawn and be killed.
* format
* Assorted pet improvements
* remove unecessary include
* updates to address some feedback
* fixed database code for testing
* messinng around with tables
* updated to address feedback
* fix world hang
* Remove at() in CDLootTableTable.cpp
* Uncapitalize LOT variable
* Uncapitalize LOT variable
* fix: more include changes
* fix: remove dZoneManager from global include
* fix: dDatabase
* fix: dCommon
* fix: object libs
* fix: rebase
* fix: bcrypt
* wip: try simplified connector build
* fix: update dockerfile
* fix: mariadb C/C++ on apple
* feat: Move scripts to CMAKE_MODULE_PATH
* fix: dPropertyBehaviors
* fix: macos?
* fix: Dockerfile
* fix: macos?
* fix: macos?
* fix: macos?
* fix: macos?
* fix: macos?
* try: install_name_tool
* fix not building on unix
* fix include paths
* Remove code changes
Will fix in another PR.
* format pass
remove 2 more included directories.
remove commented out code
add status to messages
* comments and format
surround include directories with quotes
remove commented out code
remove debug messages
* Update CMakeLists.txt
---------
Co-authored-by: David Markowitz <EmosewaMC@gmail.com>
Co-authored-by: David Markowitz <39972741+EmosewaMC@users.noreply.github.com>
* feat: move all ldf config to be in xml
cleanup dev-tribute.xml
add comments to atm.xml
remove custom script tag in favor of ldfconfig for it
* replace sto* calls with tryParse's
* remove unesessary .has_value() calls and check for null_lot
* remove member variable naming that on on-member vars
* move max's vendor inventory to be configurable via vanity
* Consolidate triplecated vendor code
* don't write name if one is not given
* Updates to vanity xml's and demo for later docs
* rename vars
* fix serialization
Was incorrect before. The only flags are if any data in the FrameStats has changed, you write them again. Velocities also do not use dirty flags for their values, they use a flag to determine if their velocity if zero or non-zero. if any velocity changes, re-write FrameStats.
Tested that 2 players can see each other move as before, enemies move as before and players racing is identical as before.
* Update HavokVehiclePhysicsComponent.cpp
tests
tested that red green and yellow bots waved when interacted with
tested that construction robot races when interacted with
wandering vendor does nothing before and after, but script is ready for use when npcs are implemented.
add scripts for robot city
Speed is used in more waypoints than not so we may as well reduce repeated references.
tested that the data is still loaded as normal in avant gardens
Update Zone.cpp
* feat: refactor vanity
cleanup code to be generalized for objects
remove unused party feature
add fallback to data to text
Allow for better organizing data in multiple files
remove special case flag values in favor of config data
general cleanup and fixes
* newline at eof's
* Groundwork
* movie buying logic out of gm handler
make transaction result more useful
* Full implementation
Cleanup and fix some calls in gamemessages
* Load the component in the entity
Patch Auth
* new line at eof
* cache lookups
* remove sort
* fix includes
if we DONT find it, we want to kill/delete it. not the other way around where if we find it we try to delete it again.
tested that you no longer crash when trying to login
tested that bird monument issues are fixed
* Split out BehaviorMessage class changes from PR #1452
* remove <string_view> inclusion in ActionContext.h
* add the arguments nullptr check back in
* remove redundant std::string constructor calls
* Update AddStripMessage.cpp - change push_back to emplace_back
* EntityManager: ranges and cleanup
Use LWOOBJID for ghosting entities
use ranges::views::values for associative container iteration
remove dead code
comment magic numbers
little bit of optimization (not enough to be game changing or take the time to measure, they are free speedups anyways, we take those)
use cstdint types
* use size_t
* use lwoobjid for ghost candidate
* Moved unrelated changes out of the TryParse PR branch
* const correctness and cstdint type usage
* removing a few "== nullptr"
* amf constexpr, const-correctness, and attrib tagging
* update to account for feedback
* Fixing accidentally included header and hopefully fixing the MacOS issue too
* try reordering the amf3 specializations to fix the MacOS issue again
* Amf3 template class member func instantiation fix
* try including only on macos
* Using if constexpr rather than specialization
* Trying a different solution for the instantiation problem
* Remove #include "dPlatforms.h"
* Changed how the TryParse function works (and also did some general cleanup along the way)
* Update noexcept attributes (verified these are correct)
* Add fp overload for MacOS functionality
* resolving some feedback
* Split out unrelated changes to CleanupRoundup branch
* Update in response to feedback
* the consequences of emo's member variable renaming request
* Revert "the consequences of emo's member variable renaming request"
This reverts commit bf318caeda.
* Fully revert renaming attempt
* Revert "the consequences of emo's member variable renaming request"
This reverts commit bf318caeda.
Fully revert renaming attempt
* Created ClientVersion.h and moved the client version defaults to it
* Fix partial parsing and MacOS floating point errors
* attempting fix to MacOS compiler error
* syntax pass (should be the last commit unless the CI fails)
* ah, wait, forgot to uncomment the preprocessor statements for MacOS. THIS should be the last commit pending CI
* Okay, one last thing I noticed: We were including C headers here. Now they're C++ headers. Pinky swear this is it!
* typo and I am OCD. please let this be the last
* hash is usally but not always noexcept, so the specifier should go
* Address MOST of the feedback
* address the claim codes issue
* Move CDClientManager to be a namespace
Tested that worlds still load data as expected. Had no use being a singleton anyways.
* Move cdclient data storage to tu local containers
Allows some data from these containers to be saved on object by reference instead of always needing to copy.
iteration 2
- move all unnamed namespace containers to a singular spot
- use macro for template specialization and variable declaration
- use templates to allow for as little copy paste of types and functions as possible
* remember to use typename!
compiler believes T::StorageType is accessing a member, not a type.
* Update CDClientManager.cpp
* move to cpp?
* SystemAddress and destructor
* move respawn logic to character comp
Tested that respawn pos and rot can be set as per previously by crossing a respawn point and smashing to see if I would respawn at the new place.
* Move loot cheat checking
* Remove GetParentUser overload
Tested completing missions
control behaviors
collecting life crate
completing a bunch of missions using macros
loading into worlds
brick-by-brick
placing models
digging the x spot in gnarled forest
can still ban and mute players
cheat detection is still doing its thing
flags are still set (checked with flag 45)
claim codes still work (created new char, checked the lego club mail was there)
* Move player constructor logic
Its now at the bottom of Entity constructor. Time to remove Player
* Remove Player class
Removes the Player class. Tested that I can still login and see another player in Venture Explorer and logging out a few times still works as well as smashing enemies
* store ptr
* Update SlashCommandHandler.cpp
* Update a few components to use smart pointers for memory management
* 'final' keyword added to classes
* removed duplicate 'const'
* removed unused code
* Updated render component to store effects directly in a vector
* Use move instead of copy
* make pointers const
* attribute tags
* nitpicking
* delete default effect constructor
* Added a vector size check to the RemoveEffect() function
* use empty() instead of size()
* allow usage of NiPoint3 and NiQuaternion in constexpr context
* removed .cpp files entirely
* moving circular dependency circumvention stuff to an .inl file
* real world usage!!!!!
* reverting weird branch cross-pollination
* removing more weird branch cross-pollination
* remove comment
* added inverse header guard to inl file
* Update NiPoint3.inl
* trying different constructor syntax
* reorganize into .inl files for readability
* uncomment include
* moved non-constexpr definitions to cpp file
* moved static definitions back to inl files
* testing fix
* moved constants into seperate namespace
* Undo change in build-and-test.yml
* nodiscard
* fix faction change issue
fixes an issue where enemies who would have their faction changed would not change aggro targets.
Tested that stromling mechs and ronin/horsemen in forbidden valley still aggro on spawn as expected.
* use erase remove if
Removes the singleton inheritance from dpWorld.
Tested that crux prime, nimbus station, avant gardens and nexus tower still use navmeshes and physics and that physics volumes are still collided with.
* Update PlayerContainer.cpp
fix: turn warnings into errors
for the few warnings we get, at least make sure we listen to them now on unix platforms. Windows has too many right now to enable /WX
resolve warning
actually fix it
Update CMakeLists.txt
* detour pls
* Update CMakeLists.txt
* I HAVE 20 DOLLARS AND I NEED A WII GAME FOR MY KID
* I HAVE 0 DOLLARS NOW
* don't look don't look
* Revert "don't look don't look"
This reverts commit 5603eb5980.
* Revert "Revert "don't look don't look""
This reverts commit a334832a4d.
* could it be
* we found one (but its already reported)
not resolved yet though.
* Revert "don't look don't look"
This reverts commit 5603eb5980.
* ignore warning for file
* another one
* Update .gitmodules
* comments
adds an announcement sent to the system address which had the mismatched FDB to let the developer know they have a mis-matched one.
Tested that if a civilian tries to login without a gm level > developer, they are kicked.
Tested that if a GM is found to have a mismatched FDB, they are let in but have an announcement sent to them.
Use auth packets for msg
added comment as to why
ff
remove default
add comment
Remove broadcast
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
- Remove static storage container (static containers can be destroyed before exit/terminate handler executes)
* remove player cast
* Remove extra includes
* Add a player manager
Used for the static Player functions. Further removes stuff from the Player class/file.
* chore: Move ghosting functionality to component
Tested that ghosting still works and players are still firing off the OnPlayerLeave and relevant handlers.
* move to unordered_set
* remove pending timers
they serve no purpose anymore since iterator invalidation is a non-issue. I added this initially to make it so if you added a timer this frame, there would be at least 1 frame before you would start it, but this in practice doesnt serve a purpose
* timers still work
* chore: default size to 33 on LU(W)Strings since that's the most common lenght
Was doing this on other places, but not the main one
* chore: remove all raw packet reading from chat packet handler
and general chat packet cleanup
* fix team invite/promote/kick
* Address feedback
* fix friends check
* update comments
* Address feedback
Add GM level handeling
* Address feedback
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
- Remove static storage container (static containers can be destroyed before exit/terminate handler executes)
* remove player cast
* Remove extra includes
* Add a player manager
Used for the static Player functions. Further removes stuff from the Player class/file.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
- Remove static storage container (static containers can be destroyed before exit/terminate handler executes)
* remove player cast
* Remove extra includes
* Assorted pet improvements
* remove unecessary include
* updates to address some feedback
* fixed database code for testing
* Removed reference member (for now)
* Removed cmake flag
* chore: continue work on removing raw packet reading
tested that logging in, deleted a char, renaming a char, and transfeering to a zone all work still
* Address Feedback
* Add addstrip handling
add SendBehaviorBlocksToClient serialization
add id generation and auto updating
add behaviorlisttoclient serialization
* fix crash
happened if you added state 0 and 6 and nothing in between
* Section off code
Use proper encapsulation to hide code away and only let specific objects do certain jobs.
* Organize serialization
Section off into operational chunks
Write data at the level most appropriate
* Remove and simplify BlockDefinitions
Remove pointer usage for BlockDefinitions and move to optional.
* ControlBehaviors: Add addaction handling
* re-organization
remove const from return value
change to int from uint
use generic methods to reduce code clutter
* add strip ui position handling
* add split strip functionality
* fix issues
fix an issue where if you were on an empty state, the server would allow you to remain on that state
fix an issue where the ui would not open on the previously opened state
fix an issue where deleting strips in order caused the wrong strips to be deleted
* update how you remove behaviors from models
* Add remove actions and rename
* migrate actions
* update action and rearrange strip
* merge strips
* add and move to inventory
* Remove dead code
* simplify code
* nits and move finish MoveToInventory
constify serialize
further include path fixes
use const, comments
fix amf message
Update ModelComponent.cpp
replace operator subscript with at
* Update ModelComponent.cpp
* Update MigrateActionsMessage.h
* const
* Move to separate translation units
* include amf3
its precompiled, but just in case
* chore: organize build flags
* Remove ambiguous include path
Don't be default incluyde bcrypt so you need to specify the folder. Allows pre-processor to find the correct file.
* Revert settings
* working
f
* chore: make scripted activity derived from activity
this paves the way for other component being properly derived from the activity component
* use a dirty flag instead
* address feedback
fixes an issue where NPCs would offer the incorrect missions which caused odd blocks. Consolidated logic for mission offering and removed redundant code.
Players do not need access to leave Return to the Venture Explorer (rttve) via a slash command. They can leave through the usual zone method.
Tested that you cannot leavezone in rttve
* Remove std::couts littered throughout the base
* working
End of optimizations for now
going faster
* Remove extraneous compare function
std::less<LWOSCENEID> already does this in a map.
* gaming
* Update Zone.cpp
* dlu is moving to bitbucket again
* Update Level.cpp
---------
Co-authored-by: Jettford <mrjettbradford@gmail.com>
* add enum stringification functionality from third party source
* squashed commit
* Macros: Add test and improve speed
Space macros out
utilize cache locality
ensure no lost functionality
* moved stringify code to dCommon
* Rename #defines in stringify enum tests
* Revert "moved stringify code to dCommon"
This reverts commit 33fa5f8d2f.
* improve macro functionality
change function handle
formatting and function definition tweaks
* typo fixes
* moved code to dCommon/dEnums and tests to dCommonTests/dEnumsTests
* initial magic_enums alternate implementation of enum stringification
* deleted unused tests
* reverted compile flag oopsy and fixed output types
* fixed testing suite
* test formatting improvement
* formatting again :(
* added gm string to "aborting gm!" message
* Push my suggestion for CI tests.
* updated magic enum test
* fix test variable type
* added gm test
* making sure magic_enum is on a release branch
* tidying up console outputs
* re-implemented enum array access for performance
* now it is bugged :(
* nvm, working
* helping out the snowflake compilers
* changed return type too
* optimization too
* formatting too I guess because why not
* being even more painfully specific
* Update WorldServer.cpp to match emo's feedback
* Update MagicEnumTests.cpp to use srand(time(NULL))
* Update eGameMessageType.h - formatting
* Trying to fix the crash but can't actually compile the code to check on my own rn
* Update WorldServer.cpp - third try at this
* Update MagicEnumTests.cpp - use better macro definitions
* Update MagicEnumTests.cpp - c string comparison fix
* addressing all but the cmake feedback
* fixed cmake to the best of my very limited ability
* added tests to verify magic enum arrays are pre-sorted
* updated
---------
Co-authored-by: David Markowitz <EmosewaMC@gmail.com>
Co-authored-by: Jettford <mrjettbradford@gmail.com>