Spell Interrption:

For ideas on how to make Second Age a better shard. Can it get any better? Maybe.
Forum rules
Posts in this forum are expected to be constructive, realistic and civil. Inflamatory or off topic posts will be removed.
SighelmofWyrmgard
Posts: 881
Joined: Thu May 20, 2010 5:34 pm

Re: Spell Interrption:

Post by SighelmofWyrmgard »

You suggest that "removeCallback(this, 0x80);" be inserted into the Q5NC "disrupted, yes" check, rather than simply added into Q4AR. Without offering offense, may I ask after the reasoning; is it merely to keep Q4AR streamlined?

SS

EDIT:

P.S. I don't know how the following might fit in, but this just popped into my head.

Are "harmful" non-direct-damage spells coded to inflict 1 hp of pre-halved damage (which would then be halved, and truncated, to 0); is that perhaps why there existed a double interrupt check for magic, versus a single check for melee damage (and perhaps the reason why a single spell could also "inflict" double-bandage-slips)?

I don't even know where I might be going with this sudden diversion ...

SS

EDITEDIT:

P.P.S. Yes, I do know (sort-of) where I'm going.

Consider the following supposition,

1. Debuff successfully cast: 1 hp pre-resisted, pre-halved damage ("Mister Fuji is attacking you!")
2. Resist check: damage is halved/not-halved due to resist check result
3. Initial disrupt check evaluates @ either 0 damage, or 1 damage;
4. Damage is finalized in order to be applied (halved "again"; even not resisted, damage is truncated to 0)
5. Second disrupt check, based on damage to be applied to target.

A resisted debuff is checked @ 0,0, while an unresisted debuff is checked @ 1,0.

I would guess, under such an algorithmic scheme, that "0,0" should return no chance for disruption, while any other result should initiate a more-sophisticated disruption-chance calculation.

Is there anything in this supposition that marries to the interactions of our code; should there be?

SS
SighelmofWyrmgard wrote:
uosa44 wrote:For sale, by original owner:
1 Human Brain, never been used, only slightly damaged, still in original packaging.
$1, obo
FTFY.

SS
uosa44 wrote:The inability for this person to respond in such a crazy manner proves my point.

Kaivan
UOSA Donor!!
UOSA Donor!!
Posts: 2923
Joined: Wed Aug 13, 2008 11:07 pm

Re: Spell Interrption:

Post by Kaivan »

SighelmofWyrmgard wrote:You suggest that "removeCallback(this, 0x80);" be inserted into the Q5NC "disrupted, yes" check, rather than simply added into Q4AR. Without offering offense, may I ask after the reasoning; is it merely to keep Q4AR streamlined?

SS
This is basically so that the proper code only fires when needed. Q4AR is intended to unfreeze the caster and remove the casting script, both when the caster is disrupted and when the caster successfully completes a cast. The difference is that in one of these cases, a callback still exists on the character due to the disruption. The proper thing to do is to clean up that callback when disrupting a spell, since the existence of the callback is relevant to starting a new spell, but only when the spell is disrupted, which is why it fires as part of the successful disruption code.
SighelmofWyrmgard wrote:EDIT:

P.S. I don't know how the following might fit in, but this just popped into my head.

Are "harmful" non-direct-damage spells coded to inflict 1 hp of pre-halved damage (which would then be halved, and truncated, to 0); is that perhaps why there existed a double interrupt check for magic, versus a single check for melee damage (and perhaps the reason why a single spell could also "inflict" double-bandage-slips)?

I don't even know where I might be going with this sudden diversion ...

SS

EDITEDIT:

P.P.S. Yes, I do know (sort-of) where I'm going.

Consider the following supposition,

1. Debuff successfully cast: 1 hp pre-resisted, pre-halved damage ("Mister Fuji is attacking you!")
2. Resist check: damage is halved/not-halved due to resist check result
3. Initial disrupt check evaluates @ either 0 damage, or 1 damage;
4. Damage is finalized in order to be applied (halved "again"; even not resisted, damage is truncated to 0)
5. Second disrupt check, based on damage to be applied to target.

A resisted debuff is checked @ 0,0, while an unresisted debuff is checked @ 1,0.

I would guess, under such an algorithmic scheme, that "0,0" should return no chance for disruption, while any other result should initiate a more-sophisticated disruption-chance calculation.

Is there anything in this supposition that marries to the interactions of our code; should there be?

SS
I can't answer whether our code does or doesn't do 1 damage to a player for debuffs for the purposes of disruptions, but I can tell you that through more detailed testing on the demo, it is clear that debuffs always do 0 damage at all times, and it is also clear that due to the order of operations bug in the parser, that 0 damage will disrupt a second circle or greater spell 100% of the time at any level of magery.
UOSA Historian and former staff member: August 11, 2008 - June 19, 2016

Useful links for researching T2A Mechanics

Stratics - UO Latest Updates - Newsgroup 1 - Noctalis - UO98.org

SighelmofWyrmgard
Posts: 881
Joined: Thu May 20, 2010 5:34 pm

Re: Spell Interrption:

Post by SighelmofWyrmgard »

Regarding Q5NC versus Q4AR, I do not necessarily disagree: otherwise, there's some "tomayto, tomahto", there.

My "0,0/1,0" supposition is also allowing for potential interactions with other systems (one, in particular, is the "murder-count-qualification" evaluation, which would likely be invoked by "event: debuff lands (on innocent); 1 hp (initial/temporary) damage"). If I am an innocent, and Mister Fuji disrupts my Recall with a Clumsy, and then that Poison Elemental kills me, can I report Mister Fuji for murder; can he also be reported if I resist and/or he fails to disrupt me, but my rune-location is blocked, and the Poison Elemental still kills me?

I don't want to drag this discussion all over the Sahara, but there may be a great number of "involved" interacting functions that would need to be considered in the context of the whole. In such an environment, I might want "removeCallback" attached to Q4AR, rather than (only) to Q5NC.

Opinions; other styles of feedback?

SS
SighelmofWyrmgard wrote:
uosa44 wrote:For sale, by original owner:
1 Human Brain, never been used, only slightly damaged, still in original packaging.
$1, obo
FTFY.

SS
uosa44 wrote:The inability for this person to respond in such a crazy manner proves my point.

Kaivan
UOSA Donor!!
UOSA Donor!!
Posts: 2923
Joined: Wed Aug 13, 2008 11:07 pm

Re: Spell Interrption:

Post by Kaivan »

Well, what information we have regarding whether a person is or isn't at "full life" suggests that if the person is poisoned, has a debuff attached to them, or later if they were paralyzed, then they weren't considered to be at "full life". In most respects, this is relatively easy to do by checking to see if the person is at full life when something beneficial happens to them (e.g. when regenerating health or being healed/cured). If they aren't, then any list of harmful actions taken against them by someone who couldn't freely do so would remain uncleared. Once they did reach full life, or recalled, that list would be cleared. By and large, checking for whether someone is or isn't at full life doesn't require anything complicated, merely checking to see if the appropriate scripts are attached to them, or checking for the frozen flag, and it doesn't require that any actual damage has been done to them.

Edit: Regarding Q4AR, there is no real interaction between things like spell disruption and criminal status, short of the fact that harmful actions (and thereby mostly criminal ones) "hit" your opponents. Clearing the callback before invoking A4AR doesn't cause any problems elsewhere.
UOSA Historian and former staff member: August 11, 2008 - June 19, 2016

Useful links for researching T2A Mechanics

Stratics - UO Latest Updates - Newsgroup 1 - Noctalis - UO98.org

SighelmofWyrmgard
Posts: 881
Joined: Thu May 20, 2010 5:34 pm

Re: Spell Interrption:

Post by SighelmofWyrmgard »

I possess fragmentary memories of a discussion that involved, specifically, "the paralyze spell inflicting 1hp of damage" in direct-connection to activating a "murderer: yes" style of flag on an aggressor. This is why I was thinking of "1 hp of (pre-resisted, pre-halved) damage" and double disruption checks, and wondering if several birds were being killed with one stone.

Of course, Kaivan, you know much better than I the provenance of the code that's operating here, at UOSA. So far as I understand there are 4 categories:
  • more-or-less unmodified RunUO "basecode", each tiny bit of which possesses its own relationship in comparison to what is known/suspected to have been live on OSI;
  • code based directly upon extraction from the demo, perhaps updated according to OSI publishes, and/or modified to operate on a largely-RunUO foundation;
  • customized code assembled "from scratch" to best-emulate well-documented era-accurate mechanics, without necessarily any reliable reference to actual OSI code;
  • stuff that's a "hodgepodge" of some/all of the above.
And there may be more types of which I have not conceived. In any event, when it comes to any actual analysis, I don't know the provenance of any particular section, so I can't knowledgably direct any analysis ... "For entertainment purposes", I remain intrigued and enlightened, but I don't think it's licit for me to (continue to) divert this topic for my own self-indulgence, or for the purposes of undirected speculation(s).

Bah, I'll try to lay my hands on the UO demo, and glean what I can from UO98.org, and maybe then I can be useful.

I was/am fascinated by all the stuff you've provided. Thanks, again.

SS
SighelmofWyrmgard wrote:
uosa44 wrote:For sale, by original owner:
1 Human Brain, never been used, only slightly damaged, still in original packaging.
$1, obo
FTFY.

SS
uosa44 wrote:The inability for this person to respond in such a crazy manner proves my point.

Post Reply