- Made scriptlabel_db duplicate the key. When str_buf is reallocated, the keys in scriptlabel_db could become invalid, causing a crash in npc_convertlabel_db.
( removed the readded >=0x81 equivalent )
- Now npc_convertlabel_db clears scriptlabel_db after using it.
- parse_script has an extra parameter options. At the moment it only indicates if scriptlabel_db should be used or not.
- Fixed "UINT_MAX undeclared" on systems that don't declare it in limits.h
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9557 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Answered Skotlex's question and fixed "warning: comparison is always false due to limited range of data type" by restricting script words to ASCII characters only.
- Applied "svn:eol-style native" to makefiles and project files
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9544 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Fixed add_str in script.h not being updated to const char as well. But why do we really need such a script-engine low-level function exposed to the rest of files? :/
- Moved the strip unequip code to before deleting the timer, this fixes trying to "re-strip" someone causing the skill to fail and on top of that terminate their current strip effect.
- Added an ugly work around to the issue of skills with additional effect causing opt1 status when they have just terminated them (in short, you shouldn't be able to hit someone with, say, sleep, and then have the same skill cause them stun, since both are opt1 values).
- Reading of TK Mission variables will now happen if you are a TK-class character regardless of whether you know TK_MISSION or not. Should fix being able to reset skills to reset your Mission data.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9537 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Fixed skill damage card bonuses not working on magic skills.
- Moved the setting of sd->npc_id = 0 in npc_dequeue to the beginning, since this function is called when a script is cancelled (TODO: but when this happens, shouldn't the previously ongoing script also be free'd?)
- Made homunc's speed be recalculated when you respawn it from rest state.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9453 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added my_global.h include to login converter
- Removed sd->char_id since we can use sd->status.char_id instead.
- Small speedup in STRECOVERY, and made it not unlock a mob's target.
- Fixed GS_GROUNDDRIFT consuming ammo when it's time expires (so it was consuming 2 grenades instead of one). Also added a "explosion effect" when their time runs out.
- gvg_dungeon mapflag won't set pvp related mapflags anymore, pc_dead will force pvp ranking gain/loss on gvg_dungeon maps now.
- Now when coming out of hiding land-effects will trigger on the character.
- Made the pc_setpos message when being placed on an unwalkable tile tell you which player triggered it.
- Fixed land effects not taking effect inmediately on map-load when the invincible timer is disabled.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9374 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Cleaned the pvp ranking code so that it takes effect even if pvp_nocalcrank is active WHEN the map is a gvg_dungeon one.
- Cleaned up a bit the pvp ranking timer code.
- Now homuncs and their masters are the only ones who can use support skills on the homunc.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9360 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Applied The Ultra Mage's patch to use strict npc header formatting parsing. Updated the relevant stock scripts/mapflags that didn't conform to the standard.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9352 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added mapflags partylock and guildlock, which lock the state of the parties/guilds on said maps. partylock blocks user party requests to create/invite/leave/kick, while guildlock blocks user guild requests to create/invite/leave/expel/make alliance/make opposition/delete alliance/delete opposition/break
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9216 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Fixed Spider Web not ending when hit by a fireelemental attack.
- Cast-time reductions from status changes will not be executed until right before casting, to prevent status changes from ending when attempting to cast and the attempt fails (invalid cells, not enough sp, wrong target, etc, etc)
- Added check to prevent Wand of Hermod from seeking for a partner to encore, since the partner is supposed to be the warp.
- Moved the duel auto-reject on logout from map_quit to unit_free
- Corrected the mob spawn reading code so that the event-name can be up to 50 characters long (which is the actual event length) and so that it can read spaces within them, it will also strip the leading/trailing quotes if you use them so that the event is actually found on mob-death (so you can do stuff like "My NPC::OnDead" as a valid event).
- Moved the homunc inherit speed from the master from status_calc_pc to LoadEndAck, since the hom's speed matches that of the master each time the master changes maps.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9173 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Cleaned up the clif_hate/mob_info functions with the correct fields/usage as explained by Rayce.
- Implemented clif_feel_hate_reset packet to properly display the Angel of the Sun/Moon/Stars, thanks again to Rayce for the relevant information.
- LP will again block all land-stuff from being placed down on top of it for the exception of Song/Dance/Encores.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9162 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Because of possible conflicts with this change and the on-login script, now the on-login script is executed when the player has finished loading into their start-up map rather than as soon as receiving the registry variables from the char-server.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9073 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Splitted log_pick into log_pick_pc and log_pick_mob to avoid ugly type-casting.
- Fixed log_chat not recording anything if the server is compiled in SQL mode and sql_logs is turned off (it should then record to a plain txt file)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9017 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Some cleaning of npc_final
- Made speed_add_rate a linearly stacking increase.
- Corrected a possible overflow when using show_mob_info to display the mob's up as a percent.
- Corrected the documentation for checkoption/checkoption1/checkoption2
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8792 54d463be-8e91-2dee-dedb-b68131a5f0ec
- 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
- Should have fixed the signed/unsigned comparison warnings in the main regen function.
- Fixed Energy Coat consuming 10x less SP per hit than it should.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8339 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Fixed HT_BLITZBEAT hitting neutral characters when it auto-triggers.
- Simplified the Tatami Gaeshi code.
- Fixed AS_SPLASHER doing full damage on everyone except targetted char instead of the other way around.
- Fixed KAENSIN clearing out SUITON cells and viceversa.
- The spawn area is now seen as range rather than absolute for mob spawn lines. This means that x,y,10,10 will spawn the mob on a 21x21 grid around the given x,y point.
- Some clean up of the mob-spawn code. Now you can specify negative areas, so that a spawn location such as 100,150,0,-1 will spawn a mob always on x=100, but any Y value of the current map.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8165 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added config force_random_spawn which overrides the spawn-files defined coordinates to make all mobs always spawn randomly on the map.
- SC_SPEEDUP0 is no longer dispellable by SA_DISPEL
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8159 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Removed settings mob_npc_warp, mob_warpportal. Replaced with setting mob_warp which specifies which types of warp can a mob step into (battle/monster.conf)
- Updated status_calc_misc so that it also handles the BL_PC case, removed redundant info from status_calc_pc, and moving the SNovice Max Hp bonus to status_base_pc_maxhp
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8135 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Changed name of the setting log_pick to log_filter since that's what it does now.
- Modified enable_logs so that instead of a 0/1 setting, you can specify which kind of events to log (so you can use a combination), see log_athena for the bitmask configuration.
- Cleaned a bit the contents of log_athena.conf
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8129 54d463be-8e91-2dee-dedb-b68131a5f0ec
- A lot of functions were moved around, a bunch of indentation and space-usage changes were done to make it easier to diff against their files.
- Miscellanous addition and corrections were applied.
- Largest one is likely a restructuring of run_script_main, which hopes to solve the memory leaks.
- script engine now uses the setjmp functions to restore memory state when there's an error parsing scripts, which means that script errors won't cause the map-server to inmediately bail out anymore.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7926 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Reenabled @changesex
- Added function pet_create_egg which handles creating pet eggs correctly (when passed item id is indeed a valid petegg). Applied this on @createitem and getitem.
- Cleaned up code of @item
- Added define UNKNOWN_ITEM_ID (512 = apple)
- Added IT_* enumation item_Types to identify said data from items.
- Cleaned up the itemdb_isequip functions. itemdb_isequip will now return if the item is equipable by players, itemdb_isstackable returns if the item can be stacked, and itemdb_isidentified returns if the item should drop identified.
- Added defines CARD0_PET/CARD0_FORGE/CARD0_CREATED to identify if a given item has "invalid" cards, added define function itemdb_isspecial to simplify this check.
- Removed itemdb.c considering item ids above 20000 as invalid.
- Cleaned up script commands getitem and card-counting related ones.
- Cleaned up a bit more pc_isequip
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7613 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Corrected some of the sleep checks when the char id does not matches with the char-id expected by the script engine.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7423 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Scripting system screwing up script position after mixing timers with menus.
- NPC attached AI mobs display as alive when dead.
- View data not updating after buildin_unitdeadsit.
[Improved]
- NPCE_LOADMAP to execute after all (area) objects are sent to the player.
- Simplified scripting system. sd will now use pointer to the script state itself.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7388 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Added mapflag "loadevent", now load-map script events will ONLY trigger on maps with this mapflag on, rather than every map.
- High Jump can now be used in all versus maps.
- Added Kaite's opt3 value, taken from jA
- Added state dirty == 2 to storages. Signals when a storage was sent for final saving. Said storage is removed from memory after the ack from the char-server, and they are sent to save if the map/char servers reconnect before the act arrives. In short: they are guaranteed to be saved after a char logs out.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7358 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Setting of variables with defined scope in some frequently executed script events.
* [Added]:
- Missing script_require_trigger flags for some power hungry events.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7325 54d463be-8e91-2dee-dedb-b68131a5f0ec
- npc_timers now will not restore the previous timer data when there's no players attached (when it's strictly an npc timer). This should reenable the old behaviour of getnpctimer returning the total ellapsed time since "startnpctimer" even after the last label has been reached. However, this behaviour won't apply to player-attached timers.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7312 54d463be-8e91-2dee-dedb-b68131a5f0ec