diff options
-rw-r--r-- | Changelog-Trunk.txt | 3 | ||||
-rw-r--r-- | src/map/skill.c | 8 | ||||
-rw-r--r-- | src/map/unit.c | 6 |
3 files changed, 9 insertions, 8 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 19defb83e..a081b7329 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -1,6 +1,9 @@ Date (YYYY-MM-DD) Added +2011-12-22 + * Fixed guild aura code not checking, whether the map of guild leader and member is the same (since r15037). [Ai4rei] + * Merged slightly modified guild aura optimization from rAthena (ra:15084, ra:15086). [Ai4rei] 2011-12-19 * Changes to chat logging code. [Ai4rei] - Moved log_config.chat checks into log_chat and replaced string chat types with an enumeration. diff --git a/src/map/skill.c b/src/map/skill.c index 328dcd322..ebb8f170b 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2409,12 +2409,10 @@ static int skill_check_unit_range2 (struct block_list *bl, int x, int y, int ski int skill_guildaura_sub (struct map_session_data* sd, int id, int strvit, int agidex) { - nullpo_ret(sd); - - if( id == sd->bl.id && battle_config.guild_aura&16 ) - return 0; + if(id == sd->bl.id && battle_config.guild_aura&16) + return 0; // Do not affect guild leader - if( sd->sc.data[SC_GUILDAURA] ) { + if (sd->sc.data[SC_GUILDAURA]) { struct status_change_entry *sce = sd->sc.data[SC_GUILDAURA]; if( sce->val3 != strvit || sce->val4 != agidex ) { sce->val3 = strvit; diff --git a/src/map/unit.c b/src/map/unit.c index d36886d7f..c76e9dc23 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -195,11 +195,11 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data if ((skill = guild_checkskill(g, GD_HAWKEYES)) > 0) agidex |= skill&0xFFFF; if (strvit || agidex) {// replaced redundant foreachinrange call with smaller and much more efficient iteration - for( i = 0; g->max_member > i; i++ ) + for( i = 0; i < g->max_member; i++ ) { - if( g->member[i].online && g->member[i].sd && check_distance_bl(&sd->bl, &g->member[i].sd->bl, 2) ) + if( g->member[i].online && g->member[i].sd && sd->bl.m == g->member[i].sd->bl.m && check_distance_bl(&sd->bl, &g->member[i].sd->bl, 2) ) {// perform the aura on the member as appropriate - skill_guildaura_sub( g->member[i].sd, sd->bl.id, strvit, agidex ); + skill_guildaura_sub(g->member[i].sd, sd->bl.id, strvit, agidex); } } } |