Page 1 of 1

Some slight inaccuracies regarding magery

Posted: Sun May 09, 2010 3:44 pm
by nightshark
A couple of things people probably haven't noticed, or just plain forgotten from OSI days

1. You should get interrupted by a spell even when it is reflected. I tested this last night and it wasn't the case. Unless this was changed with the magic reflect revamp when UO:R was released, reflected spells always interrupted the target. It should be apparent in the demo (which I don't have)

2. "Double kills" with magery should not be possible. This means that after a player is dead, they are no longer capable of doing any damage with their delayed spells. There were no such thing as double kills on OSI unless poison or explosion pots were the reason.

eg; If I release an explosion on someone and die before the explosion hits, that explosion should do 0 damage to the target. This also applied to spells that NPCs/monsters cast - you could not be killed by a lich, for example, that was already dead (poison being the exception).

----------------

Also, I'm not sure about this one, because I thought it was already in. Today a couple of thieves were camping my house for about an hour trying to stealth in. At one point a thief stole from me, so I attacked him and suicided, giving him a murder count. 5 minutes later, I ran outside on my blue and he was still able to steal from me.

After he received his murder count, shouldn't he have been kicked out of the thieves guild (and not able to steal from me?). I know for a fact I gave him a count, because I got the bounty gump on him.

Re: Some slight inaccuracies regarding magery

Posted: Sun May 09, 2010 3:52 pm
by MatronDeWinter
I dont know about the rest of your problems, but as far as that thief-thing is concerned.

You do not have to be in the thieves guild to steal from grey/red/perma/orange players.

Re: Some slight inaccuracies regarding magery

Posted: Sun May 09, 2010 4:03 pm
by nightshark
MatronDeWinter wrote:I dont know about the rest of your problems, but as far as that thief-thing is concerned.

You do not have to be in the thieves guild to steal from grey/red/perma/orange players.
I was on a blue character, not perma. I was not an aggressor to him either. He stole some mandrake root and immediately showed up as perma grey to me. The characters in question previously had no interaction prior to the event taking place.

I assumed he should have been kicked out immediately upon receiving the count

Actually, the more I think about it, it's possible he didn't steal from me at all. He may have still been grey from murdering the other character, if I overestimated the time-frame between the events

Re: Some slight inaccuracies regarding magery

Posted: Tue May 11, 2010 7:49 pm
by Gilgamesh
I remember doing a double kill before, but not with explosion. My friend and I were dueling and we both let off ebolts at the same time and both died. This was towards the end of t2a, either right before or right after insta-hit was taken out.

Re: Some slight inaccuracies regarding magery

Posted: Tue May 11, 2010 7:54 pm
by nightshark
Gilgamesh wrote:I remember doing a double kill before, but not with explosion. My friend and I were dueling and we both let off ebolts at the same time and both died. This was towards the end of t2a, either right before or right after insta-hit was taken out.
Even the delay on ebolts didn't allow for double kills, I'm positive of it. It had to be something else, or you're thinking of a runUO shard. Damage would immediately cease after death which was very obvious when killing monsters. There were also numerous times where duels would end in "whoever released their ebolt first"... I duelled a heck of a lot on OSI. I suppose if noone cares enough to check on demo, I'll wait until I have the bandwidth to download it.

Re: Some slight inaccuracies regarding magery

Posted: Wed May 12, 2010 10:40 pm
by Gilgamesh
I'm not going to argue because it's 10 year old memory, but honestly if I could get God in here to confirm I'd put $1000 on it that the event I described happened. I remember it vividly, because my friend was just getting good at dueling and we dueled three times, he won one, I won one, and we "tied" the other. I remember how annoyed we were having to find a way to res in the middle of nowhere.

But if the game mechanics on some official site says it's not possible, I won't argue. It's just that I can't think of a way that I could have that memory from anything else. That friend never played on an emulator, quit OSI servers after UO:R like I did.

Re: Some slight inaccuracies regarding magery

Posted: Tue May 18, 2010 1:30 pm
by rouss
nightshark wrote:A couple of things people probably haven't noticed, or just plain forgotten from OSI days

1. You should get interrupted by a spell even when it is reflected. I tested this last night and it wasn't the case. Unless this was changed with the magic reflect revamp when UO:R was released, reflected spells always interrupted the target. It should be apparent in the demo (which I don't have)
here is an actual code from the demo:

Code: Select all

        trigger washit
        {
           int Q4IB = (getSpellCircle(spellObj) - 1) * 1000 / 7;
           Q4IB = Q4IB + damamt * 20;
           int Q5NC = getSkillSuccessChance(this, 25, Q4IB, 40) - random(0, 999);
           if (Q5NC <= 0)
           {
              systemMessage(this, "Your concentration is disturbed, thus ruining thy spell.");
              doDisrupt(this);
              return (1);
           }
           return (1);
        }

as far as i can tell it has nothing to do with spell reflection, it just counts spell circle, amount of damage dealt and magery skill value.

Re: Some slight inaccuracies regarding magery

Posted: Tue May 18, 2010 2:07 pm
by Faust
Gilgamesh wrote:I remember doing a double kill before, but not with explosion. My friend and I were dueling and we both let off ebolts at the same time and both died. This was towards the end of t2a, either right before or right after insta-hit was taken out.
There is no reason that this shouldn't be possible on the shard right now. The energy bolt spell along with every other damaging spell besides debuffs and harm have a 1 second delay until damage is dealt. If two people fighting each other would release the spell at the same time at low hp it would kill both players. Pretty sure that I have even seen this happen in a duel on here.

This could easily be tested on the demo in online mode.

Re: Some slight inaccuracies regarding magery

Posted: Wed May 19, 2010 9:32 pm
by Derrick
rouss wrote:
nightshark wrote:A couple of things people probably haven't noticed, or just plain forgotten from OSI days

1. You should get interrupted by a spell even when it is reflected. I tested this last night and it wasn't the case. Unless this was changed with the magic reflect revamp when UO:R was released, reflected spells always interrupted the target. It should be apparent in the demo (which I don't have)
as far as i can tell it has nothing to do with spell reflection, it just counts spell circle, amount of damage dealt and magery skill value.
I can't find any other evidence of reflection disturbing either, not to say it's not in there. It would be more efficient to test this on the multi-player demo than to scour OSI code I think.

This is the code from the explosion spell which switches the targets when the original target has reflection up:

Code: Select all

      if(hasScript(usedon, "reflctor"))   // if the target has reflect up
      {
        doMobAnimation(usedon, 0x37B9, 0x06, 0x05, 0x00, 0x00); // play sprite animation on the target
        Q4JR(usedon, user, 0x01);  // call the Explosion effect with caster and target switched
        detachScript(usedon, "reflctor");  // remove reflect from the target
      }
      else
      {
        Q4JR(user, usedon, 0x00); // call the Explosion effect normally
      }

Re: Some slight inaccuracies regarding magery

Posted: Wed May 19, 2010 9:40 pm
by Faust
The reflect code that calls the regular spell functions simply swap the code from the caster to the user. I don't see why it would be any different since this is the case in all honesty.

Reflected

Code: Select all

Q4JR(usedon, user, 0x01);  // call the Explosion effect with caster and target switched
Not Reflected

Code: Select all

Q4JR(user, usedon, 0x00); // call the Explosion effect normally
The second piece of code calls the regular routine for explosion and the first piece of code simply uses that same routine and swaps the target. The only difference here is the 3rd parameter that is 0 for the non-reflected and the 1 for the reflected. I'm not sure what those variables are used for here. Perhaps, this could call off an interruption but seems unlikely.

Re: Some slight inaccuracies regarding magery

Posted: Wed May 19, 2010 9:51 pm
by nightshark
I should mention this because my first post wasn't completely clear: my entire memory of reflect disturbing is from UO:R, when I played a scribe mage (which allowed me to reflect a LOT of spells). If I was caught in gank, a decicated weaken/clumsy/feeble spammer could keep me from recalling, even with reflect up. The reason I posted it as era accurate was that despite the revamp of MR, it seems unlikely the code was changed on a spell reflecting.

Is there actually a demo shard to test on? How do you connect to it? Can you multi client?

Re: Some slight inaccuracies regarding magery

Posted: Wed May 19, 2010 9:51 pm
by Derrick
Faust wrote:The second piece of code calls the regular routine for explosion and the first piece of code simply uses that same routine and swaps the target. The only difference here is the 3rd parameter that is 0 for the non-reflected and the 1 for the reflected. I'm not sure what those variables are used for here. Perhaps, this could call off an interruption but seems unlikely.
It gets a little complicated after this, passing objects in global vars etc...
The final destination of that 0x00 or 0x01 appears to be related to scaling the damage in this function (as selfTarget_Q5NQ) which adjusts damage amount from a spell based on a few factors including resist and "in town":

Code: Select all

integer Q428(object Q5UY, integer Q45Y, object from_Q5U8, object dest, integer realIndex_Q65M, integer selfTarget_Q5NQ)
{
  integer damage = Q45Y;
  if(isNPC(dest))
  {
    damage = Q45Y * 0x02;
  }
  object caster = from_Q5U8;
  if(selfTarget_Q5NQ)
  {
    caster = dest;
  }
  damage = getBaseDamage_Q43G(Q5UY, caster, damage);
  if(isValid(dest))
  {
    if(inJusticeRegion(getLocation(dest)))
    {
      damage = checkResistedInTown_Q4BI(from_Q5U8, dest, damage);
    }
    else
    {
      damage = checkResisted_Q4BH(from_Q5U8, dest, damage);
    }
  }
  damage_Q423(from_Q5U8, dest, damage, realIndex_Q65M, selfTarget_Q5NQ);
  return(damage);
}
It would take hours to anayze this fully, it may be way easier to just test this in demo.

Re: Some slight inaccuracies regarding magery

Posted: Wed May 19, 2010 9:54 pm
by Derrick
nightshark wrote:I should mention this because my first post wasn't completely clear: my entire memory of reflect disturbing is from UO:R, when I played a scribe mage (which allowed me to reflect a LOT of spells). If I was caught in gank, a decicated weaken/clumsy/feeble spammer could keep me from recalling, even with reflect up.

Is there actually a demo shard to test on? How do you connect to it? Can you multi client?
This could easily have been the result of a change after the demo, within T2A, or in UO:R. Finding that this isn't in the demo won't say anything about whether this worked in T2A, as the Demo is pre-T2A; however, if we did find this in the demo, coupled with your report that it worked this way in UO:R, it'd be a safe bet that it was like that all the way through.

There is no dedicated UODemo server, but you can run your own. The info on this can be found at http://uodemo.joinuo.com

Specifically, Publish 10 : http://uodemo.joinuo.com/?title=Uodemo%2B

We cannot get into discussing this in this thread though. Check out http://forum.joinuo.com/viewforum.php?f=32&start=0