Some slight inaccuracies regarding magery

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.
Post Reply
User avatar
nightshark
UOSA Subscriber!
UOSA Subscriber!
Posts: 4550
Joined: Mon Apr 20, 2009 10:47 pm

Some slight inaccuracies regarding magery

Post 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.
<green> grats pink and co. .... the 3 of you f---ing scrubs together can blow up a bard. IMPRESSIVE

User avatar
MatronDeWinter
UOSA Donor!!
UOSA Donor!!
Posts: 7249
Joined: Wed Mar 04, 2009 3:35 am
Location: 你的錢包

Re: Some slight inaccuracies regarding magery

Post 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.

User avatar
nightshark
UOSA Subscriber!
UOSA Subscriber!
Posts: 4550
Joined: Mon Apr 20, 2009 10:47 pm

Re: Some slight inaccuracies regarding magery

Post 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
<green> grats pink and co. .... the 3 of you f---ing scrubs together can blow up a bard. IMPRESSIVE

Gilgamesh
Posts: 118
Joined: Sun Aug 03, 2008 4:21 pm

Re: Some slight inaccuracies regarding magery

Post 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.

User avatar
nightshark
UOSA Subscriber!
UOSA Subscriber!
Posts: 4550
Joined: Mon Apr 20, 2009 10:47 pm

Re: Some slight inaccuracies regarding magery

Post 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.
<green> grats pink and co. .... the 3 of you f---ing scrubs together can blow up a bard. IMPRESSIVE

Gilgamesh
Posts: 118
Joined: Sun Aug 03, 2008 4:21 pm

Re: Some slight inaccuracies regarding magery

Post 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.

User avatar
rouss
Posts: 414
Joined: Wed Apr 15, 2009 12:16 pm

Re: Some slight inaccuracies regarding magery

Post 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.
Chesapeake Nov. 1998 — July 2000
Second Age Feb. 2009 —

User avatar
Faust
Posts: 6247
Joined: Mon Sep 22, 2008 7:01 pm

Re: Some slight inaccuracies regarding magery

Post 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.

User avatar
Derrick
Posts: 9004
Joined: Thu Dec 13, 2007 7:49 pm
Location: Cove
Contact:

Re: Some slight inaccuracies regarding magery

Post 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
      }
Image
"The text in this article or section may be incoherent or very hard to understand, and should be reworded if the intended meaning can be determined."

User avatar
Faust
Posts: 6247
Joined: Mon Sep 22, 2008 7:01 pm

Re: Some slight inaccuracies regarding magery

Post 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.

User avatar
nightshark
UOSA Subscriber!
UOSA Subscriber!
Posts: 4550
Joined: Mon Apr 20, 2009 10:47 pm

Re: Some slight inaccuracies regarding magery

Post 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?
Last edited by nightshark on Wed May 19, 2010 9:52 pm, edited 1 time in total.
<green> grats pink and co. .... the 3 of you f---ing scrubs together can blow up a bard. IMPRESSIVE

User avatar
Derrick
Posts: 9004
Joined: Thu Dec 13, 2007 7:49 pm
Location: Cove
Contact:

Re: Some slight inaccuracies regarding magery

Post 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.
Image
"The text in this article or section may be incoherent or very hard to understand, and should be reworded if the intended meaning can be determined."

User avatar
Derrick
Posts: 9004
Joined: Thu Dec 13, 2007 7:49 pm
Location: Cove
Contact:

Re: Some slight inaccuracies regarding magery

Post 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
Image
"The text in this article or section may be incoherent or very hard to understand, and should be reworded if the intended meaning can be determined."

Post Reply