40 Commits

Author SHA1 Message Date
Emagi
6401247809 Chat channels (join channel, send messages) and house peering capabilities 2025-08-30 09:29:46 -04:00
Emagi
8f402eb781 IsAggroed now defers to info struct for engaged_encounter to assure we are in/out of combat for various game instructions. Add /spawn details hated to show hated by list for players/entities, 2025-08-17 14:29:01 -04:00
Emagi
65aa15d70e Add HP and Power Regen to the /spawn details view below base stats STR, STA, so on. 2025-08-16 18:46:47 -04:00
Emagi
74fa672e65 enforce attempting a DB deleting on broker, even if the item does not exist in the broker memory 2025-07-30 08:22:25 -04:00
Emagi
f60d261f00 Vault, Broker support for DoF, KoS, AoM. Shop support for DoF, KoS.
Broker/Vault (Fix #10):
- Traditional broker integrated (/frombroker), GM itemsearch is still available via /itemsearch.  AoM client cannot sell/use shop, can only buy from broker.
- DoF and KoS client now support House Shop (sell inventory, vault to broker).
- House containers now function like actual containers and can be stored in the vault which will allow placement in the home (to serve as a merchant).
- Sales crate merchant windows in player houses implemented for broker.
- Peering URI's added for broker/shop support: /addseller, /removeseller, /additemsale, /removeitemsale
- House vault and vault slots implemented for DoF, KoS and AoM clients.

Stability and Functionality:
- World Database now has seq_character_items (Sequence) to sync self and peers instantiating new unique IDs for character items.  This is to avoid conflict/overriding another unique id.
- spawn and spawn_houses tables have a lua_script that can now be defined outside the existing spawn_scripts table for a singular spawn.
- Fixed a watchdog/hangup when clearing hate lists inside a spawn list lock.
- Item unique id is being transitioned to int64 (although older clients still only support int32, clients later on are int64).
- Fixed so that spells that have no duration will no longer be added to maintained effects.
- Fixed spell cleanup, maintained effect does not remain on the Player causing a crash.
- Fixed spell conflicts to that check all targets are applicable for the spell.
- Fixed issues with maintained effects or spell effects stacking repeatedly.
- Fixed assigning items to non inventory slots when 'adding' an item to the Player.
- Fixed locking orders between maintained effects and spell effects to avoid deadlocks.
- Fixed entering house and visiting houses, targetting of the house door is now enforced server side.
- Item locking is now enforced by the type of locking (eg. house placement, crafting, shop list for sale).  Locks no longer override/interfere with each other.
- Additional logging around spell casting and targets.
- Spawns/Objects/Widgets so on related to houses now have their own sub tables _houses, eg. spawn_houses, spawn_npc_houses, spawn_object_houses, so on to avoid conflicting with existing tables non-house.

- new LUA Functions:
	ShowShopWindow(Player, FromSpawn) - opens shop window for player (if in their house) for listing, pricing items, retrieving sales log and coin, etc.
	SetSpawnHouseScript(Target, LuaScript) - Utilized in the item script 'placed' function to set the spawned house item's lua script.
	SendBook(Target, ItemID) - Sends the book to the target player based on the item id.
	GetPickupItemID(Spawn) - Gets the item id that the house spawn would represent
	SetHouseCharacterID(Spawn, CharID) - Sets the house spawn character id (should be used on Spawn).  Set CharID to 0 to set to the current houses character id.

- Updated LUA Functions:
	StartHeroicOpportunity(Caster, ClassID, OverrideTarget)  - OverrideTarget now available to change the heroic opportunity target
	HasItem(Player, ItemID, IncludeBank) - No parameter change, include bank, which serves as 'all' should now work correctly (previously did not check bank/other negative slots),  default is false.

- Slash Commands Added:
	/sle - Fix #41, Set Location Entry (DB command for setting spawn location entry values such as offsets and overrides)
	/store_list_item - used to list an item for broker shop
	/store_set_price - used for setting items price for shop
	/store_set_price_local - used for inventory items price for shop
	/store_start_selling - Begin selling from inventory for shop
	/store_stop_selling - Stop selling from inventory
	/store_unlist_item - used to unlist an item from broker shop
	/close_store_keep_selling - Closes store shop window, but keep selling from inventory while in house
	/cancel_store - cancel selling from inventory
2025-07-26 07:10:07 -04:00
Emagi
878c422c0f Support house containers being placed inside house. Need to have an appearance set with equip_type as model type/id 2025-07-08 10:32:56 -04:00
Emagi
0f5cfddf89 fix compile bug 2025-06-18 16:49:04 -04:00
Emagi
920ea11961 misc code cleanup 2025-06-14 08:01:58 -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
8cd6008ba6 Fix #20 Pet back off now immediate, attacks despite pet behavior of protection 2025-05-31 10:22:34 -04:00
Emagi
ec2c99d175 Fix equip/unequip with calculations causing a potential watchdog 2025-05-28 14:33:34 -04:00
Emagi
4f04033e97 Fixed calculating bonuses for items when equipping and unequipping 2025-05-25 14:02:46 -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
1268ecbc94 Fix Issue #3 - Class Updates, Name Updates to LS
Support added for class updates to LoginServer when adventure class is updated (such as commoner to sub class, so on).

Name change for GM command /name support added for LS update.  This is a use at your own risk command and you will have to /camp to fully reflect your name update.
2025-04-11 09:49:18 -04:00
Emagi
61aec683b5 revert SendShowBook to fix /spawn details and other use of the book pages 2025-03-21 11:21:31 -04:00
Emagi
54a215d1ba code warning fixes 2025-03-05 08:37:52 -05:00
Emagi
97a6405506 /weaponstats crashes if the slotted item is allowed in primary/secondary/ranged but does not have the item type to have weapon or ranged info 2025-02-19 18:04:48 -05:00
Emagi
9250118b05 More work for /reload spells when multiple zones / players are on 2025-02-09 15:25:16 -05:00
Emagi
5d191927cf Fix spells to properly cleanup in function SpellProcess::CheckRemoveTargetFromSpell -- RemoveEffectsFromLuaSpell was not properly cleaning up special effects like sneak/snare/root/so on lingered on to cause a crash with dead spells with /reload spells or other activity 2025-02-04 18:45:48 -05:00
Emagi
79a010e055 disable bank / shared bank in trade and also sellitem 2025-01-26 15:16:27 -05:00
Emagi
f86add3c05 Update Commands.cpp 2025-01-04 21:04:55 -05:00
Emagi
a820439430 add select command to support checking for accepted dialogs 2025-01-04 16:10:38 -05:00
Emagi
856c29674a zone unlock lock and zone/zoneid commands now have duplicate id as a second number, incomplete cureplayer for raid groups, lastly patched issues with claim command 2025-01-02 13:35:53 -05:00
Emagi
04f38a6599 added zone info into memory, you can use /reload zoneinfo to clear the cache if GM status available. 2024-12-30 10:10:48 -05:00
Emagi
314fc8396c Added tracking of zone duplicate id (when its a public zone) to the characters table. We will now properly persist to the respective zone when a public zone becomes instanced. 2024-12-23 17:43:58 -05:00
Emagi
fe10353863 Added public zone persistence of spawns back, command /location list respawns added, additionally added tracking of duplicate zones for exceeding player limits 2024-12-15 15:22:21 -05:00
Emagi
15738ef219 Fix use item for KoS and earlier clients 2024-12-12 21:07:35 -05:00
Emagi
19dccd751a restore changes to fix earlier clients seeing the name visuals (other than suffix which seems to be missing) 2024-12-12 15:38:27 -05:00
Emagi
8c3ff54b41 Revert "Last name, prefix and guild name are now visualized for the older clients, for some reason suffix is not cooperating (perhaps the char sizing is wrong on one of these)"
This reverts commit c1fc68c13981eaaaeff3db70dd93a4fdad14266e.
2024-12-12 15:36:33 -05:00
Emagi
c1fc68c139 Last name, prefix and guild name are now visualized for the older clients, for some reason suffix is not cooperating (perhaps the char sizing is wrong on one of these) 2024-12-12 15:20:08 -05:00
Emagi
c17b4d5588 Added CreateChoiceWindow, ClearChoice and GetChoiceSpawnID lua functions, added base of tracking for min, max, avg, first level for raid/group into instances... more work to complete tomorrow 2024-12-04 21:53:57 -05:00
Emagi
beaa63504c fix map waypoint support with /waypoint x, y, z 2024-12-02 17:42:07 -05:00
Emagi
1ec930639f fix name pet and rename to function 2024-12-01 11:14:13 -05:00
Emagi
0ac5658535 allow guild create command to be used by players and not allow specifying player name / target name 2024-11-27 15:29:28 -05:00
Emagi
428b73391c Omit bank/shared-bank from selling at a merchant, additionally prevent weight calculation for banked items on players weight 2024-11-23 09:24:41 -05:00
Emagi
315ab1d0e7 Project Nebulark Part 1, So much to list, this is a rough summary
- Raid support and cross peer support for Isle of Refuge, DoF, KoS and AoM clients.
- Zone Persistence added to non-instanced zones.
- Commands: /whogroup, /whoraid, /raidinvite, /raid_looter, /kickfromgroup, /kickfromraid, /leaveraid, /split, /raidsay (rsay) added.
- Cross peer zone and instance support
- Cross tell support (along with ignore)
- Cross ooc support
- Cross group support (can chat, leave group, disband cross peers, update group options)
- Cross who all support
- houses/instances fixed no more cross objects/spawns/etc from other houses
- houses now display characters name with the house zone description
- 1000's of house items now properly work with wall/ceiling
- debug messages removed from housing placement
- Encounters locked to raid instead of group
- group options restricted to raid leader
- reload rules for following are peer wide:
COMMAND_RELOADSTRUCTS
COMMAND_RELOAD_QUESTS
COMMAND_RELOAD_SPELLS
COMMAND_RELOAD_ZONESCRIPTS
COMMAND_RELOAD_FACTIONS
COMMAND_RELOAD_MAIL
COMMAND_RELOAD_GUILDS
COMMAND_RELOAD_RULES
COMMAND_RELOAD_STARTABILITIES
COMMAND_RELOAD_VOICEOVERS
COMMAND_RELOADSPAWNSCRIPTS
COMMAND_RELOADREGIONSCRIPTS
COMMAND_RELOADLUASYSTEM
- special/static zones (always_loaded) are now defined by a peer_priority unsigned short (smallint(5)) in zones table.  peer_priority = server_config world.peerpriority will spawn on that exe instance, if it is not available it is distributed to all peers.  Using the value of 0 (assuming no peer has priority of 0) or 65535 will result in peer distribution of zones.
server_config.json "WorldServer" block updated with the following (web peer port information), priority must be unique for EACH peer:
        "peeraddress": "10.1.1.2",
        "peerport": "9102",
        "peerpriority": "1",

New Command Line Run Arguments for World Exe to override server_config.json values
Allowed options:
  --worldaddress arg         World address
  --internalworldaddress arg Internal world address
  --worldport arg (=0)       Web world port
  --webworldaddress arg      Web world address
  --webworldport arg (=0)    Web world port
  --peerpriority arg (=0)    Peer priority

- fixed Isle of Refuge client group struct (raids added also)
- new log category Peering
- new LUA Functions AddRespawn(Zone, LocationID, RespawnTime) and CreatePersistedRespawn(LocationID, SpawnType, RespawnTime, ZoneID)
2024-11-18 11:13:04 -05:00
Emagi
e4fc6aad5a Zone ruleset_id support for most rules 2024-10-20 09:35:41 -04:00
Emagi
555045cbe2 reload spells now works with the lua state redesign and we delete spell in the spell_scripts instead of other places (casttimer, active_spells, so on) 2024-09-10 09:14:40 -04:00
Emagi
89194da149 EQ2Emu Source Base July 2024 2024-07-22 08:52:28 -04:00