About the new combat system - Rizz - 07-06-2015 06:22 AM
I noticed that now is very easy to miss a target, is there some kind of local or argn to manage the chance to hit?
Should I script something on my own?
RE: About the new combat system - darksun84 - 07-06-2015 06:32 AM
In @HitTry: actdiff < 0 always fail, >=0 always success.
RE: About the new combat system - Lazarus - 07-14-2015 07:34 AM
(07-06-2015 06:22 AM)Rizz Wrote: I noticed that now is very easy to miss a target, is there some kind of local or argn to manage the chance to hit?
Should I script something on my own?
Yes. Is something weird. I want the old system :'( (with the changes of damage formula)
RE: About the new combat system - escribano - 07-14-2015 10:45 AM
I've noticed that too... so there is no way to change it unless we re-script a part of sphere that have been "improved"??? whats the chances??? its funny or sad? :/
Back the old system or unleast let us chooose the system we want!
RE: About the new combat system - Lazarus - 07-14-2015 01:19 PM
(07-14-2015 10:45 AM)escribano Wrote: I've noticed that too... so there is no way to change it unless we re-script a part of sphere that have been "improved"??? whats the chances??? its funny or sad? :/
Back the old system or unleast let us chooose the system we want!
Chill out man they are working. I know, it's frustrating because we can't live our shards fine, but they're trying the best, Coruja and XuN have reworked all the emulator and fixed the bugs that Sphere has had. Now is better, but when they change something big (like the combat system and speed formulas) there are mistakes sometimes.
I agree with your call, hope they will let us choose the old system too because we all need that.
RE: About the new combat system - XuN - 07-14-2015 04:45 PM
Here's the old formula scripted and commented like we had it in the source:
Code:
[function f_HitChance]
// src should be my target
if !(<src.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 ((<src.flags>&statf_freeze) || (<src.flags>&statf_sleeping))
return <r10>
endif
local.iSkillVal = <i.<action>> // value of the skill whe are using to hit.
// Offensive value mostly based on your skill and TACTICS.
// 0 - 1000
local.iSkillAttack = <local.iSkillVal> + <eval <tactics>/2>
// Defensive value mostly based on your tactics value and random DEX,
// 0 - 1000
local.iSkillDefend = <src.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= <src.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 = (<local.iSkillDefend> + (<local.iStam>*9))/2
else
// The defender is using a nonranged, or they both use bows.
local.iSkillDefend = (<local.iSkillDefend> + (<local.iStam>*10))/2
endif
local.iDiff = (<local.iSkillAttack> - <local.iSkillDefend>) /5
local.iDiff /= 10
if (<local.iDiff> < 0)
local.iDiff = 0 // just means it's very hard.
elseif (<local.iDif>> 100)
local.iDiff = 100 // just means it's very easy.
endif
return <r<local.iDiff>> //always need to have some chance.
EDIT: the less iDiff, the more difficult.
RE: About the new combat system - darksun84 - 07-14-2015 06:36 PM
That was a nice hit formula , I like the idea of more easy to hit an opponent with a ranged weapon
RE: About the new combat system - Lazarus - 07-16-2015 01:22 AM
(07-14-2015 04:45 PM)XuN Wrote: Here's the old formula scripted and commented like we had it in the source:
Code:
[function f_HitChance]
// src should be my target
if !(<src.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 ((<src.flags>&statf_freeze) || (<src.flags>&statf_sleeping))
return <r10>
endif
local.iSkillVal = <i.<action>> // value of the skill whe are using to hit.
// Offensive value mostly based on your skill and TACTICS.
// 0 - 1000
local.iSkillAttack = <local.iSkillVal> + <eval <tactics>/2>
// Defensive value mostly based on your tactics value and random DEX,
// 0 - 1000
local.iSkillDefend = <src.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= <src.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 = (<local.iSkillDefend> + (<local.iStam>*9))/2
else
// The defender is using a nonranged, or they both use bows.
local.iSkillDefend = (<local.iSkillDefend> + (<local.iStam>*10))/2
endif
local.iDiff = (<local.iSkillAttack> - <local.iSkillDefend>) /5
local.iDiff /= 10
if (<local.iDiff> < 0)
local.iDiff = 0 // just means it's very easy.
elseif (<local.iDif>> 100)
local.iDiff = 100 // just means it's very hard.
endif
return <r<local.iDiff>> //always need to have some chance.
And what's changed in the new formula? why is so hard to hit?
How can I reactivate this formula in my sphere? just change it in Combat?
RE: About the new combat system - Rizz - 07-16-2015 08:07 AM
Code:
local.iDiff = (<local.iSkillAttack> - <local.iSkillDefend>) /5
local.iDiff /= 10
if (<local.iDiff> < 0)
local.iDiff = 0 // just means it's very easy.
elseif (<local.iDif>> 100)
local.iDiff = 100 // just means it's very hard.
endif
WHO ATTACKS skillsum 1000
WHO DEFENDS skillsum 2000
local.iDiff = 0 --> always hit, are you sure is correct?
100 means 100% hits or 100% miss?
RE: About the new combat system - XuN - 07-18-2015 07:17 PM
Didn't read the comments, just copied them.
Success formula is something like this:
[function Skill_CheckSuccess]
local.dif=<eval <ActDiff>*10>
return <qval <local.diff> > <r1000>?1:0>
There are some more checks to make a bell curved check, but they are rarelly used and very complex and long to script them now 
Coming back to topic, these comments are wrong ... they should be the opposite.
|