B_SetFightSkills (self, 80);
// ************************************************************
// B_SetFightSkills
// ----------------
// B_AddFightSkill setzt Talent-Ani abhängig von TrefferChance%
// ************************************************************
func void B_SetFightSkills (var C_NPC slf, var int percent)
{
// Es wird auf alle FightSkills percent ADDIERT (Skills sind in Npc_Default auf 0 initialisiert)
B_RaiseFightTalent (slf, NPC_TALENT_1H, percent);
B_RaiseFightTalent (slf, NPC_TALENT_2H, percent);
B_RaiseFightTalent (slf, NPC_TALENT_BOW, percent);
B_RaiseFightTalent (slf, NPC_TALENT_CROSSBOW, percent);
};
// ******************
// B_RaiseFightTalent
// ******************
// ------------------------------------
func void B_RaiseRealFightTalentPercent (var C_NPC oth, var int talent, var int percent)
{
if (talent == NPC_TALENT_1H) { oth.aivar[REAL_TALENT_1H] = oth.aivar[REAL_TALENT_1H] + percent; }
else if (talent == NPC_TALENT_2H) { oth.aivar[REAL_TALENT_2H] = oth.aivar[REAL_TALENT_2H] + percent; }
else if (talent == NPC_TALENT_BOW) { oth.aivar[REAL_TALENT_BOW] = oth.aivar[REAL_TALENT_BOW] + percent; }
else if (talent == NPC_TALENT_CROSSBOW) { oth.aivar[REAL_TALENT_CROSSBOW] = oth.aivar[REAL_TALENT_CROSSBOW] + percent; };
};
// ------------------------------------
func void B_RaiseFightTalent (var C_NPC oth, var int talent, var int percent)
{
B_RaiseRealFightTalentPercent (oth, talent, percent);
B_AddFightSkill (oth, talent, percent);
};
// ******************************************************************
// B_AddFightSkill
// ---------------
// setzt die Kampftalent-Ani abhängig von TrefferChance%
// (ab 30% und ab 60%)
// wird aus NPC_SetFightSkills aufgerufen (um FightSkill in NSC-Instanzen zu setzen)
// und aus B_TeachFightTalentPercent (um Player-Skill zu erhöhen)
// ******************************************************************
func void B_AddFightSkill (var C_NPC slf, var int talent, var int percent)
{
if (talent == NPC_TALENT_1H)
{
slf.HitChance[NPC_TALENT_1H] = slf.HitChance[NPC_TALENT_1H] + percent;
if (slf.HitChance[NPC_TALENT_1H] >=0) { Npc_SetTalentSkill (slf, NPC_TALENT_1H, 0); };
if (slf.HitChance[NPC_TALENT_1H] >=30) { Npc_SetTalentSkill (slf, NPC_TALENT_1H, 1); };
if (slf.HitChance[NPC_TALENT_1H] >=60) { Npc_SetTalentSkill (slf, NPC_TALENT_1H, 2); };
};
if (talent == NPC_TALENT_2H)
{
slf.HitChance[NPC_TALENT_2H] = slf.HitChance[NPC_TALENT_2H] + percent;
if (slf.HitChance[NPC_TALENT_1H] >=0) { Npc_SetTalentSkill (slf, NPC_TALENT_2H, 0); };
if (slf.HitChance[NPC_TALENT_2H] >=30) { Npc_SetTalentSkill (slf, NPC_TALENT_2H, 1); };
if (slf.HitChance[NPC_TALENT_2H] >=60) { Npc_SetTalentSkill (slf, NPC_TALENT_2H, 2); };
};
if (talent == NPC_TALENT_BOW)
{
slf.HitChance[NPC_TALENT_BOW] = slf.HitChance[NPC_TALENT_BOW] + percent;
if (slf.HitChance[NPC_TALENT_BOW] >=0) { Npc_SetTalentSkill (slf, NPC_TALENT_BOW, 0); };
if (slf.HitChance[NPC_TALENT_BOW] >=30) { Npc_SetTalentSkill (slf, NPC_TALENT_BOW, 1); };
if (slf.HitChance[NPC_TALENT_BOW] >=60) { Npc_SetTalentSkill (slf, NPC_TALENT_BOW, 2); };
};
if (talent == NPC_TALENT_CROSSBOW)
{
slf.HitChance[NPC_TALENT_CROSSBOW] = slf.HitChance[NPC_TALENT_CROSSBOW] + percent;
if (slf.HitChance[NPC_TALENT_CROSSBOW] >=0) { Npc_SetTalentSkill (slf, NPC_TALENT_CROSSBOW, 0); };
if (slf.HitChance[NPC_TALENT_CROSSBOW] >=30) { Npc_SetTalentSkill (slf, NPC_TALENT_CROSSBOW, 1); };
if (slf.HitChance[NPC_TALENT_CROSSBOW] >=60) { Npc_SetTalentSkill (slf, NPC_TALENT_CROSSBOW, 2); };
};
};
Tak jest oryginalnie, więc samo B_SetFightSkills (self, 80); powinno wystarczyć, ale chyba to się popsuło. U mnie to nie działa.
Zostaje opcja
Npc_SetTalentSkill (C_NPC, TALENT, ILOŚĆ);