浏览代码

- Fixed a duplicate warp name in Rachel
- Fixed Venom Splasher not being Poison elemental
- Cleaned up #blv
- Fixed the skill tree not always updating when using @allskill
- Probably fixed the target-change on melee attack setting not working.
- Moved the deletion of the invincible timer when using skills so that it is not deleted for skills such as Ashura (when just selecting a target)


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

skotlex 18 年之前
父节点
当前提交
d2574dfd69
共有 8 个文件被更改,包括 70 次插入61 次删除
  1. 5 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 1 1
      db/skill_db.txt
  4. 2 2
      npc/warps/cities/rachel.txt
  5. 53 54
      src/map/charcommand.c
  6. 2 2
      src/map/clif.c
  7. 2 2
      src/map/mob.c
  8. 3 0
      src/map/pc.c

+ 5 - 0
Changelog-Trunk.txt

@@ -4,6 +4,11 @@ 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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
 2007/02/05
 2007/02/05
+	* Fixed the skill tree not always updating when using @allskill
+	* Probably fixed the target-change on melee attack setting not working.
+	* Moved the deletion of the invincible timer when using skills so that it
+	  is not deleted for skills such as Ashura (when just selecting a target)
+	  [Skotlex]
 	* Continuing the checking of script buildin functions and stop the script 
 	* Continuing the checking of script buildin functions and stop the script 
 	  execution when an attached player is required but not found.
 	  execution when an attached player is required but not found.
 	  This task will be referenced as Ticket #41 from now on. [FlavioJS]
 	  This task will be referenced as Ticket #41 from now on. [FlavioJS]

+ 2 - 0
db/Changelog.txt

@@ -20,6 +20,8 @@
 
 
 ========================
 ========================
 
 
+02/05
+	* Fixed Venom Splasher not being Poison elemental
 02/02
 02/02
 	* Completed Amon Ra's spell list. Note that they probably need a delay
 	* Completed Amon Ra's spell list. Note that they probably need a delay
 	  added because of the way eA differs from Aegis on the skillused condition.
 	  added because of the way eA differs from Aegis on the skillused condition.

+ 1 - 1
db/skill_db.txt

@@ -164,7 +164,7 @@
 138,1,6,16,5,1,0,10,1,no,0,1024,0,weapon,0	//AS_ENCHANTPOISON#Enchant Poison#
 138,1,6,16,5,1,0,10,1,no,0,1024,0,weapon,0	//AS_ENCHANTPOISON#Enchant Poison#
 139,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0	//AS_POISONREACT#Poison React#
 139,0,6,4,0,0,0,10,1,no,0,0,0,weapon,0	//AS_POISONREACT#Poison React#
 140,2,6,2,5,1,0,10,1,no,0,0,0,weapon,0	//AS_VENOMDUST#Venom Dust#
 140,2,6,2,5,1,0,10,1,no,0,0,0,weapon,0	//AS_VENOMDUST#Venom Dust#
-141,1,6,1,-1,1,2,10,1,yes,0,0,0,weapon,0	//AS_SPLASHER#Venom Splasher#
+141,1,6,1,5,1,2,10,1,yes,0,0,0,weapon,0	//AS_SPLASHER#Venom Splasher#
 142,0,6,4,0,1,0,1,1,no,0,1,0,none,0	//NV_FIRSTAID#First Aid#
 142,0,6,4,0,1,0,1,1,no,0,1,0,none,0	//NV_FIRSTAID#First Aid#
 143,0,6,4,0,1,0,1,1,no,0,1,0,none,0	//NV_TRICKDEAD#Act Dead#
 143,0,6,4,0,1,0,1,1,no,0,1,0,none,0	//NV_TRICKDEAD#Act Dead#
 144,0,0,0,0,0,0,1,0,no,0,1,0,none,0	//SM_MOVINGRECOVERY#Moving HP-Recovery#
 144,0,0,0,0,0,0,1,0,no,0,1,0,none,0	//SM_MOVINGRECOVERY#Moving HP-Recovery#

+ 2 - 2
npc/warps/cities/rachel.txt

@@ -56,7 +56,7 @@ ra_temsky.gat,99,135,0	warp	rasky002	1,1,ra_temsky.gat,99,112
 ra_temsky.gat,112,143,0	warp	rasky003	1,1,ra_temsky.gat,141,139
 ra_temsky.gat,112,143,0	warp	rasky003	1,1,ra_temsky.gat,141,139
 ra_temsky.gat,137,139,0	warp	rasky004	1,1,ra_temsky.gat,108,143
 ra_temsky.gat,137,139,0	warp	rasky004	1,1,ra_temsky.gat,108,143
 ra_temsky.gat,87,143,0	warp	rasky005	1,1,ra_temsky.gat,58,139
 ra_temsky.gat,87,143,0	warp	rasky005	1,1,ra_temsky.gat,58,139
-ra_temsky.gat,62,139,0	warp	rasky004	1,1,ra_temsky.gat,91,143
+ra_temsky.gat,62,139,0	warp	rasky006	1,1,ra_temsky.gat,91,143
 
 
 //Rachel Temple
 //Rachel Temple
 ra_temple.gat,119,21,0	warp	rachel002	1,1,rachel.gat,149,244
 ra_temple.gat,119,21,0	warp	rachel002	1,1,rachel.gat,149,244
@@ -124,4 +124,4 @@ ra_in01.gat,313,374,0	warp	ra_in014	2,2,ra_in01.gat,358,373
 ra_in01.gat,354,373,0	warp	ra_in014a	2,2,ra_in01.gat,308,374
 ra_in01.gat,354,373,0	warp	ra_in014a	2,2,ra_in01.gat,308,374
 
 
 //Entrance to the Temple
 //Entrance to the Temple
-rachel.gat,149,249,0	warp	rachel001	1,1,ra_temple.gat,119,28
+rachel.gat,149,249,0	warp	rachel001	1,1,ra_temple.gat,119,28

+ 53 - 54
src/map/charcommand.c

@@ -1298,63 +1298,62 @@ int charcommand_baselevel(
 		return -1;
 		return -1;
 	}
 	}
 
 
-	if ((pl_sd = map_nick2sd(player)) != NULL) {
-		if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change base level only lower or same gm level
+	if ((pl_sd = map_nick2sd(player)) == NULL) {
+		clif_displaymessage(fd, msg_table[3]); // Character not found.
+		return -1;
+	}
+	if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change base level only lower or same gm level
+		clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player.
+		return -1;
+	}
 
 
-			if (level > 0) {
-				if (pl_sd->status.base_level == pc_maxbaselv(sd)) {	// check for max level by Valaris
-					clif_displaymessage(fd, msg_table[91]); // Character's base level can't go any higher.
-					return 0;
-				}	// End Addition
-				if ((unsigned int)level > pc_maxbaselv(pl_sd) ||
-					pl_sd->status.base_level > pc_maxbaselv(pl_sd) -level)
-					level = pc_maxbaselv(pl_sd) - pl_sd->status.base_level;
-				for (i = 1; i <= level; i++)
-					status_point += (pl_sd->status.base_level + i + 14) / 5;
-				if (pl_sd->status.status_point > USHRT_MAX -  status_point)
-					pl_sd->status.status_point = USHRT_MAX;
-				else
-					pl_sd->status.status_point += status_point;
-				pl_sd->status.base_level += (unsigned int)level;
-				clif_updatestatus(pl_sd, SP_BASELEVEL);
-				clif_updatestatus(pl_sd, SP_NEXTBASEEXP);
-				clif_updatestatus(pl_sd, SP_STATUSPOINT);
-				status_calc_pc(pl_sd, 0);
-				status_percent_heal(&pl_sd->bl, 100, 100);
-				clif_misceffect(&pl_sd->bl, 0);
-				clif_displaymessage(fd, msg_table[65]); // Character's base level raised.
-			} else {
-				if (pl_sd->status.base_level == 1) {
-					clif_displaymessage(fd, msg_table[193]); // Character's base level can't go any lower.
-					return -1;
-				}
-				level *= -1;
-				if ((unsigned int)level >= pl_sd->status.base_level)
-					level = pl_sd->status.base_level -1;
-				if (pl_sd->status.status_point > 0) {
-					for (i = 0; i > -level; i--)
-						status_point += (pl_sd->status.base_level +i + 14) / 5;
-					if (pl_sd->status.status_point < status_point)
-						pc_resetstate(pl_sd);
-					if (pl_sd->status.status_point < status_point)
-						pl_sd->status.status_point = 0;
-					else
-						pl_sd->status.status_point -= status_point;
-					clif_updatestatus(pl_sd, SP_STATUSPOINT);
-				} // to add: remove status points from stats
-				pl_sd->status.base_level -= (unsigned int)level;
-				clif_updatestatus(pl_sd, SP_BASELEVEL);
-				clif_updatestatus(pl_sd, SP_NEXTBASEEXP);
-				status_calc_pc(pl_sd, 0);
-				clif_displaymessage(fd, msg_table[66]); // Character's base level lowered.
-			}
-		} else {
-			clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player.
+	if (level > 0) {
+		if (pl_sd->status.base_level == pc_maxbaselv(pl_sd)) {	// check for max level by Valaris
+			clif_displaymessage(fd, msg_table[91]); // Character's base level can't go any higher.
+			return 0;
+		}	// End Addition
+		if ((unsigned int)level > pc_maxbaselv(pl_sd) ||
+			pl_sd->status.base_level > pc_maxbaselv(pl_sd) -level)
+			level = pc_maxbaselv(pl_sd) - pl_sd->status.base_level;
+		for (i = 1; i <= level; i++)
+			status_point += (pl_sd->status.base_level + i + 14) / 5;
+
+		if (pl_sd->status.status_point > USHRT_MAX -  status_point)
+			pl_sd->status.status_point = USHRT_MAX;
+		else
+			pl_sd->status.status_point += status_point;
+		pl_sd->status.base_level += (unsigned int)level;
+		clif_updatestatus(pl_sd, SP_BASELEVEL);
+		clif_updatestatus(pl_sd, SP_NEXTBASEEXP);
+		clif_updatestatus(pl_sd, SP_STATUSPOINT);
+		status_calc_pc(pl_sd, 0);
+		status_percent_heal(&pl_sd->bl, 100, 100);
+		clif_misceffect(&pl_sd->bl, 0);
+		clif_displaymessage(fd, msg_table[65]); // Character's base level raised.
+	} else {
+		if (pl_sd->status.base_level == 1) {
+			clif_displaymessage(fd, msg_table[193]); // Character's base level can't go any lower.
 			return -1;
 			return -1;
 		}
 		}
-	} else {
-		clif_displaymessage(fd, msg_table[3]); // Character not found.
-		return -1;
+		level *= -1;
+		if ((unsigned int)level >= pl_sd->status.base_level)
+			level = pl_sd->status.base_level -1;
+		if (pl_sd->status.status_point > 0) {
+			for (i = 0; i > -level; i--)
+				status_point += (pl_sd->status.base_level +i + 14) / 5;
+			if (pl_sd->status.status_point < status_point)
+				pc_resetstate(pl_sd);
+			if (pl_sd->status.status_point < status_point)
+				pl_sd->status.status_point = 0;
+			else
+				pl_sd->status.status_point -= status_point;
+			clif_updatestatus(pl_sd, SP_STATUSPOINT);
+		} // to add: remove status points from stats
+		pl_sd->status.base_level -= (unsigned int)level;
+		clif_updatestatus(pl_sd, SP_BASELEVEL);
+		clif_updatestatus(pl_sd, SP_NEXTBASEEXP);
+		status_calc_pc(pl_sd, 0);
+		clif_displaymessage(fd, msg_table[66]); // Character's base level lowered.
 	}
 	}
 
 
 	return 0; //�³�í�I—¹
 	return 0; //�³�í�I—¹

+ 2 - 2
src/map/clif.c

@@ -9702,8 +9702,6 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
 	if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
 	if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
 		return;
 		return;
 	
 	
-	pc_delinvincibletimer(sd);
-	
 	if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris]
 	if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris]
 		target_id = sd->bl.id;
 		target_id = sd->bl.id;
 		
 		
@@ -9755,6 +9753,8 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
 			skilllv = tmp;
 			skilllv = tmp;
 	}
 	}
 
 
+	pc_delinvincibletimer(sd);
+	
 	if (skilllv)
 	if (skilllv)
 		unit_skilluse_id(&sd->bl, target_id, skillnum, skilllv);
 		unit_skilluse_id(&sd->bl, target_id, skillnum, skilllv);
 
 

+ 2 - 2
src/map/mob.c

@@ -725,13 +725,13 @@ static int mob_can_changetarget(struct mob_data* md, struct block_list* target,
 	{	
 	{	
 		if (md->state.provoke_flag == target->id)
 		if (md->state.provoke_flag == target->id)
 			return 1;
 			return 1;
-		else if (!battle_config.mob_ai&0x4)
+		else if (!(battle_config.mob_ai&0x4))
 			return 0;
 			return 0;
 	}
 	}
 	
 	
 	switch (md->state.skillstate) {
 	switch (md->state.skillstate) {
 		case MSS_BERSERK:
 		case MSS_BERSERK:
-			if (!mode&MD_CHANGETARGET_MELEE)
+			if (!(mode&MD_CHANGETARGET_MELEE))
 				return 0;
 				return 0;
 			return (battle_config.mob_ai&0x4 || check_distance_bl(&md->bl, target, 3));
 			return (battle_config.mob_ai&0x4 || check_distance_bl(&md->bl, target, 3));
 		case MSS_RUSH:
 		case MSS_RUSH:

+ 3 - 0
src/map/pc.c

@@ -4558,6 +4558,9 @@ int pc_allskillup(struct map_session_data *sd)
 		}
 		}
 	}
 	}
 	status_calc_pc(sd,0);
 	status_calc_pc(sd,0);
+	//Required because if you could level up all skills previously, 
+	//the update will not be sent as only the lv variable changes.
+	clif_skillinfoblock(sd);
 	return 0;
 	return 0;
 }
 }