|
rt, 准备修改伤害公式, 但是原版的有些我还看不太懂, 大家能帮我解释一下吗?
ps: 如果大家对伤害公式有什么好建议, 也可以告诉我
//计算双方武学常识
k1 := 0;
k2 := 0;
for i := 0 to broleamount - 1 do
begin
if (Brole.Team = brole[bnum1].Team) and (Brole.Dead = 0) and (rrole[Brole.rnum].Knowledge > MIN_KNOWLEDGE) then k1 := k1 + rrole[Brole.rnum].Knowledge;
if (Brole.Team = brole[bnum2].Team) and (Brole.Dead = 0) and (rrole[Brole.rnum].Knowledge > MIN_KNOWLEDGE) then k2 := k2 + rrole[Brole.rnum].Knowledge;
end;
rnum1 := Brole[bnum1].rnum;
rnum2 := Brole[bnum2].rnum;
mhurt := Rmagic[mnum].Attack[level - 1];
att := Rrole[rnum1].Attack + k1 * 3 div 2 + mhurt div 3;
def := Rrole[rnum2].Defence * 2 + k2 * 3;
//攻击, 防御按伤害的折扣
att := att * (100 - Rrole[rnum1].Hurt div 2) div 100;
def := def * (100 - Rrole[rnum2].Hurt div 2) div 100;
//如果有武器, 增加攻击, 检查配合列表
if rrole[rnum1].Equip[0] >= 0 then
begin
att := att + ritem[rrole[rnum1].Equip[0]].AddAttack;
for i := 0 to MAX_WEAPON_MATCH - 1 do
begin
if (rrole[rnum1].Equip[0] = matchlist[i, 0]) and (mnum = matchlist[i, 1]) then
begin
att := att + matchlist[i, 2] * 2 div 3;
break;
end;
end;
end;
//防具增加攻击
if rrole[rnum1].Equip[1] >= 0 then att := att + ritem[rrole[rnum1].Equip[1]].AddAttack;
//武器, 防具增加防御
if rrole[rnum2].Equip[0] >= 0 then def := def + ritem[rrole[rnum2].Equip[0]].AddDefence;
if rrole[rnum2].Equip[1] >= 0 then def := def + ritem[rrole[rnum2].Equip[1]].AddDefence;
//showmessage(inttostr(att)+' '+inttostr(def));
result := att - def + random(20) - random(20);
dis := abs(brole[bnum1].X - brole[bnum2].X) + abs(brole[bnum1].Y - brole[bnum2].Y);
if dis > 10 then dis := 10;
result := result * (100 - (dis - 1) * 3) div 100;
if (result <= 0) or (level <= 0) then result := random(10) + 1;
if (result > 9999) then result := 9999;
//showmessage(inttostr(result));
end;
|
|