293 Commits

Author SHA1 Message Date
Lance
e01880f4e8 [Fixed]:
- Compile warnings/errors

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6878 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-31 05:37:45 +00:00
Lance
23fdd83f2c git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6876 54d463be-8e91-2dee-dedb-b68131a5f0ec 2006-05-31 05:31:32 +00:00
Lance
8236d2c93f [Improved]:
- Fake NPC interface to use real NPCs.
- Scripting interface to restore and save sd->npc_id.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6873 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-31 03:52:56 +00:00
skotlex
1074b09187 - Small optimization in battle_check_target
- 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
2006-05-30 15:29:17 +00:00
Lance
a28e9d802c [Optimized]
- Removed unused checks for unsigned data type and possible logic error for char type (gcc treats char as unsigned).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6814 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-29 09:53:45 +00:00
skotlex
856240443d - Added structure status_data which holds status-related information (str, agi, etc, speed, amotion, adelay, dmotion, weapon-damage, race, size, etc) and weapon_atk structure with the weapon specific info (atk, atk2, element) to be used by all combat structures (TODO: Homun needs to be updated to use it)
- 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
2006-05-27 18:08:30 +00:00
Lance
8320520472 * Mob control engine tested 99% working so far.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6770 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-26 09:46:45 +00:00
Lupus
d5dd578e57 added noVending mapflag. Tested. + custom Market Place NPC, fixed MSG strings
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6755 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-25 16:26:17 +00:00
skotlex
9eb0eab0a7 - Corrected item script for dead branch and poring box
- Removed that npc-warp warning as requested by Playtester.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6732 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-24 17:29:58 +00:00
skotlex
0c8a59d012 - the charname request hack message has been downgraded to only include GM-invisible characters.
- corrected clif_charnameack to send negative ID when a disguised player asks for it's own disguised name.
- Cleaned up the disguised target-id checks taking into considering that the only character that sees a negative ID is the same disguised character.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6715 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-23 15:43:40 +00:00
Lance
fa084e111c * Added 'setd' support for local NPC scope (') variables.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6704 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-23 08:35:22 +00:00
Lance
2870364349 - Fixed some of the leaks.. still fixing..
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6691 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-22 12:38:12 +00:00
Lance
a7e5993400 * WARNING: New scripting system contains memory leak
TODO: Free all scripts using script_free_code() instead of old methods. 

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6690 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-22 12:15:49 +00:00
skotlex
1b1249c5d8 - When reading mapflags, when a map is set to be pvp or gvg, the other will be turned off (disables pvp mapflags in gvg maps for pk-servers)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6610 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-15 21:09:45 +00:00
Lance
05736737c7 * Bugfix on fake npc
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6585 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-14 12:57:50 +00:00
skotlex
a0bf90e52c - Changed a bit the MAX_ZENY checks in trade.c to prevent overflows.
- Rewrote npc_selllist for a more proper-clean implementation.
- Increased NPC_POWERUP's dex bonus to +25*lv
- Moved TK_DOWNKICK's stun time from time to time2
- Added TK_TURNKICK's stun to splash-pushed mobs. Duration is 2secs (time2)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6557 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-11 20:03:22 +00:00
skotlex
3b5ab1ba35 - Removed SP_DISGUISE from the bonus list.
- Moved Sharp Shooting display to the block with Auto-Counter (since that's the other skill that can show critical as well)
- Corrected some fields in the still packet (guild emblem being stored as a Long when it should be Short)
- Modified most fields of view_data to be unsigned shorts rather than signed ones.
- On-Touch NPCs will now make you stop walking when you trigger them.
- Reduced stun duration of most skills to 3 secs.
- ShadowJump/JumpKick will make you land on the target's cell now.
- Fixed Kaahi triggering only once per skill duration.
- Added the kaahi_heal_timer to the list of status change functions.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6516 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-08 15:11:25 +00:00
skotlex
5d6f207df6 - Added missing include <limits.h> to npc.c...
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6499 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-06 02:20:20 +00:00
skotlex
db83032024 - Added a npc-script-event cache to avoid looking up event-scripts every time they need to be executed. Events cached are all those defined in script_config.
- Since the cache holds direct pointers to the npcs/events, do NOT unload the related NPCs or you'll get dangling pointers. However, @reloadscript will work fine.
- Set the etc_log to on to see a summary of npcs/events loaded for script execution on startup.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6494 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-05 23:22:16 +00:00
skotlex
4382529413 - Corrected a crash when sd is null in npc_event
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6440 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-02 01:22:28 +00:00
Lance
49fc4fe81d * Optimized fake npc system. Added npc_checknear back to npc_buysellsel.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6426 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-01 05:48:06 +00:00
Lance
2a6dc10d0b Fixed scripts relying on older event calling methods.. Still searching for other scripts..
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6396 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-30 09:24:46 +00:00
Lance
8043799642 - Cleaned up unused variables in npc.c
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6383 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-29 19:54:40 +00:00
Lance
2fc07bb1c8 * Reverted npc_checknear to exclude check for class_ -1.
* Removed npc_checknear in npc_buysellsel, npc_selllist and npc_buylist as enough preventive measures of hacking are already implemented.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6370 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-29 13:25:12 +00:00
skotlex
552bc8752c - Clones can't be class-changed now
- Readded the class == -1 distance check in npc_checknear
- Replaced check sd->trade_partner for sd->state.trading in clif.c


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6356 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-29 04:13:21 +00:00
Lance
020b35d68a * Using malloc for memory allocations that doesn't need to be pre-initialized.
* Eliminated initializations for pointers returned by calloc.
* Moved grfio_final to do_init since it's not used after server boot.
* Optimized scripts to return CONSTSTR instead of allocating memory just to return a constant string. Some buildin functions still need work. 
* Disabled graph since it doesn't work yet.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6355 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-29 04:00:19 +00:00
skotlex
f983dc57c3 - Modified and simplified the random item group format. It now is <GroupID>,<ItemID>,<Rate>, where Rate normally is 1, greater numbers is the equivalent of adding the line multiple times.
- Added constants to identify all groups to db/const.txt
- Cleaned up and updated item_db to use these new constants (warning: item_db.sql needs to be updated!)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6275 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-25 18:05:40 +00:00
skotlex
35cda692bd - Simplified npc_gettimerevent_tick so that it should return a tick value even after the last ontimer label has been reached.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6264 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-25 03:20:32 +00:00
skotlex
9d4db6c52e - Fixed a typo when parsing the mob spawn files.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6256 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-24 20:49:14 +00:00
skotlex
e8e49ec9be - Cleaned up @grind2
- Updated @monsterbig, @monstersmall to use the event 2 and 4 rather than the max_mob_db code check.
- Modified override_mobs_names to work only on the mob spawn files.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6252 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-24 17:46:16 +00:00
shinomori
1f3b70b776 git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6239 54d463be-8e91-2dee-dedb-b68131a5f0ec 2006-04-23 10:58:04 +00:00
skotlex
63eec80717 - Added support for n to specify minutes to @charban.
- Fixed a logic typo on the way dummy_npc_id was defined.
- Added state.trading to specify when a trading has started. Now you should be able to walk around until the trade is either rejected or started.
- Armor defense is no longer reduced by the amount of characters targetting you.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6192 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-20 16:04:47 +00:00
skotlex
8934d52b73 - Removed the max cap of autoloot so you are now allowed to set autoloot values above 100.
- Initialized w1/w2/w3/w4 before reading each npc line to avoid sending unread values to the parsers (for example, if w4 has a value in one line and none on the next, it will be parsed with the previous value of w4 on the following lines)
- Updated getpartymember to receive an int which specifies what to retrieve. 0: Character names (array $@partymembername$), 1 character char ids (array $@partymembercid), 2 character account ids (array $@partynameaid). By default it returns party member names.
- Updated script_commands.txt with the updated behaviour of getpartymember.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6182 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-19 18:44:01 +00:00
skotlex
6b9fd3cf04 - Removed message 592 from trade.c
- Removed mapflag nopvp
- Added support for disabling mapflags on a mapflag line:
  comodo.gat	mapflag	nomemo <- turns on nomemo mapflag
  comodo.gat	mapflag	nomemo	off <- turns off nomemo mapflag
- Cleaned up and optimized the restricted/zones mapflag. Restricted cards will just not work in disallowed maps rather than blocking the compounded equipement from being used.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6159 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-18 16:01:26 +00:00
Lance
c0b1eb7787 * Shinomori's method (kinda) of remote script execution with interaction.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6151 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-18 11:40:36 +00:00
skotlex
e5ee6b1fc0 - Changed the npc_id mismatch warning to be more informative.
- Modified @monster command to use map_search_freecell (prevents mobs spawning on non-walkable tiles)
- Modified @nuke to invoke skill_cast_nodamage_id instead of the damage_id version (fixes sprite and splash damage for the skill)
- Corrected Venom Knife's requiring two knives per use.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6124 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-17 00:57:42 +00:00
skotlex
47adb68d91 - Fixed mysql ping setting being in minutes rather than hours.
- Removed npc_event_sub from npc.h and moved it to npc.c
- Cleaned up #warp to prevent spitting non-walkable tile warnings.
- Changed the meaning of msg_athena 2, it is now "invalid target cell, randomizing".


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6114 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-16 15:33:59 +00:00
Lance
64da9b3c0b Optimized. (What am I thinking)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6111 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-16 13:31:54 +00:00
Lance
cb1ecd440c Fix my fix.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6110 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-16 13:30:58 +00:00
Lance
ff91dce499 * Missing lines in npc_parse_script!
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6109 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-16 13:23:57 +00:00
Lance
af5bdf87c3 * Experimental npc_event_doall_sub with queue and npc_id allocation when needed.
* Added warnings to npc_scriptcont for easier debugging.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6106 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-16 12:10:53 +00:00
skotlex
dc8d892b45 - Added an Info message when pinging the SQL servers.
- Changed line terminators back to *nix on map.c because otherwise it's impossible to run a diff between the stable and trunk versions of the file.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6043 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-13 18:10:08 +00:00
skotlex
83ed424538 - Expanded the warp warning so that it also warns when a warps takes you to a non-walkable tile.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6019 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-12 17:30:04 +00:00
skotlex
07c8dd3902 - Fixed @movenpc
- Cleaned up and improved the lootsearch routine to pick nearest item.
- Added INVISIBLE_CLASS to the list of classes supported by npc_get_viewdata
- Fixed trying to set the view_data for npcs who are located on a map, but have no visual data.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5959 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-08 17:56:31 +00:00
skotlex
8f20e263b2 - Added function status_change_init to initialize all the sc timers. Added sc_data initialization to the npc structures who were missing them.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5953 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-08 06:48:16 +00:00
skotlex
491228d9cc - Added inter config connection_ping_interval which specifies interval in hours at which mysql_ping's must be done on all connection handles to keep the mysql connection alive. Defaults to 0 (disabled)
- Removed login sql handle from the map server as it isn't used for anything.
- Made the login sql handle on the char-sql server be used only when gm_read_method 1 is enabled.
- Small fixes to npc_enable, added BL_NPC handling on status_get_sc.
- Added a path_search check in map_random_dir, so that the random direction picked up doesn't goes through walls and all that.
- Some changes to close-confine, status start will fail when the source is not found or it doesn't has sc-data.
- pc_setoption no longer changes the character's class when mounting/dismounting, it only changes the view-class.
- The peco-crash-fix from the char servers is still needed. This packet must be wrong! We likely need to sniff it.
- Modified the char-txt server to modify the class of mounted characters to their non-mounted version. Added an upgrade_svn file to handle the class update on the sql tables.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5902 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-05 00:23:18 +00:00
skotlex
de8f8cb6f7 - Removed the flag variable from the npc_data structure. Disabled NPCs are now handled through nd->sc.option&OPTION_INVISIBLE checks. Should fix disable/enablenpc calls not working.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5889 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-03 18:08:16 +00:00
skotlex
be26d920ed - Fixed npc_gettimerevent_tick returning the difference since the last triggered label instead of total elapsed time for the npc-timer.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5874 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-02 18:25:46 +00:00
Lance
85843bfe0f * Should not exit when you can't find an NPC file..
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5845 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-01 09:48:17 +00:00
Lance
008b473603 Fixed the dynamic shop system memory allocation and id_db problem. Added sample script.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5842 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-01 09:37:50 +00:00