summaryrefslogtreecommitdiff
path: root/src/map/atcommand.c
AgeCommit message (Collapse)AuthorFilesLines
2006-05-29[Optimized] Lance1-5/+2
- Removed unused checks for unsigned data type and possible logic error for char type (gcc treats char as unsigned). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6814 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-28- Added functions status_revive, pc_revive and mob_revive to handle revival ↵skotlex1-40/+19
(it doesn't handles player respawning, though) - Corrected alive, raisemap, raiseall to use these functions. - Updated resurrection/mob-kaizel to use status_revive - Added SC_BLADESTOP to the skill enum at the beginning of status.c (fixes Bladestop causing an unknown status change message) - Fixed MSS_DEAD state skills not triggering. - Corrected some compilation warnings on the merc.* files. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6807 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-27- Added structure status_data which holds status-related information (str, ↵skotlex1-57/+59
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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6791 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-25added noVending mapflag. Tested. + custom Market Place NPC, fixed MSG stringsLupus1-5/+7
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6755 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-10- Rewrote/cleaned up trade.c for a more clean trading implementation.skotlex1-0/+23
- Added @request commands, sends a request to all connected GMs of lowest_gm_level or above as a whisper message. Defaults to gm level 20 users. - Made SC_COMBO status start delay attackabletime and walkdelay by sc's duration regardless of skill used (previously it was only for TK kicks, now it's for both those and Monk combos) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6542 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-10- Modified @commands to use Meruru's code which is faster and does a fair ↵skotlex1-24/+36
attempt at tabulating the commands presented. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6541 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-06- Fixed a bug in @commands, most likely the reason some people were still ↵skotlex1-1/+1
getting crashes. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6500 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-05- Fixed @commands not showing the last available commands (unless the total ↵skotlex1-1/+3
amount of commands is divisible by ten) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6495 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-05- Read changelog.Zido1-1/+4
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6484 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-04git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6476 ↵eaac1-23/+65
54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-03- Corrected @whomap directly invoking msg_table[] rather than msg_txt()skotlex1-3/+3
- Guessed where the pet data goes in spawn packet 0x7c - Updated Charge Attack's state from none to move_enable. - Made tomahawk an NPC_SKILL so that it may not be plagiarized. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6459 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-29Added @noask command: enable/disable deals/invites autorejecting.LuzZza1-0/+23
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6376 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-29* Using malloc for memory allocations that doesn't need to be pre-initialized.Lance1-3/+3
* 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6355 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-28- Added constant MAX_MOB_DROP to specify the amount of normal drops a mob ↵skotlex1-1/+1
has. The mob_db reading code will automatically parse the file according to the number of drops expected (the Mexp/Mper and MVP item rewards must still be after the normal drops). Set to 10 currently. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6347 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-28- Storm Kick's range increased to 2.skotlex1-1/+1
- Mobinfo's drop list will use jName rather than Name for drop names. - Some cleaning of the ASC_BREAKER code in skill_attack - Modified skill_attack so that all skills with amotion get their damage delayed (should fix mob walk-teleport issues) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6346 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-27- Small change in @commands, may fix the null-pointer error.skotlex1-1/+1
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6318 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-27- Small change in the pet_ai that should stop the "strange" catch-up ↵skotlex1-1/+1
behaviour of pets when you are much faster than them. - Corrected the unequip script of the wedding dress/tuxedo (it should be Class, not bClass) - Changebase script command will also refresh the weapon sprites (in case you changed into Wedding/Xmas class) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6317 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-27- Now when you do @baselevel to reduce your level and you don't have enough ↵skotlex1-0/+2
stat points to deduct, you will get a stat-reset and THEN your stat points will be reduced. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6314 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-27- Added at command @commands, displays the list of commands available to you.skotlex1-0/+35
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6313 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-27- Fixed base-level up @ command giving stat points instead of taking them ↵skotlex1-1/+1
away when leveling down. - Some small change in pc_heal which would let you have negative SP if you were killed on the same pc_heal invocation. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6307 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-24- Cleaned up @grind2skotlex1-7/+9
- 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6252 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-20- Raised the buffer size in clif_MainChatMessage to 200, removed the message ↵skotlex1-3/+0
length in atcommand_main. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6197 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-20- Added support for n to specify minutes to @charban. skotlex1-1/+1
- 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6192 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-19- Removed the max cap of autoloot so you are now allowed to set autoloot ↵skotlex1-2/+1
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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6182 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-18- Removed message 592 from trade.cskotlex1-3/+1
- 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6159 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-17- Changed the npc_id mismatch warning to be more informative.skotlex1-26/+12
- 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6124 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-16- Fixed mysql ping setting being in minutes rather than hours.skotlex1-2/+4
- 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6114 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-13- Fixed crash when looking for SC_MIRACLE in battle_calc_weapon_attackskotlex1-17/+19
- Some more standard C code cleanups. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6038 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-13- Cleaned atcommand_param against overflows and also to make it standard C ↵skotlex1-17/+26
so it may compile with the Borland C. - Modified Charcommand_stats to make it standard C as well. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6037 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-09- Modified @warp/@rura to prevent causing pc_setpos position error messages.skotlex1-23/+16
- Fixed the mob's last_thinktime not being updated on mob_spawn, causing them to not "think". git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5971 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-09- Fixed @npcmove not sending the correct packets to make the moving refresh ↵skotlex1-2/+2
client-side. - Fixed mobs with aggressive + looter mode never looting. - skill_wall_check now also checks for pits so that skill effects don't go through them. - Now you can't leave/be-kicked from a guild inside guild castles. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5969 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-09- Small code cleanups. One should lower a bit function overhead when using ↵skotlex1-2/+0
mob_ai&32 git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5967 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-08- Fixed @movenpcskotlex1-3/+9
- 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5959 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-06- Modified @allstats to prevent negative/overflow issues.skotlex1-6/+8
- Fixed HP/SP requirements for WE_MALE/WE_FEMALE - Fixed a typo in skill.h which fixes a compilation warning. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5925 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-01- Cleaned up and fixed @where command.skotlex1-6/+8
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5840 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-01- Added structure view_data to handle sprite information for all characters ↵skotlex1-49/+15
(equipment, weapons, hair, dyes, etc). Unified a bunch of clif functions now that you only need to handle the view_data (so instead of clif_spawn[pc/mob/npc/pet] you just have clif_spawn) - 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5833 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-01* April fool! Improved soundeffectall script command. (No, this is not a lie)Lance1-1/+1
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5832 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-27- Pet catching now uses the menuskill variables to prevent item usage from ↵skotlex1-0/+1
disrupting the catch process. - Added Safetywall to the list not blocked by Dispell. - Added some include limits.h required by window compiles. - Corrected Wedding rings being trade-able. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5772 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-27* GCC on Cygwin still complaining, resorted to including limits.h in malloc.hLance1-1/+0
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5770 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-27* Refixed the fix with a constant list for Win32 users - limits.h (imported ↵Lance1-0/+1
from MSVC) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5769 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-27- Changed status_point/skill_point to unsigned short. Adjusted the code as ↵skotlex1-19/+32
necessary to prevent overflows. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5762 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-25- Incremented the number of iterations to find a random stop to 100 as 50 ↵skotlex1-5/+2
seems to no be enough for certain maps. - Fixed iteminfo only displaying first result when there were many. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5744 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-23- Fixed compile error and missing field in the clone function.skotlex1-1/+1
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5711 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-22- Merged the unit_data structure from jA for handling unit-related data ↵skotlex1-7/+8
(attack times, walking, auto-attack timers, skill related data) - Modified unit_skillcastcancel to receive flag&2, which stands for "cancel casting only if current skill is cancellable" - Battle config options changed from yes/no to BL_TYPE settings: skillrange_by_distance, skill_noreiteration, skill_nofootset, gvg_traps_target_all, skill_log, attack_direction_change, auto_counter_type - Clif.c will disconnect sessions that send an unknown command packet above 0x30000 instead of just ignoring it. - Cleaned up/rewrite of the pet ai, same for pet_calc_pos - Implemented use of mob variable attacked_players as it is used on jA - Cleaned up error reporting during mob-skill loading to be less spamy with non-loaded mobs. - Corrected water_height reading. I forgot to give credits to LittleWolf for providing the water-reading function :X git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5707 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-20- @stfu now allows negative intervals to be specified, they increase manner ↵skotlex1-1/+3
instead. - Added overflow fix to the login-server when sending GM accounts to char. - Increased buffer size abit in check_ip (login.c) to see if it prevents stack corruption. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5683 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-16- @kill_monster/@kill_monster2 won't touch Guardians/Emperium now.skotlex1-1/+4
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5631 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-15- Added mapflag nodrop, fixed mapflag notrade.skotlex1-0/+2
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5619 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-15- Removed the hardcoded duration of 30seconds for sleep.skotlex1-1/+1
- Fixed rangecheck for pet skill usage of INF_SELF_SKILL - Removed inall/exall from atcommand.conf since those two do not exist! (pointed out by Ancyker) - @me now uses entry 270 in msg_athena as output format. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5615 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-15- Added item_db2.sql and mob_db2.sql, thanks to Joshuaaliskotlex1-6/+5
- Added more usage of msg_athena on the slave atcommands. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5609 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-14- Updated @rura/@warp. Now you can use both "@warp mapname x y" and "@warp ↵LuzZza1-4/+41
mapname,x,y". - Added command @tonpc (warp to NPC). - Fixed @where at-command. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5602 54d463be-8e91-2dee-dedb-b68131a5f0ec