SWORD_ART_DIFF_CAT_DEFAULT = 0 SWORD_ART_DIFF_CAT_LARGE_WEAPON = 2 SWORD_ART_DIFF_CAT_POLEARM = 3 SWORD_ART_DIFF_CAT_LARGE_WEAPON_SMALL_SHIELD = 4 SWORD_ART_DIFF_CAT_POLEARM_SMALL_SHIELD = 5 SWORD_ART_DIFF_CAT_LARGE_WEAPON_LARGE_SHIELD = 8 SWORD_ART_DIFF_CAT_POLEARM_LARGE_SHIELD = 9 -- Stores possible override animations that exist for Sword Arts. -- Key: Sword Art ID (TAE ID minus 600) -- Possible values: -- -- 0: Idle (Default or Large Rapier) -- 2: Idle (Great Weapon) -- 3: Idle (Polearm) -- 4: Idle (Great Weapon) + Small Shield -- 5: Idle (Polearm) + Small Shield -- 8: Idle (Great Weapon) + Large Shield -- 9: Idle (Polearm) + Large Shield -- 20-59: Weapon Category SwordArtsCategory = { [0] = {SWORD_ART_DIFF_CAT_DEFAULT}, [1] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_FIST, WEAPON_CATEGORY_DUELING_SHIELD}, [2] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [3] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE, WEAPON_CATEGORY_BACKHAND_SWORD}, [4] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM}, [5] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [6] = {SWORD_ART_DIFF_CAT_DEFAULT}, [7] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE}, [8] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_DUELING_SHIELD}, [9] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_DUELING_SHIELD}, [10] = {SWORD_ART_DIFF_CAT_DEFAULT}, [11] = {SWORD_ART_DIFF_CAT_DEFAULT}, [12] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM}, [13] = {SWORD_ART_DIFF_CAT_DEFAULT}, [14] = {SWORD_ART_DIFF_CAT_DEFAULT}, [15] = {SWORD_ART_DIFF_CAT_DEFAULT}, [16] = {SWORD_ART_DIFF_CAT_DEFAULT}, [17] = {SWORD_ART_DIFF_CAT_DEFAULT}, [18] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_POLEARM}, [19] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_BACKHAND_SWORD}, [20] = {SWORD_ART_DIFF_CAT_DEFAULT}, [21] = {SWORD_ART_DIFF_CAT_DEFAULT}, [22] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE}, [23] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE}, [24] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE, WEAPON_CATEGORY_BACKHAND_SWORD}, [25] = {SWORD_ART_DIFF_CAT_DEFAULT}, [26] = {SWORD_ART_DIFF_CAT_DEFAULT}, [34] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_POLEARM}, -- Guardian Spearblade [50] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [51] = {SWORD_ART_DIFF_CAT_DEFAULT}, [52] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_TWINBLADE}, [53] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [54] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, WEAPON_CATEGORY_TWINBLADE}, [55] = {SWORD_ART_DIFF_CAT_DEFAULT}, [56] = {SWORD_ART_DIFF_CAT_DEFAULT}, [57] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON}, [58] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_BACKHAND_SWORD, WEAPON_CATEGORY_DUELING_SHIELD}, [59] = {SWORD_ART_DIFF_CAT_DEFAULT}, [61] = {SWORD_ART_DIFF_CAT_DEFAULT}, [62] = {SWORD_ART_DIFF_CAT_DEFAULT}, [63] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_BACKHAND_SWORD}, [64] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_FIST, WEAPON_CATEGORY_MARTIAL_ARTS, WEAPON_CATEGORY_DUELING_SHIELD, WEAPON_CATEGORY_BEAST_CLAW}, [65] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_POLEARM}, [66] = {SWORD_ART_DIFF_CAT_DEFAULT}, [67] = {SWORD_ART_DIFF_CAT_DEFAULT}, [68] = {SWORD_ART_DIFF_CAT_DEFAULT}, [69] = {SWORD_ART_DIFF_CAT_DEFAULT}, [70] = {SWORD_ART_DIFF_CAT_DEFAULT}, [71] = {SWORD_ART_DIFF_CAT_DEFAULT}, [72] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_BACKHAND_SWORD}, [73] = {SWORD_ART_DIFF_CAT_DEFAULT}, [74] = {SWORD_ART_DIFF_CAT_DEFAULT}, [75] = {SWORD_ART_DIFF_CAT_DEFAULT}, [76] = {SWORD_ART_DIFF_CAT_DEFAULT}, [87] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON}, -- Quality GS [90] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_LARGE_SHIELD, WEAPON_CATEGORY_SMALL_SHIELD, WEAPON_CATEGORY_DUELING_SHIELD}, [91] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, SWORD_ART_DIFF_CAT_LARGE_WEAPON_SMALL_SHIELD, SWORD_ART_DIFF_CAT_POLEARM_SMALL_SHIELD, SWORD_ART_DIFF_CAT_LARGE_WEAPON_LARGE_SHIELD, SWORD_ART_DIFF_CAT_POLEARM_LARGE_SHIELD, WEAPON_CATEGORY_LARGE_SHIELD, WEAPON_CATEGORY_SMALL_SHIELD, WEAPON_CATEGORY_DUELING_SHIELD}, [92] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_SHORT_SWORD, WEAPON_CATEGORY_CURVEDSWORD, WEAPON_CATEGORY_SMALL_SHIELD, WEAPON_CATEGORY_THROW_DAGGER}, [93] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM}, [94] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE}, [95] = {SWORD_ART_DIFF_CAT_DEFAULT}, [96] = {SWORD_ART_DIFF_CAT_DEFAULT}, [97] = {SWORD_ART_DIFF_CAT_DEFAULT}, [98] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_LARGE_SHIELD, WEAPON_CATEGORY_SMALL_SHIELD, WEAPON_CATEGORY_DUELING_SHIELD}, [99] = {SWORD_ART_DIFF_CAT_DEFAULT}, [100] = {SWORD_ART_DIFF_CAT_DEFAULT}, [101] = {SWORD_ART_DIFF_CAT_DEFAULT}, [102] = {SWORD_ART_DIFF_CAT_DEFAULT}, [103] = {SWORD_ART_DIFF_CAT_DEFAULT}, [105] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_LARGE_ARROW}, [106] = {SWORD_ART_DIFF_CAT_DEFAULT}, [108] = {SWORD_ART_DIFF_CAT_DEFAULT}, [110] = {SWORD_ART_DIFF_CAT_DEFAULT}, [107] = {SWORD_ART_DIFF_CAT_DEFAULT}, [109] = {SWORD_ART_DIFF_CAT_DEFAULT}, [111] = {SWORD_ART_DIFF_CAT_DEFAULT}, [112] = {SWORD_ART_DIFF_CAT_DEFAULT}, [113] = {SWORD_ART_DIFF_CAT_DEFAULT}, [114] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [115] = {SWORD_ART_DIFF_CAT_DEFAULT}, [116] = {SWORD_ART_DIFF_CAT_DEFAULT}, [117] = {SWORD_ART_DIFF_CAT_DEFAULT}, [118] = {SWORD_ART_DIFF_CAT_DEFAULT}, [123] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON}, -- Morgott's Cane [130] = {SWORD_ART_DIFF_CAT_DEFAULT}, [131] = {SWORD_ART_DIFF_CAT_DEFAULT}, [132] = {SWORD_ART_DIFF_CAT_DEFAULT}, [133] = {SWORD_ART_DIFF_CAT_DEFAULT}, [134] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [135] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [136] = {SWORD_ART_DIFF_CAT_DEFAULT}, [137] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_BACKHAND_SWORD, WEAPON_CATEGORY_LARGE_KATANA}, [139] = {SWORD_ART_DIFF_CAT_DEFAULT}, [140] = {SWORD_ART_DIFF_CAT_DEFAULT}, [141] = {SWORD_ART_DIFF_CAT_DEFAULT}, [142] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [143] = {SWORD_ART_DIFF_CAT_DEFAULT}, [144] = {SWORD_ART_DIFF_CAT_DEFAULT}, [148] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON}, -- Dragonkin Twinblade [149] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON}, -- Egg mace [150] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, WEAPON_CATEGORY_FIST, WEAPON_CATEGORY_MARTIAL_ARTS, WEAPON_CATEGORY_PERFUME_BOTTLE, WEAPON_CATEGORY_DUELING_SHIELD, WEAPON_CATEGORY_BEAST_CLAW}, [151] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [152] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [155] = {SWORD_ART_DIFF_CAT_DEFAULT}, [156] = {SWORD_ART_DIFF_CAT_DEFAULT}, [157] = {SWORD_ART_DIFF_CAT_DEFAULT}, [160] = {SWORD_ART_DIFF_CAT_DEFAULT}, [165] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE}, [166] = {SWORD_ART_DIFF_CAT_DEFAULT}, [167] = {SWORD_ART_DIFF_CAT_DEFAULT}, [168] = {SWORD_ART_DIFF_CAT_DEFAULT}, --------------------------------------------------------------------------------------------------------------------------------------- -- Below Here check override list in the GetSwordArtsDiffCategory function --------------------------------------------------------------------------------------------------------------------------------------- [196] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM}, [212] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_POLEARM}, -- Aberrant Spear --------------------------------------------------------------------------------------------------------------------------------------- -- Above Here check override list in the GetSwordArtsDiffCategory function --------------------------------------------------------------------------------------------------------------------------------------- [256] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_TWINBLADE}, [257] = {SWORD_ART_DIFF_CAT_DEFAULT}, [258] = {SWORD_ART_DIFF_CAT_DEFAULT}, [260] = {SWORD_ART_DIFF_CAT_DEFAULT}, [261] = {SWORD_ART_DIFF_CAT_DEFAULT}, [262] = {SWORD_ART_DIFF_CAT_DEFAULT}, [263] = {SWORD_ART_DIFF_CAT_DEFAULT}, [264] = {SWORD_ART_DIFF_CAT_DEFAULT}, [265] = {SWORD_ART_DIFF_CAT_DEFAULT}, [269] = {SWORD_ART_DIFF_CAT_DEFAULT}, [271] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE}, [273] = {SWORD_ART_DIFF_CAT_DEFAULT}, [274] = {SWORD_ART_DIFF_CAT_DEFAULT}, [276] = {SWORD_ART_DIFF_CAT_DEFAULT}, [277] = {SWORD_ART_DIFF_CAT_DEFAULT}, [278] = {SWORD_ART_DIFF_CAT_DEFAULT}, [279] = {SWORD_ART_DIFF_CAT_DEFAULT}, [280] = {SWORD_ART_DIFF_CAT_DEFAULT}, [281] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, [282] = {SWORD_ART_DIFF_CAT_DEFAULT}, [283] = {SWORD_ART_DIFF_CAT_DEFAULT}, [284] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM}, [285] = {SWORD_ART_DIFF_CAT_DEFAULT}, [286] = {SWORD_ART_DIFF_CAT_DEFAULT}, --------------------------------------------------------------------------------------------------------------------------------------- -- Below Here check override list in the GetSwordArtsDiffCategory function --------------------------------------------------------------------------------------------------------------------------------------- [305] = {SWORD_ART_DIFF_CAT_DEFAULT}, [307] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Dragon Lord's Recall [326] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Abbysal Flame Shot [340] = {SWORD_ART_DIFF_CAT_DEFAULT}, [341] = {SWORD_ART_DIFF_CAT_DEFAULT}, [342] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_MARTIAL_ARTS}, [343] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- 344-356 (Not present) [357] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- 358-380 (Not present) [381] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, -- Ancient Thunderclap [382] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_LARGE_WEAPON, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_DUELING_SHIELD}, -- Briar Assult [383] = {SWORD_ART_DIFF_CAT_DEFAULT, SWORD_ART_DIFF_CAT_POLEARM, WEAPON_CATEGORY_TWINBLADE}, -- Bestial Mauling [384] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, -- Primeval Cascade [385] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, -- Crucible's Fury [386] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Call to Thunder [387] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_FIST, WEAPON_CATEGORY_MARTIAL_ARTS, WEAPON_CATEGORY_DUELING_SHIELD, WEAPON_CATEGORY_BEAST_CLAW}, -- Ice Spikes -- 388 (Not present) [389] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Celestial Ascension -- 390 (Not present) [391] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD}, -- Aeonian Rush [392] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Titanic Cleave [393] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Shabriri's Revenge [394] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Scorched Earth [395] = {SWORD_ART_DIFF_CAT_DEFAULT, WEAPON_CATEGORY_DUELING_SHIELD, SWORD_ART_DIFF_CAT_LARGE_WEAPON}, -- Storm of the Ancients -- 396 (Not present) [397] = {SWORD_ART_DIFF_CAT_DEFAULT}, -- Flowing Piercer -- 398 (Not present) [399] = {SWORD_ART_DIFF_CAT_DEFAULT} } -- Determines which override of a Sword Art animation to play, based on the size or type of the weapon. -- The return of this function is processed to a different ID by the cases that use it. -- -- artID: Weapon Arts ID (TAE id minus 600) -- swordArtsTypeNew in SwordArtsParam -- idleCat: Stay Anim Category (Idle animation index for weapon) -- wepmotionOneHandId and wepmotionBothHandId in EquipParamWeapon -- wepCat: Weapon Animation Category (TAE ID for weapon type) -- wepmotionCategory in EquipParamWeapon -- -- Possible returns: -- -- 0: Idle (Default or Large Rapier) -- 2: Idle (Great Weapon) -- 3: Idle (Polearm) -- 4: Idle (Great Weapon) + Small Shield -- 5: Idle (Polearm) + Small Shield -- 8: Idle (Great Weapon) + Large Shield -- 9: Idle (Polearm) + Large Shield -- 20-59: Weapon Category function GetSwordArtsDiffCategory(artID, idleCat, wepCat) -- Old Category override disable (do we even need this at all?): -- If TAE ID above 770 (except 796), no overrides, only a single default animation. Also DLC stuff -- old convergence code: --if 170 <= artID and artID < 255 and artID ~= 196 and artID ~= 212 --or artID >= 300 and artID ~= 305 and artID ~= 326 and artID ~= 357 and artID ~= 399 --or artID == 275 or artID == 272 then -- New Category override disable: -- add 600 to get tae ID -- whitelist AOWs will always have categories, blacklist ones will never. local AowCat_blacklist = { [54] = true, -- Bloody Slash [272] = true, -- Hone Blade [275] = true, -- Red Bear Hunt } local AowCat_whitelist = { [196] = true, -- Golden Retaliation [212] = true, -- Eochaid's Dancing blade (aberrant spear) [305] = true, -- Poison Flower Blooms Twice [326] = true, -- Abyssal Flame Shot [357] = true, -- Igon's Drake Hunt [399] = true -- unused (Shield Strike?) } -- Category override disable if it's in the whitelist skip the code enabling categories, -- if between 770 and 854, above 900, or on the above blacklist, disable the categories. if AowCat_whitelist[artID] then elseif 170 <= artID and artID < 255 or artID >= 300 or AowCat_blacklist[artID] then return SWORD_ART_DIFF_CAT_DEFAULT end -- For TAE ID 769 (Radahn's Rain), return 45 (Greatbow) if artID == 169 then return WEAPON_CATEGORY_LARGE_ARROW end -- egg mace exception if (GetWeaponID(c_SwordArtsHand, 2) == "12545000" and artID == 149) then return SWORD_ART_DIFF_CAT_DEFAULT end -- Allows some weapon categories to query for whether the Sword Art permits a cousin category. -- Only used to allow Claws to use Fist Sword Arts. local wep_cat1 = wepCat if wepCat == WEAPON_CATEGORY_CLAW then wep_cat1 = WEAPON_CATEGORY_FIST elseif wep_cat1 == WEAPON_CATEGORY_LIGHT_LARGE_SWORD then return 0 end -- Idle animation TAEs. Two-hand is ignored. local idle_cat0 = idleCat if idle_cat0 >= 10 then idle_cat0 = idle_cat0 - 10 end -- Override for heavy thrusting swords (usually 3) if wepCat == WEAPON_CATEGORY_LARGE_RAPIER then idle_cat0 = SWORD_ART_DIFF_CAT_DEFAULT end if (artID == 90 or artID == 98 or artID == 151 or artID == 152) and env(GetEquipWeaponCategory, c_SwordArtsHand) == WEAPON_CATEGORY_DUELING_SHIELD and (c_Style == HAND_LEFT or c_Style == HAND_RIGHT) then return 0 end -- ivi: CASE 0: Not in table if SwordArtsCategory[artID] == nil then return SWORD_ART_DIFF_CAT_DEFAULT end -- CASE 1: Shields if c_SwordArtsHand == HAND_LEFT and c_Style ~= HAND_LEFT_BOTH then local shield_cat = -1 if idle_cat0 == 2 and wepCat == WEAPON_CATEGORY_SMALL_SHIELD then shield_cat = SWORD_ART_DIFF_CAT_LARGE_WEAPON_SMALL_SHIELD elseif idle_cat0 == 3 and wepCat == WEAPON_CATEGORY_SMALL_SHIELD then shield_cat = SWORD_ART_DIFF_CAT_POLEARM_SMALL_SHIELD elseif idle_cat0 == 2 and wepCat == WEAPON_CATEGORY_LARGE_SHIELD then shield_cat = SWORD_ART_DIFF_CAT_LARGE_WEAPON_LARGE_SHIELD elseif idle_cat0 == 3 and wepCat == WEAPON_CATEGORY_LARGE_SHIELD then shield_cat = SWORD_ART_DIFF_CAT_POLEARM_LARGE_SHIELD end if shield_cat ~= -1 then -- Only check if shields for i = 1, #SwordArtsCategory[artID], 1 do if SwordArtsCategory[artID][i] == shield_cat then env(DebugLogOutput, "GetSwordArtsDiffCategory shield_cat:" .. shield_cat) return shield_cat end end end end -- CASE 2: Weapon Categories for j = 1, #SwordArtsCategory[artID], 1 do if SwordArtsCategory[artID][j] == wepCat then env(DebugLogOutput, "GetSwordArtsDiffCategory wepCat0:" .. wepCat) return wepCat end end -- ivi: Additional check to avoid unnecessary second loop if wep_cat1 ~= nil then -- CASE 3: Auxiliary weapon category (Some weapon categories count the same as others) for j = 1, #SwordArtsCategory[artID], 1 do if SwordArtsCategory[artID][j] == wep_cat1 then env(DebugLogOutput, "GetSwordArtsDiffCategory wepCat1:" .. wep_cat1) return wep_cat1 end end end -- Shield Arts (90 is Shield Bash, 99 is Thops Barrier) if artID >= 90 and artID <= 99 and (c_SwordArtsHand ~= HAND_LEFT or c_Style == HAND_LEFT_BOTH) then return SWORD_ART_DIFF_CAT_DEFAULT end -- CASE 4: Idle categories for j = 1, #SwordArtsCategory[artID], 1 do if SwordArtsCategory[artID][j] == idle_cat0 then env(DebugLogOutput, "GetSwordArtsDiffCategory idle_cat0:" .. idle_cat0) return idle_cat0 end end return SWORD_ART_DIFF_CAT_DEFAULT end -- Table storing information about weapon arts. -- Concerns playing a "weapon retrieval" animation after -- the sword art was executed. -- -- Table key: Sword Art ID (TAE ID minus 600) -- Value 1: Right hand, weapon art cast from right hand -- Value 2: Right hand, weapon art cast from left hand -- Value 3: Left hand -- -- TRUE: Weapon was sheathed during animation, play retrieval animation. -- FALSE: Weapon was used to perform the sword art, no retrieval animation. SwordArtPutOppositeWeapon = { [0] = {TRUE, FALSE, TRUE}, [1] = {TRUE, FALSE, TRUE}, [2] = {TRUE, FALSE, TRUE}, [3] = {TRUE, FALSE, TRUE}, -- 4 (Not present) [5] = {TRUE, FALSE, TRUE}, [6] = {TRUE, FALSE, TRUE}, [7] = {TRUE, FALSE, TRUE}, [8] = {FALSE, FALSE, TRUE}, [9] = {FALSE, FALSE, TRUE}, [10] = {TRUE, FALSE, TRUE}, [11] = {TRUE, FALSE, TRUE}, [12] = {TRUE, FALSE, TRUE}, [13] = {TRUE, FALSE, TRUE}, [14] = {TRUE, FALSE, TRUE}, [15] = {TRUE, FALSE, TRUE}, [16] = {TRUE, FALSE, TRUE}, [17] = {FALSE, FALSE, FALSE}, [18] = {TRUE, FALSE, TRUE}, [19] = {TRUE, FALSE, TRUE}, [20] = {TRUE, FALSE, TRUE}, -- 21 (Present) [22] = {TRUE, FALSE, TRUE}, [23] = {TRUE, FALSE, TRUE}, [24] = {FALSE, FALSE, TRUE}, [25] = {TRUE, FALSE, TRUE}, [26] = {TRUE, FALSE, TRUE}, [30] = {TRUE, FALSE, FALSE}, [37] = {TRUE, FALSE, TRUE}, -- zephyr blades [41] = {TRUE, FALSE, FALSE}, --Carwyn's Epee -- 27-49 (Not present) [50] = {FALSE, FALSE, TRUE}, [51] = {TRUE, FALSE, TRUE}, [52] = {TRUE, FALSE, TRUE}, [53] = {FALSE, FALSE, TRUE}, [54] = {TRUE, FALSE, TRUE}, [55] = {TRUE, FALSE, FALSE}, [56] = {TRUE, FALSE, TRUE}, [57] = {TRUE, FALSE, TRUE}, [58] = {TRUE, FALSE, TRUE}, [59] = {TRUE, FALSE, TRUE}, [61] = {TRUE, FALSE, TRUE}, [62] = {TRUE, FALSE, FALSE}, [63] = {TRUE, FALSE, TRUE}, [64] = {FALSE, FALSE, TRUE}, [65] = {TRUE, FALSE, TRUE}, [66] = {TRUE, FALSE, TRUE}, [67] = {TRUE, FALSE, TRUE}, [68] = {TRUE, FALSE, TRUE}, [69] = {TRUE, FALSE, TRUE}, [70] = {TRUE, FALSE, TRUE}, [71] = {TRUE, FALSE, TRUE}, [72] = {TRUE, FALSE, TRUE}, [73] = {TRUE, FALSE, TRUE}, [74] = {FALSE, FALSE, TRUE}, [75] = {TRUE, FALSE, TRUE}, [76] = {TRUE, FALSE, TRUE}, [82] = {TRUE, FALSE, TRUE}, -- Hammer of Virtue [84] = {TRUE, TRUE, TRUE}, -- flash of gold [kmstr] [87] = {TRUE, FALSE, TRUE}, -- LGS / GS Trick Weapon -- 77-89 (Not present) [90] = {TRUE, FALSE, TRUE}, [91] = {FALSE, FALSE, FALSE}, [92] = {FALSE, FALSE, TRUE}, [93] = {FALSE, FALSE, TRUE}, [94] = {FALSE, FALSE, TRUE}, [95] = {FALSE, FALSE, TRUE}, [96] = {FALSE, FALSE, TRUE}, [97] = {FALSE, FALSE, TRUE}, [98] = {TRUE, TRUE, TRUE}, [99] = {FALSE, FALSE, FALSE}, [100] = {FALSE, FALSE, FALSE}, [101] = {FALSE, FALSE, FALSE}, [102] = {FALSE, FALSE, FALSE}, [103] = {FALSE, FALSE, FALSE}, -- 104 (Not present) [105] = {FALSE, FALSE, FALSE}, [106] = {FALSE, FALSE, FALSE}, -- 107 (Not Present) [108] = {FALSE, FALSE, FALSE}, -- 109 (Not present) [110] = {FALSE, FALSE, TRUE}, [111] = {FALSE, FALSE, TRUE}, [112] = {FALSE, FALSE, TRUE}, [113] = {FALSE, FALSE, TRUE}, [114] = {TRUE, FALSE, TRUE}, [115] = {FALSE, FALSE, TRUE}, [116] = {FALSE, FALSE, TRUE}, [117] = {TRUE, FALSE, TRUE}, [118] = {TRUE, FALSE, TRUE}, -- 119-129 (Not present) [130] = {FALSE, FALSE, TRUE}, [131] = {FALSE, FALSE, TRUE}, [132] = {TRUE, FALSE, TRUE}, [133] = {FALSE, FALSE, TRUE}, [134] = {TRUE, FALSE, TRUE}, [135] = {TRUE, FALSE, TRUE}, [136] = {TRUE, FALSE, TRUE}, [137] = {FALSE, FALSE, TRUE}, [139] = {FALSE, FALSE, FALSE}, -- Deflecting Ash [140] = {FALSE, FALSE, TRUE}, [141] = {FALSE, FALSE, TRUE}, [142] = {FALSE, FALSE, TRUE}, [143] = {FALSE, FALSE, TRUE}, [144] = {TRUE, FALSE, TRUE}, [147] = {FALSE, FALSE, TRUE}, -- Halberd of Archea [148] = {TRUE, FALSE, TRUE}, -- Dragonkin twinblade [150] = {TRUE, FALSE, TRUE}, [151] = {FALSE, FALSE, TRUE}, [152] = {TRUE, TRUE, TRUE}, [154] = {FALSE, FALSE, TRUE}, -- Nia's Passot [155] = {FALSE, FALSE, TRUE}, [156] = {FALSE, FALSE, TRUE}, [157] = {FALSE, FALSE, TRUE}, [160] = {FALSE, FALSE, TRUE}, [165] = {TRUE, FALSE, TRUE}, [166] = {TRUE, FALSE, TRUE}, [167] = {TRUE, FALSE, TRUE}, [168] = {TRUE, FALSE, TRUE}, [169] = {FALSE, FALSE, FALSE}, [170] = {TRUE, FALSE, TRUE}, [171] = {FALSE, FALSE, TRUE}, [172] = {TRUE, FALSE, FALSE}, [173] = {TRUE, FALSE, TRUE}, [174] = {FALSE, FALSE, TRUE}, [175] = {TRUE, FALSE, TRUE}, [176] = {TRUE, FALSE, TRUE}, [177] = {TRUE, FALSE, TRUE}, [178] = {TRUE, FALSE, TRUE}, [179] = {TRUE, FALSE, TRUE}, -- 180 -- 181 [182] = {FALSE, FALSE, TRUE}, [183] = {TRUE, FALSE, TRUE}, [184] = {TRUE, FALSE, TRUE}, [185] = {TRUE, FALSE, TRUE}, [186] = {TRUE, FALSE, TRUE}, [187] = {FALSE, FALSE, TRUE}, [188] = {TRUE, FALSE, TRUE}, [189] = {TRUE, FALSE, TRUE}, [190] = {FALSE, FALSE, FALSE}, [191] = {TRUE, FALSE, FALSE}, [192] = {TRUE, FALSE, TRUE}, [193] = {FALSE, FALSE, TRUE}, [194] = {FALSE, FALSE, TRUE}, [195] = {FALSE, TRUE, FALSE}, [196] = {FALSE, FALSE, FALSE}, [197] = {FALSE, FALSE, FALSE}, [198] = {FALSE, FALSE, TRUE}, [199] = {TRUE, FALSE, TRUE}, [200] = {TRUE, FALSE, TRUE}, [201] = {TRUE, TRUE, FALSE}, [202] = {FALSE, FALSE, FALSE}, --Tongues of Fire [203] = {TRUE, FALSE, TRUE}, [204] = {TRUE, FALSE, TRUE}, [205] = {TRUE, FALSE, TRUE}, [206] = {FALSE, FALSE, TRUE}, [207] = {TRUE, FALSE, TRUE}, [208] = {TRUE, FALSE, TRUE}, [209] = {TRUE, FALSE, TRUE}, [210] = {FALSE, FALSE, TRUE}, [211] = {FALSE, FALSE, FALSE}, [212] = {FALSE, FALSE, TRUE}, [213] = {TRUE, FALSE, TRUE}, [214] = {TRUE, FALSE, TRUE}, [215] = {TRUE, FALSE, TRUE}, [216] = {FALSE, FALSE, TRUE}, [217] = {FALSE, FALSE, TRUE}, [218] = {TRUE, FALSE, TRUE}, [219] = {TRUE, FALSE, FALSE}, [220] = {FALSE, FALSE, TRUE}, [221] = {FALSE, FALSE, TRUE}, [222] = {TRUE, FALSE, TRUE}, [223] = {TRUE, FALSE, TRUE}, [224] = {TRUE, FALSE, TRUE}, [225] = {TRUE, FALSE, TRUE}, [226] = {TRUE, FALSE, TRUE}, [227] = {TRUE, FALSE, TRUE}, [228] = {TRUE, FALSE, TRUE}, [229] = {TRUE, FALSE, TRUE}, [230] = {TRUE, FALSE, TRUE}, -- Sulien's Razor [231] = {TRUE, FALSE, TRUE}, [232] = {TRUE, FALSE, FALSE}, [233] = {TRUE, FALSE, TRUE}, [234] = {TRUE, FALSE, TRUE}, [235] = {TRUE, FALSE, TRUE}, [236] = {TRUE, FALSE, TRUE}, [237] = {TRUE, FALSE, TRUE}, [238] = {TRUE, FALSE, TRUE}, [239] = {TRUE, FALSE, TRUE}, [240] = {TRUE, FALSE, TRUE}, [241] = {TRUE, FALSE, TRUE}, [242] = {TRUE, FALSE, TRUE}, [243] = {TRUE, FALSE, TRUE}, [244] = {TRUE, FALSE, TRUE}, [245] = {FALSE, FALSE, TRUE}, [246] = {TRUE, FALSE, TRUE}, [247] = {FALSE, FALSE, FALSE}, [248] = {TRUE, FALSE, FALSE}, [249] = {TRUE, FALSE, FALSE}, [250] = {TRUE, FALSE, TRUE}, [251] = {TRUE, FALSE, TRUE}, [252] = {TRUE, FALSE, FALSE}, [253] = {TRUE, FALSE, TRUE}, [254] = {TRUE, FALSE, TRUE}, [255] = {FALSE, FALSE, TRUE}, [256] = {FALSE, FALSE, TRUE}, [257] = {FALSE, FALSE, TRUE}, [258] = {TRUE, FALSE, FALSE}, [259] = {FALSE, FALSE, TRUE}, [260] = {TRUE, FALSE, TRUE}, [261] = {FALSE, FALSE, TRUE}, [262] = {FALSE, FALSE, TRUE}, [263] = {TRUE, FALSE, TRUE}, [264] = {FALSE, FALSE, TRUE}, [265] = {FALSE, FALSE, TRUE}, [266] = {FALSE, FALSE, TRUE}, [267] = {FALSE, FALSE, TRUE}, [268] = {FALSE, FALSE, TRUE}, [269] = {FALSE, FALSE, TRUE}, [270] = {FALSE, FALSE, TRUE}, [271] = {FALSE, FALSE, TRUE}, [272] = {TRUE, FALSE, TRUE}, [273] = {TRUE, FALSE, TRUE}, [274] = {TRUE, FALSE, TRUE}, [275] = {TRUE, FALSE, TRUE}, [276] = {FALSE, FALSE, TRUE}, [277] = {TRUE, FALSE, TRUE}, [278] = {TRUE, FALSE, TRUE}, [279] = {FALSE, FALSE, TRUE}, [280] = {FALSE, FALSE, TRUE}, [281] = {TRUE, FALSE, TRUE}, [282] = {TRUE, FALSE, TRUE}, [283] = {FALSE, FALSE, TRUE}, [284] = {TRUE, FALSE, TRUE}, [285] = {TRUE, FALSE, TRUE}, [286] = {FALSE, FALSE, TRUE}, [287] = {FALSE, FALSE, TRUE}, [288] = {FALSE, FALSE, TRUE}, [289] = {FALSE, FALSE, TRUE}, [290] = {FALSE, FALSE, TRUE}, [291] = {FALSE, FALSE, TRUE}, [292] = {FALSE, FALSE, TRUE}, [293] = {FALSE, FALSE, TRUE}, [294] = {FALSE, FALSE, TRUE}, [295] = {FALSE, FALSE, TRUE}, [296] = {FALSE, FALSE, TRUE}, [297] = {FALSE, FALSE, TRUE}, [298] = {FALSE, FALSE, TRUE}, [299] = {FALSE, FALSE, TRUE}, [300] = {TRUE, FALSE, TRUE}, [301] = {FALSE, FALSE, TRUE}, [302] = {FALSE, FALSE, TRUE}, [303] = {FALSE, FALSE, TRUE}, [304] = {TRUE, FALSE, TRUE}, [305] = {FALSE, FALSE, TRUE}, [306] = {FALSE, FALSE, TRUE}, [307] = {TRUE, FALSE, TRUE}, -- Dragon Lord's Recall [308] = {TRUE, FALSE, TRUE}, [309] = {TRUE, FALSE, TRUE}, [310] = {TRUE, FALSE, TRUE}, [311] = {TRUE, FALSE, TRUE}, [312] = {FALSE, FALSE, TRUE}, [313] = {TRUE, FALSE, TRUE}, [314] = {TRUE, FALSE, TRUE}, [315] = {TRUE, FALSE, TRUE}, [316] = {TRUE, FALSE, TRUE}, [317] = {TRUE, FALSE, TRUE}, [318] = {TRUE, FALSE, TRUE}, [319] = {FALSE, FALSE, TRUE}, [320] = {TRUE, FALSE, TRUE}, [321] = {FALSE, FALSE, TRUE}, [322] = {TRUE, FALSE, TRUE}, [323] = {FALSE, FALSE, TRUE}, [324] = {TRUE, TRUE, TRUE}, [325] = {FALSE, FALSE, TRUE}, [326] = {FALSE, FALSE, FALSE}, -- Abyssal Flame Shot [327] = {TRUE, FALSE, TRUE}, [328] = {FALSE, FALSE, TRUE}, [329] = {TRUE, FALSE, TRUE}, [330] = {FALSE, FALSE, TRUE}, [331] = {TRUE, FALSE, TRUE}, [332] = {FALSE, FALSE, TRUE}, [333] = {FALSE, FALSE, TRUE}, [334] = {FALSE, FALSE, TRUE}, [335] = {TRUE, FALSE, TRUE}, [336] = {TRUE, FALSE, TRUE}, [337] = {FALSE, FALSE, FALSE}, [338] = {FALSE, FALSE, TRUE}, [339] = {FALSE, FALSE, TRUE}, [340] = {TRUE, FALSE, TRUE}, [341] = {TRUE, FALSE, TRUE}, [342] = {TRUE, FALSE, TRUE}, [343] = {TRUE, FALSE, TRUE}, [344] = {TRUE, FALSE, FALSE}, [345] = {TRUE, FALSE, FALSE}, [346] = {FALSE, FALSE, FALSE}, [347] = {FALSE, FALSE, FALSE}, [348] = {FALSE, FALSE, TRUE}, [349] = {TRUE, FALSE, TRUE}, [350] = {TRUE, FALSE, TRUE}, [351] = {TRUE, FALSE, TRUE}, [352] = {FALSE, FALSE, TRUE}, [353] = {TRUE, FALSE, TRUE}, [354] = {TRUE, FALSE, TRUE}, [355] = {TRUE, FALSE, TRUE}, [356] = {FALSE, FALSE, TRUE}, [357] = {FALSE, FALSE, FALSE}, [358] = {FALSE, FALSE, TRUE}, [359] = {TRUE, FALSE, TRUE}, [360] = {FALSE, FALSE, TRUE}, [361] = {TRUE, FALSE, TRUE}, [362] = {TRUE, FALSE, TRUE}, [363] = {FALSE, FALSE, TRUE}, [364] = {TRUE, FALSE, TRUE}, [365] = {FALSE, FALSE, TRUE}, [366] = {FALSE, FALSE, TRUE}, [367] = {FALSE, FALSE, TRUE}, [368] = {TRUE, FALSE, TRUE}, [369] = {FALSE, FALSE, TRUE}, [370] = {FALSE, FALSE, TRUE}, [371] = {FALSE, FALSE, FALSE}, [372] = {FALSE, FALSE, TRUE}, [373] = {FALSE, FALSE, TRUE}, [374] = {FALSE, FALSE, TRUE}, [375] = {FALSE, FALSE, TRUE}, [376] = {FALSE, FALSE, TRUE}, [377] = {FALSE, FALSE, TRUE}, [378] = {FALSE, FALSE, TRUE}, [379] = {FALSE, FALSE, TRUE}, [380] = {FALSE, FALSE, TRUE}, [381] = {TRUE, FALSE, TRUE}, -- Ancient Thunderclap [382] = {FALSE, FALSE, TRUE}, -- Briar Assult [383] = {TRUE, FALSE, TRUE}, -- Bestial Mauling [384] = {FALSE, FALSE, TRUE}, -- Primeval Cascade [385] = {FALSE, FALSE, TRUE}, -- Crucible's Fury [386] = {TRUE, FALSE, TRUE}, -- Call to Thunder [387] = {FALSE, FALSE, TRUE}, -- Ice Spikes [388] = {TRUE, FALSE, TRUE}, -- smithscript rosary [389] = {TRUE, FALSE, TRUE}, -- Celestial Ascension --[390] = {FALSE, FALSE, TRUE}, -- Not present [391] = {FALSE, FALSE, TRUE}, -- Aeonian Rush [392] = {TRUE, FALSE, TRUE}, -- Titanic Cleave [393] = {TRUE, FALSE, TRUE}, -- Shabriri's Revenge [394] = {FALSE, FALSE, TRUE}, -- Scorched Earth [395] = {TRUE, FALSE, TRUE}, -- Storm of the Ancients --[396] = {FALSE, FALSE, TRUE}, -- not used, tae potentially fucked? [397] = {FALSE, FALSE, TRUE}, -- Flowing Piercer --[398] = {FALSE, FALSE, TRUE}, -- Not present [399] = {FALSE, FALSE, TRUE} } -- Decides whether to perform a "retrieve weapon" animation after finishing a Weapon Art. -- See the above table for reference. function GetSwordArtsPutOppositeWeapon() -- ivi: In Fromsoft's original code, this was nil by default. FALSE is more forgiving for custom weapon arts. local result = FALSE -- ivi: Add sanity check for absent entries (custom Sword Arts). if SwordArtPutOppositeWeapon[c_SwordArtsID] ~= nil then if c_Style == HAND_RIGHT then if HAND_RIGHT == c_SwordArtsHand then if c_SwordArtsID == 276 and GetVariable("SwordArtsRollingDirection") == 3 then result = TRUE -- DLC special case else result = SwordArtPutOppositeWeapon[c_SwordArtsID][1] -- Right hand, weapon art cast from right hand end else result = SwordArtPutOppositeWeapon[c_SwordArtsID][2] -- Right hand, weapon art cast from left hand end elseif env(GetEquipWeaponCategory, c_SwordArtsHand) == WEAPON_CATEGORY_THROW_DAGGER or env(GetEquipWeaponCategory, c_SwordArtsHand) == WEAPON_CATEGORY_BACKHAND_SWORD then result = SwordArtPutOppositeWeapon[c_SwordArtsID][1] -- DLC special case else result = SwordArtPutOppositeWeapon[c_SwordArtsID][3] -- Left hand end end return result end -- Table storing information about Magic. -- Concerns playing a "weapon retrieval" animation after -- the Magic was executed. -- -- Table key: Motion Category in Magic Param (TAE ID minus 400) -- Value 1: Right hand, Magic cast from right hand -- Value 2: Right hand, Magic cast from left hand -- Value 3: Left hand -- -- TRUE: Weapon was sheathed during animation, play retrieval animation. -- FALSE: Weapon was used to perform the sword art, no retrieval animation. -- This Function normally lives in CommonDefine.Hks MagicPutOppositeWeapon = { [0] = {TRUE, TRUE, TRUE}, [1] = {FALSE, FALSE, TRUE}, [2] = {FALSE, FALSE, TRUE}, [3] = {FALSE, FALSE, TRUE}, [4] = {FALSE, FALSE, TRUE}, [5] = {TRUE, TRUE, TRUE}, [6] = {TRUE, TRUE, TRUE}, [7] = {TRUE, TRUE, TRUE}, [8] = {FALSE, FALSE, TRUE}, [9] = {FALSE, FALSE, TRUE}, [10] = {FALSE, FALSE, TRUE}, [11] = {FALSE, FALSE, TRUE}, [12] = {FALSE, FALSE, TRUE}, [13] = {FALSE, FALSE, TRUE}, [14] = {TRUE, TRUE, TRUE}, [15] = {TRUE, TRUE, TRUE}, [16] = {FALSE, FALSE, TRUE}, [17] = {FALSE, FALSE, TRUE}, [18] = {FALSE, FALSE, TRUE}, [19] = {FALSE, FALSE, TRUE}, [20] = {FALSE, FALSE, TRUE}, [21] = {FALSE, FALSE, TRUE}, [22] = {TRUE, TRUE, TRUE}, [23] = {FALSE, FALSE, TRUE}, [24] = {TRUE, TRUE, TRUE}, [25] = {FALSE, FALSE, TRUE}, [26] = {FALSE, FALSE, TRUE}, [27] = {FALSE, FALSE, TRUE}, [28] = {FALSE, FALSE, TRUE}, [29] = {FALSE, FALSE, TRUE}, [30] = {FALSE, FALSE, TRUE}, [31] = {FALSE, FALSE, TRUE}, [32] = {FALSE, FALSE, TRUE}, [33] = {FALSE, FALSE, TRUE}, [34] = {FALSE, FALSE, TRUE}, [35] = {FALSE, FALSE, TRUE}, [36] = {FALSE, FALSE, TRUE}, [37] = {FALSE, FALSE, TRUE}, [38] = {FALSE, FALSE, TRUE}, [39] = {FALSE, FALSE, TRUE}, [40] = {FALSE, FALSE, TRUE}, [41] = {FALSE, FALSE, TRUE}, [42] = {FALSE, FALSE, TRUE}, [43] = {FALSE, FALSE, TRUE}, [44] = {FALSE, FALSE, TRUE}, [45] = {FALSE, FALSE, TRUE}, [46] = {FALSE, FALSE, TRUE}, [47] = {FALSE, FALSE, TRUE}, [48] = {TRUE, TRUE, TRUE}, [49] = {FALSE, FALSE, TRUE}, [50] = {TRUE, TRUE, TRUE}, [51] = {TRUE, TRUE, TRUE}, [52] = {FALSE, FALSE, TRUE}, [53] = {FALSE, FALSE, TRUE}, [54] = {TRUE, TRUE, TRUE}, [55] = {TRUE, TRUE, TRUE}, [56] = {TRUE, TRUE, TRUE}, [57] = {TRUE, TRUE, TRUE}, [58] = {TRUE, TRUE, TRUE}, [59] = {FALSE, FALSE, TRUE}, [60] = {TRUE, TRUE, TRUE}, [61] = {FALSE, FALSE, TRUE}, [62] = {FALSE, FALSE, TRUE}, [63] = {FALSE, FALSE, TRUE}, [64] = {FALSE, FALSE, TRUE}, [65] = {FALSE, FALSE, TRUE}, [66] = {FALSE, FALSE, TRUE}, [67] = {TRUE, TRUE, TRUE}, [68] = {TRUE, TRUE, TRUE}, -- Furnace Hammer [69] = {FALSE, FALSE, TRUE}, [70] = {FALSE, FALSE, TRUE}, [71] = {TRUE, TRUE, TRUE}, [72] = {FALSE, FALSE, TRUE}, [73] = {FALSE, FALSE, TRUE}, [74] = {TRUE, TRUE, TRUE}, [75] = {FALSE, FALSE, TRUE}, [76] = {FALSE, FALSE, TRUE}, [77] = {FALSE, FALSE, TRUE}, [78] = {FALSE, FALSE, TRUE}, [79] = {FALSE, FALSE, TRUE}, [80] = {FALSE, FALSE, TRUE}, [81] = {TRUE, TRUE, TRUE}, [82] = {TRUE, TRUE, TRUE}, [83] = {FALSE, FALSE, TRUE}, [84] = {FALSE, FALSE, TRUE}, [85] = {FALSE, FALSE, TRUE}, [86] = {TRUE, TRUE, TRUE}, [87] = {TRUE, TRUE, TRUE}, [88] = {TRUE, TRUE, TRUE}, [89] = {TRUE, TRUE, TRUE}, [90] = {TRUE, TRUE, TRUE}, [91] = {TRUE, TRUE, TRUE}, [92] = {FALSE, FALSE, TRUE}, [93] = {FALSE, FALSE, TRUE}, [94] = {FALSE, FALSE, TRUE}, [95] = {FALSE, FALSE, TRUE}, [96] = {FALSE, FALSE, TRUE}, [97] = {FALSE, FALSE, TRUE}, [98] = {TRUE, TRUE, TRUE}, [99] = {FALSE, FALSE, TRUE}, [100] = {FALSE, FALSE, TRUE}, [101] = {FALSE, FALSE, TRUE}, [102] = {TRUE, TRUE, TRUE}, [103] = {FALSE, FALSE, TRUE}, [104] = {FALSE, FALSE, TRUE}, [105] = {TRUE, TRUE, TRUE}, [106] = {FALSE, FALSE, TRUE}, [107] = {FALSE, FALSE, TRUE}, [108] = {FALSE, FALSE, TRUE}, [109] = {FALSE, FALSE, TRUE}, [110] = {FALSE, FALSE, TRUE}, [111] = {FALSE, FALSE, TRUE}, [112] = {FALSE, FALSE, TRUE}, [113] = {FALSE, FALSE, TRUE}, [114] = {FALSE, FALSE, TRUE}, [115] = {TRUE, TRUE, TRUE}, [116] = {TRUE, TRUE, TRUE}, [117] = {FALSE, FALSE, TRUE}, [118] = {FALSE, FALSE, TRUE}, [119] = {FALSE, FALSE, TRUE}, [120] = {TRUE, TRUE, TRUE}, [121] = {TRUE, TRUE, TRUE}, [122] = {TRUE, TRUE, TRUE}, [123] = {TRUE, TRUE, TRUE}, [124] = {FALSE, FALSE, TRUE}, [125] = {TRUE, TRUE, TRUE}, [126] = {FALSE, FALSE, TRUE}, [127] = {FALSE, FALSE, TRUE}, [128] = {TRUE, TRUE, TRUE}, [129] = {TRUE, TRUE, TRUE}, [130] = {TRUE, TRUE, TRUE}, [131] = {TRUE, TRUE, TRUE}, [132] = {FALSE, FALSE, TRUE}, [133] = {TRUE, TRUE, TRUE}, [134] = {FALSE, TRUE, TRUE}, [135] = {TRUE, TRUE, TRUE}, [136] = {TRUE, TRUE, TRUE}, [137] = {TRUE, TRUE, TRUE}, [138] = {FALSE, FALSE, TRUE}, [139] = {FALSE, FALSE, TRUE}, [140] = {FALSE, FALSE, TRUE}, [141] = {FALSE, FALSE, TRUE}, [142] = {FALSE, FALSE, TRUE}, [143] = {FALSE, FALSE, TRUE}, [144] = {TRUE, TRUE, TRUE}, [145] = {FALSE, FALSE, TRUE}, [146] = {TRUE, TRUE, TRUE}, [147] = {TRUE, TRUE, TRUE}, [148] = {FALSE, FALSE, TRUE}, [149] = {FALSE, FALSE, TRUE}, [150] = {TRUE, TRUE, TRUE}, [151] = {FALSE, FALSE, TRUE}, [152] = {TRUE, TRUE, TRUE}, [153] = {FALSE, FALSE, TRUE}, [154] = {FALSE, FALSE, TRUE}, [155] = {FALSE, FALSE, TRUE}, [156] = {TRUE, TRUE, TRUE}, [157] = {TRUE, TRUE, TRUE}, [158] = {FALSE, FALSE, TRUE}, [159] = {TRUE, TRUE, TRUE}, [160] = {FALSE, FALSE, TRUE}, [161] = {TRUE, TRUE, TRUE} } g_MagicIndex = magic_index function GetMagicPutOppositeWeapon() local retval = FALSE if MagicPutOppositeWeapon[g_MagicIndex] ~= nil then if c_Style == HAND_RIGHT then if g_Magichand == HAND_RIGHT then retval = MagicPutOppositeWeapon[g_MagicIndex][1] else retval = MagicPutOppositeWeapon[g_MagicIndex][2] end else retval = MagicPutOppositeWeapon[g_MagicIndex][3] end end return retval end