Jump to content


Photo

Luck spell missing thieving skill bonuses


14 replies to this topic

#1 aVENGER_(RR)

aVENGER_(RR)

    Sneaksie!

  • Fixpackers
  • 1008 posts
  • Gender:Male

Posted 17 January 2012 - 02:11 AM

In the unmodded game, the Luck spell doesn't work as per its description. It merely provides a luck bonus. Here's the original description:

The recipient of this spell is lucky in everything that he does for the next 3 rounds. He receives a 5% bonus to any of his actions. This includes saving throws, to hit chances, thieving skills, etc.


Currently, the fixpack restores the bonus to saving throws but doesn't do anything about thieving skills. If we decide to fix that, the revised code would look like this:

// luck not providing saving throw and thieving skill bonuses; duration incorrect
COPY_EXISTING ~spwi209.spl~ ~override~
  READ_LONG  0x64 "abil_off"
  READ_SHORT 0x68 "abil_num"
  READ_LONG  0x6a "fx_off"
  SET "fx_delta" = 0
  FOR (index = 0 ; index < abil_num ; index = index + 1 ) BEGIN // cycle thru abilities
    READ_SHORT  ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
    READ_SHORT  ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
    SET "abil_fx_idx" = ("%abil_fx_idx%" + "%fx_delta%")
    WRITE_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "%abil_fx_idx%"
    // first fix duration while we're here
    FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
      READ_SHORT ("%fx_off%" +        (0x30 * ("%index2%" + "%abil_fx_idx%"))) "opcode"
      READ_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "duration"
      READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "resref"
      PATCH_IF ("%duration%" = 20) BEGIN
        WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%index2%" + "%abil_fx_idx%"))) 18
      END
      PATCH_IF (("%opcode%" = 174) AND ("%resref%" STRING_EQUAL_CASE "EFF_M05")) BEGIN
        WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%index2%" + "%abil_fx_idx%"))) 1 // fix invalid sound effect duration
      END
      PATCH_IF ("%opcode%" = 133) BEGIN
        READ_ASCII ("%fx_off%" +        (0x30 * ("%index2%" + "%abil_fx_idx%"))) "clone" (0x30)
        FOR (index3 = 33 ; index3 < 38 ; index3 = index3 + 1) BEGIN
          INSERT_BYTES   ("%fx_off%" +        (0x30 * ("%index2%" + "%abil_fx_idx%"))) 0x30 // new effect
            WRITE_ASCIIE ("%fx_off%" +        (0x30 * ("%index2%" + "%abil_fx_idx%"))) "%clone%"
            WRITE_SHORT  ("%fx_off%" +        (0x30 * ("%index2%" + "%abil_fx_idx%"))) "%index3%" // opcode: one of them thar saves
        END
        PATCH_FOR_EACH ~thskill~ IN ~59~ ~90~ ~91~ ~92~ ~275~ ~276~ ~277~ BEGIN                   // all 7 thieving skill opcodes
        INSERT_BYTES            ("%fx_off%" +        ("%index2%" + "%abil_fx_idx%")) 0x30         // new effect
          WRITE_EVALUATED_ASCII ("%fx_off%" +        ("%index2%" + "%abil_fx_idx%")) "%clone%"    // cloned effect
          WRITE_SHORT           ("%fx_off%" +        ("%index2%" + "%abil_fx_idx%")) "%thskill%"  // opcode
          WRITE_LONG            ("%fx_off%" + 0x04 + ("%index2%" + "%abil_fx_idx%")) 5            // param1: 5 (5% bonus)
          WRITE_LONG            ("%fx_off%" + 0x08 + ("%index2%" + "%abil_fx_idx%")) 0            // param2: 0 (cumulative bonus type)
        END
        SET "fx_delta" = ("%fx_delta%" + 12)
        SET "index2" = ("%index2%" + 12)
        SET "abil_fx_num" = ("%abil_fx_num%" + 12)
      END
    END
    WRITE_SHORT  ("%abil_off%" + 0x1e + (0x28 * "%index%")) "%abil_fx_num%"
  END
  BUT_ONLY_IF_IT_CHANGES

Edited by aVENGER_(RR), 17 January 2012 - 02:44 AM.

Retired modder

Rogue Rebalancing - Author
aTweaks - Author
Wizard Slayer Rebalancing - Co-Author
BG2 Fixpack - Contributor

#2 Dakk

Dakk
  • Members
  • 809 posts
  • Gender:Male

Posted 17 January 2012 - 03:55 AM

Does this affect the (unkitted) Bard song? I've understood that it's pretty bad, either because it's bugged per se, or because the Luck effect doesn't really do much.

#3 aVENGER_(RR)

aVENGER_(RR)

    Sneaksie!

  • Fixpackers
  • 1008 posts
  • Gender:Male

Posted 17 January 2012 - 04:12 AM

As far as I know, the default bard song raises/restores the party's morale in the original game and does nothing else. But that's just what I got from in-game testing back in the day.

Frankly, I don't think the default bard song effects have ever been properly documented. You can try asking Ascension64 to look into it since that would probably require checking the .exe.
Retired modder

Rogue Rebalancing - Author
aTweaks - Author
Wizard Slayer Rebalancing - Co-Author
BG2 Fixpack - Contributor

#4 Dakk

Dakk
  • Members
  • 809 posts
  • Gender:Male

Posted 17 January 2012 - 04:39 AM

Good thinking Sir!
The reason I was wondering if this would affect Bard song btw, was because of the BG2 manual:

While the song is playing, the party morale and luck is higher. The better the bard (higher level), the larger the morale and luck improvement for the party. (Luck decreases attack rolls and damage caused by enemies).


EDIT: The description doesn't even match what Luck should really do...

Edited by Dakk, 17 January 2012 - 04:40 AM.


#5 lynx

lynx
  • Modders
  • 1822 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 17 January 2012 - 08:00 AM

are you sure the bonus isn't part of the consequences of the luck stat internally?
GemRB - IE anywhere.
Mages needed! Python tamers needed for iwd2!

#6 Dakk

Dakk
  • Members
  • 809 posts
  • Gender:Male

Posted 17 January 2012 - 08:31 AM

are you sure the bonus isn't part of the consequences of the luck stat internally?

Who, me or aVENGER? :) If me, I'm not sure what you mean.

#7 aVENGER_(RR)

aVENGER_(RR)

    Sneaksie!

  • Fixpackers
  • 1008 posts
  • Gender:Male

Posted 17 January 2012 - 09:02 AM

are you sure the bonus isn't part of the consequences of the luck stat internally?


Pretty sure, I've tested it a while ago and there was no indication that thieving skill bonuses are integrated into the luck opcode. For my tests I had Yoshimo with an Open Locks skill of 65% try to pick the lock of Container 2 in AR0312 (lock difficulty 90). Then, I had Nalia cast a modified Luck spell on him granting him +10 to Luck. And on the final attempt I had him equip the Ring of Lockpicks. The results were as follows:

1) Yoshimo @ 65%: 10 attempts 10 failures
2) Yoshimo @ 65% +10 Luck (modified spell): 10 attempts 10 failures
3) Yoshimo @ 90% (after equipping the Ring of Lockpicks): 10 attempts 10 successes

I think that's pretty conclusive.
Retired modder

Rogue Rebalancing - Author
aTweaks - Author
Wizard Slayer Rebalancing - Co-Author
BG2 Fixpack - Contributor

#8 lynx

lynx
  • Modders
  • 1822 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 17 January 2012 - 09:11 AM

great, no work for me. :)
GemRB - IE anywhere.
Mages needed! Python tamers needed for iwd2!

#9 devSin

devSin
  • Fixpackers
  • 3017 posts
  • Gender:Male

Posted 17 January 2012 - 03:20 PM

Seriously? When did we do that?

I guess since we already do it, it makes sense to extend it out the the thief skills (we're making it noncumulative, right?), although I'm inclined to believe that the description is just being overly-generous on the types of rolls the game makes (luck is somewhere way down in the roll calculation IIRC; does open lock even initiate a roll? isn't it just a >= b?).

Perhaps it's just a motivational bonus. The little 5% that could. :-)

Edited by devSin, 17 January 2012 - 03:24 PM.


#10 aVENGER_(RR)

aVENGER_(RR)

    Sneaksie!

  • Fixpackers
  • 1008 posts
  • Gender:Male

Posted 17 January 2012 - 04:00 PM

I guess since we already do it, it makes sense to extend it out the the thief skills (we're making it noncumulative, right?)


We are now. :) I'll add spwi209.spl to the non-stacking batch.

luck is somewhere way down in the roll calculation IIRC


I think luck may have some influence on the 1% chance to fail at pickpocketing/stealing that's usually always there, regardless of the actual skill level. Didn't Taimon find out something like that recently?
Retired modder

Rogue Rebalancing - Author
aTweaks - Author
Wizard Slayer Rebalancing - Co-Author
BG2 Fixpack - Contributor

#11 devSin

devSin
  • Fixpackers
  • 3017 posts
  • Gender:Male

Posted 17 January 2012 - 06:41 PM

If it rolls, I'd suppose so. I don't remember any special checks, but there probably are. Now that you mention it, it sounds familiar, but I don't remember if it was an exception or if it just works because of the way it changes the results.

The 5% in the description is probably just because it gives a +1 d20 roll bonus, and then they listed stuff that rolls (but if it doesn't do a dice roll, then it doesn't do anything).

What are we doing for saving throws BTW? Wouldn't luck already influence them, and how the hell do you add 5% to values so small anyway? It sounds suspiciously like we may just be making stuff up here.

Edited by devSin, 17 January 2012 - 06:45 PM.


#12 aVENGER_(RR)

aVENGER_(RR)

    Sneaksie!

  • Fixpackers
  • 1008 posts
  • Gender:Male

Posted 17 January 2012 - 10:40 PM

What are we doing for saving throws BTW? Wouldn't luck already influence them, and how the hell do you add 5% to values so small anyway?


Nope, the luck opcode doesn't affect saving throws on its own. It gives a bonus to hit and minimum damage and also reduces enemy spell damage, remember?

I think the +5% to saving throws was coded as a flat +1 bonus since a d20 is rolled whenever a saving throw is attempted and 20 * 0.05 = 1.
Retired modder

Rogue Rebalancing - Author
aTweaks - Author
Wizard Slayer Rebalancing - Co-Author
BG2 Fixpack - Contributor

#13 devSin

devSin
  • Fixpackers
  • 3017 posts
  • Gender:Male

Posted 17 January 2012 - 11:17 PM

Nope, the luck opcode doesn't affect saving throws on its own.

I'm surprised it isn't affecting the roll, but I don't remember all the nuances.

Oh, well. Luck is already overpowered, so a few extra buffs can't hurt. :-)

#14 lynx

lynx
  • Modders
  • 1822 posts
  • Gender:Male
  • Location:Ljubljana, Slovenija

Posted 18 January 2012 - 01:08 PM

still, it also sets the luck stat which is used in certain rolls. From what we know, that includes saving throws, so gemrb uses a "lucky roll" for that.
GemRB - IE anywhere.
Mages needed! Python tamers needed for iwd2!

#15 aVENGER_(RR)

aVENGER_(RR)

    Sneaksie!

  • Fixpackers
  • 1008 posts
  • Gender:Male

Posted 18 January 2012 - 01:36 PM

still, it also sets the luck stat which is used in certain rolls. From what we know, that includes saving throws, so gemrb uses a "lucky roll" for that.


That doesn't seem to be the case in unmodded BG2:ToB.

You can test this on a custom character if you set all of his saves to 20 and give him a bonus of +25 to luck via opcode #133. Despite the luck bonus and being under STATE_LUCK, he will always fail each of his saving throws against save or else spells such as Blindness and Hold Person.
Retired modder

Rogue Rebalancing - Author
aTweaks - Author
Wizard Slayer Rebalancing - Co-Author
BG2 Fixpack - Contributor



Reply to this topic



  


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users