Commit graph

1464 commits

Author SHA1 Message Date
Emagi
60928d2e0c Fix #448 - Scroll/Recipe scribing fixes
* Spells now have level and class checks
  * Recipes now have class checks (already had level checks)
  * Recipes now fallback to the item recipebook info to populate players recipes from a recipe book if the recipe book is not properly configured by book name
Fix #396 - Implemented subspawn tables so we can update specific types of spawns, in this case collectors when we remove the red book
Fix #205 - ground spawns now can have random heading assigned or forced heading
alter table spawn_ground add column randomize_heading tinyint(3) unsigned default 1;
randomize_heading = 0 uses base heading in the spawn location
randomize_heading = 1 means all spawns will have a random heading 0-360 degrees
Fix #118 - Knowledge sorting / spell book updates now correctly work.
  * Down/Across patterns now supported (zig-zag was default)
Fixed a crash when a spawn spell is interrupted and then the spawn dies to a melee attack could cause memory corruption removing spell timer pointers
Startup opcode warnings are now grouped by versioning to allow easier troubleshooting, DoF uses 546 and AoM 60085, thus most opcodes warnings are not relevant to supported cases
Fixed a regex crash on /findspawn
2022-08-13 10:40:04 -04:00
Devn00b
742f91c50f Removed IRC system. It was no longer used. 2022-08-10 17:46:04 -07:00
Emagi
562e914f26 fix %I64u to %llu 2022-08-10 13:20:40 -04:00
Emagi
f87bcb22be quest read lock vs lock 2022-08-09 20:40:57 -04:00
Emagi
4b12989de2 Maybe, why not? 2022-08-08 17:09:31 -04:00
Emagi
559c5b6ee9 Fix quest reward acceptance when there are no items to be accepted, dialog won't keep queueing 2022-08-07 06:27:12 -04:00
Emagi
1068849ef8 Fix #451 - basic pvp mitigation / mitigation integration
Fix #458 - fixed memory leaks in lua quest step location/zone loc functions and also languages memory cleanup

New Rules:
       RULE_INIT(R_PVP, PVPMitigationModByLevel, "25"); // gives a bonus to mitigation for PVP combat to offset the percentage level * mod (default 25)
       RULE_INIT(R_Combat, EffectiveMitigationCapLevel, "80"); // level multiplier for max effective cap, level * 80 (default)
       RULE_INIT(R_Combat, CalculatedMitigationCapLevel, "100"); // The cap to calculate your mitigation from is [level*100].
       RULE_INIT(R_Combat, MitigationLevelEffectivenessMax, "1.5"); // ratio victim level / attacker level for max effectiveness, when victim is higher level cap can reach 1.5
       RULE_INIT(R_Combat, MitigationLevelEffectivenessMin, ".5"); // ratio victim level / attacker level for min effectiveness
       RULE_INIT(R_Combat, MaxMitigationAllowed, ".75"); // percentage max mitigation allowed, eg. 75% of damage can be mitigated max in PVE
       RULE_INIT(R_Combat, MaxMitigationAllowedPVP, ".75"); // percentage max mitigation allowed, eg. 75% of damage can be mitigated max in PVP

InfoStruct now has two unsigned int16 values that offer mitigation percentage values in integer formats, eg 155 = 15.5% mitigation
mitigation_pve
mitigation_pvp

Updated formulas to use effective_level (mentor/actual level) vs just player level
* Dodge
* Block

Bug fix for crash in non existent quest being called for /modify quest advance
Bug fix for improperly trying to stack items that are not stackable (count of 0 items, stack count of 1)
Bug fix for inventory updates, typically with overflow slots and after deleting items from inventory (packet count needs to be updated with current size in PlayerItemList::serialize)

Collections/Rewards:
- Display is now one reward at a time
- Display of award now only allows the reward cash, status to be provided once
- Database persistence of unaccepted rewards cross-zone with two new tables
- Selectable collections now checks if either field provided in /accept_reward is a potential item id (this is likely due to a client versioning)
2022-08-06 18:22:29 -04:00
devn00b
3cd6dcc16a EXE Update. 2022-07-31 03:53:15 +00:00
devn00b
72e9c0252c Moved SetCityZone to WorldDatabase::LoadZoneInfo. 2022-07-31 03:49:36 +00:00
devn00b
4e43909784 Windows EXE Update 2022-07-30 21:07:21 +00:00
devn00b
e651e2cf0f Fixes for crash on windows with UTF-16 NPC names (should never happen) and Fix for high CPU usage on windows with constant loading zones 2022-07-30 21:06:28 +00:00
Devn00b
e7cf104457 Remove useless script folder 2022-07-25 14:34:12 -07:00
Devn00b
a52cb8037d Script name change to permit download 2022-07-25 14:21:23 -07:00
Emagi
0e00165195 - Fix #453 PlayFlavor re-design
PlayFlavorID(NPC, type, id, index, Player, language)
Set Player to 'nil' to send to all clients, specifying a Player will make it send ONLY to that player
New command /reload voiceovers added
- versioning updated to 0.9.4-aquarii
- Fix #454 Support for SendShowBook to have language, items field 'book_language' added
- Some debug log cleanup
2022-07-24 22:19:45 -04:00
Devn00b
17eb8e0d23 Added ability to search broker for Sales Displays 2022-07-20 23:14:22 -07:00
Devn00b
364f9ff210 Added ability to search broker for tinkered items. SQL update needed. 2022-07-20 18:12:03 -07:00
Devn00b
828b080559 Added ability to search 'Tradeskill' items from the broker 2022-07-20 00:26:34 -07:00
devn00b
9d11184f5d Removed needless ifdef. Both paths are identical. 2022-07-20 07:05:37 +00:00
Emagi
24e1ecc8d4 additional part of the language chat update 2022-07-17 16:25:18 -04:00
Emagi
ac508a3fe2 additional removed test log 2022-07-17 16:19:58 -04:00
Emagi
966ada0771 Fix #306 - added language support for player chat. Additional log cleanup of unnecessary messages. 2022-07-17 16:17:59 -04:00
Emagi
f52276b263 Fix #450 can restrict SpellDamage by race id and type
Fix #172 lock spelleffects until removal in group
2022-07-16 09:33:58 -04:00
Emagi
0333ee64f8 previous struct updates forgot to put up 2022-07-16 09:30:10 -04:00
Emagi
a1beb6acb0 spawn access requirement can now be enforced with spawn signs to not show title and description 2022-07-15 08:59:44 -04:00
Emagi
7e5562da32 DB update query just for reference 2022-07-15 07:59:42 -04:00
Emagi
d3819ec135 - Fix #412 - "placed" function now called on ItemScript placement in homes. The placed spawn will be the target field (after player).
- Fixed some additional lacking group member checks and bad returns inside mutex locks
- Fix #432 - set languages on sign/conversation, we can now set language in spawn_signs, language setting only garbles description, not title of spawn_signs
 * StartDialogConversation has a 9th parameter (after key2) for language (int8), 10th parameter is can_close (defaults to 1)
 * StartConversation has an 8th parameter (after key2) for language (int8), 9th prameter is can_close (defaults to 1)
 * spawn_signs table now supports the language parameter, db update:
	alter table spawn_signs add column language tinyint(3) unsigned default 0;
- Fixed AoM skill display for general skills, languages now display too, but we need to discover how to omit skill values
- /spawn details now includes sign language on the third page if the spawn is a sign.
2022-07-15 07:57:21 -04:00
Emagi
1184380240 forgot jumping aom switch case 2022-07-07 14:56:52 -04:00
Emagi
5a0b51772c Merge branch 'master' of https://git.eq2emu.com/devn00b/EQ2EMu 2022-07-07 14:54:22 -04:00
Emagi
1e2d5f98cf - Completed Fix #279
- Update Activities for AOM added (someday we need a table based on versions to handle these)
- In turn of updating activities, client side enforced drowning, swimming is now correct
- transmuting skill / item stat now calculated
- Fixed sending certain information to client before they are zoned in
- Player is blocked from being attacked until they send their 'ready' message to the server (visual UI display can be seen)
- New swim rules:
	RULE_INIT(R_Player, SwimmingSkillMinSpeed, "20");
	RULE_INIT(R_Player, SwimmingSkillMaxSpeed, "200");

	RULE_INIT(R_Player, SwimmingSkillMinBreathLength, "30"); // these are probably in seconds
	RULE_INIT(R_Player, SwimmingSkillMaxBreathLength, "1000");
2022-07-07 14:54:03 -04:00
Devn00b
7115537c51 Fix Maiden's Gulch Rescue of The Sage folder name for windows 2022-07-05 15:40:02 -07:00
Devn00b
07feaa7325 Fix lua file/folder names to windows acceptable standards. Use of : in folder/file names is forbidden on windows 2022-07-05 15:36:23 -07:00
Emagi
71e9fef163 address type 1 item stats not calculating correctly 2022-07-05 08:09:53 -04:00
Emagi
0ba4872482 don't do early commits kids! 2022-07-05 07:37:56 -04:00
Emagi
5c969ba508 Additional work for Issue #279, added skills last night now item stats are now added to the skill base 2022-07-05 07:32:22 -04:00
Emagi
6e3d4a2b3b Additional work for Issue #279, added skills last night now item stats are now added to the skill base 2022-07-05 07:30:15 -04:00
Emagi
3ee72ae22e Support for tradeskills resist/failure to happen less often against the mastery skill, additional work for Issue #279 2022-07-04 22:19:31 -04:00
Emagi
8aee382185 - Broker 'btypes' (special effects) addressed for AoM client, new table broker_item_map created check DB/updates/broker_item_map_july3_2022.sql Fix #336
* May need further expansion some day to compare other clients, we can map btype, but the itype/ltype may also need to be mapped.
- Fixed Item::HasStat to work for stats in the 100-199 range since they only match the type (1) and the subtype is the value, meaning we have to match up the skill name
Partial addressing of Issue #279
- Ministration Skill/Power reduction added with rules
       RULE_INIT(R_Spells, MinistrationSkillID, "366253016"); // ministration skill id used to map power reduction rule MinistrationPowerReductionMax
       RULE_INIT(R_Spells, MinistrationPowerReductionMax, "15.0"); // max percentage of power reduction for spells with ministration mastery skill (default is 15.0 for 15%)
       RULE_INIT(R_Spells, MinistrationPowerReductionSkill, "25"); // divides by integer value to establish how much skill req for higher power reduction
- Subjugation, Disruption, Ordination and Aggression resistance reduction by skill of the attacker
       RULE_INIT(R_Spells, MasterSkillReduceSpellResist, "25"); // divides by integer value to establish how much skill bonus for reducing spell resistance on target
- Weapon Skills item stat now added to the weapon skill (crush/slash/pierce) for determinehit
2022-07-04 20:32:56 -04:00
Emagi
74d2358c86 missing column for character items 2022-07-02 21:28:41 -04:00
Emagi
258ac04362 add cure test script 2022-07-01 18:16:08 -04:00
Emagi
6fbc15029d - Fixed Cure not working if there was no levels table on the detrimental spell
- Fix #329 /cureplayer implementation (minus RAID support)
update commands set handler=531 where command='cureplayer';

- cures will now remove the maintained spell of the caster if all targets are gone
- target support for item scripts 'used' function, eg.

function used(Item, Player, Target)
    -- do stuff
end

- effect_type added to items table, currently used to map to cure types
alter table items add column effect_type int(10) unsigned not null default 0;

	NO_EFFECT_TYPE=0,
	EFFECT_CURE_TYPE_ALL=1,
	EFFECT_CURE_TYPE_ARCANE=2,
	EFFECT_CURE_TYPE_TRAUMA=3,
	EFFECT_CURE_TYPE_NOXIOUS=4,
	EFFECT_CURE_TYPE_CURSE=5,
	EFFECT_CURE_TYPE_MAGIC=6
- created sample cure using item id 48868 Translucent Remedy of the Gods
update items set lua_script='ItemScripts/cure_test.lua' where id=48868;
update items set usable=1,effect_type=1 where id=48868;
I know, not the items real purpose, but this was just a fun test since the other effect cure types would be specific to the type
- removed dump packet of lower layer packet opcode 3 (reduce noise in console)
2022-07-01 18:12:45 -04:00
Emagi
397bf5f465 Fix #167: Addressed bad memory handling of threat transfer and potential hanging lua spell ptr 2022-07-01 06:47:08 -04:00
Emagi
5b0f52641c Trade check for Player cast 2022-06-30 20:20:43 -04:00
Emagi
074a3182c3 Merge branch 'master' of https://git.eq2emu.com/devn00b/EQ2EMu 2022-06-30 20:08:52 -04:00
Emagi
682e023635 Complete Fix #418 item flags
- Temporary item flag support (removes item 30 minutes from camp out)
Rule R_Player, TemporaryItemLogoutTime added for seconds to deletion of item
- Heirloom item flag support added (limited to group support)
Rule R_Player, HeirloomItemShareExpiration added for seconds to inability to trade item between prior group members(tbd raid)

SQL Updates:
CREATE TABLE `character_items_group_members` (
  `unique_id` int(10) unsigned NOT NULL default 0,
  `character_id` int(10) unsigned NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
alter table character_items add column last_saved timestamp default current_timestamp on update current_timestamp;
alter table character_items add column created timestamp default current_timestamp;
2022-06-30 20:08:25 -04:00
devn00b
9ac7cd817e EQ2World EXE Update 2022-06-29 07:09:39 +00:00
devn00b
6bc397ec60 Fixed missing return on EQ2Emu_lua_HasCoin. 2022-06-29 06:59:01 +00:00
Emagi
7ac0861c98 missed a end ) for one of the starting language queries 2022-06-28 19:43:49 -04:00
Emagi
4b322d60ae - ZoneServer::PlayAnimation Fix #395 - spawn id 0 check to avoid bad packets, also client versioning methodology added, no longer creating a packet for each client
- SpellProcess::DeleteCasterSpell now unshades/ungreys a spell that was in maintained effects when cancelled.  This is for Fix #383 in relation to pet spells, but extends to any endless duration maintained spells.
- Fix #315 Implemented /cancel_effect [spell_id] - need DB query update: update commands set handler=530 where command='cancel_effect';
- Spell bonuses should properly be removed when spell is removed from a entity/spawn (char sheet stats should update and bonuses re-calculated)
- Sanity checks on /cancel_maintained so you cannot overflow the array and crash the server
- Resisted spells should no longer add control effects or do other spell like impacts when the cast is complete, this is based on the SpellDamage/Attack (that resists, then additional effects will be ignored in the cast function)
- Root, stun and mesmerize now hold the NPC in place
- We purge their previous movement plans to avoid wandering pointlessly when an NPC is stunned, mesmerized or rooted
- starting_languages update
	R_World StartingZoneLanguages
	Value 0: Does a match specific to race id (ignores starting_zone in the SQL query, so it consumes all) and inserts the languages applicable
	Value 1: Looks for all matching to starting_city, which is based on the client see starting_zones for examples.  Also wildcard for starting city of 0 and race id match.
update starting_languages set race=2 where race=3 and language_id=3; #dwarf (2) language id of 3 is not erudite race (3)
2022-06-28 19:24:00 -04:00
Emagi
ccfb3df8ca match local copy? 2022-06-27 16:24:54 -04:00
Emagi
e329a1cf79 More comments, slight cleanup 2022-06-27 06:47:38 -04:00