70 Commits

Author SHA1 Message Date
Inkfish
5485daa6df * NPC event code cleanups.
- removed the 'OnMyMobDead' dead code. It's never supported though documented.
- removed the 'feature' that events only trigger when the player is in the OnTouch area IF it's specified. 
  It's never documented and breaks official scripts.
- some cleanups and bug fixes to OnTouch_.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14173 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-11-26 12:01:19 +00:00
Inkfish
42987f61ad * Implemented the official version of 'OnTouch' named as 'OnTouch_'.(it can be defined in script_athena.conf)
* Adapted 'map_foreachinarea' to 'map_forsomeinarea' so that it allows you to specify the number of bl you wanna operate on.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14097 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-10-25 09:38:33 +00:00
Inkfish
137e993d52 Partially revert r14085, NPC names are allowed to be more than 24 character long in Aegis.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14087 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-10-12 08:57:02 +00:00
Inkfish
6abe64b1d7 NPC should only have a 24 characters long name including EOS. (bugreport:3599)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14085 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-10-11 04:55:57 +00:00
zephyrus
6b710571ad - Optimization to instance system.
* Removed the crc feature to generate instance npc names. The instance npc name will be "dup_" + instanceid + "_" + srcnpcid.
* Removed the big array under map structure and coded in a different way. It was only used to generate map names, but i just used the instance_id + "origin map name".
* Moved all instance features to separated files.
* Moved the npc duplication for instances into npc.c as Ultramage says (removed npcname_db from npc.h).
* Added recomendations for scripts commands by Saithis.
- Testing required, i will prepare Endless Tower script soon. I hope this do almost anything in bugreport 3276.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14003 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-08-12 21:44:02 +00:00
zephyrus
33e1fbbd66 - Instancing System (Thanks to Sirius White who did most of the code, with some of my work to implement client side information, some optimizations and bugfixes). Also thanks to contributions from UEAUP team and Orcao.
- Fixed a bug on areamobuseskill and changed it to make it as Aegis.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13901 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-06-20 17:56:01 +00:00
FlavioJS
d55642d64c * Extended how duplicates work: (based on Orcao's work in bugreport:2361) [FlavioJS]
- you can duplicate warps/shops/cashshops/npcs (before only npcs could be duplicated)
- warp duplicates inherit the target location
- shop/cashshop duplicates inherit the item list
- npc duplicates inherit the script code (backward compatible behaviour)
- updated script_commands.txt with the information

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13407 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-12-20 22:57:29 +00:00
ultramage
115c5b6896 Removed the mob controller system, now a customization (see topic:194375).
The system consists of
 * script command to spawn a controlled mob
 * script commands to attach npcs to such mobs and manipulate their AI
 * a page of documentation for these commands
 * callbacks at various source code locations that invoke the attached npcs
 * two npc examples

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13021 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-07-31 05:37:40 +00:00
zephyrus
41ee2c000b - Fixed BugReport 1608. I forgot to merge npc.h sorry.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12755 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-06-03 01:09:40 +00:00
zephyrus
2da8086509 - Added support for NPC with different sizes (setnpcdisplay).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12744 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-05-29 13:07:54 +00:00
ultramage
7a9a3a12bb Cleaning up the itemdb reload mess (see r12635, r12643, r12650, r12661, r12662, r12663)
* the player data inventory-itemdb index is now refreshed using pc_setinventorydata()
 * mobdb will no longer initialize with nonexistent items, and mobs will no longer drop them in case of a reload
 * the clif_buylist() function once again hides invalid npc shop items
 * it is no longer possible to purchase nonexistent items from a npc shop
 * npc shop loading will not abort if there is a nonexistent item entry, it will just skip over it

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12665 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-04-27 11:06:55 +00:00
Kevin
26a70ed737 Some major changes to @reloaditemdb to allow unloading of any item while map server is running.
- Delete any item from inventory/cart/open storages that went missing during the reload.
- Delete item from any shop that has this item.
- Refresh item screen for anyone who has a shop open.
- Delete mob db drop table references.
- Delete item from storage during load if it isn't in the item db.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12661 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-04-27 07:18:21 +00:00
ultramage
49f1f4434d * Reorganized the contents of the mapserver's header files.
- map.h is no longer a generic dumping spot of all the shared structs, and instead, each such structure now resides in its logical component
- map.h now only holds mostly map-related things (needs more cleaning)
- there's still a lot of room for improvement (reorganization within individual header files, etc...)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12429 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-03-24 21:20:48 +00:00
ultramage
f6d2d9a360 Replaced some foreach-based functions by their inlined iterator equivalents.
Changed the dynamic mobs system, so that the flag that indicates whether a particular mob can be unloaded is stored in the mob's respawn data structure.
Cleaned up related parts of the source code.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12358 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-03-13 22:09:58 +00:00
ultramage
078d492412 Removed one mob data variable related to dynamic mobs that I found to be redundant.
Changed MAX_MOBSKILL (max. amount of different skill entries per mob) from 50 to 40 to reduce memory consumption a bit more.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12350 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-03-12 21:02:59 +00:00
zephyrus
e6bf7c5458 - Added cash shop support. (i need to add documentation, working on it).
- An charcommand is still required to add/remove points.
- Scripts command only requires to work on #CASHPOINTS and #KAFRAPOINTS.
- I called it "Kafra Points" just because it's how comes in the translation. I allready know this changes between Oficial servers.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12264 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-02-28 22:25:58 +00:00
ultramage
1859b5e45a Applied a temp patch to make some npc-executed atcommands work again (bugreport:790).
Added support for right-click-gm-menu kicking NPC objects.
Removed redundant function npc_checknear2().

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12073 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-01-14 11:34:59 +00:00
ultramage
0848355f90 Extended the id range for npcs, now [400,700) will also be treated as NPC objects (see topic:170845 and bugreport:727).
Silenced a compilation warning.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12025 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-01-06 22:08:23 +00:00
ultramage
8be1c4d48c * Some preparations for the guild script update
- cleaned up npc event execution code
- cleaned up guild data loading/saving code; to be improved later
- removed dummy 'account name' expulsion list management code
- removed columns 'rsv1' and 'rsv2' from guild member data
- removed columns 'rsv1' 'rsv2' 'rsv3' and 'acc' from guild expulsion data
- added upgrade_svn11895.sql for SQL

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11895 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-12-12 09:55:13 +00:00
skotlex
fc7b4eaef0 - The default event script behaviour is to trigger on labels rather than NPCs now.
- Removed several script config options which break NPC compatibility when you mess with them (event_script_type, event_requires_trigger, die_event_name, kill_pc_event_name, kill_mob_event_name, logout_event_name, login_event_name, loadmap_event_name, baselvup_event_name, joblvup_event_name)
- LoadMap events no longer set the variable "@maploaded$" to the name of the new map.
- Optimized/simplified the code now that the previous config options were removed.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11859 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-12-06 12:59:12 +00:00
FlavioJS
8e58ea8df8 * Fixed fake_nd not being exported correctly and being unloaded when reloading scripts. (probably fixes bugreport:444)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11816 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-11-27 07:12:30 +00:00
FlavioJS
508ffb82d9 * Renamed fakenpcname to setnpcdisplay, fixed and extended it.
- See doc/script_commands.txt for information on how to use it

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11779 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-11-22 16:06:39 +00:00
FlavioJS
f90edd96a6 * Fixed @addwarp crashing the map server (bugreport:390).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11719 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-11-12 04:15:18 +00:00
ultramage
95f651807d Fixed a missing include/export, and typos in the previous revision.
Corrected wrong length values in one charserver packet.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11714 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-11-11 10:56:39 +00:00
ultramage
d091f1cf05 * Cleaned up some messy guild code (more to come)
* Cleaned up the mail code, no more pointless dynamic allocation
* Added upgrade_svn11548.sql to convert the mail table to new format
* Updated vs7 and vs6 project files
* Increased the max. send buffer size to 5M since 1M is not enough
* Please complain if something stops working ^^;

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11571 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-10-24 12:14:18 +00:00
FlavioJS
05134f3dcc * Reworked the parsing at npc.c.
- Fixes npc.c discarding the '}' at the end of file, when there is no newline. (uncovered as a side-effect of r11487)
* Empty script functions always have code now (won't report as missing when you try to call them).
* Changed userfunc_db to not limit the name to 50 characters.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11502 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-10-17 20:15:39 +00:00
ultramage
1069e3524c * the mapserver won't exit when no mapcache is found, with use_grf: yes
* Fixed some \r uses, now looks better; /thx to Ai4rei (topic:165952)
 * Removed that ridiculous spinner that displays during map/npc loading, and added a more informative progress indicator (idea from jA/eapp)

 * Checked/fixed/removed some old script and npc commands
  * cmdothernpc - a specialized 'donpcevent' with the event specified as two arguments
  * enablearena/disablearena - completely equivalent to enablewaitingroomevent & co.
  * inittimer/stoptimer - removed since its logic was incompatible with the code it depended on
 * Removed loads of code that supported these functions. Result: -100b per npc => -1,5MB of wasted memory
 * Fixed related npcs that erroneously used 'stoptimer'

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11374 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-10-06 15:35:31 +00:00
ultramage
0072a0189e * Cleaned/clarified some #include relationships between headers
* Changed clif_sitting() to use 'bl' instead of 'sd' (for non-player objects)
* Removed way messed-up script function 'unitdeadsit'
* Tagged 'FIXME' lines written by myself

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11040 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-08-19 12:55:29 +00:00
ultramage
97e812dda1 * Fixed a deallocation mistake and some buffer overflows in npc_chat.c after doing rtfm@pcre.txt (all caused by incorrect usage of pcre api)
* Removed underscores in npc_chat.c's variable names (easier to read)
* Reindented the whole thing (used spaces half of the time ._.)
* Moved npc pcre-data deallocation from npc_remove_map to npc_unload

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11036 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-08-19 06:04:34 +00:00
ultramage
ffbf79b895 Reformatting, warning fixes, unsigned char removal
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10618 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-05-25 19:37:58 +00:00
FlavioJS
a91b77d781 * Recoded and renamed the trim function in strlib to normalize_name. (didn't behave like a standard trim function, see function comment for what it does)
* Added a proper trim function to strlib.

* Other minor cleanups.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10199 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-04-09 20:21:17 +00:00
FlavioJS
d6b4625e06 * Cleanups at npc source file adding/removing. (one variable has been removed)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10195 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-04-09 14:51:17 +00:00
ultramage
dec82b6120 - Fixed the server crashing on startup due to bad define
- Fixed the server crashing on a timer-queued disguise / undisguise (no sd check)
- re-added the item_group_list for consistency's sake, moved to itemdb.h (after some hacking to remove the ugly map.h dependency)
- Removed some overly verbose item group messages & code

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10112 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-04-01 21:15:57 +00:00
skotlex
29cb0abe60 - Added player not attached crash prevention to countitem/countitem2
- Probably corrected delitem not deleting pet eggs at all.
- Possibly nullpo fix on npcskilleffect
- Corrected a warning when using #fakename
- Hopefully fixed hidenpc/disablenpc not working on Guild flag sprites.
- Mob skill state "anytarget" no longer triggers when the mob has an item-target (looting).


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9991 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-03-11 22:21:34 +00:00
skotlex
ddfc677c99 - @storage/@gstorage will no longer work if you have a trade or a storage opened already.
- Cleaned up a bit @gstorage
- Added a bunch of npc functions required to properly handle moving the NPC cells when an npc is moved from it's previous location.
- Added npc_setcells to handle setting down the NPC cells of ontouch npcs.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9990 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-03-11 20:02:42 +00:00
FlavioJS
2b42ec13cf - Added info on packet 0x86 (simple move packet). Not usable until a clear separation between entering sight/leaving sight/walking in sight is done.
- Propagating const char* from the script engine.
- ".gat" is appended to the map name before sending the changemapserver packet to the client.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9979 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-03-09 01:49:50 +00:00
ultramage
49096125fb Applied a consistent look to all header files (copyright, ifdefs)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9891 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-02-21 15:09:20 +00:00
ultramage
06074c6046 Fixed @loadnpc not updating the script_event[] array
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9850 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-02-11 21:44:37 +00:00
skotlex
c52340cb3a - Corrected the homunculus deletion functions so that the homunculus is deleted together with the character.
- Added npc_check_areanpc so that Wand of Hermod will correctly check for nearby warps.
- Emergency avoid now stacks with other speed boost statuses
- Item skills and skills that bring up a menu now are cleared on death.
- Minor cleanings


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9742 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-01-29 22:00:51 +00:00
FlavioJS
637ae9a4dc - Massive EOL normalization & 'svn:eol-style native' flag setting for all txt/conf/h/c files.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9410 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-12-05 13:23:07 +00:00
skotlex
0db4ee6126 - Added function npc_unload_duplicates(), it unloads all npcs that are a duplicate of the passed one. For use with @unloadnpc to prevent crashes when you unload the npc that has duplicates.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8939 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-10-05 14:37:06 +00:00
skotlex
4e9c745bdf - Corrected SC_INTRAVISION not starting.
- Small cleanups (line terminators, indenting)
- Fixed crash when attempting to read a Label as a string on a script (thanks to End of Exam)
- Fixed possible crash when changing a chat-room's owner (thanks to End of Exam)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8639 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-09-05 19:49:38 +00:00
skotlex
8da82e0a0a - Changed npc_click declaration to receive an npc structure rather than a generic block-list one.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7925 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-07-27 16:28:00 +00:00
skotlex
3b13b070e1 - Made guild member exp an unsigned int.
- 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
2006-06-12 14:55:35 +00:00
skotlex
b6a5dc4547 - Added config setting mob_npc_warp, when set to yes, enables mobs to be warped between maps when stepping on a npc-warp.
- 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
2006-06-07 20:15:23 +00:00
Lance
428c7271fd [Moved]:
fake_npc from map.h to npc.h

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6879 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-31 05:40:08 +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
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
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
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