浏览代码

* Merged changes up to eAthena 15038.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15225 54d463be-8e91-2dee-dedb-b68131a5f0ec
eathenabot 13 年之前
父节点
当前提交
e1eacd2587
共有 3 个文件被更改,包括 9 次插入8 次删除
  1. 3 0
      Changelog-Trunk.txt
  2. 3 5
      src/map/skill.c
  3. 3 3
      src/map/unit.c

+ 3 - 0
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.

+ 3 - 5
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;

+ 3 - 3
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);
 					}
 				}
 			}