瀏覽代碼

- Fixed the nocast flag 2 (not usable in pvp) returning true in pk-mode servers.
- When removing a castle's owning guild, the char servers will erase the guardian data now.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6602 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 年之前
父節點
當前提交
b2b800212c
共有 4 個文件被更改,包括 18 次插入4 次删除
  1. 4 0
      Changelog-Trunk.txt
  2. 4 0
      src/char/int_guild.c
  3. 4 0
      src/char_sql/int_guild.c
  4. 6 4
      src/map/skill.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/05/15
+	* Fixed the nocast flag 2 (not usable in pvp) returning true in pk-mode
+	  servers. [Skotlex]
+	* When removing a castle's owning guild, the char servers will erase the
+	  guardian data now. [Skotlex]
 	* Changed the behaviour of immobile mobs when they can't chase their
 	  target. Rather than using a longrange skill and then unlocking, they will
 	  use an attack/angry state skill and then unlock. [Skotlex]

+ 4 - 0
src/char/int_guild.c

@@ -1417,6 +1417,10 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
 					(g) ? g->name : "??", gid, (value) ? "occupy" : "abandon", castle_id);
 		}
 		gc->guild_id = value;
+		if(gc->guild_id == 0) {
+			//Delete guardians.
+			memset(&gc->guardian, 0, sizeof(gc->guardian));
+		}
 		break;
 	case 2: gc->economy = value; break;
 	case 3: gc->defense = value; break;

+ 4 - 0
src/char_sql/int_guild.c

@@ -1752,6 +1752,10 @@ int mapif_parse_GuildCastleDataSave(int fd,int castle_id,int index,int value)
 					(g)?g->name:"??" ,gid, (value)?"occupy":"abandon", castle_id);
 		}
 		gc.guild_id = value;
+		if(gc.guild_id == 0) {
+			//Delete guardians.
+			memset(&gc.guardian, 0, sizeof(gc.guardian));
+		}
 		break;
 	case 2: gc.economy = value; break;
 	case 3: gc.defense = value; break;

+ 6 - 4
src/map/skill.c

@@ -821,13 +821,15 @@ int skillnotok(int skillid, struct map_session_data *sd)
 	// Check skill restrictions [Celest]
 	if(!map_flag_vs(sd->bl.m) && skill_get_nocast (skillid) & 1)
 		return 1;
-	if(map[sd->bl.m].flag.pvp && skill_get_nocast (skillid) & 2)
+	if(map[sd->bl.m].flag.pvp) {
+		if(!battle_config.pk_mode && skill_get_nocast (skillid) & 2)
+			return 1;
+		if(battle_config.pk_mode && skill_get_nocast (skillid) & 16)
 		return 1;
+	}
 	if(map_flag_gvg(sd->bl.m) && skill_get_nocast (skillid) & 4)
 		return 1;
-	if (agit_flag && skill_get_nocast (skillid) & 8)
-		return 1;
-	if (battle_config.pk_mode && map[sd->bl.m].flag.pvp && skill_get_nocast (skillid) & 16)
+	if(agit_flag && skill_get_nocast (skillid) & 8)
 		return 1;
 	if(map[sd->bl.m].flag.restricted && map[sd->bl.m].zone && skill_get_nocast (skillid) & (8*map[sd->bl.m].zone))
 		return 1;