Difference between revisions of "Magic Effects"

345 bytes added ,  09:30, 14 November 2011
m
→‎Using Magic Effects in Scripts: rewrote effect code calculation for clarity
imported>JRoush
(Added section on usage in scripts)
imported>JRoush
m (→‎Using Magic Effects in Scripts: rewrote effect code calculation for clarity)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
__TOC__
== Overview ==
== Overview ==
Magic effects are a bundle of game effects and visual effects. The are used in spells, powers, abilities, potions & poisons, diseases, and enchantments.
Magic effects are a bundle of game effects and visual effects. The are used in spells, powers, abilities, potions & poisons, diseases, and enchantments.
Line 74: Line 75:


Now, the confusing part. The effect code for vanilla effects isn't just an arbitrary integer. It is the ASCII representation of the first four characters of the editorID, interpreted as an integer. For example:
Now, the confusing part. The effect code for vanilla effects isn't just an arbitrary integer. It is the ASCII representation of the first four characters of the editorID, interpreted as an integer. For example:
  editorID = "FIDG"
  1. The editorID of a vanilla effect is "FIDG"
  effect code = 70 + (73 * 256) + (68 * 256^2) + (71 * 256^3) = 1,195,657,542   ;; "F" = 70, "I" = 73, "D" = 68, "G" = 71
 
  2. The ASCII values of the (first) four characters are
      "F" = 70 = 46h
      "I" = 73 = 49h
      "D" = 68 = 44h
      "G" = 71 = 47h
 
3. Re-interpret these values as a 32-bit integer:
      70               46h
    + 73 * 256       + 49h * 100h
    + 68 * 256^2     + 44h * 10000h
    + 71 * 256^3     + 47h * 1000000h
    --------------  ----------------
    1,195,657,542 =     47444946h    = Effect Code
The devs probably did this for readability while debugging. It's handy, because it means that you can easily get the (vanilla) effect codes from their editorID strings. In fact, since the codes are not shown in the CS, this is the ''only'' way to get the effect code. OBSE provides commands to do this automatically:
The devs probably did this for readability while debugging. It's handy, because it means that you can easily get the (vanilla) effect codes from their editorID strings. In fact, since the codes are not shown in the CS, this is the ''only'' way to get the effect code. OBSE provides commands to do this automatically:
  let longvar := MagicEffectCodeFromChars "FIDG" ;; returns 1,195,657,542
  let longvar := MagicEffectCodeFromChars "FIDG" ;; returns 1,195,657,542
Anonymous user