Commit graph

1780 commits

Author SHA1 Message Date
Emagi
0d876665aa Even more player_quests null fixes to avoid crashes 2023-08-21 19:22:27 -04:00
Emagi
0c159c153b additional housing packet fix 2023-08-21 19:18:06 -04:00
Emagi
7f809a5b79 Crash fix for housing packet and checking quest flag on dead quest, finally fixed character_history needs to escape location before going in db 2023-08-21 19:16:07 -04:00
Emagi
f720513876 DoF Recipe/Tradeskill Stage 1 of 2 for Issue #532
- /info command now has recipe_product support
- /delete_quest crash fix
- knowledge sorting for DoF client now supported (ability book cannot be resorted in DoF)
- fixed copying of Recipe::Recipe class
- OP_RequestRecipeDetailsMsg and WS_RecipeDetailList support for earlier clients (DoF and probably similar classic)
- fixed HandleExamineInfoRequest to properly map the "id" for DoF client
- Quest mutex updated for pending quests to avoid crashes
- PacketStruct::serializeCountPacket better defined for larger sizes
2023-08-16 11:38:03 -04:00
Emagi
7ac81a6b99 No damage should still add aggro 2023-07-29 15:54:33 -04:00
Emagi
e8a22654b5 Merge branch 'master' of https://git.eq2emu.com/devn00b/EQ2EMu 2023-07-29 15:52:43 -04:00
Emagi
006b6ac924 Fix encounter not adding a player if they one hit the target 2023-07-29 15:52:32 -04:00
devn00b
804c5d05f4 Update to windows EXE 2023-07-28 16:08:30 -07:00
Emagi
3fbe306f51 Try to avoid deadlock with spell targets 2023-07-28 18:26:55 -04:00
Emagi
ee4dd24510 If Player has a dead spell that cannot be loaded from DB wont crash when resorting spell book 2023-07-28 06:44:58 -04:00
Emagi
9eeeb1e012 Disable second ear slot for DoF and earlier clients 2023-07-26 19:59:09 -04:00
Emagi
54775d0327 Going to additionally avoid calling lua removespell on zone shutdown 2023-07-05 16:08:52 -04:00
Emagi
8ef5843d7a Slight mod for crash fix 2023-07-05 15:24:07 -04:00
Emagi
7f60455b51 Address delete spells of npcs causing crash on zone shutdown 2023-07-05 15:14:21 -04:00
Emagi
b60a90aa10 Merge branch 'master' of https://git.eq2emu.com/devn00b/EQ2EMu 2023-07-05 07:39:57 -04:00
Emagi
3129ae3d3b PlayFlavor (HandleEmote function in zoneserver) will now handle visuals without requiring a message text being set in the database 2023-07-05 07:39:40 -04:00
Emagi
401ffd3d63 Fix crash of spell removal in LUA when zone is not set for caster 2023-07-05 07:39:03 -04:00
devn00b
eda3ffeff0 Login and World EXE update 2023-06-10 23:05:09 -07:00
Emagi
355d89124d - DoF now properly shows recipe books (struct fix in ItemStructs.xml)
- AoM and DoF both properly display recipes inside recipe book examine
- Adding recipes from a book to a player will now add correctly (via CRC ID) if we cannot identify recipe book by its book name.
2023-06-10 07:40:39 -04:00
Emagi
09978db335 Resolve unexpected crash due to lua string 2023-06-05 16:10:30 -04:00
Emagi
b924495ba3 Fix #527, blue and debt xp, Fix #523 db translation of emotes table to action_state, action_state_str added to spawns_npc table 2023-06-03 18:55:57 -04:00
Emagi
1646afdf4e Force a save of the quest when added to players quest book 2023-06-02 13:24:50 -04:00
Emagi
eec9f5b9f8 Fix #517 - AoM client can now remove/add skills and it reflects client updates correctly. DoF has issues removing Issue #525 made. Pet Options UI Window for HP/power and other options now work.
Fix #521 - Spells can now be examined correctly, loot now pops up for previously failing with items like master spells.
- Capped rain/wind to 0.0 - 1.0, going beyond 1.0 crashed DoF client
- Removed stats from clients that do not support them (DoF and AoM vice versa)
- Encounter list no longer splits exp when pet is part of encounter, only bots/players count in the split.
- Rule R_Player, AutoSkillUpBaseSkills added, 0 by default.  Setting to 1 automatically sets current skill = max skill for armor,shield,class,weapon skills
2023-05-30 12:53:01 -04:00
Emagi
a9b68f5c53 chests no longer show as corpses to client in DoF, kept consistency in AoM. Disabled ability for a chest to drop from an existing chest when using GM kill command 2023-05-24 09:26:54 -04:00
Emagi
c49802616e Fix quests in DoF and earlier displaying complete description on reward acceptance 2023-05-23 19:19:53 -04:00
Emagi
9d631f805d Fix skin color for DoF char creation 2023-05-21 07:19:21 -04:00
Emagi
8e1c321c51 Fix sending structures/packets that are not defined for the current client version, in this case the threat packet was not defined for DoF client and sending bogus data to client causing a crash 2023-05-21 07:16:19 -04:00
Emagi
c350a66ad9 avoid a deadlock between spawn list and pending spawn list 2023-05-20 14:23:21 -04:00
Emagi
22045ab11a Add missing SpawnStructs update 2023-05-20 09:20:07 -04:00
Emagi
506f8e9e29 remove code not yet available 2023-05-20 08:52:25 -04:00
Emagi
716f9affa3 - DoF Client Profile(Character) -> Options all the checkboxes set the wrong thing (afk, roleplaying, camping, linkdead, lfg, so on)
- DoF client Quest complete reward now includes temp rewards item data, previously you would see an empty quest reward window.
- DoF client properly in combat (no re-sheething of weapon while in combat)
- DoF client fixed spells to do start and end cast at appropriate times (struct fix).
- DoF client casting on self says "not a friend" -- now says not an enemy.  When being too far away, instead of saying "too close" now says "too far away".
- DoF fixed selecting self interrupts /camp
- DoF client server/client properly synched for inventory (food/drink and other equipped slots previously not working right)
- DoF Broker no longer crashes client, limited implementation to get first 8 results. WIP
- DoF fixed examine equipped items didn't work for drink/potentially mismatched other slots
- DoF item stat review  of resists now properly display
- DoF client is constantly sending HandleExamineInfoRequest packets for spells, fixed. Greatly improved performance of DoF cause it was constantly sending these packets for all spells in your book per second!
- DoF collections window is fixed, collections now display correctly in journal window. Upon turning in complete collections, client no longer crashes. Outstanding note: DoF client has EXP show up as % of level (60?) instead of just bare XP points. This might need more discovery, but isn't a huge issue right now.
- DoF player profile inspection inventory, DoF and AoM both display inventory (DoF does not support appearance gear). Cross client inspection works also. Avoidance (DoF and AOM) / ATK (DoF) stats need to be reviewed and matched in the structure, but not a big priority.
- DoF client /who list is broken (if more than one player, by myself /who works) -- structure updated for some unknown bytes tail of packet
- DoF client gestures now show up visually and not as an /emote-
- DoF item display fixed for house items (the items themselves in inventory/broker/so on were previosuly displayed corrupted)
- DoF Merchant "sell to merchant" just shows buy window, sell window was displaying buy items, there is already a sell window with the buy window.
- DoF merchant mender/repair no longer crashes the client -- currently worked around by sending buy screen then repair screen.. displays both, need to get buy screen disabled, will be its own git issue.
- Remove/Add skills via LUA will now properly update/reflect the database.
- starting_skills and starting_spells no longer applies on each login, this will stop the restoring of spells/skills on zoning that are removed with LUA
- Login sequence into world now initially load spells/skills (and also sync if first time into the world for the character).  This will allow us to avoid an unneccessary blocking behavior with World::SyncCharAbilities (it waited for 5 loops and hold the thread to see if the DB is updating the character).  Now we enforce this behavior with an updated state machine for the login, no longer blocking/holding the thread.
alter table characters add column first_world_login tinyint(1) unsigned not null default 0;
- R_World, DisplayItemTiers rule made to display item tiers (1) / disable (0)
- Bots are no longer impacted by /depop or /repop
- fixed crash with Player::CheckQuestFlag where we try to send updates based on quest, dead quest ptr when calling CheckQuestChatUpdate
- revive points now support an always_included option, otherwise it only shows the closest distance
- Database updates:
alter table revive_points add column always_included tinyint(1) unsigned not null default 0;
alter table characters add column first_world_login tinyint(1) unsigned not null default 0;

- LoginServer
	* LoginServer.ini now supports (integer) fields expansionsflag, citiesflag, defaultsubscriptionlevel, enabledraces under the "LoginConfig" block
	eg. enabledraces = 65535 allows all races
	    enabledraces = 57343 removes sarnak as playable race (-8192), another -4096 would remove Arasai.  -2048 removes Fae.

	Default values (in hex, you can only use integer in the ini):
		// full support = 0x7CFF
		// 1 << 12 (-4096) = missing echoes of faydwer, disables Fae and Arasai (black portraits) and kelethin as starting city
		// 1 << 13 (-8192) = disables sarnak (black portraits) and gorowyn as starting city
		expansionFlag = 0x7CFF; // 0x4CF5

		/* dword_1ECBA18 operand for race flag packs (sublevel 0,1,2?) -- (sublevel -1) controls starting zones omission 0xEE vs 0xCF (CF misses halas)
		1 = city of qeynos
		2 = city of freeport
		4 = city of kelethin
		8 = city of neriak
		16 = gorowyn
		32 = new halas
		64 = queens colony
		128 = outpost overlord
		*/
		citiesFlag = 0xFF;

		// sub_level 0xFFFFFFFF = blacks out all portraits for class alignments, considered non membership
		// sub_level > 0 = class alignments still required, but portraits are viewable and race selectable
		// sub_level = 2 membership, you can 'create characters on time locked servers' vs standard
		// sub_level = 0 forces popup on close to web browser
		defaultSubscriptionLevel = 0xFFFFFFFF;

		// disable extra races FAE(16) ARASAI (17) SARNAK (18) -- with 4096/8192 flags, no visibility of portraits
		enabledRaces = 0xFFFF; // 0xCFFF
2023-05-20 08:43:45 -04:00
Emagi
4f733b96da Fix calling GetSpell with a non existent spell id and tier causing a crash, also some lua functions not calling reset function stack 2023-05-13 06:57:44 -04:00
Emagi
0b6f0bc4e9 Address issues with runback mobs not becoming available again 2023-05-08 10:57:27 -04:00
Emagi
56b6d07ea0 add define for common tier 2023-04-29 14:26:52 -04:00
Emagi
33293610df Common tier 2 items should be in small chests not body drop 2023-04-29 14:26:13 -04:00
Emagi
84536da04b Address lacking most hated target to add loot when using /kill command 2023-04-29 13:48:17 -04:00
Emagi
b8bee12bc4 the EQ2 way apparently 2023-04-28 18:01:54 -04:00
Emagi
7007216ad5 set heading when using /goto 2023-04-28 17:09:46 -04:00
Emagi
297965fff3 self character customization added back, resolved memory leak (packet wasnt deleted) 2023-04-28 06:54:51 -04:00
Emagi
97f0d66bea Fix setting current zone if player pointer is not present for client 2023-04-28 06:25:22 -04:00
Emagi
113713fb62 remove bot customize for now, it was not properly implemented 2023-04-28 06:17:08 -04:00
Emagi
361fb06d21 spell target protections in wards and heroic op 2023-04-27 13:50:28 -04:00
Emagi
a74469795d - Manipulate the game world! Remove widgets!
LUA Functions and Examples:
* RemoveWidgetFromZoneMap(Zone, WidgetID) - must be used in preinit_zone_script

ZoneScripts/Commonlands.lua example:
function preinit_zone_script(zone)
	-- removes KoS Commonlands spires from all spawns and playesr
	-- visibly and in terms of player map (line of sight, and Y coordinate)
	RemoveWidgetFromZoneMap(zone, 1101229151)
end

* ReplaceWidgetFromClient(Player, WidgetID, DeleteWidget, x, y, z, NewGridID) - must be called after client has sent sys_client_avatar_ready

ZoneScripts/Commonlands.lua example:
function signal_changed(Zone, Player, Reason)
	if Reason == "sys_client_avatar_ready" then
		-- Slightly moves the spires further down for the client visual
		-- we do yet not support "moving" within the map space so this would not address line of sight or heightmap
		ReplaceWidgetFromClient(Player, 1101229151, 0, 171.31, -48.04, -412.99, 783227007)
		-- Alternatively ReplaceWidgetFromClient(Player, 1101229151, 1) could be called to remove the widget from the client visually
	end
end

* RemoveWidgetFromSpawnMap(Spawn, WidgetID) -- removes the widget from the map (line of sight and heightmap checks).  Can be called at any time (Spawn/Player).

- NPC Spells now supports self-HP ratios
alter table spawn_npc_spells add column required_hp_ratio tinyint signed not null default 0;
If greater than 0, hp ratio must be HIGHER or EQUAL to the value
If less than 0, hp ratio must be LOWER or EQUAL to the value
values -100 to 100 are accepted.  Default value of 0 skips checks.

- Reduced some messages by timer that could spam on zone startup
2023-04-23 10:54:28 -04:00
Emagi
725a3f85d8 Fix GetQuestCompleteCount LUA crash since the quest never was in the player completed 2023-04-23 09:08:03 -04:00
Emagi
ec247da687 Spirit shards now decay per request from premierio <3 2023-04-22 09:50:05 -04:00
Emagi
d0be51db35 Speed up sending spawns to client 2023-04-21 20:37:57 -04:00
Emagi
cd969a06d7 Fix #512 - loot chest coordinate is up in the air cause of flying mob it inherits 2023-04-21 16:59:00 -04:00
Emagi
c8338d63bf Fix kill giving loot credit for GM quick testing and bypass 2023-04-16 17:23:44 -04:00
Emagi
68b30e7bbd Revert unintended change to quest journal packet 2023-04-14 21:47:30 -04:00
Emagi
7b023ec019 - Fix #314 Encounter states, locked, overmatched and broken now supported up to group level (raids and functionality to them will be done in a later milestone). This also entails all the functionality within, npcs go gray when in an encounter or yelled, you cant heal or damage a player or npc in an encounter.
- Fix #351 /yell now available, yell with self target breaks all active encounters, yell with direct target breaks that encounter, no target breaks first encounter
- WorldStructs.xml update required for /yell so others know you are yelling!
- /spawn details aggro (NPC only) added, view active encounter list (who receives credit, locked encounter) and hate list (actual damage/hate)
- InfoStruct now has a new UINT8 "engaged_encounter", set to 1 for being in an active encounter, 0 for out of encounter (allows regen/speed recovery)
- Returning from linkdead DB load reduced
- Returning from linkdead you won't see ghost versions of yourself
- Addressed returning from linkdead and spells missing, would despawn your pet or remove buffs for examples.
- Protections around private spawns aggroing/attacking players that cannot see them
- Additional spell crash protection when spell caster is not in zone
2023-04-14 20:31:24 -04:00