LandSandBoat / server

:sailboat: LandSandBoat - a server emulator for Final Fantasy XI
https://landsandboat.github.io/server/
GNU General Public License v3.0
298 stars 597 forks source link

Amanomurakumo (75) (and many more items) don't proc additional effect #882

Open Skerxan opened 3 years ago

Skerxan commented 3 years ago

Additional Information (Steps to reproduce/Expected behavior) :

The additional effect of Attack Down doesn't proc at all. I tested this as SAM75 on Tough and Easy Prey mobs. Not 1000s of swings tho mind you. It could be not enabled since there seems to be no source how strong the Attack Down is supposed to be. We only know that it procs about 10% of the time and that it can overwrite itself. Now if you take the Additional Effects of Gungir (-17%) and Bravura (-15%) into consideration, it can be safe to assume that Amano's Additional Effect could be around (-15% Attack Down).

Item ID 18318

https://www.bg-wiki.com/ffxi/Amanomurakumo_(Level_75) https://www.bluegartr.com/threads/90723-Relic-Augments?p=4512323&viewfull=1#post4512323 https://ffxiclopedia.fandom.com/wiki/Gungnir https://ffxiclopedia.fandom.com/wiki/Bravura

ShiyoKozuki commented 3 years ago

5-10% proc, -20% attk down.

TeoTwawki commented 3 years ago

Apologies, but for the time being hundreds of items are missing their add effects, this is known and also my fault. Its pretty easy to add them back now, just tedious as all getout.

The items need their modifiers added in item_mods.sql.

Examples

Add effect damage:

INSERT INTO `item_mods` VALUES (16564,431,1); -- Flame Blade: AddEffect (Type DAMAGE)
INSERT INTO `item_mods` VALUES (16564,499,1); -- subEffect fire
INSERT INTO `item_mods` VALUES (16564,500,10); -- AddEffect damage 10
INSERT INTO `item_mods` VALUES (16564,501,10); -- AddEffect chance 10%
INSERT INTO `item_mods` VALUES (16564,950,1); -- AddEffect element fire

Add effect status:

INSERT INTO `item_mods` VALUES (17464,431,2);   -- Additional effect: "Stun" (Type DEBUFF)
INSERT INTO `item_mods` VALUES (17464,499,16);  -- Additional effect animation (subEffect) xi.subEffect.STUN
INSERT INTO `item_mods` VALUES (17464,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (17464,951,10);  -- Additional effect Status ID xi.effect.STUN
INSERT INTO `item_mods` VALUES (17464,952,10);  -- Additional effect Status Potency 10
INSERT INTO `item_mods` VALUES (17464,953,5);   -- Additional effect Status Duration 5sec

Status type doesn't need an element, because I can get it from the status effect itself. Damage should be the upper end of unresisted damage the item can do. See \scripts\globals\additional_effects.lua for further kinds of add effects.

TeoTwawki commented 3 years ago

5-10% proc, -20% attk down.

https://www.bluegartr.com/threads/90723-Relic-Augments?p=4512990&viewfull=1#post4512990 wrong post

The claim is 17% but it woudl be odd for it to be less than Angon but still overwriting it, and since nobody posted data with the claim I can't take it as fact.

Is dere an Amano SAM in the audience?!

Skerxan commented 3 years ago

5-10% proc, -20% attk down.

https://www.bluegartr.com/threads/90723-Relic-Augments?p=4512990&viewfull=1#post4512990

The claim is 17% but it woudl be odd for it to be less than Angon but still overwriting it, and since nobody posted data with the claim I can't take it as fact.

Is dere an Amano SAM in the audience?!

That post talks about that Gungnir's Defense Down of -17% overwrites itself and Angons effect. Nothing to do with Amano per se.

TeoTwawki commented 3 years ago

woops, linked wrong thing, so sorry -deletes evidence-

I followed it from the amono page xD

ShiyoKozuki commented 3 years ago

Read it in a bg thread ages ago, documented it, didn't document post. It said 5-10% and -20% attack down.

TeoTwawki commented 3 years ago

its as good an estimate as any, since we overwrite by power normally is it has to at least be as strong as other things to overwrite them or else requires extra code and we don't want that

hooksta4 commented 2 years ago

Are we still needing to add all the proc's to the item_mods.sql ?

TeoTwawki commented 2 years ago

Are we still needing to add all the proc's to the item_mods.sql ?

a lot of basic ones like "fire damage" still need item mods entries. leave me all the weird edge cases like twlight dagger and bano del sol.

hooksta4 commented 2 years ago

Are we still needing to add all the proc's to the item_mods.sql ?

a lot of basic ones like "fire damage" still need item mods entries. leave me all the weird edge cases like twlight dagger and bano del sol.

Woudl this be a good place to start? https://ffxiclopedia.fandom.com/wiki/Additional_Effect

TeoTwawki commented 2 years ago

Woudl this be a good place to start? https://ffxiclopedia.fandom.com/wiki/Additional_Effect

no. don't even go to ffxiclopedia for data. its gonna be mainly bullshit. I've documented in-project everything we need, and all the broken items have 1 legacy placeholder modifier ID to be adjusted. You can search the file for ,431,1 and find them all.

From:

INSERT INTO `item_mods` VALUES (16387,431,1);
INSERT INTO `item_mods` VALUES (16549,431,1);

to:

-- Poison Cesti
INSERT INTO `item_mods` VALUES (16387,431,2);   -- Additional effect: Poison
INSERT INTO `item_mods` VALUES (16387,499,10);  -- Additional effect animation: xi.subEffect.POISON
INSERT INTO `item_mods` VALUES (16387,501,10);  -- Additional effect chance: 10%
INSERT INTO `item_mods` VALUES (16387,951,149); -- Additional effect status ID: xi.effect.POISON
INSERT INTO `item_mods` VALUES (16387,952,4);   -- Additional effect status potency: 4 (retail confirmation needed)
INSERT INTO `item_mods` VALUES (16387,953,30);  -- Additional effect status Duration (unresisted): 30sec
-- Divine Sword
INSERT INTO `item_mods` VALUES (16549,431,1);  -- Additional Effect: Light Damage
INSERT INTO `item_mods` VALUES (16549,499,7);  -- Additional effect animation: xi.subEffect.LIGHT
INSERT INTO `item_mods` VALUES (16549,500,10); -- Additional effect damage (unresisted): 10 (retail confirmation needed)
INSERT INTO `item_mods` VALUES (16549,501,10); -- Additional effect chance: 10%
INSERT INTO `item_mods` VALUES (16549,950,7);  -- Additional effect element: LIGHT

Subeffects are in the additional effect global. elements are enum'd in battleutils.h

We use the value that is the MOST the additional effect can land for, as resistance will handle fluctuations and reductions. The code also already handles bonuses for all but a few edge cases - holy bolts get their MND bonus, bloody bolts and element arrows get their INT bonus.

hooksta4 commented 2 years ago

I see what you mean now with the 431... having said that I was unable to get them to work (even the divine sword/poison cesti... thoughts?

TeoTwawki commented 2 years ago

I see what you mean now with the 431... having said that I was unable to get them to work (even the divine sword/poison cesti... thoughts?

have you pulled latest version of base branch? some folks were having issues with server init not loading the global into memory. the method was changed.

hooksta4 commented 2 years ago

Yea i thought I had... will double check - on a side note, cant reach you on discord anymore =(

hooksta4 commented 2 years ago

Yea just rebuilt it and none of the ones that are currently in the item_mods (poison cesti and divine sword) will proc... seems there might be something else backend? I don't have enough experience yet to decipher where that would be an issue at as it doesnt throw any errors?

TeoTwawki commented 2 years ago

Yea just rebuilt it and none of the ones that are currently in the item_mods (poison cesti and divine sword) will proc... seems there might be something else backend? I don't have enough experience yet to decipher where that would be an issue at as it doesnt throw any errors?

whats the item you are attempting to make that isn't proccing, and whats the sql code you added for it

hooksta4 commented 2 years ago

Purgatory Mace

INSERT INTO `item_mods` VALUES (17464,431,2);   -- Additional effect: "Stun" (Type DEBUFF)
INSERT INTO `item_mods` VALUES (17464,499,16);  -- Additional effect animation (subEffect) xi.subEffect.STUN
INSERT INTO `item_mods` VALUES (17464,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (17464,951,10);  -- Additional effect Status ID xi.effect.STUN
INSERT INTO `item_mods` VALUES (17464,952,10);  -- Additional effect Status Potency 10
INSERT INTO `item_mods` VALUES (17464,953,5);   -- Additional effect Status Duration 5sec

and

INSERT INTO `item_mods` VALUES (18355,431,2);   -- Hushed Baghnakhs (Additional effect: Silence)
INSERT INTO `item_mods` VALUES (18355,499,13);  -- Additional effect animation (subEffect) xi.subEffect.SILENCE
INSERT INTO `item_mods` VALUES (18355,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (18355,951,6);   -- Additional effect Status ID xi.effect.SILENCE
INSERT INTO `item_mods` VALUES (18355,952,5);   -- Additional effect Status Potency 5
INSERT INTO `item_mods` VALUES (18355,953,30);  -- Additional effect Status Duration 30sec
TeoTwawki commented 2 years ago

both of those items are already implemented so I don't understand what you are doing or why. Purgatory mace is at line 20961 of item_mods. I've used it myself, I know its working.

TeoTwawki commented 2 years ago

link me your branch you are working out of

hooksta4 commented 2 years ago

https://github.com/hooksta4/LSB_Hook_fork/tree/AE

But yes, I wanted to check and see if the ones that were already implemented worked... not sure where I went wrong at?

Xaver-DaRed commented 2 years ago

The rate of proc is low, but the issue was fixed and additional effects now work properly. I made a fresh pull and build and touched no file before launching. Xaver_2022 02 02_020234

hooksta4 commented 2 years ago

Well let me pull a brand new one and see assuming you are using stun knife there? 16503

Xaver-DaRed commented 2 years ago

Stun Kukri, but that should work aswell

hooksta4 commented 2 years ago

Ok got the AE on this fresh pull... will try to add a few others and see how it goes. Im going to focus on the Relic weapons (75) first and then move on from there as per the above. Thanks for hearing me out.

Cheers

TeoTwawki commented 2 years ago

just a heads up Excalibur may present an edge case I need to deal with and but Mjollnir and the others should be fine.

hooksta4 commented 2 years ago

How'd you know that was literally the next one on my list and I was just searching to see if there was something already that handled it... ??!!

TeoTwawki commented 2 years ago

How'd you know that was literally the next one on my list and I was just searching to see if there was something already that handled it... ??!!

Psychic. Powers.

hooksta4 commented 2 years ago

Or its third on the list ha ;)

hooksta4 commented 2 years ago

Team,

Working through these slowly but surely, however have an outlier or two that could use some assistance.

INSERT INTO `item_mods` VALUES (18330,431,2);   -- Claustrum 
INSERT INTO `item_mods` VALUES (18330,499,8);  -- Additional effect animation (subEffect) xi.subEffect.DISPEL
INSERT INTO `item_mods` VALUES (18330,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (18330,951,???);   -- Additional effect Status ID xi.effect.DISPEL 
INSERT INTO `item_mods` VALUES (18330,952,10);   -- Additional effect Status Potency 1 (Needs verification)
INSERT INTO `item_mods` VALUES (18330,953,15);  -- Additional effect Status Duration 15sec (Needs verification)

Curious about xi.effect for dispel for claustrum as there is not a xi.effect.DISPEL - is there something comprable?

INSERT INTO `item_mods` VALUES (18324,431,2);   -- Mjollnir 
INSERT INTO `item_mods` VALUES (18324,499,18);  -- Additional effect animation (subEffect) xi.subEffect.MP_DRAIN
INSERT INTO `item_mods` VALUES (18324,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (18324,951,369);   -- Additional effect Status ID xi.effect.ASPIR_SAMBA 
INSERT INTO `item_mods` VALUES (18324,952,10);   -- Additional effect Status Potency 1 (Needs verification)
INSERT INTO `item_mods` VALUES (18324,953,15);  -- Additional effect Status Duration 15sec (Needs verification)

Mjollnir xi.effect issue due to recover mp is not the same as mp drain correct? so would assume both xi.subeffect and xi.effect need correction but not seeing one? Maybe this needs to be built into core somewhere , same with excalibur?

TIA

TeoTwawki commented 2 years ago

Curious about xi.effect for dispel for claustrum as there is not a xi.effect.DISPEL - is there something comprable?

Uses ID 9 and animation matches light

Mjollnir xi.effect issue due to recover mp is not the same as mp drain correct? so would assume both xi.subeffect and xi.effect need correction but not seeing one? Maybe this needs to be built into core somewhere , same with excalibur?

There's an ID for that as well. its covered. its 4 for its add effect type and subeffects (thats the animation) are enum'd in battleentity.h

        DAMAGE = 1,
        DEBUFF = 2,
        HP_HEAL = 3,
        MP_HEAL = 4,
        HP_DRAIN = 5,
        MP_DRAIN = 6,
        TP_DRAIN = 7,
        HPMPTP_DRAIN = 8,
        DISPEL = 9,
        ABSORB_STATUS = 10,
        SELF_BUFF = 11,
        DEATH = 12,
    SUBEFFECT_FIRE_DAMAGE      = 1,  // 110000     3
    SUBEFFECT_ICE_DAMAGE       = 2,  // 1-01000    5
    SUBEFFECT_WIND_DAMAGE      = 3,  // 111000     7
    SUBEFFECT_EARTH_DAMAGE     = 4,  // 1-00100    9
    SUBEFFECT_LIGHTNING_DAMAGE = 5,  // 110100    11
    SUBEFFECT_WATER_DAMAGE     = 6,  // 1-01100   13
    SUBEFFECT_LIGHT_DAMAGE     = 7,  // 111100    15
    SUBEFFECT_DARKNESS_DAMAGE  = 8,  // 1-00010   17
    SUBEFFECT_SLEEP            = 9,  // 110010    19
    SUBEFFECT_POISON           = 10, // 1-01010   21
    SUBEFFECT_PARALYSIS        = 11,
    SUBEFFECT_BLIND            = 12, // 1-00110   25
    SUBEFFECT_SILENCE          = 13,
    SUBEFFECT_PETRIFY          = 14,
    SUBEFFECT_PLAGUE           = 15,
    SUBEFFECT_STUN             = 16,
    SUBEFFECT_CURSE            = 17,
    SUBEFFECT_DEFENSE_DOWN     = 18, // 1-01001   37
    SUBEFFECT_EVASION_DOWN     = 18, // Same subeffect as DEFENSE_DOWN
    SUBEFFECT_ATTACK_DOWN      = 18, // Same subeffect as DEFENSE_DOWN
    SUBEFFECT_DEATH            = 19,
    SUBEFFECT_SHIELD           = 20,
    SUBEFFECT_HP_DRAIN         = 21, // 1-10101   43  This is retail correct animation
    SUBEFFECT_MP_DRAIN         = 22, // This is retail correct animation
    SUBEFFECT_TP_DRAIN         = 22, // Pretty sure this is correct, but might use same animation as HP drain.
    SUBEFFECT_HASTE            = 23,
    // There are no additional attack effect animations beyond 23. Some effects share subeffect/animations.

Notice Some effects share subeffect/animations.

drains and heals will use same animations. so 22 for Mjolnir

hooksta4 commented 2 years ago

Perfect, thanks!

hooksta4 commented 2 years ago

Does this make sense?

--oynos_knife 16504
INSERT INTO `item_mods` VALUES (16504,431,11);   -- Additional effect: Haste (Type SELF_BUFF)
INSERT INTO `item_mods` VALUES (16504,499,23);  -- Additional effect animation (subEffect) xi.subEffect.HASTE
INSERT INTO `item_mods` VALUES (16504,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (16504,951,33);   -- Additional effect Status ID xi.effect.Haste
INSERT INTO `item_mods` VALUES (16504,953,180);  -- Additional effect Status Duration 180sec
TeoTwawki commented 2 years ago

needs, ITEM_ADDEFFECT_POWER mod added, but thats about right (it is 15% haste according to comments I could find online)

hooksta4 commented 2 years ago

Team,

As you can imagine, there are quite a few of these, woudl anyone be able to help QC them prior to doing a PR? Or rather, what is the best way to QC these?

TeoTwawki commented 2 years ago

temporarily modify the global to increase the proc rate here: https://github.com/LandSandBoat/server/blob/base/scripts/globals/additional_effects.lua#L101

    local chance = 101 -- item:getMod(xi.mod.ITEM_ADDEFFECT_CHANCE)

And then GM yourself the item and go smack something in the face.

hooksta4 commented 2 years ago

needs, ITEM_ADDEFFECT_POWER mod added, but thats about right (it is 15% haste according to comments I could find online)

So i had a question about a few of those, where do I determine that power? and 15% haste - such as

--oynos_knife 16504
INSERT INTO `item_mods` VALUES (16504,431,11);   -- Additional effect: Haste (Type SELF_BUFF)
INSERT INTO `item_mods` VALUES (16504,499,23);  -- Additional effect animation (subEffect) xi.subEffect.Haste
INSERT INTO `item_mods` VALUES (16504,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (16504,951,3);   -- Additional effect Status ID xi.effect.Haste
INSERT INTO `item_mods` VALUES (16504,952,15);   -- Additional effect Status Potency 15
INSERT INTO `item_mods` VALUES (16504,953,180);  -- Additional effect Status Duration 180sec
TeoTwawki commented 2 years ago

for the mod ID, its literately just another row, look at modifier.h to match the human readable name to its ID. to know how much of the mod to give..you have to have a source outside this project that tells you what retail has. Compare multiple wikis, test on actual retail game, etc..

TeoTwawki commented 2 years ago

to find 15% I googled it. seriously.

hooksta4 commented 2 years ago

That's not what I meant but ill look around and compare across for them all. Will put it through the test server a few at a time so as to not blow the entire thing up. will pr once thats complete. thanks for the assist.

TeoTwawki commented 2 years ago

where do I determine that power? and 15% haste - such as

I took this to mean how to determine what values to use e.g. how to know it would be 15%

That's not what I meant but ill look around and compare across for them all.

Did you mean how much modifier equates to 15%? There are comments in file that explains modifier usage usually for when its like 150 or 1500 to get 15% and such. Just browse modifier.h and status.lua

hooksta4 commented 2 years ago

Very well, I hope I am able to find all the potency of each of the item. For those I cannot find, I will reach out to some folks and see if we can get an accurate count.

Thanks again,

hooksta4 commented 2 years ago

Well here for example, Sleep Bolts

--Sleep Bolt
INSERT INTO `item_mods` VALUES (18149,431,2);   -- Additional effect: Sleep (Type DEBUFF)
INSERT INTO `item_mods` VALUES (18149,499,9);  -- Additional effect animation (subEffect) xi.subEffect.Sleep
INSERT INTO `item_mods` VALUES (18149,501,75);  -- Additional effect Chance 75%
INSERT INTO `item_mods` VALUES (18149,951,2);   -- Additional effect Status ID xi.effect.Sleep
INSERT INTO `item_mods` VALUES (18149,952,1);   -- Additional effect Status Potency 1
INSERT INTO `item_mods` VALUES (18149,953,10);  -- Additional effect Status Duration 10secs

chance rate is going to have to be verified. potency in this instance reflects what? Power of sleep? I don't know if it is needed because the duration is set at 10?

I understand (I think) how to navigate the potency of dots (potency is /tic) but things like stun, sleep, paralyze, dispel etc are a little bit of a quandary to me.

Is is possible to go back to when they were not in this system to get that information and use those values, such as for proc rate?

I understand yall are busy and really appreciate the help working through this.

TeoTwawki commented 2 years ago

sleep (and some other effects) don't even really use potency. haste and slow will though.

hooksta4 commented 2 years ago

For uniformity should I keep it in or remove if not needed? Also answered my own question about the finding of other potency etc. should have a finalized list tomorrow to PR.

hooksta4 commented 2 years ago

Team,

It seems that Fire, ice, wind procs are working however, unable to get any of the light, dark, earth, light and water to proc... could someone take a look and see if I am missing something? Thanks for the help as always. In the below sql the vulcan sword procs as it should with fire damage. However, when equipping the sacred sword/whale staff i get the following errors on game server... [error][error] luautils::additionalEffectAttack: stack index 2, expected number, received nil: not a numeric type (bad argument into 'short(unsigned short)') stack traceback: [C]: in function 'getMod' ./scripts/globals/magic.lua:57: in function 'AffinityBonusDmg' ./scripts/globals/magic.lua:946: in function 'addBonusesAbility' ./scripts/globals/additional_effects.lua:82: in function 'calcDamage' ./scripts/globals/additional_effects.lua:141: in function <./scripts/globals/additional_effects.lua:97> (luautils::additionalEffectAttack:2150)

INSERT INTO `item_mods` VALUES (17534,431,1);   -- Additional effect: water Damage (Type DAMAGE)--whale_staff +1 17534
INSERT INTO `item_mods` VALUES (17534,499,6);   -- Additional effect animation (subEffect)
INSERT INTO `item_mods` VALUES (17534,500,10);   -- Additional effect damage
INSERT INTO `item_mods` VALUES (17534,501,10);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (17534,950,11);  -- Additional effect element water (xi.damageType)

INSERT INTO `item_mods` VALUES (17682,431,1);   -- Additional effect: Light Damage (Type DAMAGE)--sacred_sword 17682
INSERT INTO `item_mods` VALUES (17682,499,7);   -- Additional effect animation (subEffect)
INSERT INTO `item_mods` VALUES (17682,500,21);   -- Additional effect damage
INSERT INTO `item_mods` VALUES (17682,501,5);  -- Additional effect Chance 5%
INSERT INTO `item_mods` VALUES (17682,950,12);  -- Additional effect element Light (xi.damageType)

INSERT INTO `item_mods` VALUES (17704,431,1);   -- Additional effect: Fire Damage (Type DAMAGE)--vulcan_sword 17704
INSERT INTO `item_mods` VALUES (17704,499,1);   -- Additional effect animation (subEffect)
INSERT INTO `item_mods` VALUES (17704,500,10);   -- Additional effect damage
INSERT INTO `item_mods` VALUES (17704,501,5);  -- Additional effect Chance 10%
INSERT INTO `item_mods` VALUES (17704,950,6);   -- Additional effect element Fire (xi.damageType)
TeoTwawki commented 2 years ago

look for which thing it didn't receive in those functions. its telling you its missing a value. expected number, received nil

it feels likely that you need to re-import your db changes and restart the map server. Can we please move further questions to a discussion thread?

edit:
invalid element values. can't getMod on elements that don't exist. water isn't eleven, light isn't 12. You are looking at the wrong enum. Thats the dmg type enum, not the element. We do not have a slashing dmg "element" which is why excal is going to be fun for me to fix.

TeoTwawki commented 2 years ago

self reminder: build "street map" into global's header so everyone can look at correct enums since there is so much variable name overlap.

LegenDAirie commented 5 months ago

bano

I would like to help get the Bano Del Sol working.

You mentioned to let you handle it because it's an edge case. How can I begin to help you get it working?