Commit Graph

329 Commits

Author SHA1 Message Date
dongresource fb281b0237 Lock all Database operations.
All DB functions that are called outside of Database.cpp are now locked
by the same mutex. This might be a bit overkill, but it's not a hot code
path, so it doesn't matter. Better to avoid the potential deadlocks if
we made it too granular.

From now on a clear distinction must be made between external and
internal functions in Database.cpp, or else deadlock will occur.

Note that sqlite database operations are already locked, but if execute
multiple transactions within the same operation, it could have still
caused problems.

I also removed the DbPlayer fetch when writing to DB by making it a part
of the Player struct. This, by itself, should have fixed the crash we found.
2020-09-29 16:47:39 +02:00
CPunch 3f35d2e960 sanity check to fix possible FPE 2020-09-28 15:31:01 -05:00
CPunch 884b844d65 minor refactoring 2020-09-28 13:11:13 -05:00
dongresource 4079806436 Support the /batteryN and /batteryW commands.
Also up the PVP damage to 700.
2020-09-28 18:54:39 +02:00
JadeShrineMaiden efb3df7133 Implemented GM SpecialState Handling
Co-authored-by: dongresource <dongresource@protonmail.com>
2020-09-27 22:19:21 +02:00
dongresource c9be0e5402 Do not tick dead players.
This fixes the "dancing in Fusion Matter" bug.
Also (temporarily?) added updateNPCPosition() to the suppression list.
Might want to take it out again (along with some of the other ones) if
we do end up implementing Chunk GC.
2020-09-27 20:29:26 +02:00
dongresource 97c2c532f1
Merge pull request #117 from gsemaj/slider
Load sliders from paths.json
2020-09-27 20:03:41 +02:00
dongresource a324f3fda9
Merge pull request #118 from JadeShrineMaiden/moblocomotion
Greased up enemies
2020-09-27 20:02:52 +02:00
dongresource 6ea47ddb56 Fixes.
* Mobs should account for height when aggroing on nearby players
* We don't need to keep track of lastHealTime for each player separately
* Warp attendants no longer steal the players weapon and money
2020-09-27 19:58:37 +02:00
CPunch 2b4a1387f9 stubbed BuddyManager 2020-09-27 12:23:49 -05:00
Gent Semaj b03cc563eb Fix mobs not aggroing 2020-09-27 03:05:55 -04:00
Gent Semaj dd374b2ea1 Fix boosts and potions not updating on reward 2020-09-27 03:05:55 -04:00
CPunch f8f2088e38 fixed player health regen 2020-09-27 01:13:27 -05:00
CPunch 062302a7aa fixed potential threading/socket issue 2020-09-27 00:12:26 -05:00
Jade a5d3160588 Mob movement smoothening + Bugfixes
* Mobs now move at a tickrate per second of 2 as opposed to less than 1 before.
* How lerping works was changed slightly, mobs are bumped down to half the speed to account for the higher tickrate.
* Damage formula was altered to more closely match the OG game.
2020-09-27 05:43:50 +01:00
Jade 4fea2ae896 Variable damage to/from mobs
* Player weapons and armor ratings are taken into account when damaging/getting damaged by mobs.
* Players have a 5% chance to critical strike mobs, this doubles the player's weapon power.
* Aside from player and mob stat based damage variance, there is also an inherent 20% variance to any damage.
2020-09-27 02:53:03 +01:00
Gent 56a92d302f Add curve parameter to lerp 2020-09-26 19:24:07 -04:00
Gent 0ea5712f8c Load sliders from paths.json 2020-09-26 19:24:07 -04:00
dongresource b4fb449e69 Fix VS build. 2020-09-27 01:00:31 +02:00
dongresource 4fa6618abb Implemented player tick (health/nano stamina).
* The player now heals while not in combat
* Nanos lose stamina while active, regain it while resting
* Using active nano powers drains stamina
* Standing in FM patches/lakes now deals damage
* Fixed a memory error in npcAttackPc()
* Mobs now aggro when a player gets close
* Mobs now give up the chase if the player gets out of the combat zone;
they no longer try chasing until they themselves have left it
* Added a few missing break statements in the loops in BuddyManager

Other players are not yet instantly notified of health/stamina updates,
as finding the correct way to do this has proven tricky. FM patch damage
updates other player's views just fine, though.
2020-09-27 00:16:15 +02:00
dongresource 43d268e142 Enough with the plungers already.
At least from killed mobs.
2020-09-26 16:45:32 +02:00
dongresource 9657aaf202 Tuned various values.
* The player no longer receives the Blossom nano mission until they've
left the future
* As a temporary measure for the sake of the public server, Fusions in
respawn in their lairs after 2.5 minutes
* Changed default player damage value to 150
* Mobs now drop the correct amount of FM, as well as a close
approximation of the correct amount of taros
* You can no longer break the FM cap in the Future zone
* Fixed the updateFusionMatter() bug the right way this time
* Completing a nano mission now subtracts FM as it should
* Setting a Nano's power no longer reports 0 FM to the client
2020-09-26 03:48:45 +02:00
dongresource dccd92aff9 The Future is now playable.
* Sync'd tdata so it has all the lair NPCs
* Bypassed Eduardo escort task
* Fixed the level 36 updateFusionMatter() memory error
* Fixed qitems being deleted even if the player fails to complete the
mission due to not having any inventory space, thus softlocking the
mission
2020-09-25 23:10:02 +02:00
CPunch 1b35aab958
Merge pull request #115 from kamilprzyb/master
Quick fix for saving nano missions
2020-09-25 15:06:14 -05:00
Gent 0931cf1fbc Fix client/server summoned nano discrepancy on revive 2020-09-25 10:57:32 -04:00
kamilprzyb 8c63cd575c quick fix for saving running nano missions 2020-09-25 11:30:59 +02:00
CPunch 5068b38c5e
Merge pull request #100 from SengokuNadeko/master
Buddy System
2020-09-25 00:48:01 -05:00
CPunch 231a4a441b
Merge pull request #112 from gsemaj/slider
Load NPC paths from JSON + update submodule ref
2020-09-25 00:37:53 -05:00
kamilprzyb d4f1515f5d
Time to go, gumballs and nano potions (#113)
* set up "go to the time machine" button working

* warping to the past now sets PayZoneFlag and removes all active missions

* added gumballs functionality

* added nano potions functionality

* formatting fix
2020-09-25 00:35:27 -05:00
CPunch e5a24bcb70
Merge pull request #114 from gsemaj/bugfix1
Prevent player position from updating when flying on monkey
2020-09-25 00:33:42 -05:00
CPunch 874479d1cf fixed NPC spawning bug 2020-09-24 21:32:14 -05:00
CPunch 8f84c4c2f8 updateNPCPosition now tracks chunks 2020-09-24 20:58:20 -05:00
dongresource 279cb78d5f Mob-related cleanup.
* NPCs now keep track of their chunk information like PlayerView does
for players
* NPCManager::sendToViewable() parallels PlayerManager::sendToViewable()
* Nano damage and debuffs now count as attacking a mob
* Mobs will de-aggro if something else killed their target
2020-09-25 02:00:26 +02:00
dongresource 72d625fd8d Summoned mobs are now actually treated as mobs.
Unfortunetly, this necessitated keeping around yet more JSON objects for
the duration of the server's runtime.
It also involved unifying the way NPC IDs are handled, such that they
may be allocated and deallocated out of order.

If any NPCID-related bugs occour, this commit should be regarded as
the prime suspect.
2020-09-25 00:51:18 +02:00
Gent db33ca2bbb Prevent player position from updating when flying
Only chunk is updated instead to maintain visibility
2020-09-24 18:43:58 -04:00
dongresource cfb3d25bc5 Lerp mob movement a little.
We'll lerp a little harder later. Also retreat if kited
too far.
2020-09-24 23:11:14 +02:00
dongresource 1f18104a6f Mobs fight back now.
There is still a lot of tuning, lerping and cleanup to do.
2020-09-24 23:11:14 +02:00
dongresource 006d1000c7 Add Address Sanitizer suppression list.
This replaces the unnecessary deallocations on program termination.
Passing in the suppression list environment variable via setenv()
doesn't seem to work, so I've added a comment in the Makefile to explain
invocation.
2020-09-24 23:11:14 +02:00
Gent 72c16587e0 Load NPC paths from JSON 2020-09-24 10:32:46 -04:00
CPunch c33f218e56 updateFusionMatter now sets fusion matter 2020-09-23 16:04:58 -05:00
CPunch 4caca07856
Merge pull request #109 from gsemaj/slider
Basic slider implementation
2020-09-23 14:49:26 -05:00
CPunch 63c14aff58
Merge pull request #110 from kamilprzyb/vehicles_pr
Fixed Time and implemented vehicles expiring
2020-09-23 14:48:38 -05:00
CPunch 78930916ad added support for nano missions 2020-09-23 14:44:27 -05:00
SengokuNadeko 9cfced88c9
Stubbed buddy warping
After testing warping a lot I saw how buggy it is. I decided to stub it for this PR and work on it in a later PR.
2020-09-23 13:52:21 -04:00
Gent f2596bfb6a Add NPC chunk management + Generalize lerp 2020-09-23 12:06:25 -04:00
Gent 65bd2d120b Add NPC pathing queues 2020-09-23 10:29:29 -04:00
kamilprzyb 7bcdc111da fixed comments formating, added zeroing out player->toRemoveVehicle after removing vehicle 2020-09-23 11:21:32 +02:00
kamilprzyb 016c48645e adjusted timestamp function to always return value in seconds 2020-09-23 11:05:18 +02:00
kamilprzyb 09f1f67778 implemented checking vehicle time limit on use 2020-09-23 10:20:47 +02:00
Gent 7dfc888552 Basic slider implementation 2020-09-23 00:08:51 -04:00
Gent 6f05f0f2c8 Add NPCClass enum 2020-09-22 23:41:43 -04:00
dongresource c722044bf5 The Sleep, Stun and Snare powers now affect mobs.
They currently don't expire after a set amount of time.
Attacking a sleeping monster does wake it up, but doesn't remove the
debuff status client-side yet.
2020-09-22 22:22:10 +02:00
kamilprzyb 076f89927d changed vehicle iTimeLimit to be stored in seconds instead of miliseconds 2020-09-22 21:49:24 +02:00
dongresource 95a79ec815 Switched MobManager::step() to the timer.
It doesn't really need to run on every shard step. This makes it a lot
less hot.
2020-09-22 21:31:08 +02:00
kamilprzyb 7ba9b9a54f replaced high_resolution_clock with system_time for timestamps 2020-09-22 21:15:47 +02:00
dongresource ba5998d53a Added a config option to disable mob movement and combat.
This will come in handy when gruntwork starts.
Also fixed a bug where the ACCLEVEL setting was read as a boolean.
2020-09-22 20:53:44 +02:00
dongresource ac1fd1e5be Implemented mob roaming.
Will likely need further tuning.
Mobs in vacant chunks are skipped.
2020-09-22 20:33:10 +02:00
dongresource 94ab5b8b64 Seed the random number generator. 2020-09-22 20:32:40 +02:00
SengokuNadeko e0e474924d
Implemented buddy warping
Buddy warping now works, if anything else needs to be added/redone in regards to this feel free to let me know ^
2020-09-22 13:02:00 -04:00
kamilprzyb 0931c88541 fixed size bug 2020-09-22 13:41:28 +02:00
kamilprzyb 5a58908462 vehicle has a proper expiration day when bought, implemented checking expired vehicles while login 2020-09-22 13:16:09 +02:00
kamilprzyb 00f64ce992 added sanity check for killing mission mobs 2020-09-22 10:18:29 +02:00
Gent 153b3a9ef5 Sync tabledata submodule + fix transportation bugs 2020-09-22 00:42:46 -04:00
CakeLancelot adf017b07c
Move from isGM to Account Levels (#106)
Co-authored-by: dongresource <dongresource@protonmail.com>
2020-09-22 04:26:12 +02:00
dongresource 5d8bb7f8a5
Merge pull request #95 from gsemaj/monkeys
Paths framework + Monkey Skyway System framework
2020-09-22 03:54:01 +02:00
Gent 2c8243e136 General MSS fixes + tweaks
Add alert message for unpathed skyway routes
Fix overflow during lerp + add Future routes
Add documentation for MSS
Fix potential MSS registration bug
Minor tweaks + styling
Update packet broadcast
2020-09-21 21:43:39 -04:00
dongresource 12fbdc9621 Wait about 2s before despawning killed mobs.
This gives them enough time to play their death animations before
they disappear.
2020-09-22 00:23:18 +02:00
dongresource a768a4f539 Fixed halved NPC distance and renamed config option to chunksize. 2020-09-21 23:30:05 +02:00
dongresource d6357197d3 Use the chunk's visibility lists when respawning mobs. 2020-09-21 23:13:13 +02:00
CPunch 4cc1cf4f7e minor chunk refactor 2020-09-21 14:55:34 -05:00
CPunch b67a0b6946 removed usewebapi 2020-09-21 14:49:08 -05:00
kamilprzyb 5e0948ea93
Database saving update (#104)
* implemented saving BatteryN and BatteryW

* implemented saving mentor

* moved int64->blob parsing to a separate function

* moved parsing blob->int64 to a separate function

* added functions for parsing int32->blob and vice versa

* added functions for parsing int16->blob and vice versa

* WIP saving quest items and active tasks

* Quest items are stored in inventory table instead of blob

* added sanity check for missionId

* saving active missions works

* removed unneccesary include

* implemented saving warplocationflag, skywaylocationflag and currentmissionid in database

* INFO DB message now shows how many accounts and player characters are in the database

* fixed dbsaveinterval being in [login] instead of [shard]

* fixed mission quit:
- fixed wrong json name, causing qitems not deleting properly
- quitting mission now resets npc kill count

* adjusted saving active missions

* removed blob parsing functions that ended up being unused

* removed accidentaly added include

* removed sending PCStyle2 on Player Enter

* added a sanity check in itemMoveHandler

* removed MapNum from PCLoad, as client doesn't even read it

* set BuddyWarpCooldown to 60s on PCLoad

* fixed a bug causing EXIT DUPLICATE not working

* added creation and last login timestamps to accounts and players

* added a sanity check for P_CL2LS_REQ_PC_EXIT_DUPLICATE

* implemented web api support, toggled by new setting (off by default)

* add usewebapi to config

Co-authored-by: Gent <gentsemaj@live.com>
2020-09-21 14:43:53 -05:00
SengokuNadeko 90134cd1fa
Buddy deleting/blocking works and code clean up
Added in buddy deleting and buddy blocking. I also cleaned up some of the code and added some comments to the code.
2020-09-21 14:28:04 -04:00
dongresource 321dca3f79 Use PC_MAXHEALTH() in the rest of the codebase.
+ minor fixups
2020-09-21 19:51:30 +02:00
JadeShrineMaiden 113ecc8f60 Refactored passive nano powers. 2020-09-21 19:51:30 +02:00
dongresource dc9de5a54a Cleaned up implementation of active nano powers. 2020-09-21 19:51:30 +02:00
JadeShrineMaiden 0fc072d591 Initial implementation of nano powers. 2020-09-21 19:51:30 +02:00
Gent 135424b855 Update player visibility on skyway 2020-09-20 15:24:17 -04:00
Gent a5ffe26c44 Move lerp to td init, add variable gap size 2020-09-20 15:24:17 -04:00
Gent 6a78a301c9 Skyway lerp tuning 2020-09-20 15:24:17 -04:00
Gent a5c40b66f5 Add basic Monkey Skyway functionality 2020-09-20 15:24:17 -04:00
CakeLancelot 94583e534b
Merge pull request #102 from darkredtitan/LoadisGMfromConfig.ini
Respect config.ini GM settings
Upon character creation, the GM value from the config will now be used instead of always being set to false. The default in Settings.cpp has also been changed to be consistent with the config.ini in the repo.
2020-09-20 14:04:33 -05:00
darkredtitan ff7c78d545 Change default value for GM to true 2020-09-20 20:50:58 +02:00
CakeLancelot 77df7b7160
Merge pull request #92 from gsemaj/crocpot
Implement Croc Pot item combining
Fix vehicle type override
2020-09-20 13:40:36 -05:00
darkredtitan 6eb21e6d67 Respect config.ini GM settings 2020-09-20 19:53:33 +02:00
CPunch 228a181b74 removed ChunkManager::removeNPC() 2020-09-20 10:34:43 -05:00
Gent c6ec1c46c2 Add documentation for getItemType() 2020-09-19 16:38:50 -04:00
Gent d1c5e272a8 Fix vehicle type override 2020-09-19 15:26:16 -04:00
SengokuNadeko 9bb19efc99
Updated main.cpp for buddy manager init function 2020-09-19 15:08:03 -04:00
SengokuNadeko 7757238a47
Buddy System draft (W.I.P)
The w.i.p buddy system
2020-09-19 15:07:09 -04:00
CakeLancelot 4d437bcb34
Merge pull request #97 from gsemaj/bugfix1
Preventing spawning of invalid items using /itemN
Fix fusion matter amount not displaying on enter
2020-09-19 07:46:56 -05:00
Gent 5dbca0b7b1 Fix fusion matter amount not displaying on enter 2020-09-18 23:26:20 -04:00
CPunch ce9285bab5 support for /unsummon 2020-09-18 16:24:15 -05:00
Gent cd7fec2d5b Fix invalid item bug 2020-09-18 14:45:51 -04:00
CPunch d9d781c37d whoops, everyone had gm 2020-09-18 02:10:30 -05:00
Gent b929d12902 Implement Croc Pot item combining 2020-09-17 23:55:57 -04:00
CPunch 9f78735caa fixed socket reference bug 2020-09-17 22:44:37 -05:00
CPunch 31ef03610d temp fix and small refactor 2020-09-17 21:41:09 -05:00
CPunch 22e3e9e4de fixed 'player clone' bug 2020-09-17 18:03:23 -05:00
CPunch f4db0830ba huge refactoring, chunking added 2020-09-17 17:45:43 -05:00