Bladeren bron

- Some code-speedups on reading the skill-requirements in skill_check_condition.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5482 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 jaren geleden
bovenliggende
commit
223025ffd0
1 gewijzigde bestanden met toevoegingen van 20 en 11 verwijderingen
  1. 20 11
      src/map/skill.c

+ 20 - 11
src/map/skill.c

@@ -7545,21 +7545,30 @@ int skill_check_condition(struct map_session_data *sd,int type)
 	lv = sd->skilllv;
 	if (lv <= 0) return 0;
 	// for the guild skills [celest]
-	hp = skill_get_hp(skill, lv);	/* ?チ費HP */
-	sp = skill_get_sp(skill, lv);	/* ?チ費SP */
+	if (skill >= GD_SKILLBASE)
+		skill = GD_SKILLRANGEMIN + skill - GD_SKILLBASE;
+	if (skill < 0 || skill >= MAX_SKILL_DB)
+  		return 0;
+	//Code speedup, rather than using skill_get_* over and over again.
+	if (lv < 1 || lv > MAX_SKILL_LEVEL)
+		return 0;
+	hp = skill_db[skill].hp[lv-1];	/* ?チ費HP */
+	sp = skill_db[skill].sp[lv-1];	/* ?チ費SP */
 	if((sd->skillid_old == BD_ENCORE) && skill == sd->skillid_dance)
 		sp=sp/2;	//アンコ?ル時はSP?チ費が半分
-	hp_rate = skill_get_hp_rate(skill, lv);
-	sp_rate = skill_get_sp_rate(skill, lv);
-	zeny = skill_get_zeny(skill,lv);
-	weapon = skill_get_weapontype(skill);
-	state = skill_get_state(skill);
-	spiritball = skill_get_spiritball(skill,lv);
-	mhp = skill_get_mhp(skill, lv);	/* ?チ費HP */
+	hp_rate = skill_db[skill].hp_rate[lv-1];
+	sp_rate = skill_db[skill].sp_rate[lv-1];
+	zeny = skill_db[skill].zeny[lv-1];
+	weapon = skill_db[skill].weapon;
+	state = skill_db[skill].state;
+	spiritball = skill_db[skill].spiritball[lv-1];
+	mhp = skill_db[skill].mhp[lv-1];	/* ?チ費HP */
 	for(i = 0; i < 10; i++) {
-		itemid[i] = skill_get_itemid(skill, i);
-		amount[i] = skill_get_itemqty(skill, i);
+		itemid[i] = skill_db[skill].itemid[i];
+		amount[i] = skill_db[skill].amount[i];
 	}
+	if (skill != sd->skillid)
+		skill = sd->skillid; //Restore skillid for guild skills.
 	if(mhp > 0)
 		hp += (sd->status.max_hp * mhp)/100;
 	if(hp_rate > 0)