Lazarus 
Master
 
Posts: 352
Likes Given: 11
Likes Received: 7 in 6 posts
Joined: Jun 2012
Reputation: 1
Hybris Ultima Online
![]()
|
RE: About the new combat system
(07-24-2015 04:09 AM)Rizz Wrote: Mine is correct... but check it anyway
Code:
[function f_HitChance]
REF1=<args>
// REF1 should be my target
if !(<REF1.isChar>)
return <r31>// must be a training dummy
endif
if ((<brain>==brain_guard) && (<serv.GuardsInstantKill>==1))
return 0
endif
// Frozen targets should be easy.
if ((<REF1.flags>&statf_freeze) || (<REF1.flags>&statf_sleeping))
return <r10>
endif
local.iSkillVal = <<serv.skill.<action>.key>> // value of the skill whe are using to hit.
// Offensive value mostly based on your skill and TACTICS.
// 0 - 1000
local.iSkillAttack = <eval (<local.iSkillVal> + ( <tactics>/2))>
serv.b local.iSkillAttack <dlocal.iSkillAttack>
// Defensive value mostly based on your tactics value and random DEX,
// 0 - 1000
local.iSkillDefend = <REF1.tactics>
// Make it easier to hit people havin a bow or crossbow due to the fact that its
// not a very "mobile" weapon, nor is it fast to change position while in
// a fight etc. Just use 90% of the statvalue when defending so its easier
// to hit than defend == more fun in combat.
local.iStam= <REF1.dex>
if (<serv.skill.<action>.flags>&skf_ranged)
// The defender uses ranged weapon and the attacker is not.
// Make just a bit easier to hit.
local.iSkillDefend = (<dlocal.iSkillDefend> + (<dlocal.iStam>*9))/2
serv.b local.iSkillDefend1 <dlocal.iSkillDefend>
else
// The defender is using a nonranged, or they both use bows.
local.iSkillDefend = (<dlocal.iSkillDefend> + (<dlocal.iStam>*10))/2
serv.b local.iSkillDefend2 <dlocal.iSkillDefend>
endif
local.iDiff = ((<dlocal.iSkillAttack> - <dlocal.iSkillDefend>) /5)
serv.b local.iDiff <dlocal.iDiff>
local.iDiff /= 10
serv.b local.iDiff <dlocal.iDiff>
if (<local.iDiff> < 0)
local.iDiff = 0 // just means it's very hard.
elseif (<local.iDiff>> 100)
local.iDiff = 100 // just means it's very easy.
endif
return <r<local.iDiff>> //always need to have some chance.
How do you call it?
ON=@HITTRY
actdiff = <f_hitchance>
??
Thanks, trying.
(This post was last modified: 07-24-2015 04:36 AM by Lazarus.)
|
|
07-24-2015 04:30 AM |
|
|