388 Commits

Author SHA1 Message Date
Emagi
0f5cfddf89 fix compile bug 2025-06-18 16:49:04 -04:00
Emagi
f03069a475 Update SpellProcess.cpp 2025-06-17 08:42:31 -04:00
Emagi
f71807da37 Update ConsoleCommands.cpp 2025-06-17 08:20:06 -04:00
Emagi
a6a0ca85ef Crash fix on spell deletion, remove from pending spells if we already plan to delete 2025-06-17 08:14:10 -04:00
Emagi
aa70c950b8 Don't allow an account to have multiple characters logged in at the same time unless admin status > 100 2025-06-17 08:13:16 -04:00
Emagi
ac15c6b9f7 Fix items after "obtained" because RemoveItem can be called making the Item Ptr dead. 2025-06-15 19:14:44 -04:00
Emagi
f4eb56e978 Clean up of RangeAttack a bit more 2025-06-15 19:13:29 -04:00
Emagi
8aae88ca4f Fix #32 do not reference ammo pointer after deleting item 2025-06-14 08:02:49 -04:00
Emagi
920ea11961 misc code cleanup 2025-06-14 08:01:58 -04:00
Emagi
d5e19e145c dead client ptr protection 2025-06-13 19:53:32 -04:00
Emagi
4c60615c39 Lua Functions DeleteQuest, DeleteAllQuests added (Fix #29). Ward crash issues (Fix #30). Item Scripts now auto bug report to bugs table (Fix #31).
Fix #29 - DeleteQuest(Player, QuestID, ForceDelete) and DeleteAllQuests(Player, ForceDelete) added.
Fix #30 - Ward crash protection
Fix #31 - track item scripts missing on food/drink auto bug report
2025-06-13 19:52:37 -04:00
Emagi
1176a16d43 Revert "Going to still check wards if the caster is not who we are currently checking wards on (eg. not self)"
This reverts commit 2677fc5fac7d53ec9a4505a1c5f58ef4cc79dac4.
2025-06-12 15:17:12 -04:00
Emagi
2677fc5fac Going to still check wards if the caster is not who we are currently checking wards on (eg. not self) 2025-06-12 15:15:25 -04:00
Emagi
9038e3a2ff Fixed a deadlock if a spell ward had redirect damage for self, it kept looping into CheckWards on the victim 2025-06-12 14:46:42 -04:00
Emagi
25f71b36be Fix lack of mutex locking when serializing the player profile 2025-06-12 13:59:44 -04:00
Emagi
a73c6386eb Fix locking of equipment so that we don't add changed spawns causing a hangup 2025-06-12 13:59:21 -04:00
Emagi
1dbfa3cc7b check that the spell id is set and isn't 0xffffffff 2025-06-12 13:59:02 -04:00
Emagi
b56ac0d75b improper unlocking of mlogqs when writing queued logs 2025-06-12 13:58:40 -04:00
Emagi
8b48f9f902 Fix persist through death for things like food/drink spell effects 2025-06-12 09:49:04 -04:00
Emagi
e79cffd658 Address sending bogus spell effect icon data to the client in the Spawn Info packet. 2025-06-09 14:05:08 -04:00
Emagi
77971f36a2 removing since logging isn't available in this class at the moment 2025-06-08 15:19:11 -04:00
Emagi
fc9d92e98e Update WorldWeb.cpp 2025-06-08 14:56:56 -04:00
Emagi
82a5e96000 Work in progress for 0.9.9 so far (making its own branch for now)
- Fixed a repeated rubberband like behavior that Spawn's would run forward toward their target in combat or on their return run to their starting point.
- WS_HearCastSpell for 546-561 version has an extra byte at the end of the packet we were missing (might be in later clients too have to confirm)
- PlayerScripts support added, new function calls, AddTimer support for Players.
- Static Zones / Special Zones will now silently check to startup zones without reporting the log message, log message only on startup or taking on peer leadership.
- Broadcast and Global Announcement are now supported through peering.
- Fix #22 identified a number of loose spawn pointers and changed to int32 spawn id reference.
- Fix #1 support for all known chat codes for various channels, spell casting and damage.
- In conjunction with Fix #1 spell combat messages are fixed, no longer 'YOU cast' when another spawn casts, added last_tell_name to track the chat code %RT server side.
- size_mod added to InfoStruct Float, supports shrinking and growing Non Player's. InfoStruct also has a UINT ignore_size_mod_calc set to 0 by default, when 1 it will let you set the size_mod and items/spells will not override it from stat calculation.
- XP Table is now static (global) in the Player class so we do not constantly call the database each time the player needs to know a level's XP requirement.
- Removal of duplicate spell cast success and effect messages.
- Fix #21 blue xp bar for KoS and DoF displays properly now.
- GetExpRequiredByLevel(level) added to return the EXP required for to reach the level.
- Fix #25 teleporters cleaned up during /reload spawns to avoid crash
- Fix #16 /reload items supported in peering mode.
2025-06-08 14:53:52 -04:00
Emagi
4e43c73f9c Fix #23 - Wards deleted while in use causing crash 2025-06-03 10:03:31 -04:00
Emagi
8cd6008ba6 Fix #20 Pet back off now immediate, attacks despite pet behavior of protection 2025-05-31 10:22:34 -04:00
Emagi
b937444425 Fix leashing, leading, rubberbanding mobs. Work in progress for size mod.
Fix #18 Leashing, leading, rubberbanding issues with spawns resolved
Issue #17 Work in Progress, size mod stat support in the works, setting temporary_scale in info struct seems to modify size, the pos_size values in the position struct are not for KoS and older clients.
AddSpellBonus was translating values from float to sint32 early, now we take bonus values into player add bonus so that float values will be honored, as well as sint32.  This applies to uncontested parry, block, dodge, riposte and the size mod.
2025-05-30 21:55:10 -04:00
Emagi
97d1393627 Fix #19 Position updates ignored when dead, new rule MiniDing, fix
Fix #19 - ignore position updates when dead
New rule R_Player MiniDingPercentage
Fixed ordering of locks in RemoveSpawn
ResetSpawnPackets function created to test resetting the spawn packet to a spawn (testing purposes only not live code)
2025-05-30 21:47:57 -04:00
Emagi
6d52f19108 Additional changes made to remove use of spell pointer in recast timer unlock spell logic, assure we have no crash in this area 2025-05-30 11:03:36 -04:00
Emagi
80f56f68c4 Make sure a spawn that is available gets locked into the encounter if the encounter size is 0. 2025-05-30 10:27:34 -04:00
Emagi
cde778bb1a Fix a crash trying to unlock a spell for a player with a recast timer when the spell data is null 2025-05-30 10:27:10 -04:00
Emagi
ec2c99d175 Fix equip/unequip with calculations causing a potential watchdog 2025-05-28 14:33:34 -04:00
Emagi
e793dc6895 added player count to login's world status provider 2025-05-25 17:22:27 -04:00
Emagi
4f04033e97 Fixed calculating bonuses for items when equipping and unequipping 2025-05-25 14:02:46 -04:00
Emagi
14eca6fb5b Update MiscFunctions.h 2025-05-25 11:25:56 -04:00
Emagi
0501f65fd6 Update MiscFunctions.cpp 2025-05-25 11:06:46 -04:00
Emagi
563fddeabf Added function aliases for GetCurrentHP->GetHP and GetCurrentPower->GetPower. Previously only lua functions GetHP/GetPower existed, now all 4 functions are possible 2025-05-24 13:58:43 -04:00
Emagi
534a80d104 Fixed the HP and Power returns to be SInt32 like their code counterparts 2025-05-24 13:57:57 -04:00
Emagi
f47896f5b8 Added support for the spawn_anim to be converted and accurate for earlier clients like KoS and DoF, when spawning skeletons, zombies so on their animation is now present 2025-05-23 17:11:57 -04:00
Emagi
058df3eae6 Fix the uptime of the login/world to report days correctly from convertTimestampDuration call 2025-05-21 10:36:49 -04:00
Emagi
8ad25150a2 And they call it a mine! 2025-05-11 21:03:16 -04:00
Emagi
5ef2458026 Rule support for R_Combat, MaxChaseDistance and info struct float max_chase_distance
Rule support for R_Combat, MaxChaseDistance to restrict by server or zone the max chase distance instead of hardcoded 80.0.
Additionally GetInfoStruct float max_chase_distance added.

info struct takes precident when set greater than 0.0 for the max chase distance, otherwise we check the rule being greater than 0.0, otherwise we use the default 80 in the hardcode define
2025-05-06 19:48:01 -04:00
Emagi
0adc6f0e04 chop added also to the type list since it seems to be hit or miss if the client is sending it 2025-05-06 19:09:36 -04:00
Emagi
c57624079b another corner case with root using "Gather" 2025-05-06 19:05:09 -04:00
Emagi
65f53f77b7 Additionally check if older clients send "collect" for type as that is not the harvest type either 2025-05-06 19:01:38 -04:00
Emagi
13e10b315d KoS and earllier client fixes + server exploit fix
- Can now use equipped charms (previously did not work had to use from inventory)
- Fixed charges not decrement when equipped for all clients (they had unlimited charges!!)
- Fixed click / interacting with ground spawns, doors, so on.  Some objects may need a default setting since the older clients don't send the entity command where new clients do.  Made a fallback structure WS_EntityVerbsVerbBackup for when that happens.
2025-05-06 18:38:43 -04:00
Emagi
c5f09e846d Added quantity checks to trading so you can't trade over your item count 2025-05-06 09:06:58 -04:00
Emagi
11d46887db Fix charm slots being visible in the client UI for DoF and KoS clients (classic does not support) 2025-05-05 15:14:02 -04:00
Emagi
b779a225e1 remove the ground_diff changes, flying mobs were adhering to the ground unexpectedly 2025-05-04 13:29:35 -04:00
Emagi
0aa8da426b Visual effect for level 50 is 323 2025-04-30 12:49:53 -04:00
Emagi
d624ff260d AoM client also impacted by the issue removed version check and we will just not use the send spawn update boolean 2025-04-26 09:22:58 -04:00