|
- function CalHurtValue(bnum1, bnum2, mnum, level: integer; mode: integer = 0): integer;
- var
- i, j, rnum1, rnum2, mhurt, R1Att, R1Def, R2Att, R2Def, att, def, k1, k2, dis, neinum,
- //攻方人物编号,防方人物编号,武功伤害,攻,防,武常1,武常2,距离,内力数
- neilevel, livenum, speed1, speed2: integer;
- //内功级别,生存人数,速度1,速度2
- p, p2, p3, p4: real;
- R1, R2: TRole;
- B1, B2: TBattleRole;
- begin
- //以下是状态影响属性的处理, 攻守方均可能中此类状态
- rnum1 := Brole[bnum1].rnum; //攻方人物编号
- rnum2 := Brole[bnum2].rnum; //防方人物编号
- R1 := Rrole[rnum1];
- R2 := Rrole[rnum2];
- B1 := Brole[bnum1];
- B2 := Brole[bnum2];
- //攻击状态、防御状态、情侣的攻防加成
- R1Att := max(0, R1.Attack * (100 + b1.StateLevel[0] + b1.loverlevel[0]) div 100);//(人物攻击+特技导致的攻击状态程度+情侣状态加的攻击)/100取整
- R2Def := max(0, R2.Defence * (100 + b2.StateLevel[1] + b2.loverLevel[1]) div 100);//同上攻击改防御
- //如果有武器, 增加攻击, 检查配合列表
- if r1.Equip[0] >= 0 then
- begin
- R1att := R1att + Ritem[r1.Equip[0]].AddAttack;//武器本身加的攻击赋值到攻击里,R1att和R1Att是同一个东西
- for i := 0 to 4 do//从0到4的循环,看武器配合列表,有5个配合列表,要从0到4试过去???
- begin
- if (Ritem[r1.Equip[0]].GetItem[i] = mnum) then
- begin
- R1att := R1att + Ritem[r1.Equip[0]].NeedMatAmount[i];
- break;
- end;
- end;
- end;
- //防具增加攻击
- if r1.Equip[1] >= 0 then
- R1att := R1att + Ritem[r1.Equip[1]].AddAttack;
- //武器, 防具增加防御
- if r2.Equip[0] >= 0 then
- R2def := R2def + Ritem[r2.Equip[0]].AddDefence;
- if r2.Equip[1] >= 0 then
- R2def := R2def + Ritem[r2.Equip[1]].AddDefence;
- //9号状态, 孤注, 随生命减少而攻击增加
- if b1.StateLevel[9] > 0 then
- begin
- R1Att := R1Att * (r1.MaxHP * 2 - r1.CurrentHP) div r1.MaxHP;//攻击*(最大血量*2-当前血)/最大血量后取整,血越少越威猛,最多可以达到几乎2倍的攻击
- end;
- //计算双方武学常识
- k1 := 0;
- k2 := 0;
- for i := 0 to BRoleAmount - 1 do
- begin
- if (Brole[i].Team = Brole[bnum1].Team) and (Brole[i].Dead = 0) and
- (Rrole[Brole[i].rnum].Knowledge > MIN_KNOWLEDGE) then
- k1 := k1 + Rrole[Brole[i].rnum].Knowledge;
- if (Brole[i].Team = Brole[bnum2].Team) and (Brole[i].Dead = 0) and
- (Rrole[Brole[i].rnum].Knowledge > MIN_KNOWLEDGE) then
- k2 := k2 + Rrole[Brole[i].rnum].Knowledge;
- end;
- //10号状态, 倾国
- for i := 0 to BRoleAmount - 1 do
- begin
- if (Brole[i].Dead = 0) and (Brole[i].StateLevel[10] > 0) then
- if Brole[i].Team = b1.Team then
- k1 := k1 + Brole[i].StateLevel[10]//倾城的状态程度+原有的武常赋值给K1,应该是说倾城能增加队伍的武常吧
- else if Brole[i].Team = b2.Team then
- k2 := k2 + Brole[i].StateLevel[10];
- end;
复制代码
花了几天业余时间,搞了个大概,明天把伤害公式总结下
bttt大大,轻功闪避的设置是啥意思呀,不是大于360的差距就打不到吧,游戏中就葵花内闪避厉害些呀
还有为什么都要{最小威力+(最大威力-最小威力)*级别}/10呀?直接最大威力*级别/10不行吗?
|
|