- SL_STIN/SL_STUN have dex-reducable casting times now.
- Added a warning on item loading when an item is of equippable type but has no equippable position.
- Turning an alliance to an opposition won't work now during WoE
- Slaves can summon other mobs now. The only ones who can't do this are player summoned mobs.
- Merged the following functions for faster processing of items:
clif_storageitemlist + clif_storageequiplist = clif_storagelist
clif_guildstorageitemlist + clif_guildstorageequiplist = clif_guildstoragelist
clif_itemlist + clif_equiplist = clif_inventorylist
- Increased max knockback value support to 25.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7109 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Modified npc_click to receive the bl that was clicked directly. Also cleaned it up so it isn't as easy to crash the server with invalid ids <.<
- Moved npc_checknear to npc_checknear2 and added npc_checknear. The near version receives a bl, checks it's validity, and returns a TBL_NPC object, near2 does the same but doesn't checks for type NPC. The first returns a pointer, the second returns 1 on fail, 0 success.
- Also uncommented various npc_checknear calls in the code, who's idea was to comment them out so you could exploit npcs from afar with custom packets?
- Added overflow checks for bonus settings mdef_rate/def_rate.
- Added missing update of INT after a buf.
- Small cleanup of how SC_BLEEDING works.
- Fixed party_foreach_samemap invoking the function on the CASTER instead of on the party members.
- Added clif_parse_ActionRequest_sub to handle player commands, is used from npc_click or any other function that needs to "re-route" a player's request.
- Modified clif_parse_NpcClicked to handle the different situations with different bl-objects (attack on players/mobs, click on npcs or mobs with npc attached)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7103 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added monster_ai setting &64, when enabled makes a mob run to any nearby npc-warp when their current target has switched maps.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7039 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added a missing status_calc_mob on mob_spawn_guardian_sub
- Added clif_fixpos packets before attacking for the first time to clear any position sync issues with the client.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6985 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Removed attackrange/attackrange_ from TBL_PC, corrected clif.c using the incorrect range variable.
- You can now equip/unequip stuff while the storage is open.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6908 54d463be-8e91-2dee-dedb-b68131a5f0ec
- AL_TELEPORT will fail when used by slave mobs.
- Added NPC_ENERGYDRAIN, NPC_MENTALBREAKER to the list of undodgeable attacks.
- slaves inherit speed setting will now work regardless of whether the slave or master has the MD_CANMOVE mode bit.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6865 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Visual Studio .NET 2003 includes for mercenary.c
* [Fixed]
- Logic error in NPC custom AI in unit.c
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6853 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Updated status_damage to handle the general death code (clearing status changes, clearing skill related data, sending death packet, etc). The return value from the *_dead functions will tell it what to do or not with the object (death aborted, clear it from map/memory, etc)
- Cleaned up pc_dead to take advantage of the fact that status changes are not ended until after the function.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6852 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Disabled ontouch npcs triggering on hidden/chase-walk characters.
- Added the SC* code blocks relevant to SC_AVOID, SC_CHANGE, SC_BLOODLUST, SC_FLEET
- Added structure status_data to homun_data
- Added handling of BL_HOMUNCULUS in status_heal, status_damage.
- Cleaned up the homun-submitted code, moved the relevant code to status_calc_homunculus.
- Updated map-server Makefile to compile mercenary.* files.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6847 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Cleaned up TBL_PC, TBL_MOB, TBL_PC and mob_db structures to use status_data.
- Set the NPC-Change Attribute duration on Time1, updated their max to 1 in the db.
- Berserk's HP cost interval is now defined as time2.
- Split damage received functions into pc_damage/pc_dead and mob_damage/mob_dead
- Rewrote the @heal related functions to use the new status_* healing functions.
- Added status functions to deal with damage and healing (status_damage, status_heal, status_percent_change) and a bunch of defines for easier handling of them (status_percent_heal, status_percent_damage, status_fix_damage, status_kill, etc)
- Splitted mob_once_spawn into two. mob_once_spawn_sub creates the mob instance without spawning it.
- Added defines for Elements (ELE_*)
- Modified battle_calc_(weapon/magic/misc)_attack to use the status data structure.
- Rewrote and cleaned up battle_calc_misc_attack
- Merged config options pc_attack_attr_none, mob_attack_attr_none, pet_attack_attr_none into attack_attr_none (type 4)
- Removed config options player_defense_type, monster_defense_type, pet_defense_type in favor of weapon_defense_type
- Cleaned up pet.c to stop invoking status_calc_pc when unnecessary
- Modified skill_calc_heal to take into account the MEDITATION bonus.
- Cleaned up code of Adjustment, Madness Cancel and other GS/NJ skills inside skill_check_condition
- Added status change SC_MODECHANGE which handles mob state changes (this SC is continous until manually ended, eg: like Weight50)
- Modified Slim Pitcher so it will work when casted by non-players. Will now also work with SP-healing items.
- Rewrote Freedom of Cast code to use function status_freecast_switch to switch adelay/speed when cast begins/ends.
- Modified Magic Power to store amplified MATK/MATK2 in val3/val4 for easier updating when used in conjunction with ground skills.
- Fixed Asura Strike being usable from within a combo regardless of combo skill.
- Modifed SC_DANCING to store speed-change in val3 (it is shared with skill duration...)
- Added StatusChangeFlagTable to store which statuses are changed by each SC
- Added SCB_* constants to specify the different stats that each sc changes. SCB_PC is the only one that means a change hardcoded in status_calc_pc, the rest are handled by status_calc_bl
- Added some helper functions to simplify with basic status calculations (status_base_atk, status_calc_misc, status_base_pc_maxhp, status_base_pc_maxsp)
- Added status_calc_mob which calculates initial status and special base status alterations (HP changes, stat changes due to big/small mobs, etc)
- Made all the status_calc functions static.
- Added status_calc_bl_sub_pc for PC related calculations that must happen after status-change adjustments.
- Added status_calc_bl which does status-change related calculations using as base the base_status of the bl object and the SCB_* flag passed.
- Added status_get_status_data and status_get_base_status to retrieve the bl objects current status_data and basic status_data (current never returns null, instead it returns a dummy structure with basic data)
- The main switch in status_change_start now only sets the tick and val values, therefore it is skipped when loading (flag&4)
- Cleaned up status_change_start and replaced many of the ex-japanese comments for english ones.
- Changed Hiding to store the speed penalty on val3. val4 stores interval SP cost.
- Changed Chase Walk to store Speed adjustment on val3, sp cost in val4
- Changed Cloaking to store speed penalty on val3, val4&2 signals wall-present, val4&1 is infinite cloaking.
- Changed Wind walk to store speed bonus on val3
- Rewrote Marionette Control to store the status to add/substract in val3/val4, it now works on anyone (players/mobs)
- Changed Improve concentration to store Card bonuses (which are not counted for total % increase) on val3/val4
- Changed SC_ADRENALINE, SC_CONCENTRATION, SC_ANGELUS, SC_IMPOSITIO, SC_MELTDOWN, SC_TRUESIGHT, SC_SUN_COMFORT, SC_MOON_COMFORT, SC_STAR_COMFORT, SC_QUAGMIRE, SC_GATLINGFEVER to store the bonus modifiers in their val values rather than calculate them in status_calc_*
- Status_change_start/end will use clif_status_load rather than clif_status_change when related bl is not on a map.
- Modified status_change_timer to use the status_charge function rather than directly substracting SP
- Added SC_ELEMENTALCHANGE to modify someone's base defense element.
- pc_clean_skilltree will now also remove item-granted skills.
- Learning skills will now only invoke status_calc_pc when the skill is passive.
- Cleaned up pc_steal_coin
- Cleaned up pc_check_base/job_lvup to only invoke the lv-up related packets and functions ONCE regardless of skill-levls earned.
- Cleaned up pc_ regen related functions.
- Made player-sprite mobs have item pickup animation and walkdelay when taking items.
- Cleaned up mob_dead code.
- Removed paramb, parame from struct map_session_data, replaced them by param_bonus[6],param_equip[6]
- mob special ai state 3 signals summon flora.
- Moved petDB pet_hungry_timer vars from TBL_PC to TBL_PET
- Cleaned up some pet functions, made the menu functions receive as argument both pet and master.
- Clones will copy a player's base status rather than battle status (so status-change alterations are not cloned)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6791 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added a missing line (how did it get lost?) in mob_spawn to set aggressive state for angry mobs.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6731 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Allowed SG_FEEL memorizing the same map for all three.
- SC_FUSION won't end when you die now.
- Added knockback when you run into a wall during running. However position is not being refreshed on the client yet...
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6443 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added a timer in clif.c so that walk requests that are done while your cannot move duration will be delayed and processed afterwards (as long as the walk delay remaining is less than 2000 ms)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6329 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Idle skills will now trigger each IDLE_SKILL_INTERVAL iterations (10 currently)
- Added support for walk packet 0x22c (disabled currently as it's non-walk packet equivalent is yet missing), it will be used when PACKETVER is set to 7 or above.
- Normal walking will now also trigger mob skills (due to the walk skill condition)
- Updated mob_skill_db: all idle and walk skills had their rate go up x10.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6245 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Implemented NPC_INVISIBLE, it starts SC_CLOAKING with val4 set to 1, skill duration is 30 secs.
- Moved uncloaking on attack from attack_timer_sub to battle_calc_weapon_attack.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6223 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Changed setting clear_unit_ondeath to a type 4 (bl-based) which defaults to BL_ALL.
- Fixed Absorb spirit sphere not working on mobs, thanks to Vividd.
- Cleared the ud->target on pc_stop_attack to prevent attack resuming an other such oddities.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6145 54d463be-8e91-2dee-dedb-b68131a5f0ec
- removed pc_run, pc_walktodir, replaced with unit_run.
- moved the code that makes you walk that extra cell to unit_stop_walking, which is now invoked before resetting the walk-target.
- Flag &2 in unit_stop_walking is now to make the character force-move that extra tile if the walkpath pos is 0 at hit time.
- Added variable walk_count to unit_data to be use as a counter for cells walked for walk-triggered skills (walk path_pos is not good enough since it keeps resetting each time the walk path is updated)
- Increased WALK_SKILL_INTERVAL to 5 (it is the closest value that makes the average mob trigger a chase skill every second)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6137 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Changed the data component of the walktoxy timers to hold the speed (timer interval) so that when you are halted when walking, if you have walked more than half the distance to the next cell, your position is fixed at the next cell.
- If you are halted (damaged) while walking and before reaching the first cell of your walking path, then you are halted at the next cell, this effectively will block stun-lock regardless of aspd of the attacker.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6127 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Changed battle_damage to accept the walk-delay as well.
- Removed the walk-delay timers from unit.c, merged them to battle_delay_damage.
- Traps will not be displayed when you walk within their range.
- Added HT_DETECTING revealing traps.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5997 54d463be-8e91-2dee-dedb-b68131a5f0ec
- unit_free will now use clear type 3 for players (warping out effect)
- You can't invite someone to a guild now within Guild Castles.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5945 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Fixed the clif_change_class packet (it should check for non players classes, not a class above MAX_PC_CLASS), it fixes morphing enemies.
- Rewrote the way cloth dye packets are resent to optimize bandwidth usage.
- Fixed the npc_item_flag thing (enable_items/disable_items script command)
- Rewrote the disguise implementation to be bandwidth friendly.
- Modified the hide options to change your class to INVISIBLE_CLASS, since such classes don't even get their view packets sent around.
- Rewrote several clif functions to adapt to the new view_data class;
- Added class 139 to npcdb_checkid which was required by some npcs in the swordman quest? o.O
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5833 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Moved the Endure and Gravitation sc ends to battle_damage from pc_damage.
- Endure level 11 and above are now considered infinite-endure.
- Set the minimum pet hungry delay to 10
- modified function skill_delayfix to only receive skill/lv, actual time is now always acquired from skill_get_delay. It also now will never return a value below min_skill_delay_limit.
- Modified brandish spear so you won't see the skill-animation for every targetted mob. Also cleaned it up to use map_foreachincell calls.
- splitted skill_cast_fix into skill_cast_fix and skill_cast_fix_sc, the first does cast adjustments based on dex and server settings, the later only based on sc changes. Mobs use the later while everyone else use the former (which invokes the later when appropiate)
- Added the Steel Body icon to auto-berserk.
- Now you can't cast auto-counter while the previous one is active.
- For the duration of Berserk, infinite-endure is activated.
- Added Veider's suggestion to do a hack-report when players request the name of an invisible/cloaked character.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5813 54d463be-8e91-2dee-dedb-b68131a5f0ec
- range3 is now used as min-chase value of mobs.
- Added a debug message when status_change_timer fails.
- Fixed tick direct modifications increasing duration instead of decreasing it.
- Fixed inf2 of Jump-Kick to make it a "combo-skill" so that it may do a BCT_ENEMY check.
- When sd->state.skill_flag is set, auto-targetting through combo-skills is disabled.
- You can't SG_FEEL maps already memorized.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5796 54d463be-8e91-2dee-dedb-b68131a5f0ec