Commit graph

1461 commits

Author SHA1 Message Date
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 - basic pvp mitigation / mitigation integration
Fix  - 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 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  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 - added language support for player chat. Additional log cleanup of unnecessary messages. 2022-07-17 16:17:59 -04:00
Emagi
f52276b263 Fix can restrict SpellDamage by race id and type
Fix  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 - "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  - 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
- 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 , 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 , 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 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
* 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 
- 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  /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 : 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 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 - 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  in relation to pet spells, but extends to any endless duration maintained spells.
- Fix  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
Emagi
b105a4058a - start_alignment added to starting_zones to enforce an alignment based on race/class/choice
- characters now has an alignment column to distinguish between deity/alignment (DoF we call alignment deity)
- added new rule R_World, EnforceRacialAlignment default is 1, (true).  When 0, will allow you to bypass the hard coded race restrictions in the code for good/evil/neutral
- Captain Varlos script updated to use GetAlignment and not GetDeity for the send off to the zone after far journey
- DB Updates:
alter table starting_zones add column start_alignment tinyint(3) signed not null default 0;
update starting_zones set start_alignment = 1 where choice = 1 or choice = 4 or choice = 32;
alter table characters add column alignment tinyint(3) signed not null default 0;
2022-06-26 18:30:34 -04:00
Devn00b
e6f15f0f13 Started implementation on PVP faction checks (IE Qeynos Players cannot inspect Freport Players currently). Implemented Alignment check based on Bind Location. 2022-06-25 22:56:53 -07:00
Emagi
c94a043cdc Work on Issue for item flags (update )
Item Flags Implemented/Updated:
- No Repair implemented
- Evil Only, Good Only implemented
- No Value updated/implemented
- Fixed house items being removed unless properly picked up by player
- Broken items can no longer be used
- Cannot swap equipped items in combat
- Additional indestructible checks
Group member checks to avoid unexpected crashes
2022-06-21 22:45:56 -04:00