فهرست منبع

- 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.
 
 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 
 	  execution when an attached player is required but not found.
 	  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
 	* 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.

+ 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#
 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#
-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#
 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#

+ 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,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,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
 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
 
 //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;
 	}
 
-	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;
 		}
-	} 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—¹

+ 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))
 		return;
 	
-	pc_delinvincibletimer(sd);
-	
 	if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris]
 		target_id = sd->bl.id;
 		
@@ -9755,6 +9753,8 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
 			skilllv = tmp;
 	}
 
+	pc_delinvincibletimer(sd);
+	
 	if (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)
 			return 1;
-		else if (!battle_config.mob_ai&0x4)
+		else if (!(battle_config.mob_ai&0x4))
 			return 0;
 	}
 	
 	switch (md->state.skillstate) {
 		case MSS_BERSERK:
-			if (!mode&MD_CHANGETARGET_MELEE)
+			if (!(mode&MD_CHANGETARGET_MELEE))
 				return 0;
 			return (battle_config.mob_ai&0x4 || check_distance_bl(&md->bl, target, 3));
 		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);
+	//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;
 }