Quellcode durchsuchen

- Updated the range of BioExplosion and Self Destruction so they count as ranged skills.
- Removed old script bonuses bMatk, bMatk1, bMatk2
- Fixed char-server not sending online notification when a party member logs in.
- When skill range by distance is set, the distance checked for is now 5 cells rather than 3.
- Fixed bMatkRate bonuses not applying to status earned modifications to int/matk.


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

skotlex vor 18 Jahren
Ursprung
Commit
6597b8c74b
10 geänderte Dateien mit 32 neuen und 41 gelöschten Zeilen
  1. 7 0
      Changelog-Trunk.txt
  2. 3 0
      db/Changelog.txt
  3. 0 3
      db/const.txt
  4. 2 2
      db/skill_db.txt
  5. 2 0
      src/char/int_party.c
  6. 2 0
      src/char_sql/int_party.c
  7. 3 3
      src/map/battle.c
  8. 4 4
      src/map/map.h
  9. 3 24
      src/map/pc.c
  10. 6 5
      src/map/status.c

+ 7 - 0
Changelog-Trunk.txt

@@ -4,6 +4,13 @@ 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/07
+	* Removed old script bonuses bMatk, bMatk1, bMatk2.
+	* Fixed char-server not sending online notification when a party member
+	  logs in.
+	* When skill range by distance is set, the distance checked for is now 5
+	  cells rather than 3.
+	* Fixed bMatkRate bonuses not applying to status earned modifications to
+	  int/matk. [Skotlex]
 	* Removed deprecated console code.
 	* Moved CHAT_SIZE back to map.h because log_atcommand uses it on sql 
 	  builds. (moved to clif.c in r9811) [FlavioJS]

+ 3 - 0
db/Changelog.txt

@@ -20,6 +20,9 @@
 
 ========================
 
+02/07
+	* Updated the range of BioExplosion and Self Destruction so they count as
+	  ranged skills.
 02/05
 	* Updated comments and inf2 values of the skill_db to use the new format.
 	* Soul Change now can't be casted on self.

+ 0 - 3
db/const.txt

@@ -261,8 +261,6 @@ bDex		17
 bLuk		18
 bAtk		41
 bAtk2		42
-bMatk1		43
-bMatk2		44
 bDef		45
 bDef2		46
 bMdef		47
@@ -299,7 +297,6 @@ bNearAtkDef	1020
 bLongAtkDef	1021
 bDoubleRate	1022
 bDoubleAddRate	1023
-bMatk		1024
 bMatkRate	1025
 bIgnoreDefEle	1026
 bIgnoreDefRace	1027

+ 2 - 2
db/skill_db.txt

@@ -204,7 +204,7 @@
 170,-1,6,1,-1,0,0,10,1,no,0,0x2,0,weapon,0	//NPC_CRITICALSLASH#Defense disregard attack#
 171,-1,8,1,-1,0,0,10,2:3:4:5:6:7:8:9:10:11,no,0,0x2,0,weapon,0	//NPC_COMBOATTACK#Multi-stage Attack#
 172,-1,6,1,-1,0,0,10,1,no,0,0x2,0,weapon,0	//NPC_GUIDEATTACK#On-target Impact Attack#
-173,1,6,4,3,2,5,10,1,no,0,0x2,0,misc,3	//NPC_SELFDESTRUCTION#Suicide bombing#
+173,5,6,4,3,2,5,10,1,no,0,0x2,0,misc,3	//NPC_SELFDESTRUCTION#Suicide bombing#
 174,-1,6,1,-1,2,3,1,1,no,0,0x2,0,weapon,0	//NPC_SPLASHATTACK#Splash attack#
 175,0,0,4,0,1,0,10,1,no,0,0x2,0,misc,0	//NPC_SUICIDE#Suicide#
 176,-1,6,1,-1,0,0,5,1,no,0,0x2,0,weapon,0	//NPC_POISON#Poison Attack#
@@ -612,7 +612,7 @@
 8013,9,6,1,0,0,0,5,1:2:3:4:5,no,0,0,0,magic,0	//HVAN_CAPRICE
 8014,0,6,4,0,1,0,5,0,no,0,0,0,none,0	//HVAN_CHAOTIC
 8015,0,0,0,0,1,0,5,0,no,0,0,0,none,0	//HVAN_INSTRUCT
-8016,0,6,4,-1,2,4,3,1,no,0,0,0,misc,0	//HVAN_EXPLOSION
+8016,5,6,4,-1,2,4,3,1,no,0,0,0,misc,0	//HVAN_EXPLOSION
 
 10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0	//GD_APPROVAL#Approval#
 10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0	//GD_KAFRACONTRACT#Kafra Contract#

+ 2 - 0
src/char/int_party.c

@@ -413,6 +413,8 @@ int inter_party_logged(int party_id, int account_id, int char_id)
 			if(p->party.member[i].lv < p->min_lv ||
 				p->party.member[i].lv > p->max_lv)
 				int_party_check_lv(p);
+			//Send online update to map servers
+			mapif_party_membermoved(&p->party, i);
 			break;
 		}
 	return 0;

+ 2 - 0
src/char_sql/int_party.c

@@ -483,6 +483,8 @@ int inter_party_logged(int party_id, int account_id, int char_id)
 				if(p->party.member[i].lv < p->min_lv ||
 					p->party.member[i].lv > p->max_lv)
 					int_party_check_lv(p);
+				//Send online update to map servers
+				mapif_party_membermoved(&p->party, i);
 			}
 			break;
 		}

+ 3 - 3
src/map/battle.c

@@ -959,7 +959,7 @@ static struct Damage battle_calc_weapon_attack(
 		if (battle_config.skillrange_by_distance &&
 			(src->type&battle_config.skillrange_by_distance)
 		) { //based on distance between src/target [Skotlex]
-			if (check_distance_bl(src, target, 3))
+			if (check_distance_bl(src, target, 5))
 				wd.flag=(wd.flag&~BF_RANGEMASK)|BF_SHORT;
 			else
 				wd.flag=(wd.flag&~BF_RANGEMASK)|BF_LONG;
@@ -2204,7 +2204,7 @@ struct Damage battle_calc_magic_attack(
 	if (battle_config.skillrange_by_distance &&
 		(src->type&battle_config.skillrange_by_distance)
 	)	{ //based on distance between src/target [Skotlex]
-		if (check_distance_bl(src, target, 3))
+		if (check_distance_bl(src, target, 5))
 			ad.flag=(ad.flag&~BF_RANGEMASK)|BF_SHORT;
 		else
 			ad.flag=(ad.flag&~BF_RANGEMASK)|BF_LONG;
@@ -2581,7 +2581,7 @@ struct Damage  battle_calc_misc_attack(
 	if (battle_config.skillrange_by_distance &&
 		(src->type&battle_config.skillrange_by_distance)
 	) { //based on distance between src/target [Skotlex]
-		if (check_distance_bl(src, target, 3))
+		if (check_distance_bl(src, target, 5))
 			md.flag=(md.flag&~BF_RANGEMASK)|BF_SHORT;
 		else
 			md.flag=(md.flag&~BF_RANGEMASK)|BF_LONG;

+ 4 - 4
src/map/map.h

@@ -1180,7 +1180,7 @@ enum _sp {
 	SP_ADDEFF, SP_RESEFF,	// 1012-1013
 	SP_BASE_ATK,SP_ASPD_RATE,SP_HP_RECOV_RATE,SP_SP_RECOV_RATE,SP_SPEED_RATE, // 1014-1018
 	SP_CRITICAL_DEF,SP_NEAR_ATK_DEF,SP_LONG_ATK_DEF, // 1019-1021
-	SP_DOUBLE_RATE, SP_DOUBLE_ADD_RATE, SP_MATK, SP_MATK_RATE, // 1022-1025
+	SP_DOUBLE_RATE, SP_DOUBLE_ADD_RATE, SP_FREE2, SP_MATK_RATE, // 1022-1025
 	SP_IGNORE_DEF_ELE,SP_IGNORE_DEF_RACE, // 1026-1027
 	SP_ATK_RATE,SP_SPEED_ADDRATE,SP_ASPD_ADDRATE, // 1028-1030
 	SP_MAGIC_ATK_DEF,SP_MISC_ATK_DEF, // 1031-1032
@@ -1211,9 +1211,9 @@ enum _sp {
 	SP_UNSTRIPABLE_WEAPON,SP_UNSTRIPABLE_ARMOR,SP_UNSTRIPABLE_HELM,SP_UNSTRIPABLE_SHIELD,  // 2034-2037
 	SP_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040
 	SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE //2041
-	//Before adding another, note that
-	//1077 (SP_FREE, previously disguise),
-	//are available!
+	//Before adding another, note that these are free:
+	//1024 (SP_FREE2, previous matk)
+	//1077 (SP_FREE, previously disguise)
 };
 
 enum _look {

+ 3 - 24
src/map/pc.c

@@ -1338,26 +1338,6 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
 			status->batk = cap_value(bonus, 0, USHRT_MAX);
 		}
 		break;
-	case SP_MATK1:
-		if(sd->state.lr_flag != 2) {
-			bonus = status->matk_max + val;
-			status->matk_max = cap_value(bonus, 0, USHRT_MAX);
-		}
-		break;
-	case SP_MATK2:
-		if(sd->state.lr_flag != 2) {
-			bonus = status->matk_min + val;
-			status->matk_min = cap_value(bonus, 0, USHRT_MAX);
-		}
-		break;
-	case SP_MATK:
-		if(sd->state.lr_flag != 2) {
-			bonus = status->matk_max + val;
-			status->matk_max = cap_value(bonus, 0, USHRT_MAX);
-			bonus = status->matk_min + val;
-			status->matk_min = cap_value(bonus, 0, USHRT_MAX);
-		}
-		break;
 	case SP_DEF1:
 		if(sd->state.lr_flag != 2) {
 			bonus = status->def + val;
@@ -4639,10 +4619,9 @@ int pc_resetlvl(struct map_session_data* sd,int type)
 				pc_unequipitem(sd,sd->equip_index[i],2);
 	}
 
-	if ((type == 1 || type == 2 || type == 3) && sd->status.party_id) {
-		//Send map-change packet to do a level range check and break party settings. [Skotlex]
-		party_send_movemap(sd);
-	}
+	if ((type == 1 || type == 2 || type == 3) && sd->status.party_id)
+		party_send_levelup(sd);
+
 	status_calc_pc(sd,0);
 	clif_skillinfoblock(sd);
 

+ 6 - 5
src/map/status.c

@@ -1211,13 +1211,12 @@ void status_calc_misc(struct block_list *bl, struct status_data *status, int lev
 	//Non players get the value set, players need to stack with previous bonuses.
 	if (bl->type != BL_PC)
 		status->batk = 
-		status->matk_min = status->matk_max =
 		status->hit = status->flee =
 		status->def2 = status->mdef2 =
 		status->cri = status->flee2 = 0;
 
-	status->matk_min += status_base_matk_min(status);
-	status->matk_max += status_base_matk_max(status);
+	status->matk_min = status_base_matk_min(status);
+	status->matk_max = status_base_matk_max(status);
 
 	status->hit += level + status->dex;
 	status->flee += level + status->agi;
@@ -2665,8 +2664,10 @@ void status_calc_bl_sub_pc(struct map_session_data *sd, unsigned long flag)
 		status->matk_max = status_base_matk_max(status);
 
 		//Bonuses from previous matk
-		status->matk_max += b_status->matk_max - status_base_matk_max(b_status);
-		status->matk_min += b_status->matk_min - status_base_matk_min(b_status);
+		if(sd->matk_rate != 100){
+			status->matk_max = status->matk_max * sd->matk_rate/100;
+			status->matk_min = status->matk_min * sd->matk_rate/100;
+		}
 
 		status->matk_min = status_calc_matk(&sd->bl, &sd->sc, status->matk_min);
 		status->matk_max = status_calc_matk(&sd->bl, &sd->sc, status->matk_max);