|
本帖最后由 淫威 于 2022-6-11 14:08 编辑
接上次的代码(RecalcAbilitys- if boHuman then begin
- if m_nInPowerLevel > 0 then begin
- //20220530 外传天赋
- //数组直接索引弄不出来对应技能,只要循环了
- for i := m_MagicList.Count - 1 downto 0 do
- begin
- UserMagic := m_MagicList.Items[i];
- if UserMagic.MagicInfo.btClass = 1 then begin
- case UserMagic.MagicInfo.wMagicId of
- //生命之源
- SKILL_HPADD: begin
- m_WAbil.MaxHP :=
- _LMIN({$IF HIGHHP}g_Config.nMaxHealth{$ELSE} High(Word){$IFEND},
- m_WAbil.MaxHP + UserMagic.MagicInfo.wPower * (UserMagic.btLevel + 1)
- * UserMagic.MagicInfo.wSpell);
- end;
- //魔法之源
- SKILL_MPADD: begin
- m_WAbil.MaxMP :=
- _LMIN({$IF HIGHHP}g_Config.nMaxHealth{$ELSE} High(Word){$IFEND},
- m_WAbil.MaxMP + UserMagic.MagicInfo.wPower * (UserMagic.btLevel + 1)
- * UserMagic.MagicInfo.wSpell);
- end;
- //致命一击
- SKILL_SMITE: begin
- m_btHitPowerAddOn := _MIN(High(Word),
- m_btHitPowerAddOn + UserMagic.MagicInfo.wPower * (UserMagic.btLevel + 1)
- * UserMagic.MagicInfo.wSpell);
- end;
- //暴击精通
- SKILL_SMITEMASTER: begin
- m_wSmiteDamagePlus := _MIN(High(Word),
- m_wSmiteDamagePlus + UserMagic.MagicInfo.wPower * (UserMagic.btLevel + 1)
- * UserMagic.MagicInfo.wSpell);
- end;
- //怒气回复
- SKILL_ENERGYSPEED: begin
- m_wJointAttackEnergyPlus := _MIN(High(Word),
- m_wJointAttackEnergyPlus + UserMagic.MagicInfo.wPower * (UserMagic.btLevel + 1)
- * UserMagic.MagicInfo.wSpell);
- end;
- end;
- end;
- end;
- end;
- end;
复制代码
你没见过的变量那就是后加
致命一击+暴击精通生效判定代码(仅供参考,具体数值自行调整)
TBaseObject.GetPowerDamage
- else if (TPlayObject(Attacker).m_btHitPowerAddOn > 0) and
- //原本是100内随机,改成800,800之后必刀刀暴击
- //20220605 暴击
- (Random(800) < TPlayObject(Attacker).m_btHitPowerAddOn) then
- begin
- m_boDoubleStruck2 := True;
- r := Random(100);
- if r > 88 then
- Result := Pwr * 2
- else if r > 68 then
- Result := Round(Pwr * 1.9)
- else if r > 58 then
- Result := Round(Pwr * 1.8)
- else if r > 48 then
- Result := Round(Pwr * 1.7)
- else if r > 48 then
- Result := Round(Pwr * 1.6)
- else
- Result := Round(Pwr * 1.5);
- //暴击伤害内增加暴击精通
- Result := Round(Result * (1 + (m_wSmiteDamagePlus / 500))) + Attacker.m_wDoublePower * 2;
复制代码
怒气回复生效代码(数值仅供参考,具体自行调整)
TBaseObject.Run()
- //怒气回复可以加在这里
- {$IF DEBUGTEST = 1}
- nHP := Round((2 + Random(3) + Random(nAddLevel)) *
- g_Config.nEnergyStepUpRate);
- {$ELSE}
- nHP := Round((2 + Random(3) + Random(nAddLevel)) *
- (g_Config.nEnergyStepUpRate / 10));
- {$IFEND}
- //前50点怒气回复属于沉默成本,没用
- nHP := nHP + Round(m_wJointAttackEnergyPlus / 50) + _MIN(100, m_btReduceSpellTime);
复制代码
天赋数据库(部分):
Power为每级加点数量,Spell为倍数,我的算法是 (技能等级+1)*Power*Spell
具体怎么加自己发挥
我就说一下怎么写
代码出处:论坛用户:vkdfkc大佬
|
|