Просмотр исходного кода

- Fixed "skill_sp_override_grffile: yes" causing crashes when parsing Homuncuus/Guild skills.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9069 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 18 лет назад
Родитель
Сommit
7d2bc900c7
2 измененных файлов с 10 добавлено и 2 удалено
  1. 3 1
      Changelog-Trunk.txt
  2. 7 1
      src/map/skill.c

+ 3 - 1
Changelog-Trunk.txt

@@ -4,7 +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/25
-	- Made the exp bonus settings be adjustable: [Skotlex]
+	* Fixed "skill_sp_override_grffile: yes" causing crashes when parsing
+	  Homuncuus/Guild skills. [Skotlex]
+	* Made the exp bonus settings be adjustable: [Skotlex]
 	- exp_bonus_attacker: Indicates how much additional exp a mob gives per
 	  additional attacker (eg: 10 -> +10%*attacker)
 	- exp_bonus_max_attacker: Indicates at which number of attackers the bonus

+ 7 - 1
src/map/skill.c

@@ -11466,7 +11466,13 @@ static int skill_read_skillspamount (void)
 		} else if (new_flag && sscanf(p,"%[^#]#",buf2) == 1) {
 			for (idx=0; skill_names[idx].id != 0; idx++) {
 				if (strstr(buf2, skill_names[idx].name) != NULL) {
-					skill = &skill_db[ skill_names[idx].id ];
+					//Apply Guild/Homunc adjustment.
+					sp = skill_names[idx].id;
+					if (sp >= GD_SKILLBASE) sp = GD_SKILLRANGEMIN + sp - GD_SKILLBASE;
+					if (sp >= HM_SKILLBASE) sp = HM_SKILLRANGEMIN + sp - HM_SKILLBASE;
+					if (sp < 1 || sp >= MAX_SKILL_DB)
+						continue;
+					skill = &skill_db[sp];
 					new_flag = 0;
 					break;
 				}