summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--src/map/skill.c8
-rw-r--r--src/map/unit.c6
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);
}
}
}