Go Back   EQEmulator Home > EQEmulator Forums > General > General::News

General::News EQemu news posts.

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 03-14-2016, 02:04 AM
Akkadius's Avatar
Akkadius
Administrator
 
Join Date: Feb 2009
Location: MN
Posts: 2,071
Default EQEmu Project Update 2016

It's been a while since I've done a community update, but its time people get an update of the massive amount of work that continues to drive this project.

We should all be very thankful to have such an amazing community with all of the extremely talented and driven individuals that encompass it.

With that being said, there are so many things that have been done in the past year or so that I will do my best to go over as much of the things that I've seen happen, and I can guarantee you I will miss a bunch of things cause there is just that much going on.

I will also be posting more regular updates so we can have more updates on the things we are doing and plan on doing community wise.




Shards of Dalaya rejoins EQEmulator
  • After a very long project of the Shards team overhauling their back-end code, they have finally been able to make a connection to the EQEmulator public loginserver. Welcome them back as they have been a very unique and customized server that has been running for many years.
  • To get started on this server: https://shardsofdalaya.com/files.htm
  • Website: https://shardsofdalaya.com/


Tak Project (Alkabor - EQ Mac)
  • The Tak project is now on the EQEmulator public loginserver, they have a strong team that has been making huge strides in development
  • Some of the recent changes:
    • They have recently opened up the Bazaar and Nexus, they are working on Velious development and looking to open sometime this year
    • Raid window has been recently implemented
    • Client compatibility improvements
    • Live-like combat ac/mitigation overhauls and adjustments
  • Server Info: http://www.eqemulator.org/index.php?...o&worldid=2561



EQEmu Server Installer
  • For years we've had very long, sometimes convoluted server install guides that could take a new person a lot of time to try and figure out. Even for a seasoned and experienced developer it can be a frustrating process to get a server up and running. I've spent quite a bit of time making this process as streamlined and as simple as possible. I've recently done a several month testing in this thread (http://www.eqemulator.org/forums/showthread.php?t=40299) and things have gone very smooth. Right now this is set for Windows, but could very easily be extended to Linux as most of the installation process is driven from the new eqemu update system
  • Along with this, the "Akka's PEQ Repack" will be retired
  • http://wiki.eqemulator.org/p?Akkas_P...aller&frm=Main
  • Features:
    • 2-10 minute automated EQEmu Server Install
    • Perl 5.12.3
      • Perl DBI module also installed automatically
    • MariaDB x64 10.0.0 - Optimized MySQL configuration
      • Heidi SQL (Comes with MariaDB)
    • Latest PEQ Database and automatically updated with the installer
    • Latest PEQ Quests
    • Latest Plugins repository
    • Visual Studio runtimes (For the server executables)
    • Automatically added Firewall rules
    • New Map formats are loaded
    • New Path files are loaded
    • LUA Configured
    • Optimized and latest server binaries (Stable)
    • Loginserver:
      • The server is configured to use the EQEmu Public Loginserver
      • You can also install a local login-server for LAN play
Loginserver Source Updates (Not the public loginserver)
  • Recently overhauled the logging system that the loginserver uses to conform to the overhaul that happened with the rest of the project to use the same system
  • The loginserver now supports auto account creation for folks who want to have a "LAN based setup" that is completely disconnected from any internet access
  • You can now download a pre-compiled Windows loginserver using option 13 in the update script




Server Performance (Dramatic Improvements)
  • In the past years, we've seen exponential improvements in server performance in the source. Many of us developers have chipped away at costly code, rewritten big chunks of the source and made HUGE improvements.
  • The server performance is currently the best that it has ever been, since I've taken over EZ Server I've had the opportunity to take live production player traffic and put it under a Visual Studio profiler and figure out all of the costly code paths and reduce the CPU footprint dramatically in the source
  • EZ Server used to run 2 Xeon processors with 500-600 players fluctuating often between 30%-100% on all cores approximately 2 years ago. It now runs 1,000+ players with hardly budging from 25-30% idle. The entire community improves from these footprint changes
  • The changes and improvements that have been made are FAR too many to mention, but some of them include:
  • Over the past few years, we've also made huge strides at heavily reducing process crashes that are produced in the source, so the level of stability has also come a LONG way. Very few crashes occur in our current master source branch




Server Development, Management and Tools
  • Hotfix (Shared Memory Hot Reload) (KLS):
    • For the longest time, in order to make changes to spells, items, loot etc. You had to make your changes and restart your server processes (world/zone etc.). Now, thanks to KLS and a massive overhaul with how the shared memory system works, you can use #hotfix to re-apply spell/item/loot changes etc. while you are developing. This cuts down heavily on the feedback loop and creative process when building a server. The command issues a shared_memory reload in all zone processes and world
  • Tools Guide (Compiled by Shendare)
    • This community has seen an incredible amount of tools created by members of the community over many years, some of them are no longer maintained, some of them posted in threads that no one sees anymore etc. Shendare was nice enough to compile a massive tool cheat sheet for developers. Check it out here: (It's quite outstanding)
  • Repop Close (Akkadius)
    • Sometimes when developing or working on a zone, you might need to repop a zone over and over and over repeatedly. This can become a slow process as your zone gets larger and larger. #repopclose was created for developers to only repop a zone with NPC's that are within 500 units of the GM who initiated the command
  • 13th Floor Items Database Update (Demonstar, Natedog, Akkadius)
    • For a while, the 13th floor DB repo had no longer been maintained, so we've not been able to import the latest items into PEQ for the past 2 years or so. Someone recently spun up a copy of 13th floor and we made an effort to help collect item data from Live to be able to import that data into the EQEmu items schema.
    • The new 13th floor import script was originally authored by Natedog, adjustments made by Akkadius:
  • KLS has been recently working on a crazy major overhaul of pathing which includes a visualization program that helps build path files
    • This could be extended into a visual world editor, but right now generates the path/map files for the new overhaul
  • Github Branch: https://github.com/EQEmu/Server/tree/lets_move
  • Navigation Editor: http://wiki.eqemulator.org/p?Navigation_Files
  • Pathing Overhaul Benefits:
    • Better overhaul pathing (Obviously)
    • Future AI overhauls
    • Find functionality will actually generate more proper paths in zones
    • NPC's will avoid swimming unless its a shortcut because there are defined paths. For example if there is a bridge nearby, the NPC will prefer to take that path over just jumping in the waterPathing System Major Overhaul (KLS) (Work in Progress)
  • Alternate Advancement System Overhaul (KLS and Demonstar)
    • This is an older update, but the AA system was a massive disgusting code mess that needed a rewrite. Demonstar put together the packet collect scripts to pull down live AA data and together with KLS they worked on overhauling the AA code.
    • Not only has this made the AA code far cleaner, but it has also made it harder to exploit with the holes that were in it before.
    • With this overhaul we also have all new AA's through Live
  • Inventory Snapshots (Uleat)
    • The ability to have period inventory snapshots for backup purposes has been implemented, a tool can easily be built to restore these snapshots to a character inventory
  • #command overhaul (Uleat)
    • The #command system had a bit of an overhaul, including the ability to set multiple command aliases, the new table is now command_settings, these aliases are separate by a pipe | delimiter
  • Version 2 Maps (KLS)
    • Version 2 maps have been out for quite a while, but this is also an overhaul that has definitely improved server performance, this was introduced close to 2 years ago now and they can be downloaded via the update script
  • Saylink Adjustments (Demonstar/Akkadius)
    • Allowed item ID's to be linked up to ID 1,048,575
    • Saylink ID's are now processed in the aug portion of the item packet so they don't conflict with Item ID's
  • Fixed base resists (Demonstar)
  • Fixed ammo slot modding Skills (Uleat)
  • Secondary Recall Implemented (Demonstar)
  • Guild Banks work for RoF2 now



EQEmu Update System (Akkadius)
  • The eqemu_update.pl script has become an integral part of how a lot of us keep the core server updated. It started by managing our automatic database versioning, which has been a HUGE improvement to server maintaining and has streamlined both the process of developers making database changes, and server operators keeping their database up to date without frustration. It has also extended to multiple other features and uses and will continue to do so.
  • Normally, world will execute this script on boot-up, but you can also manually run it yourself in the server directory (eqemu_update.pl)
    • Database Update System: http://wiki.eqemulator.org/p?Automat...Upgrade_System
      • Will now update databases as far back as 2012 (SVN DB Updates)
    • Bot Database Updates
      • If you are running compiled bot binaries, the update system will recognize this and also has the ability to keep a bots database schema up to date. This is option 4 in the update menu.
    • Precompiled Windows Server Binaries
    • Other things the update script maintains:
      • 1) [Backup Database] :: (Saves to Backups folder)
        2) [Backup Database Compressed] :: (Saves to Backups folder)
        3) [EQEmu DB Schema] :: Check and stage pending REQUIRED Database updates
        4) [EQEmu DB Bots Schema] Check for Bot REQUIRED database updates... (Must have bots enabled)
        5) [OPCodes] :: Download latest opcodes for each EQ Client
        6) [Maps] :: Download latest map and water files
        7) [Plugins (Perl)] :: Download latest Perl plugins
        8) [Quests (Perl/LUA)] :: Download latest PEQ quests and stage updates
        9) [LUA Modules] :: Download latest LUA Modules (Required for Lua)
        10) [DB Data : Alternate Advancement] :: Download Latest AA's from PEQ (This overwrites existing data)
        11) [Windows Server Build] :: Download Latest and Stable Server Build (Overwrites existing .exe's, includes .dll's)
        12) [Windows Server .dll's] :: Download Pre-Requisite Server .dll's
        13) [Windows Server Loginserver Setup] :: Download and install Windows Loginserver
        14) [Remove Duplicate Rule Values] :: Looks for redundant rule_values entries and removes them
        19) [EQEmu DB Drop Bots Schema] :: Remove Bots schema and return database to normal state
        20) [Update the updater] Force update this script (Redownload)

Changelog:

Quote:
== 03/05/2016 ==
mackal: Implement extra bind points (secondary recall)
For SE_Gate, base2 is which bind to use (starting at 1)
For SE_BindAffinity, base1 is which bind to set (starting at 1)
For SE_GateCastersBindpoint, base1 is which bind to use (starting at 1)
There was actually no spells that don't send to the main bind, but it uses a base1 of 1 which matches with SE_Gate
This also doesn't break anything

== 03/01/2016 ==
Uleat: Fix for LDoN treasure 'npcs' not leaving a corpse (please report any issues..)

== 02/29/2016 ==
Uleat: Change in AddItemBonuses - now includes ammo slot for skill mods only. Defined SoD- client SkillModMax packet property (client does not show..but, does enforce.)

== 02/11/2016 ==
Hateborne: Added IgnoreSpellDmgLvlRestriction rule (boolean) to ignore the 5 level spread when checking to add SpellDmg

== 02/10/2016 ==
Hateborne: Added FlatItemExtraSpellAmt rule (boolean) to allow SpellDmg on items to be added as raw damage versus scaled.

== 01/26/2016 ==
Uleat: Fix for Berserker 'Piercing' skill issues. Server Admins: If you run custom skill sets, this patch touches the code segments that you will need to modify if you have changed the default berserker 1H-/2H-piercing skill values.
Uleat (Daerath): Fix for precision-loss item weight conversions in older clients.
- WARNING: YOU MUST RE-RUN SHARED_MEMORY.EXE BEFORE STARTING SERVER OR ITEM LOSS WILL OCCUR!
- Note: Cmake must be re-run to include/exclude the required files

== 01/13/2016 ==
Kinglykrab: Modified #flag so you can refresh your target's account status (GM status level) without them having to relog.
- Just target the person whose flag you want to refresh and type #flag.
Uleat: Added itemlink functionality to the #summonitem command. Current use is limited to extracting the item id from the link.
- Invoking by item link '#summonitem Arrow' produces the same result as by item id '#summonitem 8005'

== 01/12/2016 ==
Athrogate: Adding ClearCompassMark() to Lua.
- Lua didn't have ClearCompassMark(). Perl already had this.

== 01/12/2016 ==
Uleat: Fix for tradeskill containers remaining locked after a RoF+ client leaves. Intermediary fix for RoF+ clients accessing tradeskill containers when in use by another player (thanks Natedog!)

== 12/29/2015 ==
Akkadius: Implemented standardized zone controller scripts (Rule Zone, UseZoneController) Defaulted to true
- When a zone boots, it will spawn an invisible npc by the name of zone_controller
- Lua and Perl scripts can be represented with this npc as zone_controller.pl/lua
- This NPC's ID is ruled be define ZONE_CONTROLLER_NPC_ID 10
- Two EVENT's uniquely are handled with this NPC/controller (They only work with the zone_controller NPC)
- EVENT_SPAWN_ZONE :: All NPC spawns in the zone trigger the controller and pass the following variables:
$spawned_entity_id
$spawned_npc_id
- EVENT_DEATH_ZONE :: All NPC deaths in the zone trigger the controller event and pass the following variables:
$killer_id
$killer_damage
$killer_spell
$killer_skill
$killed_npc_id

== 12/28/2015 ==
Kinglykrab: Added GetInstanceTimer() to Perl and Lua.
- Added GetInstanceTimerByID(instance_id) to Perl and Lua.
- Note: If you do not provide an instance id in the method it defaults to instance id 0 and returns 0 for time remaining.
- Added UpdateZoneHeader(type, value) to Perl and Lua.
- Note: UpdateZoneHeader allows you to manipulate fog color, fog density, and many other zone header settings on the fly in Perl and Lua.

== 12/21/2015 ==
Natedog: Updated item table fields and added a few missing fields for evolving items
-DO NOT implement Heirloom items till the inventory code is fixed to allow placing NO DROP
items in your shared bank. (but item field located on items table)
-NYI - SkillModMax: Max skill point modification from the percent mods. EX:
100% 2HSlashing (Max 50) - can only increase 2hslash by 50 MAX! (item field located though)
Kinglykrab: Added GetMeleeMitigation() for NPCs and Clients in Perl and Lua.
- This allows you to check total item, spell, and AA melee mitigation contribution.

== 12/19/2015 ==
Kinglykrab: Added many methods to Perl and Lua, list below:
- SeeInvisible()
- SeeInvisibleUndead()
- SeeHide()
- SeeImprovedHide()
- GetNimbusEffect1() - returns first nimbus effect
- GetNimbusEffect2() - returns second nimbus effect
- GetNimbusEffect3() - returns third nimbus effect
- IsTargetable()
- HasShieldEquiped()
- HasTwoHandBluntEquiped()
- HasTwoHanderEquiped()
- GetHerosForgeModel() - returns int32 Hero's Forge model
- IsEliteMaterialItem() - returns uint32 Hero's Forge Model
- GetBaseSize() - returns Mob's base size
- HasOwner()
- IsPet()
- HasPet()
- IsSilenced()
- IsAmnesiad()

== 12/16/2015 ==
Noudess: Repaired issue with Bind Wounds on someone else. Message was not coming out on client (hold still) and a bind wounds on someone already binding their wounds would interrupt their bind and make them stand. Also removed some duplicate messaging.

== 12/14/2015 ==
Kinglykrab: Added IsBlind() and IsFeared() functionality to Perl and Lua.
- Note: Both methods are Mob methods and may be used on NPCs or PCs.
Natedog: Added Discipline functions, UpdateInstanceTimer function, and UnmemSpellBySpellID to lua and perl
-Examples: http://wiki.eqemulator.org/i?M=Pastebin&Paste=BJ0ygmNM

== 12/07/2015 ==
Uleat: Command aliases are no longer handled through the command_add() function.
- To add a command alias, edit the database table `command_settings` - here, you will find three columns: `command`, `access` and `aliases`
- Adding command aliases require that the command contain an entry in `command_settings`.`command`
- Only 'real' commands go inside of the command_init() function in command.cpp .. if you wish to add aliases, you must enter them into the database
- 'Real' commands are loaded first .. then any access/alias data is loaded and applied afterwards
- Duplicate aliases will be ignored .. only the first encountered occurrence will be honored - if it does not conflict with an existing command name
- Aliases should not contain whitespace and should be '|' (pipe) delimited
- The restriction on the number of aliases has been removed .. though each alias will still be limited to the access level of the parent command
- If you need need more name space for aliases, simply edit the `command_settings` table and increase the size of the `aliases` column
- The old `commands` table has been renamed to `commands_old` for reference
- All of the current 'standard' commands have been added to the new `command_settings` table

- YOU WILL NEED TO VERIFY/IMPORT OLD ACCESS VALUES AS THIS CHANGE REVERTS ALL COMMAND ACCESS VALUES TO THEIR PEQDB DEFAULTS

== 11/30/2015 ==
Uleat: Changed criteria for a few bots scripts from count to null/not null in hopes of fixing special case failures

== 11/22/2015 ==
Uleat: Fix for loginserver project compile failure

== 11/7/2015 ==
Akkadius: Implemented #repopclose [distance in units] - Used for development purposes, defaults to 500 units
- Real case use: Large zones with 700 NPC's and you are making fast quick tweaks to nearby NPC's you can refresh just the NPC's around you instead of all in the zone
- This can be quite the time saver
- This command will depop all NPC's and only respawn the NPC's that are 500 units around you or unless you specify otherwise

== 11/2/2015 ==
Akkadius: Performance boost (exponential) - Adjusted default idle cast check timers in rules
- Spells:AI_IdleNoSpellMinRecast 500 (Now 6000) 6 seconds
- Spells:AI_IdleNoSpellMaxRecast 2000 (Now 60000) 60 seconds
- Database version 9089 will take care of this update automatically only if you used the default values
- The CPU cost of NPC's checking the entire entity list to cast beneficial spells (Heals/Buffs) becomes extremely high when higher NPC count zones exist (Based off of process profiling)
- Distance checks for every single NPC to every single other NPC who are casting beneficial spells occur every .5 - 2 seconds unless npc_spells dictates other values, which most of the time it does not
- Zones that once fluctuated from 1-8% CPU with no activity (Idle but players present) now idle at .5% based on my testings due
to this change in conjunction with the past few performance commits, these are zones that have 600-800 NPC's in them
- These values normally are overidden by the spells table (npc_spells), fields (idle_no_sp_recast_min, idle_no_sp_recast_max)

== 11/1/2015 ==
Akkadius: Made many performance optimizing oriented code changes in the source
- Added Rate limit the rate in which signals are processed for NPC's (.5 seconds instead of .01 seconds)
Akkadius: Added Perl Export Settings which should heavily reduce the Perl footprint
- Normally when any sub EVENT_ gets triggered, all kinds of variables have to get exported every single time an event is triggered and
this can make Perl very slow when events are triggered constantly
- The two most taxing variable exports are the item variables ($itemcount{} $hasitem{} $oncursor{}) and qglobals ($qglobals{})
- qglobals can pose to be an issue quickly when global qglobals build up, it is highly recommend to use the GetGlobal() and SetGlobal()
methods instead as they don't reference the hashmap $qglobals{} that is rebuilt every single time a sub event is triggered
- A stress test conducted with 10,000 samples shows an excess of time taken to export variables: http://i.imgur.com/NEpW1tS.png
- After the Perl Export Settings table is implemented, and all exports are shut off you see the following test result:
http://i.imgur.com/Du5hth9.png
- The difference of eliminating uneeded exports brings the overhead and footprint of 10,000 triggers from 54 seconds to 2 seconds
- In a 10,000 sample test (10,000 sub event triggers), exporting item variables adds 12 seconds alone, when item variables are only needed in
EVENT_ITEM and EVENT_SAY a majority of the time if at all
- In a 10,000 sample test (10,000 sub event triggers), exporting qglobals with approximately 1,000 global qglobals in the database creates
about 11-20 seconds of delay on its own (Depending on hardware of course)
- I've written a parser that has determined which of these exports are needed in which sub routines and have turned off all of the unneeded
exports in sub routines that do not need them and used it to create the default table that will be installed in the database.
- The export table is called 'perl_event_export_settings' and it resembles the following structure and contains all current 81 EVENTS
- If an entry doesn't exist in this table and a new subroutine is added to the source, all exports will be on by default for that routine

+----------+-----------------------------------------+-----------------+------------+-------------+-------------+--------------+
| event_id | event_description | export_qglobals | export_mob | export_zone | export_item | export_event |
+----------+-----------------------------------------+-----------------+------------+-------------+-------------+--------------+
| 0 | EVENT_SAY | 1 | 1 | 1 | 1 | 1 |
| 1 | EVENT_ITEM | 1 | 1 | 1 | 0 | 1 |
| 2 | EVENT_DEATH | 1 | 1 | 1 | 0 | 1 |
| 3 | EVENT_SPAWN | 1 | 1 | 1 | 0 | 1 |
| 4 | EVENT_ATTACK | 0 | 1 | 1 | 0 | 1 |
| 5 | EVENT_COMBAT | 1 | 1 | 1 | 0 | 1 |
+----------+-----------------------------------------+-----------------+------------+-------------+-------------+--------------+

- If a change is made to this table while the server is live and running, you can hot reload all zone process settings via:
#reloadperlexportsettings
- For those who wonder what "exports" are, they are reference to variables that are made available at runtime of the sub event, such as:
(export_qglobals) (Heavy) : $qglobals https://github.com/EQEmu/Server/blob...arser.cpp#L916
(export_item) (Heavy) : $itemcount{} $hasitem{} $oncursor{} https://github.com/EQEmu/Server/blob...rser.cpp#L1103
(export_zone) : $zoneid, $instanceid, $zoneln etc. https://github.com/EQEmu/Server/blob...rser.cpp#L1083
(export_mob) : $x, $y, $z, $h, $hpratio etc. https://github.com/EQEmu/Server/blob...rser.cpp#L1032
(export_event) : (event specific) IE: EVENT_SAY ($text) https://github.com/EQEmu/Server/blob...rser.cpp#L1141

== 10/16/2015 ==
Uleat: Added command '#bot clearfollowdistance [ | spawned | all ]' to coincide with the activation of the load/save feature for follow_distance

== 10/13/2015 ==
Uleat: Important update to 2015_09_30_bots.sql - fix for orphaned entries causing crashes during the conversion process
Note: Please visit the thread below if you encounter issues during the conversion process

== 10/12/2015 ==
Uleat: Implemented 'bots' database versioning
Note: See thread for more information: http://www.eqemulator.org/forums/showthread.php?t=40091

Kayen: Feign death will now break when hit by casted spells, consisted with live.
Implemented suport for AA/spell effect which provides a chance to avoid FD breaking from spells.

== 10/10/2015 ==
Kayen: Updated mechanics to be consistent with live regarding how invisible breaks when the client is the target of a spell.
Invisible will drop whenever a client is hit with a detrimental spell, regardless of if resisted, if it does damage or AOE.
Hide skill now also follows the same rules as above.
Implemented support for Rogue AA - Nerves of Steel which gives a chance for hide NOT to break
when client is hit with an AOE spell.

== 09/25/2015 ==
Uleat: Implemented 'Inventory Snapshot' feature to track online player inventories at timed intervals.
rules:
'Character:ActiveInvSnapshots' - active (true) or inactive (false - default)
'Character:InvSnapshotMinIntervalM' - minimum time between snapshots (in minutes)
'Character:InvSnapshotMinRetryM' - minimum time to attempt a retry after a failed snapshot (in minutes)
'Character:InvSnapshotHistoryD' - minimum time to keep snapshot entries (in days)
commands:
'#invsnapshot' - Takes a snapshot of target client's inventory (feature active or inactive)
'#clearinvsnapshots [use rule]' - Clears snapshot entries based on bool argument ([true] - honors the 'InvSnapshotHistoryD' rule, [false] - erases all)

== 08/02/2015 ==
Shendare: VS2013 query StringFormat glitches when "%f" is passed for the int GetRunSpeed().
Shendare: In CreateNewNPCCommand(), the npc_type_id and spawngroupid are created in the database, but never set in the spawn class, so later it can't delete them with #npcspawn remove or #npcspawn delete.

== 07/27/2015 ==
Uleat: Reworked the QS Audit code in Handle_OP_ShopPlayerBuy (\zone\client_packet.cpp) to help eliminate potential for exception errors

== 07/22/2015 ==
mackal: Corrected some hate value calcs based on updated http://www.eqemulator.org/forums/showthread.php?t=39819

Rule Aggro:MaxStunProcAggro to Aggro:MaxScalingProcAggro since the cap applies to more than stuns

== 07/16/2015 ==
mackal: Rework spell aggro based on http://www.eqemulator.org/forums/showthread.php?t=39819

== 07/15/2015 ==
Hateborne: Added optional ability to enforce task level requirements in perl and lua via an added, optional parameter to $client->AssignTask and quest::assigntask.
Use cases:
quest::assigntask(703); # this still assigns the task as normal, no functional change
quest::assigntask(703, 1); # this will assign the task, provided the character meets the db-stored level requirements
$client->AssignTask(703, $npc->GetID()); # still assigns the task as normal, no functional change
$client->AssignTask(703, $npc->GetID(), 1); # this will assign the task, provided the character meets the db-stored level requirements
== 07/06/2015 ==
mackal: Implement Triple Attack Skill
Parses showed about rand(1000) for the chance, may need more investigating
Corrected Double Attack chances as well
Running optional 2015_07_06_TripleAttack.sql will set current toons to their max skill
This is optional because the admins might want to go a different route.

== 07/05/2015 ==
mackal: Rewrite NPC combat attack round logic
An NPC "quading" is really just an NPC with innate dual wield that doubles on both hands
The old rules allowed NPCs to hit 6 times in one round
NPCs also seem to have their own skill progression for DW/DA
See: http://www.eqemulator.org/forums/showthread.php?t=38708
You can set Combat:UseLiveCombatRounds to false to use the old rules
PC Double Attack rates kind of follow the same thing but still needs to be implemented
Kinglykrab: WARNING: summonburriedplayercorpse is now summonburiedplayercorpse, getplayerburriedcorpsecount is now getplayerburiedcorpsecount, summon_burried_player_corpse is now summon_buried_player_corpse, and get_player_burried_corpse_count is now get_player_buried_corpse_count FIX THESE IN YOUR SCRIPTS OR THEY WILL NOT WORK!!!!
Added bot saylinks (thanks Uleat!)
Command aliases for #augmentitem (#aug), #findnpctype (#fn), #findspell (#fs)
Bot command changes: #bot sow -> #bot speed, #bot magepet -> #bot setpet, #bot resurrectme -> #bot resurrect
Changed all occurrences of burried to buried in the code.
client_packet.cpp was referencing old columns in character_corpses, not sure how we didn't already see this before.

== 7/4/2015 ==
mackal: Reworked the activated avoidace skills (riposte, dodge, etc) based on dev quotes
This also fixes the order things are checked (avoidance skills, THEN hit/miss)
Also riposte immunity from the increase riposte chance spell effect.

== 7/2/2015 ==
KLS/Demonstar55: AA system has been rewritten fixing a ton of bugs and extending functionality while making it easier to create new AA points.
KLS/Demonstar55: New tables are needed and so older data will need to be migrated to the new system.
KLS/Demonstar55: The SQL saves the old aa points spent/avail/character_alt_abilities data if any server ops want to do something different than PEQ did with it.
KLS/Demonstar55: Will try to get a wiki entry written up next week some time explaining the system but it's really not hard to follow the db tables in the meantime.

== 7/1/2015 ==
Akkadius: Fix an issue where emote messages would overflow the buffer of 256 by increasing the size and changing some of the initialization
Akkadius: Added a custom Health Update message that will display in the middle of the players screen, to enable this server wide you must enable rule 'Character:MarqueeHPUpdates'
Example: https://www.youtube.com/watch?v=KUVdbPxLIn0
Akkadius: (Haynar) Fixed some runspeed issues with Perl and LUA scripts
Akkadius: (Haynar) Updated #showstats and #npcstats for new speed calcs to display speeds again in familiar float format.
Akkadius: (Haynar) Improved client movement while AI Controlled, such as feared and charmed. Movement will be much smoother from clients perspective.

== 06/12/2015 ==
Uleat: Adjusted SessionStats to better reflect a sister implementation

== 06/07/2015 ==
Uleat: Implemented optional rule for using disenchanted bags. Action triggers at the same point that temporary items are removed.
Optional SQL: utils/sql/git/optional/2015_06_07_TransformSummonedBagsRule.sql
mackal: changes to AA packets since more fields have been identified
mackal: fix exploit with expendable AAs punching holes in the aa_array and staying around longer than they are welcomed

== 05/25/2015 ==
Akkadius: Implemented disjointed zone based time, this can be triggered via quest methods
Akkadius: Added parameter to LUA and Perl method settime(hour, minute, [update_world = true])
- If update_world is false, the zone will then unsubscribe itself from regular worldserver time synchronizations
- Basically this localizes the zones time and keeps it from syncing with world updates
Akkadius: Added DB ver 9082 with update to add npc_types texture columns if table does not currently have them

== 05/22/2015 ==
Uleat: Added null-term declaration for character names in ENCODE(OP_CharInfo) - where appropriate

== 05/20/2015 ==
demonstar55: Bard instrument mods should be more consistent with live. Zoning will keep instrument mod for long duration buffs (selo's)
Still need to have procs/doom effects to inherit the instrument mods from their source buff/whatever

== 05/18/2015 ==
KLS: Changed how fishing locates water to hopefully be a bit more accurate at the expense of a bit more cpu power per line cast.

Last edited by Akkadius; 03-14-2016 at 02:28 AM..
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump

   

All times are GMT -4. The time now is 12:47 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3