Bläddra i källkod

- Corrected a compilation error.
- Fixed SG_FRIEND, it should be triggering when Monks do Combo Finish (not triple blows), and the trigger rate increase should be based on your known level of SG_FRIEND, NOT TK_COUNTER.


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

skotlex 18 år sedan
förälder
incheckning
b0f98e1dad
4 ändrade filer med 18 tillägg och 12 borttagningar
  1. 3 0
      Changelog-Trunk.txt
  2. 12 9
      src/map/party.c
  3. 1 1
      src/map/pc.c
  4. 2 2
      src/map/skill.c

+ 3 - 0
Changelog-Trunk.txt

@@ -4,6 +4,9 @@ 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/10/19
+	* Fixed SG_FRIEND, it should be triggering when Monks do Combo Finish (not
+	  triple blows), and the trigger rate increase should be based on your known
+	  level of SG_FRIEND, not TK_COUNTER. [Skotlex]
 	* Phantasmic arrow now knockbacks even if it misses. [Skotlex]
 	* Adjusted the way Monk combo times work. The combo time is now always
 	  300ms (adjusted by combo_delay_rate) which takes effect inmediately AFTER

+ 12 - 9
src/map/party.c

@@ -615,7 +615,7 @@ int party_skill_check(struct map_session_data *sd, int party_id, int skillid, in
 		case TK_COUNTER: //Increase Triple Attack rate of Monks.
 			if (!p->state.monk) return 0;
 			break;
-		case MO_TRIPLEATTACK: //Increase Counter rate of Star Gladiators
+		case MO_COMBOFINISH: //Increase Counter rate of Star Gladiators
 			if (!p->state.sg) return 0;
 			break;
 		case AM_TWILIGHT2: //Twilight Pharmacy, requires Super Novice
@@ -629,21 +629,24 @@ int party_skill_check(struct map_session_data *sd, int party_id, int skillid, in
 	for(i=0;i<MAX_PARTY;i++){
 		if ((p_sd = p->data[i].sd) == NULL)
 			continue;
+		if (sd->bl.m != p_sd->bl.m)
+			continue;
 		switch(skillid) {
 			case TK_COUNTER: //Increase Triple Attack rate of Monks.
 				if((p_sd->class_&MAPID_UPPERMASK) == MAPID_MONK
-					&& sd->bl.m == p_sd->bl.m
 					&& pc_checkskill(p_sd,MO_TRIPLEATTACK)) {
-					int rate = 50 +50*skilllv; //+100/150/200% success rate
-					sc_start4(&p_sd->bl,SC_SKILLRATE_UP,100,MO_TRIPLEATTACK,rate,0,0,skill_get_time(SG_FRIEND, 1));
+					sc_start4(&p_sd->bl,SC_SKILLRATE_UP,100,MO_TRIPLEATTACK,
+						50+50*skilllv, //+100/150/200% rate
+						0,0,skill_get_time(SG_FRIEND, 1));
 				}
 				break;
-			case MO_TRIPLEATTACK: //Increase Counter rate of Star Gladiators
+			case MO_COMBOFINISH: //Increase Counter rate of Star Gladiators
 				if((p_sd->class_&MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR
-					&& sd->bl.m == p_sd->bl.m
-					&& pc_checkskill(p_sd,TK_COUNTER)) {
-					int rate = 50 +50*pc_checkskill(p_sd,TK_COUNTER); //+100/150/200% success rate
-					sc_start4(&p_sd->bl,SC_SKILLRATE_UP,100,TK_COUNTER,rate,0,0,skill_get_time(SG_FRIEND, 1));
+					&& sd->sc.data[SC_READYCOUNTER].timer != -1
+					&& pc_checkskill(p_sd,SG_FRIEND)) {
+					sc_start4(&p_sd->bl,SC_SKILLRATE_UP,100,TK_COUNTER,
+						50+50*pc_checkskill(p_sd,SG_FRIEND), //+100/150/200% rate
+						0,0,skill_get_time(SG_FRIEND, 1));
 				}
 				break;
 		}

+ 1 - 1
src/map/pc.c

@@ -3182,7 +3182,7 @@ int pc_show_steal(struct block_list *bl,va_list ap)
 int pc_steal_item(struct map_session_data *sd,struct block_list *bl, int lv)
 {
 	static int i = 0;
-	int rate,itemid,flag;
+	int old_i,rate,itemid,flag;
 	struct status_data *sd_status, *md_status;
 	struct mob_data *md;
 	struct item tmp_item;

+ 2 - 2
src/map/skill.c

@@ -1934,8 +1934,6 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 		switch(skillid)
 		{
 			case MO_TRIPLEATTACK:
-				if (sd->status.party_id>0) //bonus from SG_FRIEND [Komurka]
-					party_skill_check(sd, sd->status.party_id, MO_TRIPLEATTACK, skilllv);
 				if (pc_checkskill(sd, MO_CHAINCOMBO) > 0)
 					flag=1;
 				break;
@@ -1944,6 +1942,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 					flag=1;
 				break;
 			case MO_COMBOFINISH:
+				if (sd->status.party_id>0) //bonus from SG_FRIEND [Komurka]
+					party_skill_check(sd, sd->status.party_id, MO_COMBOFINISH, skilllv);
 				if (pc_checkskill(sd, CH_TIGERFIST) > 0 && sd->spiritball > 0)
 					flag=1;
 			case CH_TIGERFIST: