From ed8c27d7fd6a98cac15020ff2f72dfceabf1957d Mon Sep 17 00:00:00 2001 From: ultramage Date: Tue, 12 Aug 2008 05:45:35 +0000 Subject: Added updated client effects list. Corrected some doc/npc typos. Reindented some mob AI code. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13074 54d463be-8e91-2dee-dedb-b68131a5f0ec --- doc/effect_list.txt | 23 ++++++++++++--- doc/script_commands.txt | 2 +- npc/merchants/inn.txt | 2 +- src/map/mob.c | 78 ++++++++++++++++++++++++++----------------------- 4 files changed, 63 insertions(+), 42 deletions(-) diff --git a/doc/effect_list.txt b/doc/effect_list.txt index 9a07a4dc7..fa9d5eb29 100644 --- a/doc/effect_list.txt +++ b/doc/effect_list.txt @@ -3,7 +3,7 @@ //===== By ================================================ //= Valaris, Spira, Au{R}oN, Tharis, HiddenDragon //===== Version =========================================== -//= 1.8 +//= 2.1 //========================================================= //= 1.0 - Formatted to the standard //= 1.1 - New Effects, up to 2007/05/07 Sakexe. [Au{R}oN] @@ -14,6 +14,9 @@ //= 1.6 - New Effects, up to 2008/01/02 Sakexe. [Au{R}oN] //= 1.7 - New Effects, up to 2008/03/26 Sakexe. [Au{R}oN] //= 1.8 - Corrected several effect descriptions. [L0ne_W0lf] +//= 1.9 - New Effects, up to 2008/05/28 Sakexe. [Au{R}oN] +//= 2.0 - New Effects, up to 2008/07/15 Sakexe. [Au{R}oN] +//= 2.1 - New Effects, up to 2008/08/06a Sakexe. [Au{R}oN] //===== Description ======================================= //= A list of client-side effects sorted by their ID //========================================================= @@ -722,8 +725,20 @@ number description 693. Translucent yellow circle 694. Translucent green circle 695. Rotating green light -696. The same of 690 and 691 but Blue/Purple. +696. The same of 690 and 691 but Blue/Purple 697. (Nothing) 698. (Nothing) -699. Fall of powder from the sky and raise of some leaf. -700+. No More Effects From 2008/03/26 Sakexe. +699. Fall of powder from the sky and raise of some leaf +700. Big Colored Green Sphere. +701. Little Colored Violet Sphere +702. Light Infltrarion from and Fall of powder from the sky +703. (Nothing) +704. (Nothing) +705. (Nothing) +706. (Nothing) +707. Client Crash :P +708. A Perfect Copy of Storm Gust Effect (Effect 89) +709. A Firework that split in 4 mini fireworks +710. A Sphere like Effect 701 but Green, and a bit more larger +711. A big violet wall +712. No More Effects From 2008/08/06a Sakexe. \ No newline at end of file diff --git a/doc/script_commands.txt b/doc/script_commands.txt index a64399b7f..49353125c 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -4887,7 +4887,7 @@ complete the effect. Changes the display name and/or display class of the target npc. Returns 0 is successful, 1 if the npc does not exist. -Size is 0 = norma 1 = small 2 = big. +Size is 0 = normal 1 = small 2 = big. Since trunk r11779 diff --git a/npc/merchants/inn.txt b/npc/merchants/inn.txt index 90da9bada..28b29154c 100644 --- a/npc/merchants/inn.txt +++ b/npc/merchants/inn.txt @@ -59,7 +59,7 @@ prt_in,61,141,2 script Inn Employee#Ahlma 53,{ } //======================== Alberta ==================================== -alberta_in,32,142,3 script Inn Employee#Moira 53,{ +alberta_in,32,142,3 script Inn Employee#Jennie 53,{ callfunc "F_InnMaid","[Employee Jennie]","'Fisherman Inn'!","alberta_in",26,142; warp "alberta_in",18,188; end; diff --git a/src/map/mob.c b/src/map/mob.c index 3347f51fa..fc75e9567 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1481,48 +1481,55 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) } // Check for target change. - if (md->attacked_id && mode&MD_CANATTACK) + if( md->attacked_id && mode&MD_CANATTACK ) { - if (md->attacked_id == md->target_id) + if( md->attacked_id == md->target_id ) { //Rude attacked check. - if (!battle_check_range(&md->bl, tbl, md->status.rhw.range) && - ( //Can't attack back and can't reach back. - (!can_move && DIFF_TICK(tick, md->ud.canmove_tick) > 0 && - (battle_config.mob_ai&0x2 || md->sc.data[SC_SPIDERWEB])) || - (!mob_can_reach(md, tbl, md->min_chase, MSS_RUSH)) - ) && - md->state.attacked_count++ >= RUDE_ATTACKED_COUNT && - !mobskill_use(md, tick, MSC_RUDEATTACKED) && //If can't rude Attack - can_move && unit_escape(&md->bl, tbl, rand()%10 +1)) //Attempt escape + if( !battle_check_range(&md->bl, tbl, md->status.rhw.range) + && ( //Can't attack back and can't reach back. + (!can_move && DIFF_TICK(tick, md->ud.canmove_tick) > 0 && (battle_config.mob_ai&0x2 || md->sc.data[SC_SPIDERWEB])) + || !mob_can_reach(md, tbl, md->min_chase, MSS_RUSH) + ) + && md->state.attacked_count++ >= RUDE_ATTACKED_COUNT + && !mobskill_use(md, tick, MSC_RUDEATTACKED) //If can't rude Attack + && can_move && unit_escape(&md->bl, tbl, rand()%10 +1)) //Attempt escape { //Escaped md->attacked_id = 0; return true; } - } else - if ((abl= map_id2bl(md->attacked_id)) && (!tbl || mob_can_changetarget(md, abl, mode))) { - if (md->bl.m != abl->m || abl->prev == NULL || - (dist = distance_bl(&md->bl, abl)) >= MAX_MINCHASE || - battle_check_target(&md->bl, abl, BCT_ENEMY) <= 0 || - (battle_config.mob_ai&0x2 && !status_check_skilluse(&md->bl, abl, 0, 0)) || //Retaliate check - (!battle_check_range(&md->bl, abl, md->status.rhw.range) && - ( //Reach check - (!can_move && DIFF_TICK(tick, md->ud.canmove_tick) > 0 && - (battle_config.mob_ai&0x2 || md->sc.data[SC_SPIDERWEB])) || - !mob_can_reach(md, abl, dist+md->db->range3, MSS_RUSH) - ) + } + else + if( (abl= map_id2bl(md->attacked_id)) && (!tbl || mob_can_changetarget(md, abl, mode)) ) + { + if (md->bl.m != abl->m || abl->prev == NULL + || (dist = distance_bl(&md->bl, abl)) >= MAX_MINCHASE + || battle_check_target(&md->bl, abl, BCT_ENEMY) <= 0 + || (battle_config.mob_ai&0x2 && !status_check_skilluse(&md->bl, abl, 0, 0)) //Retaliate check + || (!battle_check_range(&md->bl, abl, md->status.rhw.range) + && + ( //Reach check + (!can_move && DIFF_TICK(tick, md->ud.canmove_tick) > 0 && (battle_config.mob_ai&0x2 || md->sc.data[SC_SPIDERWEB])) + || !mob_can_reach(md, abl, dist+md->db->range3, MSS_RUSH) + ) ) - ) { //Rude attacked - if (md->state.attacked_count++ >= RUDE_ATTACKED_COUNT && - !mobskill_use(md, tick, MSC_RUDEATTACKED) && can_move && - !tbl && unit_escape(&md->bl, abl, rand()%10 +1)) + ) + { //Rude attacked + if (md->state.attacked_count++ >= RUDE_ATTACKED_COUNT + && !mobskill_use(md, tick, MSC_RUDEATTACKED) && can_move + && !tbl && unit_escape(&md->bl, abl, rand()%10 +1)) { //Escaped. //TODO: Maybe it shouldn't attempt to run if it has another, valid target? md->attacked_id = 0; return true; } - } else if (!(battle_config.mob_ai&0x2) && !status_check_skilluse(&md->bl, abl, 0, 0)) { + } + else + if (!(battle_config.mob_ai&0x2) && !status_check_skilluse(&md->bl, abl, 0, 0)) + { //Can't attack back, but didn't invoke a rude attacked skill... - } else { //Attackable + } + else + { //Attackable if (!tbl || dist < md->status.rhw.range || !check_distance_bl(&md->bl, tbl, dist) || battle_gettarget(tbl) != md->bl.id) { //Change if the new target is closer than the actual one @@ -1537,6 +1544,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) } } } + //Clear it since it's been checked for already. md->attacked_id = 0; } @@ -1549,20 +1557,18 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) if (!tbl && mode&MD_LOOTER && md->lootitem && DIFF_TICK(tick, md->ud.canact_tick) > 0 && (md->lootitem_count < LOOTITEM_SIZE || battle_config.monster_loot_type != 1)) { // Scan area for items to loot, avoid trying to loot of the mob is full and can't consume the items. - map_foreachinrange (mob_ai_sub_hard_lootsearch, &md->bl, - view_range, BL_ITEM, md, &tbl); + map_foreachinrange (mob_ai_sub_hard_lootsearch, &md->bl, view_range, BL_ITEM, md, &tbl); } if ((!tbl && mode&MD_AGGRESSIVE) || md->state.skillstate == MSS_FOLLOW) { - map_foreachinrange (mob_ai_sub_hard_activesearch, &md->bl, - view_range, DEFAULT_ENEMY_TYPE(md), md, &tbl); - } else + map_foreachinrange (mob_ai_sub_hard_activesearch, &md->bl, view_range, DEFAULT_ENEMY_TYPE(md), md, &tbl); + } + else if (mode&MD_CHANGECHASE && (md->state.skillstate == MSS_RUSH || md->state.skillstate == MSS_FOLLOW)) { search_size = view_rangestatus.rhw.range ? view_range:md->status.rhw.range; - map_foreachinrange (mob_ai_sub_hard_changechase, &md->bl, - search_size, DEFAULT_ENEMY_TYPE(md), md, &tbl); + map_foreachinrange (mob_ai_sub_hard_changechase, &md->bl, search_size, DEFAULT_ENEMY_TYPE(md), md, &tbl); } if (!tbl) { //No targets available. -- cgit v1.2.3-70-g09d2