local resultDesInfos = {} setmetatable(resultDesInfos, {__mode = "v"}) function GetTimeLimitInfo(EFST_ID) local key = EFST_ID .. "-haveTimeLimit" local timeInfo = resultDesInfos[key] if timeInfo == nil then timeInfo = {0, 0} if StateIconList ~= nil then obj = StateIconList[EFST_ID] if obj ~= nil then haveTimeLimit = obj.haveTimeLimit if haveTimeLimit == nil then haveTimeLimit = 0 end posTimeLimitStr = obj.posTimeLimitStr if posTimeLimitStr == nil then posTimeLimitStr = 0 end timeInfo = {haveTimeLimit, posTimeLimitStr} resultDesInfos[key] = timeInfo end end end return timeInfo[1], timeInfo[2] end function SetDefaultDesInfo(des, r, g, b) if des == nil then des = "" end if r == nil then r = 255 end if g == nil then g = 255 end if b == nil then b = 255 end return { des, r, g, b } end local defaultInfo = SetDefaultDesInfo function GetStateIconDescript(EFST_ID, idx) local key = EFST_ID .. "-" .. idx local desInfo = resultDesInfos[key] if desInfo == nil then desInfo = { "", 255, 255, 255 } if StateIconList ~= nil and StateIconList[EFST_ID] ~= nil then v = StateIconList[EFST_ID].descript if v ~= nil and v[idx] ~= nil then if v[idx][2] ~= nil then desInfo = defaultInfo(v[idx][1], v[idx][2][1], v[idx][2][2], v[idx][2][3]) else desInfo = defaultInfo(v[idx][1], nil, nil, nil) end resultDesInfos[key] = desInfo end end end return desInfo[1], desInfo[2], desInfo[3], desInfo[4] end function MakeBuffIconInfoFile() makeFile = io.open("data\\StateIconInfo_n.lua", "w") if makeFile ~= nil then makeFile:write([[ StateIconList = {} ]]) for k, v in pairs(EFST_IDs) do filename, msg = c_GetEFSTMsg(v) if filename ~= "" and filename ~= nil then makeFile:write(string.format("-- %d, %s\n", v, filename)) makeFile:write(string.format("StateIconList[EFST_IDs.%s] =\n", k)) makeFile:write("{\n") makeFile:write("\tdescript = \n") makeFile:write("\t{\n") if msg ~= "" and msg ~= nil then makeFile:write(string.format("\t\t{ \"%s\", },\n", msg)) end makeFile:write("\t}\n") makeFile:write([[ } ]]) end end end io.close(makeFile) end function GetStrEFSTID(EFSTID) for j, k in pairs(EFST_IDs) do if k == EFSTID then return j end end return "" end function GetEFSTID(EFSTID) if EFSTID ~= 0 then local efst = EFST_IDs[EFSTID] if efst ~= nil then return efst end end return 0 end function GetEFSTImgFileName(EFSTID, priority) if StateIconImgList ~= nil then local obj = StateIconImgList[priority] if obj ~= nil then local fileName = obj[EFSTID] if fileName ~= nil then return "effect\\" .. fileName end end end return "" end HaveEfstImgTable = { EFST_IDs.EFST_ADORAMUS, EFST_IDs.EFST_DEC_AGI, EFST_IDs.EFST_BROKENARMOR, EFST_IDs.EFST_ILLUSION, EFST_IDs.EFST_QUAGMIRE, EFST_IDs.EFST_BROKENWEAPON, EFST_IDs.EFST_WEIGHTOVER50, EFST_IDs.EFST_WEIGHTOVER90, EFST_IDs.EFST_NOEQUIPWEAPON, EFST_IDs.EFST_NOEQUIPSHIELD, EFST_IDs.EFST_NOEQUIPARMOR, EFST_IDs.EFST_NOEQUIPHELM, EFST_IDs.EFST_PROPERTYFIRE, EFST_IDs.EFST_STATUSONE, EFST_IDs.EFST_PARTYFLEE, EFST_IDs.EFST_TARGET_ASPD, EFST_IDs.EFST_FOOD_INT, EFST_IDs.EFST_FOOD_INT_CASH, EFST_IDs.EFST_COCKTAIL_WARG_BLOOD, EFST_IDs.EFST_FOOD_STR, EFST_IDs.EFST_FOOD_STR_CASH, EFST_IDs.EFST_SAVAGE_STEAK, EFST_IDs.EFST_FOOD_AGI, EFST_IDs.EFST_FOOD_AGI_CASH, EFST_IDs.EFST_DROCERA_HERB_STEAMED, EFST_IDs.EFST_FOOD_VIT, EFST_IDs.EFST_FOOD_VIT_CASH, EFST_IDs.EFST_MINOR_BBQ, EFST_IDs.EFST_FOOD_DEX, EFST_IDs.EFST_FOOD_DEX_CASH, EFST_IDs.EFST_SIROMA_ICE_TEA, EFST_IDs.EFST_FOOD_LUK, EFST_IDs.EFST_FOOD_LUK_CASH, EFST_IDs.EFST_PUTTI_TAILS_NOODLES, EFST_IDs.EFST_FOOD_BASICAVOIDANCE, EFST_IDs.EFST_FOOD_BASICHIT, EFST_IDs.EFST_FOOD_CRITICALSUCCESSVALUE, EFST_IDs.EFST_STOMACHACHE, EFST_IDs.EFST_CASH_PLUSEXP, EFST_IDs.EFST_CASH_DEATHPENALTY, EFST_IDs.EFST_CASH_RECEIVEITEM, EFST_IDs.EFST_CASH_PLUSONLYJOBEXP, EFST_IDs.EFST_REWARD_PLUSONLYJOBEXP, EFST_IDs.EFST_MACRO_POSTDELAY, EFST_IDs.EFST_MONSTER_TRANSFORM, EFST_IDs.EFST_HANDICAPSTATE_NORECOVER, EFST_IDs.EFST_ENDURE, EFST_IDs.EFST_ENCHANTPOISON, EFST_IDs.EFST_CLOAKING, EFST_IDs.EFST_TWOHANDQUICKEN, EFST_IDs.EFST_MAXIMIZE, EFST_IDs.EFST_ADRENALINE, EFST_IDs.EFST_ADRENALINE2, EFST_IDs.EFST_POISONREACT, EFST_IDs.EFST_AUTOGUARD, EFST_IDs.EFST_AUTOSPELL, EFST_IDs.EFST_PROVOKE, EFST_IDs.EFST_OVERTHRUST, EFST_IDs.EFST_WEAPONPERFECT, EFST_IDs.EFST_HIDING, EFST_IDs.EFST_SPEARQUICKEN, EFST_IDs.EFST_DEFENDER, EFST_IDs.EFST_REFLECTSHIELD, EFST_IDs.EFST_PROPERTYWATER, EFST_IDs.EFST_PROPERTYWIND, EFST_IDs.EFST_BLOODING, EFST_IDs.EFST_JOINTBEAT, EFST_IDs.EFST_PROTECTEXP, EFST_IDs.EFST_ANGEL_PROTECT, EFST_IDs.EFST_PARRYING, EFST_IDs.EFST_TENSIONRELAX, EFST_IDs.EFST_SKF_CAST, EFST_IDs.EFST_SKF_ASPD, EFST_IDs.EFST_SKF_ATK, EFST_IDs.EFST_SKF_MATK, EFST_IDs.EFST_ASSUMPTIO, EFST_IDs.EFST_ASSUMPTIO2, EFST_IDs.EFST_POPECOOKIE, EFST_IDs.EFST_VITALIZE_POTION, EFST_IDs.EFST_TRUESIGHT, EFST_IDs.EFST_WINDWALK, EFST_IDs.EFST_CARTBOOST, EFST_IDs.EFST_MELTDOWN, EFST_IDs.EFST_SWORDREJECT, EFST_IDs.EFST_MARIONETTE_MASTER, EFST_IDs.EFST_MARIONETTE, EFST_IDs.EFST_AUTOBERSERK, EFST_IDs.EFST_STORMKICK_ON, EFST_IDs.EFST_DOWNKICK_ON, EFST_IDs.EFST_TURNKICK_ON, EFST_IDs.EFST_COUNTER_ON, EFST_IDs.EFST_DODGE_ON, EFST_IDs.EFST_STRUP, EFST_IDs.EFST_PROPERTYDARK, EFST_IDs.EFST_PROPERTYTELEKINESIS, EFST_IDs.EFST_EDP, EFST_IDs.EFST_PRESERVE, EFST_IDs.EFST_CHASEWALK2, EFST_IDs.EFST_GROUNDMAGIC, EFST_IDs.EFST_DOUBLECASTING, EFST_IDs.EFST_MAGIC_CANDY, EFST_IDs.EFST_OVERTHRUSTMAX, EFST_IDs.EFST_TAROTCARD, EFST_IDs.EFST_MORA_BUFF, EFST_IDs.EFST_ODINS_POWER, EFST_IDs.EFST_MOON_COMFORT, EFST_IDs.EFST_STAR_COMFORT, EFST_IDs.EFST_KAIZEL, EFST_IDs.EFST_KAAHI, EFST_IDs.EFST_KAUPE, EFST_IDs.EFST_ONEHANDQUICKEN, EFST_IDs.EFST_CR_SHRINK, EFST_IDs.EFST_WZ_SIGHTBLASTER, EFST_IDs.EFST_RG_CCONFINE_M, EFST_IDs.EFST_EARTHSCROLL, EFST_IDs.EFST_NJ_BUNSINJYUTSU, EFST_IDs.EFST_NJ_UTSUSEMI, EFST_IDs.EFST_NJ_NEN, EFST_IDs.EFST_GS_ADJUSTMENT, EFST_IDs.EFST_GS_ACCURACY, EFST_IDs.EFST_GS_MADNESSCANCEL, EFST_IDs.EFST_GS_GATLINGFEVER, EFST_IDs.EFST_ATKER_BLOOD, EFST_IDs.EFST_TARGET_BLOOD, EFST_IDs.EFST_PET, EFST_IDs.EFST_MENTAL, EFST_IDs.EFST_EXPMEMORY, EFST_IDs.EFST_PERFORMANCE, EFST_IDs.EFST_GAIN, EFST_IDs.EFST_GRIFFON, EFST_IDs.EFST_DRIFT, EFST_IDs.EFST_PROPERTYUNDEAD, EFST_IDs.EFST_WALLSHIFT, EFST_IDs.EFST_REINCARNATION, EFST_IDs.EFST_PATTACK, EFST_IDs.EFST_PSPEED, EFST_IDs.EFST_PDEFENSE, EFST_IDs.EFST_PCRITICAL, EFST_IDs.EFST_RANKING, EFST_IDs.EFST_PTRIPLE, EFST_IDs.EFST_DENERGY, EFST_IDs.EFST_WAVE1, EFST_IDs.EFST_WAVE2, EFST_IDs.EFST_WAVE3, EFST_IDs.EFST_WAVE4, EFST_IDs.EFST_DAURA, EFST_IDs.EFST_DFREEZER, EFST_IDs.EFST_DPUNISH, EFST_IDs.EFST_DBARRIER, EFST_IDs.EFST_DWARNING, EFST_IDs.EFST_DACCEL, EFST_IDs.EFST_DBLOCK, EFST_IDs.EFST_DA_ENERGY, EFST_IDs.EFST_DA_BLACK, EFST_IDs.EFST_DA_MAGICCART, EFST_IDs.EFST_CRYSTAL, EFST_IDs.EFST_DA_FIRSTSLOT, EFST_IDs.EFST_DA_HEADDEF, EFST_IDs.EFST_DA_SPACE, EFST_IDs.EFST_DA_TRANSFORM, EFST_IDs.EFST_DA_ITEMREBUILD, EFST_IDs.EFST_DA_ILLUSION, EFST_IDs.EFST_DA_DARKPOWER, EFST_IDs.EFST_DA_EARPLUG, EFST_IDs.EFST_DA_REBUILD, EFST_IDs.EFST_DA_EDARKNESS, EFST_IDs.EFST_DA_EGUARDIAN, EFST_IDs.EFST_DA_TIMEOUT, EFST_IDs.EFST_NEUTRALBARRIER, EFST_IDs.EFST_SHAPESHIFT, EFST_IDs.EFST_STEALTHFIELD, EFST_IDs.EFST_ANALYZE, EFST_IDs.EFST_ACCELERATION, EFST_IDs.EFST_RENOVATIO, EFST_IDs.EFST_AB_SECRAMENT, EFST_IDs.EFST_DEADLYINFECT, EFST_IDs.EFST_REPRODUCE, EFST_IDs.EFST_ENERVATION, EFST_IDs.EFST_GROOMY, EFST_IDs.EFST_IGNORANCE, EFST_IDs.EFST_LAZINESS, EFST_IDs.EFST_UNLUCKY, EFST_IDs.EFST_WEAKNESS, EFST_IDs.EFST_BODYPAINT, EFST_IDs.EFST_SHADOWFORM, EFST_IDs.EFST_STRIPACCESSARY, EFST_IDs.EFST_AUTOSHADOWSPELL, EFST_IDs.EFST_INVISIBILITY, EFST_IDs.EFST_OVERHEAT, EFST_IDs.EFST_INFRAREDSCAN, EFST_IDs.EFST_COLD, EFST_IDs.EFST_HOVERING, EFST_IDs.EFST_DA_CONTRACT, EFST_IDs.EFST_SLOWCAST, EFST_IDs.EFST_CRITICALWOUND, EFST_IDs.EFST_HELLPOWER, EFST_IDs.EFST_CRITICALPERCENT, EFST_IDs.EFST_HEALPLUS, EFST_IDs.EFST_S_LIFEPOTION, EFST_IDs.EFST_L_LIFEPOTION, EFST_IDs.EFST_G_LIFEPOTION, EFST_IDs.EFST_PLUSAVOIDVALUE, EFST_IDs.EFST_PROTECT_DEF, EFST_IDs.EFST_PROTECT_MDEF, EFST_IDs.EFST_ARMOR_PROPERTY, EFST_IDs.EFST_MANU_ATK, EFST_IDs.EFST_ENCHANTBLADE, EFST_IDs.EFST_MANU_DEF, EFST_IDs.EFST_SPL_ATK, EFST_IDs.EFST_SPL_DEF, EFST_IDs.EFST_REFRESH, EFST_IDs.EFST_VITALITYACTIVATION, EFST_IDs.EFST_FIGHTINGSPIRIT, EFST_IDs.EFST_ABUNDANCE, EFST_IDs.EFST_GIANTGROWTH, EFST_IDs.EFST_STONEHARDSKIN, EFST_IDs.EFST_MANU_MATK, EFST_IDs.EFST_SPL_MATK, EFST_IDs.EFST_STR_SCROLL, EFST_IDs.EFST_INT_SCROLL, EFST_IDs.EFST_ACARAJE, EFST_IDs.EFST_MARSHOFABYSS, EFST_IDs.EFST_FROSTMISTY, EFST_IDs.EFST_RECOGNIZEDSPELL, EFST_IDs.EFST_FEARBREEZE, EFST_IDs.EFST_PARALYSE, EFST_IDs.EFST_LEECHESEND, EFST_IDs.EFST_OBLIVIONCURSE, EFST_IDs.EFST_DEATHHURT, EFST_IDs.EFST_VENOMBLEED, EFST_IDs.EFST_TOXIN, EFST_IDs.EFST_PYREXIA, EFST_IDs.EFST_MAGICMUSHROOM, EFST_IDs.EFST_WEAPONBLOCKING, EFST_IDs.EFST_CLOAKINGEXCEED, EFST_IDs.EFST_POISONINGWEAPON, EFST_IDs.EFST_HALLUCINATIONWALK, EFST_IDs.EFST_MOONLIT_SERENADE, EFST_IDs.EFST_LERADS_DEW, EFST_IDs.EFST_SONG_OF_MANA, EFST_IDs.EFST_ECHOSONG, EFST_IDs.EFST_MELODYOFSINK, EFST_IDs.EFST_BEYOND_OF_WARCRY, EFST_IDs.EFST_SATURDAY_NIGHT_FEVER, EFST_IDs.EFST_GLOOMYDAY, EFST_IDs.EFST_SIRCLEOFNATURE, EFST_IDs.EFST_SWING, EFST_IDs.EFST_HANDICAPSTATE_DEEP_SLEEP, EFST_IDs.EFST_DEEP_SLEEP, EFST_IDs.EFST_UNLIMITED_HUMMING_VOICE, EFST_IDs.EFST_SYMPHONY_LOVE, EFST_IDs.EFST_DANCE_WITH_WUG, EFST_IDs.EFST_RUSH_WINDMILL, EFST_IDs.EFST_HARMONIZE, EFST_IDs.EFST_CLOUD_KILL, EFST_IDs.EFST_WARMER, EFST_IDs.EFST_STRIKING, EFST_IDs.EFST_CRESCENTELBOW, EFST_IDs.EFST_LIGHTNINGWALK, EFST_IDs.EFST_RAISINGDRAGON, EFST_IDs.EFST_GENTLETOUCH_ENERGYGAIN, EFST_IDs.EFST_GENTLETOUCH_CHANGE, EFST_IDs.EFST_GENTLETOUCH_REVITALIZE, EFST_IDs.EFST_LG_REFLECTDAMAGE, EFST_IDs.EFST_SHIELDSPELL_DEF, EFST_IDs.EFST_SHIELDSPELL_MDEF, EFST_IDs.EFST_SHIELDSPELL_REF, EFST_IDs.EFST_PRESTIGE, EFST_IDs.EFST_BANDING, EFST_IDs.EFST_INSPIRATION, EFST_IDs.EFST_THORNS_TRAP, EFST_IDs.EFST_GN_CARTBOOST, EFST_IDs.EFST_FORCEOFVANGUARD, EFST_IDs.EFST_MACRO, EFST_IDs.EFST_MACRO_PERMIT, EFST_IDs.EFST_ATKER_ASPD, EFST_IDs.EFST_ATKER_MOVESPEED, EFST_IDs.EFST_PLUSATTACKPOWER, EFST_IDs.EFST_SIT, EFST_IDs.EFST_MVPCARD_ORCHERO, EFST_IDs.EFST_MVPCARD_ORCLORD, EFST_IDs.EFST_MVPCARD_TAOGUNKA, EFST_IDs.EFST_MVPCARD_MISTRESS, EFST_IDs.EFST_SET_NUM_DEF, EFST_IDs.EFST_SET_PER_DEF, EFST_IDs.EFST_CONCENTRATION, EFST_IDs.EFST_TRICKDEAD, EFST_IDs.EFST_FALCON, EFST_IDs.EFST_RIDING, EFST_IDs.EFST_SHOUT, EFST_IDs.EFST_ENERGYCOAT, EFST_IDs.EFST_ATTHASTE_INFINITY, EFST_IDs.EFST_ATTHASTE_POTION1, EFST_IDs.EFST_ATTHASTE_POTION2, EFST_IDs.EFST_ATTHASTE_POTION3, EFST_IDs.EFST_PROTECTWEAPON, EFST_IDs.EFST_PROTECTSHIELD, EFST_IDs.EFST_PROTECTARMOR, EFST_IDs.EFST_PROTECTHELM, EFST_IDs.EFST_PROPERTYGROUND, EFST_IDs.EFST_WUGRIDER, EFST_IDs.EFST_PLUSMAGICPOWER, EFST_IDs.EFST_ALL_RIDING, EFST_IDs.EFST_SET_NUM_MDEF, EFST_IDs.EFST_SET_PER_MDEF, EFST_IDs.EFST_ATTHASTE_CASH, EFST_IDs.EFST_2011RWC, EFST_IDs.EFST_GLORIA, EFST_IDs.EFST_KYRIE, EFST_IDs.EFST_LEXAETERNA, EFST_IDs.EFST_CRUCIS, EFST_IDs.EFST_MAGNIFICAT, EFST_IDs.EFST_MOVHASTE_INFINITY, EFST_IDs.EFST_MOVHASTE_POTION, EFST_IDs.EFST_INC_AGI, EFST_IDs.EFST_MOVHASTE_HORSE, EFST_IDs.EFST_BLESSING, EFST_IDs.EFST_PAIN_KILLER, EFST_IDs.EFST_LIGHT_OF_REGENE, EFST_IDs.EFST_OVERED_BOOST, EFST_IDs.EFST_STYLE_CHANGE, EFST_IDs.EFST_MAGMA_FLOW, EFST_IDs.EFST_GRANITIC_ARMOR, EFST_IDs.EFST_PYROCLASTIC, EFST_IDs.EFST_VOLCANIC_ASH, EFST_IDs.EFST_BENEDICTIO, EFST_IDs.EFST_SUFFRAGIUM, EFST_IDs.EFST_SLOWPOISON, EFST_IDs.EFST_ASPERSIO, EFST_IDs.EFST_WEAPONPROPERTY, EFST_IDs.EFST_ANGELUS, EFST_IDs.EFST_IMPOSITIO, EFST_IDs.EFST_PROVIDENCE, EFST_IDs.EFST_OVERLAPEXPUP, EFST_IDs.EFST_STEELBODY, EFST_IDs.EFST_GM_BATTLE, EFST_IDs.EFST_GM_BATTLE2 } function HaveEfstImg(EFSTID) if HaveEfstImgTable[EFSTID] ~= nil then return true end return false end