* [Bug Fix] NPC not breaking charm correctly
#947 and #905
fixes the issue with charm breaking and spells being cast after to cause a faction war. this removes dots to stop faction wars also.
dot removal part needs better testing to ensure it works as intended
* Remove this-> since it is implied
* Update spell_effects.cpp
* clear all this->
* pMob to mob
* Added rule Spells:PreventFactionWarOnCharmBreak
Co-authored-by: Chris Miles <akkadius1@gmail.com>
* strict spawn_events now take into account EQ minute.
This should fixed the eqtime spawn condition from falling behind.
* change a log to logspawns and add a comment in ExecEvent function.
* moved the comment to the note paramenter in the rule for last commit.
* [Bots] Remove hardcoded race-class combinations from bots.
- Allows server operators to directly influence via a database table the classes a specific bot race can be.
- Previously this was hardcoded and required a source modification to do.
- Allowed races, classes, and genders have been removed due to redundancy at this point.
* Remove const cast and modify saylink definition.
This moves members from expeditions so other systems can use them
Replace expedition_members table with dynamic_zone_members
Move 'EnableInDynamicZoneStatus' rule to DynamicZone namespace
Modify #dz list to show dz members (not instance players) and type name
Move various queries to repository methods
Remove the overloads that don't make sense (bots probably doesn't make
sense either, but too lazy)
Fix the formulas
Removed the Spells:MaxCastTimeReduction rule since this is HARDCODED in
the client so it doesn't really make sense to have it as a customization
point. If you want to hack the client, change the hardcode as well I
guess.
* [Bug Fix] EntityList::AESpell fix for Pacify / Mez
this fixes AE pacify / Mez spells only landing on 4 when it shouldn't have a cap
* Update effects.cpp
added constants
* Update effects.cpp
opmization thanks to @mackal
* Update effects.cpp
this fixes the unlimited issue
* added Spells:AOEMaxTargets to rules
incase a server doesn't want there to be a absolute unlimited AOE targeting for spells
* Update ruletypes.h
* Add character-specific zone-based experience modifiers.
This will allow server operators to give players individual experience modifiers (regular and AA).
Zone ID 0 will server as a global modifier for players, if no rows are found the modifier defaults to 1.0 so experience is neither increased nor decreased.
Setting a zone-specific modifier will override the zone ID 0 global modifier.
Requires a SQL update: sql/git/required/2021_04_11_character_exp_modifiers.sql
- Add quest::getaaexpmodifierbycharid(character_id, zone_id) to Perl.
- Add eq.get_aa_exp_modifier_by_char_id(character_id, zone_id) to Lua.
- Add quest::getexpmodifierbycharid(character_id, zone_id) to Perl.
- Add eq.get_exp_modifier_by_char_id(character_id, zone_id) to Lua.
- Add quest::setaaexpmodifierbycharid(character_id, zone_id, aa_modifier) to Perl.
- Add eq.set_aa_exp_modifier_by_char_id(character_id, zone_id, aa_modifier) to Lua.
- Add quest::setexpmodifierbycharid(character_id, zone_id, exp_modifier) to Perl.
- Add eq.set_exp_modifier_by_char_id(character_id, zone_id, exp_modifier) to Lua.
- Add $client->GetAAEXPModifier(character_id, zone_id) to Perl.
- Add client:GetAAEXPModifier(character_id, zone_id) to Lua.
- Add $client->GetEXPModifier(character_id, zone_id) to Perl.
- Add client:GetEXPModifier(character_id, zone_id) to Lua.
- Add $client->SetAAEXPModifier(zone_id, aa_modifier) to Perl.
- Add client:SetAAEXPModifier(zone_id, aa_modifier) to Lua.
- Add $client->SetEXPModifier(zone_id, exp_modifier) to Perl.
- Add client:SetEXPModifier(zone_id, exp_modifier) to Lua.
* Removed unneeded [].
* Fix variable name,
* Fix variable name.
* Fix version.h.
* Rename 2021_04_11_character_exp_modifiers.sql to 2021_04_23_character_exp_modifiers.sql
* Update db_update_manifest.txt
* Add rule 'GM:MinStatusToBypassLockedServer'
Default Status: 100
Description: Players >= this status can log in to the server even when it is locked
* Add rule 'GM:MinStatusToBypassLockedServer'
Default Status: 100
Description: Players >= this status can log in to the server even when it is locked
Move early empty shutdown and process rate rules to DynamicZone scope
This decouples the expired status check from expeditions into an
internal dz method that can be called by its owning system
This fixes unnecessary leader processing on mass dzquits
Also marks leader dirty for empty expeditions in case something goes
wrong (shouldn't be possible after 62e480fe)
* Add rule configuration for letting animals open doors or not
* Handle one more spot
* Make adjustments and add mob property that serves as a check as to whether a mob entity can open doors or not
* Push attribute to mob window
Add 60s to lockout times sent to clients. Lockout timers
are rounded down to the nearest minute when displayed
This replaces the lockout leeway rule with better behavior
Increases default from 15 minutes to 25 minutes
This compensates for current default graveyard timer code. Otherwise
instances may shutdown before graveyards can process any corpses.
A better fix needs implemented later to deal with corpses inside
expired dynamic zone/instances. Zones without graveyards should move
corpses to the non-instance version and zones with graveyards should
somehow still be processed (maybe offloaded to world?)
On live, new expedition leaders are only notified if made leader from
the /dzmakeleader command (or from ui). This rule makes it so the new
leader is always messaged on a leader change for cases where previous
leader goes offline or quits
This implements a small cache in world to track expedition states.
This fixes expired expeditions being left in zone caches unless the
expedition's dz instance was running to detect it (or unless an
expedition was deleted via a client using /kickplayers). This was also
leaving clients in a ghost expedition that no longer actually existed
Adds a rule for leeway with expired lockouts during creation requests
The client removes lockout timers with under 60s remaining from the
window. This allows a small leeway to compensate so players don't
request an expedition that has visually hidden lockouts.
Add DynamicZone sql table schema
Add DynamicZones logging category
Modify CreateExpedition to take DynamicZone and ExpeditionRequest objects
Implement DynamicZone compass, safereturn, and zone-in coordinates.
Implement live-like DynamicZone instance kick timer for removed members
Implement updating multiple client compasses (supports existing quest compass)
fix: Send client compass update after entering zones to clear existing compass
Implement Client::MovePCDynamicZone to invoke DynamicZoneSwitchListWnd
when entering a zone where client has multiple dynamic zones assigned
Implement OP_DzChooseZoneReply handling
Add Lua api methods for expedition's associated dynamic zone
Add #dz list gm command to list current DynamicZone instances from database
Add Expeditions logging category
Add handlers for all Dynamic Zone/Expedition related opcodes
Add FormatName string_util function to format character names
Add Zone::IsZone helper method
Add cross zone MessageString support with variable parameters
Add static Client method helpers for cross zone messaging
Add #dz gm command to debug expedition cache for current zone
* Scanning optimizations this more properly applies idle / moving scanning algorithms and applies update_others when a client is moving
* Fix bots
* Perform a self and other scan when npc's pop
Incomplete descriptions added as far as the function was clear to me. Tried to standardize the words used in the descriptions. Corrected a few orthographic problems. Added some words to existing descriptions to make them more understandable. Some rules which were not used anymore are deleted.