Item Search
     
BG-Wiki Search
+ Reply to Thread
Page 5 of 12 FirstFirst ... 3 4 5 6 7 ... LastLast
Results 81 to 100 of 231

Thread: Cast and Recast     submit to reddit submit to twitter

  1. #81
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Yeah, I did pretty much the same thing with the spreadsheet setup. Ended up with about 90 spells of different recast values. Set up each of the columns in sets of two, so I could see if there was a difference if certain base conditions changed (such as the fractional bit resolution).


    On fast cast vs haste being performed first, I set up a comparison again. Haste first was given 7 bits of resolution, fast cast first was given 9 bits of resolution.


    Realized I needed to reverify Blessed Mitts after using them in the first test (not shown). Turban+Goading is 101. If mitts are 50, total is 151, and firaga recast would be 13. If mitts are 51, total is 152 and firaga recast would be 12. Recast is 12.

    Secondary confirm: Turban+Swift+Blessed pants+Blessed hands. If total is 170, Regen recast is 10; if total is 171, Regen recast is 9. Recast is 9.

    So blessed mitts are 51/1024, not 50/1024. May mess with a couple of my earlier borderline cases, but nothing significant since those were based on incorrect fractional bits and incorrect calculation order.


    Anyway..

    Curaga IV (10.75), 102/1024 haste (Blessed Mitts + Goading Belt), 70/1000 fast cast (/rdm).
    Should be 8 seconds if haste is calculated first, or 9 seconds if fast cast is calculated first.
    Recast: 8

    So, haste is calculated first.

  2. #82
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    I've spent a good hour or so trying to find out how I achieved -29/1024 haste, and I haven't found anything yet...
    As far as I know, the only haste gear I had were:

    Nashira's Seraweels (2%) = -20/1024
    Dusk Ledelsens (2%) = -20/1024
    Dusk Gloves (3%) = -30/1024
    Headlong Belt (3%) = 30/1024
    Walahra Turban (5%) = -50/1024
    Goading Belt (5%) = -51/1024

    Quick Belt (2%), but I think I've thrown that away and I don't have a /1024 value for it.. no way it could have been -29/1024 for 2% haste though.. and I would have noted that value down too.

    So that -29/1024 test in my last post can be ignored, it must have clicked the wrong cell when entering the data...

    Edit:
    OK, just realised I also had a Sentinel's Shield too, which is 1% (2% with latent effect)...
    I guess there's a slim chance this was 9/1024 which equiped with one of the 2% pieces may have made -29/1024...
    However, I still would definitely have noted that down, so it seems unlikely.
    I'll test Sentinel's shield after work.

    - Update -
    It seems it's harder than I expected to test Sentinel's Shield on it's own, as only a limited number of jobs can equip it, and RDM has innate fast cast...
    This should be okay anyway...

    Aero II base recast = 17s
    Sentinel's Shield (?/1024) + Walahra's Turban (50/1024) -- Aero II = "0:16" (haste of 60/1024, or lower)
    Sentinel's Shield (?/1024) + Goading Belt (51/1024) -- Aero II = "0:15" (haste of 61/1024, or higher)

    Sentinel's Shield = 10/1024

  3. #83
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Overall formula:

    Recast: convert the decimal value to the internal binary representation. EG: 15.75 seconds * 4 = 63
    Left shift 5 bits to give us 7 decimal bits: 63 * 32 = 2,016
    Multiply by 1-haste: (eg: 3% haste, 30/1024) 2016 * (1024 - 30) = 2,003,904
    Divide by 1024 to scale back to standard units: floor(2,003,904 / 1024) = floor(1,956.9375) = 1,956
    This gives the binary representation of the recast with 7 bits of fractional resolution. To convert to decimal, divide by 128.
    1956 / 128 = 15.28125

    Maximum bits used: 10 + 5 + 10 = 25 bits.

    However that can be simplified, since the initial 5 bit shift is redundant.

    Take flat binary value: 15.75 seconds * 4 = 63
    Multiply by (1-haste): 63 * (1024 - 30) = 63 * 994 = 62,622
    Right shift by 5 bits (ie: divide by 32 and floor): 62,622 / 32 = 1,956.9375 => 1,956

    Divide by 128 to convert to decimal: 1956 / 128 = 15.28125


    Maximum haste multiplier requires 10 bits if we only consider haste. However we can also have slow of up to 100%, which means we'd be multiplying by up to 2048, or 11 bits. Maximum base recast requires 10 bits. Maximum bits required is thus 21 bits (or 26 if you use the first 5-bit left shift). Final bits is 15 (can't go higher than 255), which can be done by &'ing with 0111 1111 1111 1111 (65,535).

    This value is then used as the base for fast cast. Fast cast has to -also- multiply by the (1-FC) value, which can presumably go up to 11 bits as well (consider 0 fast cast + Addle, or the Hasso/Seigan effect).

    15 bits base + 11 for the multiplier thus requires 26 bits. Since we already have our 7 bits of decimal resolution we don't need to do anything special there. Just divide by 1000 again to go back to 7 bits of fractional resolution. Unfortunately that's not an easy bitshift since FC is in precise units (possibly 1/100 instead of 10/1000... actually...

    Aside: if FC is in 1/100 units, and Hasso/Seigan is -25% fast cast (slow cast), that would fit within 7 bits (128). Not sure if there would be a reason for it, but they may be limiting the fast cast effect to a signed 8 bit value, or possibly a 7-bit value where 100 is neutral (ie: bitpacking multiple values into a single 32-bit int).


    Because the result of haste requires 15 bits of total resolution, and the fast cast multiplier requires another 11 bits, I think we can reasonably say that this requires a 32 bit int to perform all the operations, and that we don't need extraordinary amounts of trickery for it to work. Storing the final value within 16 bits also makes sense as that gives us an easily usable value that has enough headroom that you can apply the various multiplications to without overflow. Why they don't use the full 16 bits (8 integer, 8 fractional), I'm not sure, but may have something to do with allowing the value to be used in a signed 16-bit int, and you don't want to use the left-most bit.

  4. #84
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    I think I need to read your post a few more times before I understand all of it.
    I noticed a couple of interesting things...

    It seems like you are implying Hasso and Seigan are part of the Fast Cast term?

    I have previously tested this and I found all the following as five definite separate terms, with values within the each term calculated additively (or overwriting):

    -- Fast Cast recast + Magian stave affinity recast
    This term can be also be a + /100 value, for example with a lv99 final form macc staff of the opposing element to the element spell you are casting.

    -- Haste/Slow
    This term can be a + or - /1024 value.
    I guess it may be possible that these are not in the same term, however they can't both be present, also they can overwrite each other.
    (Edit: You can obviously be affected from both haste% and slow% gear equipped at the same time, however you can't be under the status effects of both haste and slow.
    I haven't actually tested how having both haste and slow is calculated towards recast, though I assume at the moment it is additive.
    I wasn't very awake when I wrote this post...)

    -- Hasso/Seigan
    Either of these give +50% to recast.
    They may not be in the same term, but it's only possible for one to be present at a time, and they can overwrite each other.

    -- Composure
    This gives +25% to recast.

    -- Light Arts / Dark Arts / Celerity / Alacrity (I haven't tested Accession and Manifestation yet)
    Matching arts gives -10% to recast.
    Opposing arts gives +20% to recast.
    Celerity and Alacrity add another -40% their respective arts, giving -50% to recast.


    Also, I spent a couple of hours this evening trying to understand the source code of POLUtils to see why it reads recasts of 90, 120 and 180 second spells incorrectly.
    90s recast spells such as all six AMII spells and Diamondhide are read as "104" and listed as "26s".
    120s recast spells such as Impact and 1000 Needles are read as "224" and listed as "56s".
    180s recast spells such as Klimaform and Dread Spikes are read as "208" and listed as "52s".

    This is why both wiki and otherwiki have several pages saying recast is "26 seconds" for spells which obviously have recasts of 90 seconds.
    I've been planning to quickly cast through all affected spells and edit every page with the correct values when I get round to it.

    I noticed quickly that it looks like it reads up to 64s then counts up from zero again...
    90s - 64 = 26s; 120s - 64 = 56s; 180 - (64 * 2) = 52s

    However, I thought POLUtils was just programmed that way, because maybe when it was first written there were no spells with recasts higher than 60s...
    I thought maybe it was programmed to just read one byte, whilst two bytes were actually allocated to the recast value.

    It seems I was wrong though...
    From reading through the source code, it looks like there actually is only one byte storing the recast values used by the game, with bytes either side representing other properties...

    So it seems Klimaform really is actually stored as "208" (52s) and not "720" (180s)...
    However, surely it must still be converted to the correct base recast of 180s at the start of recast calculations?

    I have no idea how the game knows Diamondhide is 90 seconds instead of 26, but Thundaga II actually is 26s when they are apparently stored as the same recast value though...


    I'm going to work on determining the order of calculation for recast, as I think I've found an easy enough way to do some of it.

  5. #85
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,258
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Manifestation/Accessions's double cast time is broken (i.e. not working).

  6. #86
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    It seems like you are implying Hasso and Seigan are part of the Fast Cast term?
    Eh, I just tossed that in there as an aside when I was thinking about how things might be stored. And I think I was thinking of the +25% of Composure conflated with Hasso/Seigan's effect. Can just ignore that bit.

    As for how they're stored in the dat files, I have no idea. Never looked into that, and not sure where in polutils that info is displayed.

  7. #87
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    I focused on the Hasso/Seigan thing, because, after re-reading your post a few more times, the other point I was going to talk about didn't actually apply, so I deleted it.
    I was also kinda sleepy as I posted at 9am and hadn't yet slept.

    I already replied to Yugl in PM's but I guess this info might be helpful here too...
    For Accession and Manifestation, both wiki and other wiki have explanations which don't match the english descriptions in the .dat files (which should match the ingame description)...

    Here's what the ability description strings in the .dat files say for Accession and Manifestation:
    Code:
    .dat files from the current FFXI version (at time of posting)
    String Table Entry	00218	Extends the effect of your next healing or enhancing white magic spell to party members within range. MP cost and recast time are doubled. Support job: Recast time is tripled.	1
    String Table Entry	00222	Extends the effect of your next enfeebling black magic spell to targets within range. MP cost and recast time are doubled. Support job: Recast time is tripled.	1
    
    .dat files from the FFXI version at mid-October 2009, from my old computer hard drive...
    String Table Entry	00218	Extends the effect of your next healing or enhancing white magic spell to party members within range. MP cost and recast time are doubled.	1
    String Table Entry	00222	Extends the effect of your next enfeebling black magic spell to targets within range. MP cost and recast time are doubled.	1
    So...
    Does anyone know if casting time was ever affected by Accession and Manifestation?
    If so, Did the casting time bar go up at half the speed ? ...or did the the bar stop at 100% and carry on casting before the spell actually cast?

    - Update -
    OK, I looked through all the official version update notes from now back to when SCH was added as a job.
    I only found relevant information in two updates.

    First, the initial update which added Scholar as a job: "The New Jobs Nov. 20, 2007 (JST)"
    Accession
    Extends the effect of your next healing or enhancing white magic spell to party members within range. MP cost is tripled and casting time is doubled.

    Manifestation
    Extends the effect of your next enfeebling black magic spell to targets within range. MP cost is tripled and casting time is doubled.
    This is interesting that the update info actually says "casting" time is doubled, and doesn't specifically mention recast time...

    Then, the next version update, which only dealt with MP cost penalty: "Mar. 11, 2008 (JST)"
    - Spells cast during the effect of the job abilities “Accession” or “Manifestation” will now only cost double the MP instead of triple.
    I don't think I have any older copies of FFXI lying around, so I can't check what the .dat files actually said back then.

  8. #88
    Theory Fighter
    Join Date
    Jan 2011
    Posts
    1,427
    BG Level
    6
    FFXIV Character
    Frejan Schultz
    FFXIV Server
    Ragnarok
    FFXI Server
    Ragnarok

    I'm pretty sure it never doubled casting times. When I was doing bird parties I don't recall having to wait forever for an AoE stoneskin to cast... Double SS casting time is something you don't doubt about when you see it.

  9. #89
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    I checked the Accession and Manifestation descriptions ingame and they are the same as the .dat strings (it might have been a big find if the game had actually ignored it's own .dats...)

    I also tested that slow+% and haste+% are calculated together additively, which is probably well documented, but my other post left that a little vague.

    I had hoped that I could make use of the "4:15" (255 seconds) cap on spell recast times to figure out the order of calculations...
    However, as with the old -50% recast reduction cap, the cap allows intermediary recast values to go beyond this cap, but sets the final recast value to 255 at the end of the calculations.
    Not sure I worded that well, basically the 255 cap comes into effect only at the end of the recast calculation.

    With the cap not taking effect after each term, it will be quite a bit trickier to figure out the recast calculation order...

    However, this is interesting, as it may mean the game is able to store much larger recast values...
    The largest possible would probably be SAM/SCH + weakend + Hasso or Seigan + Manifestation + Klimaform:
    180 * 2 * 1.5 * 3 = 1620 (11 bits before any fractional bits)
    It would be hard (impossible) to test that value had been reached though, and the game may likely not hold values that large either.

    I wanted to check all the scholar abilities affects on recast timers.
    Not sure how useful this will be as it has been tested elsewhere by other people already, but might as well post my test data anyway...

    Here's a quick list of the recast reductions/increases using scholar abilities:
    Code:
    Ability + Gear		   Magic Type:	Matching	Opposite
    
    === /SCH sub job ===
    
    Dark Arts / Light Arts			-10%		+20%
    Alacrity / Celerity proc.		-50%		(+20%)	(nullifies matching arts recast reduction)
    Manifestation / Accession proc.		+200%		(+20%)	(nullifies matching arts recast reduction)
    
    
    === SCH main job ===
    
    Dark Arts / Light Arts			-10%		+20%
    "" + AF2+1 head				-15%		+20%
    "" + AF1+1 feet				-15%		+20%
    "" + AF2+2 head				-20%		+20%
    "" + AF2+1 head + AF1+1 feet		-20%		+20%
    "" + AF2+2 head + AF1+1 feet		-25%		+20%
    
    Alacrity / Celerity proc.		-50%		(+20%)	(nullifies matching arts recast reduction)
    "" + AF2+1 feet + opposite weather	-50%		(+20%)	(nullifies matching arts recast reduction)
    "" + AF2+1 feet + matching weather	-60%		(+20%)	(nullifies matching arts recast reduction)
    "" + AF2+2 feet + matching weather	-65%		(+20%)	(nullifies matching arts recast reduction)
    
    Manifestation / Accession proc.		+100%		(+20%)	(nullifies matching arts recast reduction)
    And here's a bit of testing I just did to check the above were correct:
    Code:
    === /sch sub job ===
    LA + Accession : Stoneskin = 1:30  [90]
    LA + Accession + Celerity : Stoneskin = 0:45  [45]
    
    === sch main job ===
    Reraise = 1:00  [60]
    Klimaform = 3:00  [180]
    
    DA : Reraise = 1:12  [72]
    DA : Klimaform = 2:42  [162]
    
    DA + AF2+1 head : Reraise = 1:12  [72]
    DA + AF2+1 head : Klimaform = 2:33  [153]
    
    DA + AF2+2 head : Reraise = 1:12  [72]
    DA + AF2+2 head : Klimaform = 2:24  [144]
    
    DA + AF1+1 feet : Reraise = 1:12  [72]
    DA + AF1+1 feet : Klimaform = 2:33  [153]
    
    DA + AF1+1 feet + AF2+1 head : Reraise = 1:12  [72]
    DA + AF1+1 feet + AF2+1 head : Klimaform = 2:24  [144]
    
    DA + AF1+1 feet + AF2+2 head : Reraise = 1:12  [72]
    DA + AF1+1 feet + AF2+2 head : Klimaform = 2:15  [135]
    LA + Celerity + AF1+1 feet + AF2+2 head : Stoneskin = 0:15  [15]
    
    AF2+2 feet : Blink = 0:09  [9]
    AF2+2 feet : Stoneskin = 0:29  [29]
    AF2+2 feet : Cura = 0:29  [29]
    AF2+2 feet : Reraise = 0:58  [58]
    AF2+2 feet : Klimaform = 2:56  [176]
    
    LA + Celerity + AF2+1 feet + Voidstorm : Reraise = 0:30  [30]
    
    LA + Celerity + AF2+1 feet + Aurorastorm : Reraise = 0:24  [24]
    DA + Alacrity + AF2+1 feet + Voidstorm : Klimaform = 1:12  [72]
    
    LA + Celerity + AF2+2 feet + Aurorastorm : Reraise = 0:20  [20]
    DA + Alacrity + AF2+2 feet + Voidstorm : Klimaform = 1:01  [61]

  10. #90
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,258
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Are the AF2+1 feet listed Artifact, not Relic, feet?

  11. #91
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    Oops, sorry, I get "Scholar's" and "Argute" confused as I don't play SCH main.
    Ingame it was simple equipping the correct gear as I was only looking at the gear descriptions, not the names.
    I'm glad you only noticed that one typo... I even put stuff like "AF1+2" lol...

    Luckily I recorded the whole test with fraps, all the AF1 and AF2 names are definitely the correct way around now. :D

  12. #92
    BG Content
    Join Date
    Jul 2007
    Posts
    21,105
    BG Level
    10
    FFXI Server
    Lakshmi
    Blog Entries
    1

    Data:
    99 WHM Naked/Weakened, 45% Fast Cast (Trait, Revelations, Merciless Matriarch, Tusked Terror) = 93 second Reraise (checks out)
    99 WHM Naked/Weakened, 45% Fast Cast, 50% Divine Benison last time I checked = 15 second Erase

    This works if we assume they are the same term, but it goes above the 80% Fast Cast limit I thought I established.

    99 WHM Naked/Weakened, 45% Fast Cast, 60% Divine Benison (AF3+2 pants) = 14 second Erase
    99 WHM Naked/Weakened, 45% Fast Cast, 50+??% Divine Benison (Yagrush) = 12 second Erase
    99 WHM Naked/Weakened, 45% Fast Cast, 60+??% Divine Benison (AF3+2 pants and Yagrush 99) = 12 second Erase
    99 WHM Naked/Weakened, 52% Fast Cast (Loq + Marduk body), 60+??% Divine Benison (AF3+2 pants and Yagrush 99) = 11 second Erase

    So it looks like Divine Benison may be a separate term from Fast Cast that works in almost exactly the same way. If it wasn't and just bypassed the cap, I would have expected an 11 second Erase with AF3+2 pants and Yagrush 99. I am unsure if this is a recent adjustment or if my original testing of it was somehow flawed.

    By the way, they demoted Yagrush 99's text to "Enhances Divine Benison III" instead of IV on the test server, which was what I was actually trying to test. That's why I'm unwilling to bet the farm that it's a 20% enhancement to Divine Benison above.

    0% Fast Cast WHM99:
    19 seconds - Yagrush 99 (0.36666 to .33333 reduction)
    19 seconds - Yagrush 99 + AF3+2 (.36666 to .3333 reduction)
    21 seconds - AF3+2 pants
    22 seconds - nothing (.266666 to .2333 reduction)
    Yagrush 95 was exactly the same, so maybe they weren't foolin' or maybe Yagrush 95 alone caps the contribution of Divine Benison.

  13. #93
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    I had forgotten about Divine Benison.
    It is definitely applied additively to Fast Cast though.

    Probably the best way to check Divine Benison on it's own is with Weakened + Accession.
    This increases Erase 15 second recast to 90 seconds (15 * 2 * 3).

    From what I've noticed for Divine Benison trait...
    tier V = 50% FC (-25% recast)
    tier V +1 = 60% FC (-30% recast)
    tier V +2 = 65% FC (-32.5% recast)
    tier V +3 = 70% FC (-35% recast)

    WHM AF3+2 legs and Yagrush 80 are both Divine Benison +1, so put together they give +2.
    Either the Divine Benison gear caps at +3, or the Divine Benison contribution itself caps at 70% FC (or at least the recast caps at -35%).

    I checked Divine Benison V +2 (- 32.5% recast) with Marduk's body (-2.5% recast) to see if it gives -34% or -35% recast...

    90s - 34% = 59.4 seconds
    90s - 35% = 58.5 seconds

    1:30 = Erase + Weakened + Accession (SCH99/WHM49)
    1:01 = 90s + Divine Benison V +2 (AF3+2 legs + Yagrush 80, WHM99/SCH49)
    0:58 = 61s + 5% Fast Cast (Marduk's body)

    ---

    I forgot to mention Weakness too when I listed the five recast terms in my previous post on this page.

    Weakness comes under the Haste/Slow term, as it is literally +100% slow.

    Weakness + Haste spell (150/1024) = +874/1024 slow (1024 - 150 / 1024)

    The full lv73 Hecatomb +1 set gives +50% slow, even though the percentages listed on the gear descriptions adds up to +53%.
    I haven't fully checked the /1024 values for each piece yet, but Weakness + Heca +1 set = +150% slow

    1:00 = Reraise
    1:30 = Reraise + Heca +1 set
    2:30 = Reraise + Heca +1 set + Weakness
    2:21 = Reraise + Heca +1 set + Weakness + Haste spell

  14. #94
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,258
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Does the additive nature of Divine Benison's recast imply that they stack additively for cast time as well?

  15. #95
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    I'd say it suggests that it stacks additively for cast time, but it might not necessarily be the case.
    I'm not really interested in trying to test casting timers though.

    Divine Benison does stacks additively with elemental macc magian staff affinity recast -/+%, but I already showed affinity recast stacking additively with Fast Cast, so this isn't exactly a surprise....

    It's likely that FC cast time, elemental damage staff affinity cast -/+%, and Divine Benison cast time all stack additively.

    ---

    I've been looking directly at the .dat file which holds the recast times for all the spells in the game.
    Each spell is stored in a block of 64 bytes, and it's virtually certain that only 1 byte is used to interpret the recast value...

    The byte to the left of the recast time byte is the cast time byte.
    The byte to the right of the recast time byte is for the NULL job, and is always 0xFF (255) for every spell anyway...
    So only recasts of 0.0 to 63.75 seconds (0 to 255) are possible.

    There really doesn't seem to be any noticeable patterns for the spells with higher recasts than 60 seconds.
    So I still don't know how the game knows the difference when reading 104 (26 seconds) and 104 (90 seconds)... ?

    ---

    Anyway, I've wanted to sort out the base recast times for spells that are listed on wiki and otherwiki for a while.
    There are quite a lot of errors on both sites, and others, for the spells with recasts greater than 60 seconds.
    Most of the spells in question are blue mage spells, but there are some others.

    Here are all the correct blue mage spell recast times:

    Code:
    
    .dat	.dat/4	Ingame	sec.	Spell			Levels	
    
    20	5s	0:05	5	Pollen			01BLU
    24	6s	0:06	6	Wild Carrot		30BLU	
    24	6s	0:06	6	Magic Fruit		58BLU	
    26	6.5s	0:06	6.5	Foot Kick		01BLU	
    29	7.25s	0:07	7.25	Power Attack		04BLU	
    29	7.25s	0:07	7.25	Sprout Smack		04BLU	
    29	7.25s	0:07	7.25	Wild Oats		04BLU	
    39	9.75s	0:09	9.75	Sandspin		01BLU	
    40	10s	0:10	10	Battle Dance		12BLU	
    40	10s	0:10	10	Feather Storm		12BLU	
    40	10s	0:10	10	Head Butt		12BLU	
    40	10s	0:10	10	Chaotic Eye		32BLU	
    40	10s	0:10	10	Blank Gaze		38BLU	
    40	10s	0:10	10	Fantod			85BLU
    45	11.25s	0:11	11.25	Helldive		16BLU	
    47	11.75s	0:11	11.75	Bludgeon		18BLU	
    48	12s	0:12	12	Plenilune Embrace	76BLU		
    52	13s	0:13	13	Smite of Rage		34BLU	
    56	14s	0:14	14	Screwdriver		26BLU	
    57	14.25s	0:14	14.25	Grand Slam		30BLU	
    60	15s	0:15	15	Queasyshroom		08BLU	
    60	15s	0:15	15	Healing Breeze		16BLU	
    60	15s	0:15	15	Blastbomb		18BLU	
    60	15s	0:15	15	Delta Thrust		89BLU	
    60	15s	0:15	15	Sudden Lunge		95BLU	
    70	17.5s	0:17	17.5	Winds of Promy.		89BLU	
    71	17.75s	0:17	17.75	Uppercut		38BLU	
    77	19.25s	0:19	19.25	Mandibular Bite		44BLU	
    78	19.5s	0:19	19.5	Cursed Sphere		18BLU	
    78	19.5s	0:19	19.5	Poison Breath		22BLU	
    79	19.75s	0:19	19.75	Claw Cyclone		20BLU	
    80	20s	0:20	20	Frightful Roar		50BLU	
    80	20s	0:20	20	Filamented Hold		52BLU	
    80	20s	0:20	20	Cimicine Discharge	78BLU		
    81	20.25s	0:20	20.25	Sickle Slash		48BLU	
    84	21s	0:21	21	Terror Touch		40BLU	
    84	21s	[0:42]	21	Self-Destruct		50BLU	
    88	22s	0:22	22	Barbed Crescent		99BLU	
    90	22.5s	0:22	22.5	White Wind		94BLU	
    92	23s	0:23	23	Jet Stream		38BLU	
    92	23s	0:23	23	Acrid Stream		77BLU	
    95	23.75s	0:23	23.75	Dimensional Death	60BLU		
    98	24.5s	0:24	24.5	Bomb Toss		28BLU	
    98	24.5s	0:24	24.5	Death Scissors		60BLU	
    98	24.5s	0:24	24.5	Regurgitation		69BLU	
    98	24.5s	0:24	24.5	Mysterious Light	40BLU		
    100	25s	0:25	25	Demoralizing Roar	80BLU		
    102	25.5s	0:25	25.5	Goblin Rush		81BLU	
    104	26s	0:26	26	Hydro Shot		63BLU	
    104	26s	0:26	26	Frypan			63BLU
    106	26.5s	0:26	26.5	Pinecone Bomb		36BLU	
    111	27.75s	0:27	27.75	Body Slam		62BLU	
    112	28s	0:28	28	Heavy Strike		92BLU	
    114	28.5s	0:28	28.5	Frenetic Rip		63BLU	
    114	28.5s	0:28	28.5	Spinal Cleave		63BLU	
    114	28.5s	0:28	28.5	Tail Slap		69BLU	
    114	28.5s	0:28	28.5	Cannonball		70BLU	
    114	28.5s	0:28	28.5	Hysteric Barrage	69BLU		
    117	29.25s	0:29	29.25	Death Ray		34BLU	
    117	29.25s	0:29	29.25	Blitzstrahl		44BLU	
    117	29.25s	0:29	29.25	Magnetite Cloud		46BLU	
    117	29.25s	0:29	29.25	Eyes On Me		61BLU	
    118	29.5s	0:29	29.5	Wind Breath		99BLU	
    120	30s	0:30	30	Sound Blast		32BLU	
    120	30s	0:30	30	Geist Wall		46BLU	
    120	30s	[0:27]	30	Refueling		48BLU	
    120	30s	0:30	30	Corrosive Ooze		66BLU	
    120	30s	0:30	30	Mind Blast		73BLU	
    124	31s	0:31	31	Whirl of Rage		83BLU	
    127	31.75s	0:31	31.75	Quad. Continuum		85BLU	
    129	32.25s	0:32	32.25	Water Bomb		92BLU	
    131	32.75s	0:32	32.75	Disseverment		72BLU	
    131	32.75s	0:32	32.75	Sub-zero Smash		72BLU	
    135	33.75s	0:33	33.75	Ice Break		50BLU	
    135	33.75s	0:33	33.75	Hecatomb Wave		54BLU	
    135	33.75s	0:33	33.75	Radiant Breath		54BLU	
    138	34.5s	0:34	34.5	Flying Hip Press	58BLU		
    139	34.75s	0:34	34.75	Ram Charge		73BLU	
    144	36s	0:36	36	Seedspray		61BLU	
    149	37.25s	0:37	37.25	Vertical Cleave		75BLU	
    156	39s	0:39	39	Maelstrom		61BLU	
    163	40.75s	0:40	40.75	Empty Thrash		87BLU	
    169	42.25s	0:42	42.25	Vanity Dive		82BLU	
    170	42.5s	0:42	42.5	Quadrastrike		96BLU	
    171	42.75s	0:42	42.75	Frost Breath		66BLU	
    171	42.75s	0:42	42.75	Firespit		68BLU	
    180	45s	0:45	45	Venom Shell		42BLU	
    180	45s	0:45	45	Spiral Spin		60BLU	
    180	45s	[0:38]	45	Animating Wail		79BLU	
    180	45s	0:45	45	Blazing Bound		80BLU	
    180	45s	0:45	45	Dream Flower		87BLU	
    192	48s	0:51	48	Benthic Typhoon		83BLU	
    196	49s	0:49	49	Heat Breath		71BLU	
    233	58.25s	0:58	58.25	Amorphic Spikes		98BLU	
    240	1m	1:00	60	Metallic Body		08BLU	
    240	1m	1:00	60	Sheep Song		16BLU	
    240	1m	1:00	60	Stinking Gas		44BLU	
    240	1m	1:00	60	Awful Eye		46BLU	
    240	1m	1:00	60	Cold Wave		52BLU	
    240	1m	1:00	60	Infrasonics		65BLU	
    240	1m	1:00	60	Zephyr Mantle		65BLU	
    240	1m	1:00	60	Enervation		67BLU	
    240	1m	1:00	60	Asuran Claws		70BLU	
    240	1m	1:00	60	Saline Coat		72BLU	
    240	1m	1:00	60	Actinic Burst		74BLU	
    240	1m	1:00	60	Reactor Cool		74BLU	
    240	1m	1:00	60	Exuviation		75BLU	
    240	1m	1:00	60	Plasma Charge		75BLU	
    240	1m	1:00	60	Regeneration		78BLU	
    240	1m	1:00	60	Magic Barrier		82BLU	
    240	1m	1:00	60	Auroral Drape		84BLU	
    240	1m	1:00	60	Barrier Tusk		91BLU	
    240	1m	1:00	60	Cocoon			08BLU
    240	1m	1:00	60	Light of Penance	58BLU		
    240	1m	1:00	60	Yawn			64BLU
    4	1s	1:05	65	Leafstorm		77BLU	
    32	8s	1:12	72	Thermal Pulse		86BLU	
    32	8s	1:12	72	Dark Orb		93BLU	
    44	11s	1:15	75	Battery Charge		79BLU	
    44	11s	1:15	75	Final Sting		81BLU	
    44	11s	1:15	75	O. Counterstance	98BLU		
    74	18.5s	1:22	82.5	Evryone. Grudge		90BLU	
    76	19s	1:23	83	Vapor Spray		96BLU	
    92	23s	1:27	87	Charged Whisker		88BLU	
    104	26s	1:30	90	Blood Drain		20BLU	
    104	26s	1:30	90	Soporific		24BLU	
    104	26s	1:30	90	MP Drainkiss		42BLU	
    104	26s	1:30	90	Blood Saber		48BLU	
    104	26s	1:30	90	Feather Tickle		64BLU	
    104	26s	1:30	90	Sandspray		66BLU	
    104	26s	1:30	90	Diamondhide		67BLU	
    104	26s	1:30	90	Triumphant Roar		71BLU	
    104	26s	1:30	90	Occultation		88BLU	
    104	26s	1:30	90	Reaving Wind		90BLU	
    104	26s	1:30	90	Digest			36BLU
    192	48s	1:52	112	Thunder Breath		97BLU	
    224	56s	2:00	120	Jettatura		48BLU	
    224	56s	2:00	120	Feather Barrier		56BLU	
    224	56s	2:00	120	Bad Breath		61BLU	
    224	56s	2:00	120	1000 Needles		62BLU	
    224	56s	2:00	120	Memento Mori		62BLU	
    224	56s	2:00	120	Voracious Trunk		64BLU	
    224	56s	2:00	120	Amplification		70BLU	
    224	56s	2:00	120	Temporal Shift		73BLU	
    224	56s	2:00	120	Lowing			71BLU
    224	56s	2:00	120	Osmosis			84BLU
    224	56s	2:00	120	Warm-Up			68BLU
    88	22s	2:30	150	Mortal Ray		91BLU	
    208	52s	3:00	180	Magic Hammer		74BLU
    There are some nice interesting recasts in there, which should be helpful for testing recast time theories.

    Refuelling and Animating Wail give the caster "Haste", so their own recast timers will be affected by the haste effect.

    Likewise, Self-Destruct gives the caster the effect of "Weakened", so it's own recast timer will be affected by this effect.

    I also checked the recasts of the eight Unbridled Learning spells; they all have recasts of 30 seconds.

    Thunder Breath previously had a recast of 224 (which I assume was 56 + 64 = 120 seconds, "2:00")...
    Thunder Breath has recently been changed to the current recast of 192 (112.00 seconds, "1:52").

    Here are a few other interesting and random recasts I did previously:

    Code:
    
    .dat	.dat/4	Ingame	sec.	Spell			Levels	
    
    104	26s	0:26	26	Thundaga II		61BLM	
    200	50s	0:50	50	Blizzaja		93BLM	
    205	51.25s	0:51	51.25	Thundaja		96BLM	
    240	1m	1:00	60	Aspir			25BLM/20DRK/36SCH
    240	1m	1:00	60	Drain			12BLM/10DRK/21SCH
    240	1m	[1:00]	60	Gravity			21RDM
    44	11s	1:15	75	Aspir II		83BLM/78DRK/97SCH	
    44	11s	[1:03]	75	Gravity II		98RDM	
    104	26s	1:30	90	Burst II		75BLM	
    104	26s	1:30	90	Flare II		75BLM	
    104	26s	1:30	90	Flood II		75BLM	
    104	26s	1:30	90	Freeze II		75BLM	
    104	26s	1:30	90	Quake II		75BLM	
    104	26s	1:30	90	Tornado II		75BLM	
    224	56s	2:00	120	Impact			90WHM/90BLM/90RDM/90DRK/90SMN/90SCH
    224	56s	2:00	120	Migawari: Ichi		88NIN	
    208	52s	3:00	180	Drain II		62DRK	
    208	52s	3:00	180	Dread Spikes		71DRK	
    208	52s	3:00	180	Klimaform		46SCH		
    208	52s	3:00	180	Reprisal		61PLD
    Gravity and Gravity II can only be cast while under the effect of RDM's Fast Cast job trait.
    For Gravity (tier I) though, you can nullify the fast cast using Ice element affinity recast gear such as a magian staff.

  16. #96
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Can you give a few examples of the 64-byte blocks of spell info? Or at least tell me what dats to look in to find this info?

  17. #97
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    FINAL FANTASY XI\ROM\118\114.dat holds the Spell & Ability list.

    The .dat files are encrypted with a per byte bit-rotation encryption; you can't read them in notepad, so you need to open them with a hex editor.
    Many of the .dat files use a bit rotation of two bits to the right.
    eg: To read this byte: 00000001 (1 in decimal), you rotate 2 bits to the right, resulting in the actual value of 01000000 (64 in decimal).

    The Spell & Ability list .dat file however, uses a more annoying encryption where there are five different possible amounts of bit-rotations are used, varying between each block of 64 bytes...
    You could just cycle through randomly until you find the one that gives the right spell "index" value, but there is a method to interpret the necessary bit rotation amount.

    Here's an example of a complete 64 byte block.
    This is the spell info for Klimaform, and the encryption happens to be a bit rotation of 2 to the right.
    I have rotated the bits already, and I'll show the byte values in decimal rather than hex for simplicity:
    Code:
    ---	0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
    0x00	31  1   2   0   7   0   1   0   37  0   30  0   12  208 255 255
    0x10	255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
    0x20	255 255 46  255 255 255 31  1   15  2   0   0   0   0   0   0   
    0x30	0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   255
    The spell info block for Klimaform actually starts at 0x47F0, but I've used 0x00 for simplicity too.

    0x00 to 0x01, the first two bytes, are a 16 bit value (word) which represents the spell's "Index" value.
    In Little-endian byte order, this is 00000001 00011111 (1 & 31 in decimal), which together is 287 (as the "1" is read as 256, 256+31 = 287).

    The next five pairs of bytes are supposedly read in the same manner, as 16 bit values...
    (Some of these I have no idea why they'd ever need more than an 8 bit value, especially Element...)
    0x02 to 0x03 = Magic type, in this case "2", which represents "Black Magic"
    0x04 to 0x05 = Element, I think...
    0x06 to 0x07 = Valid Targets, I think...
    0x08 to 0x09 = Skill type, I think, so "37" must be "Dark Magic"?
    0x0A to 0x0B = MP cost value, in this case 30 MP.

    0x0C is the Cast Time byte I mentioned in my last post, in this case "12", which means 3.00 seconds ingame.

    0x0D is the all important Recast Time byte, in this case "208", which divided by four is 52.00 seconds...

    The next 24 bytes are an array, one byte for each possible job in the game.
    The values represent the level you learn the spell for each job, or "255" if the job doesn't learn it.
    The first byte in the array at 0x0E is the "None" job, which is always 255...
    0x0F is WAR, 0x10 is MNK ... 0x22 is SCH (which has 46 as the level you learn the spell).
    The remaining 3 bytes (0x23 to 0x25) in the 24 byte array are currently unused job slots, so always "255".

    0x26 to 0x27 is another 16 bit value, which represents the spells "ID" value, which happens to be 287, the same as the Index.
    For some reason this isn't always the case with every spell; Index and ID don't always match.
    I had hoped this had some meaning for interpreting recasts higher than 60s, but I didn't find any pattern.
    I think "Index" is just the unique number for the spell in the .dat files, and "ID" is just the number used to sort the spells within ingame menus.

    0x28 is the "List Icon ID" value, representing which icon to show next to the spell name in the menu.

    0x29 is a currently unknown value, which I spent a lot of time trying to find patterns for recast timers...
    I no longer think there's any possibility that it could be related to recast any more.

    0x2A to 0x3E are just for padding, and are always "0" -- they don't represent anything.

    0x3F is the End of Block marker. This is always "255".

    ---

    The simple answer I could have given was probably to just say "download and install Pebble's POLUtils".

    In POLUtils, open the "FFXI Data Browser", and click "String Tables" > "Common" > "Spells & Abilities"
    This opens up the ROM\118\114.dat file in a nice readable table.

    To find the correct "Index" of the spell you want to find out, click "String Tables" > "English" > "Spell Names".

    I posted the 64 byte spell info block details in hope that (if my explanation made any sense at all) people might understand how the spell info is stored.
    Hopefully someone cleverer might get interested to figure out how the game can read 208 (52 seconds) as 3 minutes.
    Or how the game reads a difference between spell recasts of "104" (26 seconds) and "104" (90 seconds).

    Sorry for the long crazy post.
    I should probably have instead just said to search for POLUtils documentation, as all this information is out there somewhere.
    Pebbles and the original people that discovered the .dat encryption format probably explain it much better.

  18. #98
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    The simple answer I could have given was probably to just say "download and install Pebble's POLUtils".

    In POLUtils, open the "FFXI Data Browser", and click "String Tables" > "Common" > "Spells & Abilities"
    Meh, I looked under the String Tables menu, saw English, couldn't find the spells under there, and completely missed the Common submenu. Ah well, the byte info was useful too. I'll see if I can dig anything useful up later.

  19. #99
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    OK, I've been trying to determine the recast time calculation order.

    Total of five terms
    - Fast Cast (& Affinity Recast -%, & Divine Benison)
    - Haste (& Slow, which includes Weakened)
    - RDM Composure
    - SAM Hasso/Seigan
    - SCH Arts/Strategem

    Haste > Fast Cast
    This is the only known part of the calculation order so far.

    I think I've got evidence for Hasso > Haste, at least going by current theories for Haste recast fractional bits.

    The idea behind my Hasso <> Haste tests is to find spells with base recasts which multiplied by 1.5 the result is another simple value, preferably the recast of another spell.
    Eg. 10 * 1.5 = 15, 30 * 1.5 = 45, 40 * 1.5 = 60.

    This way I can test the other higher recast spell with just Haste recast term, to check what the recast should be if Haste is applied AFTER Hasso.
    Then I just need to find Haste values which multiplied to the spell base recast will give a complex long fraction result.

    Anyway, that probably made no sense at all, so I'll just post the test data:

    SCH99/SAM49
    Spell base recast = 30 seconds (Stoneskin)
    Haste = 91/1024 (Goading Belt 51/1024 + Goliard Saio 40/1024)

    With Hasso active, the recast ingame = 0:41
    Pyrohelix (45 seconds spell) without Hasso, the recast ingame = 0:41

    If Haste is calculated before Hasso, then it needs hold 9 fractional bits for the final result to equal 0:41...

    30 seconds base recast with 91/1024 haste...
    7 fractional bits = 27.328125... * 1.5 = 40.9921875
    8 fractional bits = 27.33203125... * 1.5 = 40.998046875
    9 fractional bits = 27.333984375... * 1.5 = 41.0009765625

    7 fractional bits is the current theory...
    So Hasso > Haste.

  20. #100
    Hydra
    Join Date
    Jul 2011
    Posts
    128
    BG Level
    3
    FFXI Server
    Ragnarok

    I found pretty much the ultimate Hasso > Haste test.

    Base recast = 21.75 seconds (Aeroga II -- BLM48)
    Haste = 51/1024 (eg. Goading Belt)
    Hasso = * 1.5 (or +50%)

    21.75 seconds base recast with 51/1024 haste...
    11 fractional bits = 20.6665039063 ... * 1.5 = 30.9997558594
    12 fractional bits = 20.6667480469 ... * 1.5 = 31.0001220703

    As long as the calculation order is Hasso > Haste, and the recast after Hasso is stored with at least 3 fractional bits, then the recast should be 31 seconds (31.0001220703).
    If the recast is 31 seconds, then for the order to instead be Haste > Hasso, the recast after Haste would have to be stored in 12 fractional bits (17 bits total including the 5 non-fraction bits) to give a 31 second recast.

    I should test Seigan in place of Hasso too, to make sure it's applied in the same way.

    I've started using programming more to locate better test examples.

    For Composure <> Fast Cast, here's a test I want to do:

    Base recast = 8 seconds (Eg. Cure Cure IV, Deodorize, or Aero)
    Fast Cast recast reduction = -20/100 (eg. RDM87 FC5 trait + AF1 or AF2 FC piece)
    Composure = * 1.25 (or +25%)

    IF order = Composure > FC...
    8 * 1.25 = 10 ... * (1 - 20 / 100) = 8 seconds

    IF order = FC > Composure
    8 * (1 - 20 / 100) = 6.3999996185

    This is with 20 fractional bits used for recast after FC, but it won't even give a final recast of "8 seconds" until you reach 34 fractional bits in OpenOffice Calc, however I don't know if such large values are reliable in Calc, so I'll stick with 20 as it's reasonably safe.

    So continuing with 20 fractional bits used for FC...
    6.3999996185 * 1.25 = 7.9999995232 (7 seconds, final recast value)

    I can't do these tests at the moment as the Test Server broke itself with the latest update today...
    If anyone is bored and doesn't mind testing these, I'd be interested in the results so I can determine stuff to test next.

+ Reply to Thread
Page 5 of 12 FirstFirst ... 3 4 5 6 7 ... LastLast