dd6fbfb683
Tweak terminate() slightly
...
* Gave it a default argument, since we never actually care about it, but
it needs to have it to conform to the signal handler prototype
* Constricted the area locked by activeCrit to only the block that deals
with the connections vector, to lower the chance of a future badly
placed call to terminate() deadlocking the server instead
2020-12-06 02:20:46 +01:00
92307063fc
Integrate the monitor's listener socket into the shard's poll()
...
This removes the need for a separate monitor thread.
2020-12-06 01:44:37 +01:00
53d8cb67ba
Set monitor connections to non-blocking
...
Better to just drop monitor connections when the quality is bad than to
risk blocking the shard thread.
2020-12-05 23:16:09 +01:00
6b257887b7
Use an std::vector for PollFDs instead of handling it manually
...
Lowered poll() timeout to 50, to fix (work around?) slider stutter.
2020-12-05 22:51:17 +01:00
ec7cba644c
Clean up polling logic
...
* Extracted PollFD manipulation and nonblocking socket configuration
into helper functions
* Replaced the connections list with an unordered_map
* Dynamically grow the number of PollFD structures with realloc()
With these changes done, the server's CPU usage is completely diminished
from its old average of ~47% to ~0.07%, with occasional spikes up to ~14%.
2020-12-05 22:47:50 +01:00
269315ca09
Support for poll() (ie. WSAPoll()) on Windows
2020-12-05 22:47:50 +01:00
661061b4eb
Switch to non-blocking sockets + poll(); prepare for Windows logic
2020-12-05 22:47:50 +01:00
3a2b488f33
[WIP] fixed a million bugs and one potential one
2020-12-05 22:47:50 +01:00
721b3f440f
[WIP] Switched to poll(), but only on Unix
2020-12-05 22:47:50 +01:00
Gent S
b04c377d7c
Properly implement item types.
2020-12-04 16:42:58 -05:00
Gent S
794856a63c
Clean up item loading from XDT.
2020-12-04 13:57:08 -05:00
Gent S
856a90abcf
Fix nano logic in goo damage running without a nano out
2020-12-04 11:59:53 -05:00
88d904e302
Fix FM patches not dealing damage unless invulnerable
2020-12-04 17:48:12 +01:00
46552307cd
Disable monitor by default in config file
2020-12-04 17:30:21 +01:00
26024de866
Support the monitor interface on Windows as well
...
This change required sacrificing both code cleanliness and the specific
error reports from perror(). Those could have been kept with a portable
wrapper, but that's too much work. We'll do it if unforseen errors
arise.
2020-12-04 17:25:32 +01:00
Gent S
85dcdd4cc5
Added /hide command to exclude players from monitor output
2020-12-04 07:24:33 -05:00
Gent S
1ca8094628
Fix regression with disconnected player on Skyway agent.
2020-12-03 15:33:14 -05:00
Gent S
543d0a7afd
Fix edge case for nano mission acquisition
...
This caused players to only get nano missions after exceeding the required FM instead of meeting it.
2020-12-03 00:05:14 -05:00
Gent S
4c398895aa
Make /lair fit convention.
2020-12-02 18:41:09 -05:00
e899928928
Do not try to compile the monitor on windows
2020-12-03 00:15:06 +01:00
c8b011913a
Make monitor parameters configurable
2020-12-02 23:42:33 +01:00
15b63f3cbd
Fix regression with a disconnect check in MobManager::combatStep()
2020-12-02 23:32:38 +01:00
ce1a5a7664
Handle partial transmissions of the buffer to the monitor
2020-12-02 20:19:34 +01:00
c6112d04da
Implemented player position monitor interface
2020-12-02 20:19:34 +01:00
Gent S
73f8179836
Make aggro space spheroidal on Z
...
By doubling the z difference used in distance calculation, mobs above or below the player will aggro less often.
2020-12-02 09:20:33 -05:00
Gent Semaj
86f17b6525
Show announcements in server log
2020-12-01 19:59:18 -05:00
fed3eca378
Display area announcement to invoking player as well
...
Also clarified that shard- and world-level announcements will not be
implemented as they are not applicable to our single-shard server.
2020-12-01 23:32:45 +01:00
fb9c4140b6
Remove redundant namespace specifiers in PlayerManager::init()
2020-12-01 22:24:18 +01:00
657061083e
Lose aggro and do not take damage if invulnerable
2020-12-01 21:37:34 +01:00
8a86c75747
Make sure each group member is alive before healing/buffing them
2020-12-01 21:37:34 +01:00
046e7bb6f1
Do not aggro on players with /invulnerable
2020-12-01 21:37:34 +01:00
1e822f7a6c
Removed redundant checks for a nullptr from PlayerManager::getPlayer()
...
These were written in desparation and never should have been there in
the first place.
2020-12-01 21:37:34 +01:00
c43a3d64fb
Removed the Player pointer from CNSocket
...
It was a leak in the abstraction that we weren't even using that much.
This is technically a de-optimization, but it's okay since it's not a
hot code path.
2020-12-01 21:37:34 +01:00
Titan
7c5d7a70cc
Fix enter key sending '\n' in passwords
2020-12-01 14:29:21 -05:00
Titan
c1941654b6
Basic Implementation of a lair unlock command
2020-12-01 14:19:16 -05:00
Gent S
d2d6171d04
Fix gumballs only lasting 1 minute instead of 10
2020-12-01 13:47:54 -05:00
58952be47e
Added silent unsummoning
...
- summonNano now supports an optional "silent" argument
- gumballs now last 10 minutes.
- fixed comments
2020-12-01 13:16:14 -05:00
5771cd014a
Various bugfixes and tweaks
...
- timed missions of all types should work.
- nanos now transmit an unsummon on 0 stamina.
- dying bumps your nanos down to half stamina now.
- enemies use abilities less frequently.
- group recall now works at any distance.
- passive nanos are tweaked to guzzle less stamina.
- cleared out some redundant stuff at the nanoPower handler.
2020-12-01 13:16:14 -05:00
Gent S
c9754902b9
Instance fusion lair NPCs, remove non-mob fusions, stub non-mob paths
2020-12-01 06:07:10 -05:00
Gent S
c508016ca3
Play nano mission animation for nearby players
2020-11-30 20:36:20 -05:00
Gent S
4863d29590
Fix /unsummonW crash on non-mob NPCs
2020-11-30 10:53:34 -05:00
858fbf40be
Do not strip newlines from email bodies
2020-11-29 21:31:54 +01:00
Gent S
1d7f8bd133
Mob abilities cleanup
2020-11-28 12:41:00 -05:00
a9ad399bc2
Various Tweaks to Mob skill behavior
...
- Fixed enemy abilities playing after death
- Nerfed frequency further
- Heal on retreat correctly
- Nerfed damage and corruption skill damage
2020-11-28 11:41:32 -05:00
963205fad6
Added Nullptr check + Made mob abilities less frequent
2020-11-28 11:41:21 -05:00
b836952356
Restructured Arrays to Vectors
2020-11-27 19:02:54 -05:00
6fb652f642
Corruption reflection + Extra adjustments
2020-11-27 16:33:22 -05:00
2cde3e34f6
Active skills, Corruption and Eruption
2020-11-27 16:33:18 -05:00
1371a6da77
Base Variadic MobPowers Handler
2020-11-27 16:32:59 -05:00
d2e89851d6
Non-group buffs do not misbehave + Revive nano stamina fix
2020-11-27 15:40:49 -05:00
Gent S
7cc0a0fc82
Fix group recall and temporarily lift range restriction
2020-11-27 15:31:56 -05:00
c343092bd5
Gumball times out for slots 2 & 3 + Tweaks
2020-11-27 12:01:28 -05:00
Gent S
36d6231da4
Nano refactor cleanup
...
sanity checks and int[] -> vector<int>
2020-11-27 00:07:31 -05:00
Gent S
7851866d13
Fix nanos making sound when they run out of stamina
2020-11-26 23:01:19 -05:00
Gent S
c2ab5c9d02
Fix case where resplen wasn't being initialized
2020-11-26 23:01:19 -05:00
166eb5125f
Group Heal Range Limit
2020-11-26 23:01:19 -05:00
26ca4d8671
New Powers, Tweaked Eggs further + Cleanup
...
* Scavenge and Bonus nanos work.
* Eggs now damage and heal more cleanly.
2020-11-26 23:01:19 -05:00
28276d2229
Reverting back some changes + Tweaks
2020-11-26 23:01:19 -05:00
2b25b17bd8
Gumball Handling and Bugfixes
...
* Gumballs now run out of timer.
* Reverted a regression, (gumballs with 0 iOpt do not get emptied).
* Nano matchups now work correctly.
2020-11-26 23:01:19 -05:00
f7c0596a4c
Adapted Egg Buffing to Nano powers
...
* Adapted eggs to nano power data.
* Tweaked nano abilities.
2020-11-26 23:01:19 -05:00
fe7ec44554
Restructuring, Cleaning up and Bugfixes
...
* Added findTargets, a new helper function that reads out the packet for targets.
* Restructured and removed leftover redundant code.
2020-11-26 23:01:19 -05:00
299fc1b461
Refactored Nano Powers
...
* All nano power functions have been merged into one goliath of a function.
* Nano powers consume the correct amount of stamina.
* Bugfixed gumball issues, gumballed nanos now perform better.
* Revive powers now work correctly.
* Recall powers both self and group are functional.
* Removed nanoBuff.
* Added a new applyBuff function, this allows for quick and easy application of nano skills.
* Numerous other bugfixes.
2020-11-26 23:01:19 -05:00
2acb90f2d2
Initial tabledata implementation
2020-11-26 23:01:19 -05:00
Gent S
75d33aff3e
Fix S.C.A.M.P.E.R. chunk desync... again
2020-11-26 22:58:56 -05:00
Gent S
8073c68bd5
Make /fusionmatter properly update fusion matter
2020-11-26 22:33:43 -05:00
Gent S
15dd0a2fc3
Add missing sanity checks to BuddyManager
2020-11-26 22:30:30 -05:00
Gent S
71d1212877
Fix All Characters always failing validation
2020-11-26 11:04:56 -05:00
Gent S
57060e9b6f
Fix spawning in the unknown when no Resurrect 'Ems are nearby
2020-11-26 11:03:42 -05:00
Gent S
faf2a0ee7d
Fix freefalling after MSS DC
2020-11-26 10:01:48 -05:00
Gent S
fa7b6e6145
Properly set default NPC class
2020-11-26 09:05:44 -05:00
Gent S
478bcd5338
Use vendorID instead of NPC_ID to index into vendor tables
2020-11-26 09:00:30 -05:00
Gent S
c7d3870a60
Add /whois command
2020-11-26 08:59:16 -05:00
Gent S
8351596763
Fix /help using accoutnId instead of accountLevel
2020-11-26 08:30:19 -05:00
Gent S
e3568ea506
Fix viewableChunks memory leaks
2020-11-25 22:49:37 -05:00
CakeLancelot
a9a8d96321
Fix Female Characters always failing validation
2020-11-25 20:37:24 -06:00
Gent S
b0aea27418
Fix player revive packet carrying wrong values
...
Oops
2020-11-25 20:38:48 -05:00
Gent S
872425640d
Prevent DB players from occupying same slot
2020-11-25 19:25:20 -05:00
Gent S
ea5b7104be
moved name checks to name save and name change packets
...
added a TODO
Formatting + sizeof in login server
2020-11-25 19:25:20 -05:00
Kamil
d85d9d4b12
added character creation validation
...
added a comment
2020-11-25 19:25:20 -05:00
Kamil
7e08bc60ce
added character validation for SAVE_CHAR_TUTOR and CHANGE_CHAR_NAME
...
fixed ugly sizeofs
2020-11-25 19:25:20 -05:00
Kamil
86e6937342
added character validation to delete packet
2020-11-25 19:25:20 -05:00
Kamil
ec8abfa004
moved sending character selection fail to a helper function
2020-11-25 19:25:20 -05:00
Kamil
51a687c7db
hugely simplified managing player characters in login server
2020-11-25 19:25:20 -05:00
Kamil
657306e0a1
added missing debug print outs
2020-11-25 19:25:20 -05:00
Kamil
eee8aab888
refactored and cleaned up login function
2020-11-25 19:25:20 -05:00
Kamil
5c6d7d6055
added a sanity check for entering invalid characters
2020-11-25 19:25:20 -05:00
Kamil
4760d91ccd
refactored giant switch to smaller functions
2020-11-25 19:25:20 -05:00
Gent S
db98af9775
Fix chunk desync on revive
2020-11-25 17:50:57 -05:00
Gent S
f91f9786d1
Fix chunk desync on S.C.A.M.P.E.R. warp
2020-11-25 17:46:16 -05:00
Gent S
71d9cab72e
Fix chunk desync on NPC warp
2020-11-25 17:42:46 -05:00
Gent S
717e5eb78f
Remove bad warning for multikills
2020-11-25 13:33:12 -05:00
Gent S
e7301f46ef
Properly copy mob groups to instances
2020-11-25 11:49:40 -05:00
Gent S
85113a667f
Update unsummonW to handle new group gruntwork format
2020-11-25 11:45:34 -05:00
Gent S
98ae236c08
Load gruntwork group mobs hierarchically
2020-11-25 11:09:05 -05:00
Gent S
6ff762ba57
Save gruntwork group mobs hierarchically
2020-11-25 10:41:10 -05:00
Gent S
73ef5fa5ff
Load mob groups hierarchically
2020-11-23 19:28:22 -05:00
Gent S
8a0d0e0e4c
Restructure tdata
2020-11-23 18:45:28 -05:00
Gent S
0f1d9cdf1c
Add sanity check for nano ID in nano equip handler
2020-11-23 17:03:08 -05:00
Gent S
07a1927b9f
Force chunk update in sendPlayerTo
2020-11-22 19:22:33 -05:00
Gent S
e0858a42b2
Fix getNearestNPC w/ uses
2020-11-22 19:14:46 -05:00
Gent S
dab536cb6a
Grouped mobs adjustment
2020-11-22 19:14:22 -05:00
f1d04cec01
UnsummonW Implementation + Tweaks
...
* UnsummonW can be used to remove the mob from existence.
* Mob groups now aggro together.
* Mobs space a little bit when chasing the player.
* Combat balance tweaked a bit, you can take out an entire boss group of scoria cephalopod with good nano usage with common tier weapons.
2020-11-22 16:53:19 -05:00
5e8b6eec6e
Grouped Mobs are gruntworkable
...
* Using /summonGroupW
2020-11-22 16:53:03 -05:00
883a1c17e6
Group Mobs Initial Implementation
...
* For now only mob.json is read for grouped mobs.
* Grouped mobs are fully functional granted the mobs.json is prepared correctly.
* Removed redundant move packet.
2020-11-22 16:53:03 -05:00
Gent S
e9ffbe6148
Make /refresh work again
2020-11-22 16:48:29 -05:00
Gent S
d1baa0d9f9
Replace inPopulatedChunks with player counter for NPCs
2020-11-22 16:48:29 -05:00
Gent S
71d4f331b5
Fix egg type warning message
2020-11-22 16:46:09 -05:00
Gent S
665f28313a
Clean up redundant forced chunk updates for NPCs
2020-11-21 11:53:48 -05:00
Gent S
c5fa397724
Fix player entering chunks twice on load
2020-11-21 11:46:56 -05:00
Gent S
95b385dee1
Reimplement chunk data caching
2020-11-19 19:16:51 -05:00
Gent S
82b505a737
Fix buddy warp causing softlock
2020-11-19 18:16:35 -05:00
Gent S
dae3b24093
Reimplement chunk position caching
2020-11-19 17:37:07 -05:00
Gent S
e50a4c2edd
Experimental chunk refactor.
2020-11-19 17:37:02 -05:00
Gent S
5cbb8538c0
Get rid of PlayerView. For good.
2020-11-19 17:36:49 -05:00
Gent S
d2e776b672
Fix mission rewards stacking on top of each other
2020-11-19 14:07:29 -05:00
Titan
b08fb52272
Implement /announce
2020-11-19 14:05:34 -05:00
Gent S
0075457f81
Temporarily remove sanity check for egg pickup distance
2020-11-17 13:51:35 -05:00
Gent S
12baece1b2
Fix opening C.R.A.T.E.S. resetting your boost counters
2020-11-17 13:48:20 -05:00
Kamil
c77f99e849
moved bullets removal call
2020-11-16 21:38:49 -05:00
Kamil
d17890af68
cleanup
2020-11-16 21:38:49 -05:00
Kamil
6c1d8c3527
updated comment
2020-11-16 21:38:49 -05:00
Kamil
59ab81d3c6
fixed weapon boosts being used with 0 batteryW
2020-11-16 21:38:49 -05:00
Kamil
9cee8f2c87
added cleaning up player's bullets on exit
2020-11-16 21:38:49 -05:00
Kamil
a483b0fb44
fully implemented rockets and grenades
2020-11-16 21:38:49 -05:00
Gent S
8ad3f3aabd
CHUNKPOS macro -> ChunkPos typedef
2020-11-16 09:59:53 -05:00
Gent S
b22ba781c8
Possible fix for chunking desyncs + CHUNKPOS macro
2020-11-15 14:41:56 -05:00
Gent
4d1d77ceaf
Switch to getTime() for egg and buff ticking
2020-11-11 23:50:39 -05:00
Gent
7135767cc4
Egg checks, fixes, and cleanup
...
fixed not taking egg buff flag into consideration in mob manager
fixed stamina bug and improved sanity check
Egg cleanups
2020-11-11 23:19:07 -05:00
Kamil
0ecf76c5ec
moved egg summoning to a custom ChatManager command
2020-11-11 23:19:07 -05:00
Kamil
9087baae3c
Polished reading egg json data
2020-11-11 23:19:07 -05:00
Kamil
95b5da8932
temp chunk issue fix
2020-11-11 23:19:07 -05:00
Kamil
f733aa60f0
added a chunk sanity check
...
removed unneccesary include
2020-11-11 23:19:07 -05:00
Kamil
d102fabc2f
set up gruntwork
2020-11-11 23:19:07 -05:00
Kamil
6d4afd0c6a
fixed goo damage not taking all flags into account
2020-11-11 23:19:07 -05:00
Kamil
8003518e18
made particles for picking up eggs work, made damage and heal eggs work
2020-11-11 23:19:07 -05:00
Kamil
859b24229a
added a condition to not send mob/egg _ENTER packet when it's HP is 0
2020-11-11 23:19:07 -05:00
Kamil
674d5112f3
implemented basic eggs functionality
2020-11-11 23:19:07 -05:00
kamilprzyb
de99522340
added removing buffs on player exit
2020-11-11 23:19:07 -05:00
kamilprzyb
c7006b46ed
EggBuffs now stores debuff timestamp instead of remaining time
2020-11-11 23:19:07 -05:00
kamilprzyb
45ed99ae35
implemented player debuff
2020-11-11 23:19:07 -05:00
kamilprzyb
f2ff4c7f4d
added basic player buffs implementation
2020-11-11 23:19:07 -05:00
2744ed64e3
Fix a bug where the server would crash if Drain killed a mob.
2020-11-11 23:35:00 +01:00
Gent
90754665a0
Refactor buddy request-by-name
2020-11-11 09:06:41 -05:00
Gent
4454faffc3
Add garbage collection for non-existent players
2020-11-10 18:16:06 -05:00
Gent
34f2aef248
Fix seg fault in buddy data for deleted player
2020-11-10 18:00:34 -05:00
Gent
121c65d7ea
Fix not being able to attach weapons to emails
2020-11-09 21:33:02 -05:00
Gent
f53de8d521
Explicitly update buddy records in DB
...
this should fix the bug where removing a buddy while they're offline won't take you off their list until you disconnect
2020-11-09 05:04:06 -05:00
Gent
8a68958ed4
Fix players being able to become buddies twice
2020-11-09 04:41:20 -05:00
Gent
d7a8d2d453
Sanitize email subject + body
2020-11-08 15:37:17 -05:00
darkredtitan
5293573116
Allow period and numbers in firstname/lastname regex check ( #144 )
...
* Remove unnecessary whitespace check in regex
* Allow dot characters in names (except at the beginning of a name)
* Allow numbers in names
2020-11-08 14:34:02 -06:00