Bug:
It was Initially declared as size of UINT16_MAX (0xffff) but as the skill-id itself which will be used
as offset can reach this value, it's too small.
Pathfinding uses BHEAP_* (vector) operations from db.h, before this optimization each pathsearch resulted in an call to aMalloc() / aFree() which is quite costly as it fragments memory over time & may cause software stalls when the application's heap must be resized.
Now it allocates the Heap once (& may grow it accordingly) and re-uses the allocated memory every time/call.
This makes also tons of monsters less cpu-time intensive.
- Marionette Control now has a range of 7 (fixes#1239)
- Mechanic Back/Front Slide skills are no longer blocked by gear that makes you knock-back immune (fixes#1227)
Fixes#1234, thanks to @julia40124009.
Please note that it is currently not supported to resend the cashshop data to the players. It is only transmitted once during login as per request from the client.
- Lunatic Carrot Beat and Catnip Meteor now deal 300% to 700% damage which is calculated once and split between multiple hits rather than calculating damage per hit; despite this, they can still hit plants
- Reduced cast time of Lunatic Carrot Beat from 3000ms to 1500ms and cooldown from 8000ms to 6000ms according to latest tests on kRO
- Fixed Catnip Meteor still having a fixed cast time
- Increased stun chance of Lunatic Carrot Beat from 10% to 20%
- Increased curse chance of Catnip Meteor from 10% to 20%
- Increased cast time of Grand Cross in pre-re to 3000ms (see #1140)
- Fixed Grand Cross sometimes having 4 intervals instead of 3 (see #1140)
pc_setpos now delivers an enum for the error that happened.
Additionallly it now returns a different return value when the targeted player is in autotrade state.
Added usage of this new return value to all recall commands.
As a skill ID is UINT16 && our skill index is also UINT16 - there is absolutly NO need for a B-Tree.
The lookup id2idx is done really often. so a tree-traversal is a bit too costly here.
The new -array based- implementation will consume 256 KiB on 32 Bit && 512 KiB memory to provide
a static lookup table.
* This rewrite allows for better adaptation from the Aegis Class and Attribute fields.
* Refactored the renewal level penalty function.
* Slaves are now properly assigned an official slave mode of CanWalk, CanAttack, and NoRandomWalk.
* Removed extra Boss checks and adjusted others to use their proper functions.
* Properly implemented Skill Immunity mode to match Aegis.
* Separated MVP and Boss modes.
-- MVP mode defines when mobs should give MEXP, MVP Drops, and show the MVP sign.
-- MVP now have their own item drop configurations.
* Updated the mob_db and mob_skill_db to match the new mode structure.
-- Included a Perl tool (tools/convert_monstermode.pl) to allow people to convert their custom mobs to the new mode structure.
Thanks to @Playtester and @Lemongrass3110 for help with debugging and information!
Sorry guys, we actually created this issue ourselves, because we overwrote the data of the next incoming packet eventually.
Maybe this will make 2015-10-29 also useable again.
Fixes#1049.
* Tiger Cannon and Sky Net Blow will now properly give Combo State bonus damage to splash targets.
* Corrected Flash Combo not delaying attacks, acting, and item usage for the entire cast time.
* Summoner HP/SP values are now accurate for both HP/SP tables and the automatic calculation
* Summoner HP/SP adjustments in the code are now at the correct place and only used when the HP/SP tables are not used
* Super Novices now gain +2000 HP at both level 99 and level 150 and the bonus stays even on level 100-149 and 151+ (fixes#979)
* Normal Novices no longer get a HP boost
* Updated HP/SP tables to official values for level 151-175 and extrapolated new values for up to level 500
* Removed 3rd classes from the HP/SP tables in pre-re and replaced them with dummy data (using Novice values)
-- Note: This way updates like this one don't need to be done twice. If you want to use 3rd classes in pre-re just copy over the lines you need from the re folder or even better, use the import folder. You should use it for all customizations you do for easier updating.
* Resolves characters not being removed from the character select screen after the delete time is met and clicking the delete button.
Thanks to @joelolopez, @Darkelfen, and @Lemongrass3110!
* Until tested, Summoner skills will now use the default renewal base duration for their status changes
-- Bleeding: 120s
-- Stun: 5s
* Moved status change durations to duration2 for these skills
* Catnip Meteor now has a variable cast time of 7500ms (previous 6000ms)
* Catnip Meteor now has a cooldown of 5000ms on all levels (previously 2000-6000ms)
* Each meteor now has an AoE range of 7x7 (previously 3x3)
* Each meteor now deals 5 hits regardless of level used (previous 1-5 hits)
* Each hit now only deals 40%+20%*level damage (previously 200%+100%*level)
-- Note: As damage is multiplied by number of hits (can hit plants), damage per meteor is now 200%+100%*level
The EQI constants of the constants database did not match the ones used in the source up to now.
For whatever reason long long ago an array was created which mapped the const_db EQI constants to the source's EQP constant(aegis bitmasks).
With this commit we now use the already existing array from pc.h(which was moved from pc.c to be accessible).
This merges and closes#1147 due to follow up changes with 1cd3741.
* Script commands getunitdata and setunitdata will return -1 when the given GID is not found.
* Script commands getunitname and setunitname will return Unknown when the given GID is not found.
* When using auto spell, it will no longer print error messages to the map-server when no valid skill was selected
Note: This needs to be done because the client sends us random IDs if the user simply presses on "Ok" without selecting a skill, so it's technically not an error, but expected behavior that needs to be handled.
Special thanks to @anacondaqq and @stealth62 for helping to reproduce the error.