diff options
Diffstat (limited to 'Data/BuiltIn/Libraries/addons/addons/Trusts/Trusts.lua')
-rw-r--r-- | Data/BuiltIn/Libraries/addons/addons/Trusts/Trusts.lua | 373 |
1 files changed, 0 insertions, 373 deletions
diff --git a/Data/BuiltIn/Libraries/addons/addons/Trusts/Trusts.lua b/Data/BuiltIn/Libraries/addons/addons/Trusts/Trusts.lua deleted file mode 100644 index 11e9c6d..0000000 --- a/Data/BuiltIn/Libraries/addons/addons/Trusts/Trusts.lua +++ /dev/null @@ -1,373 +0,0 @@ ---[[ -Copyright © 2018, from20020516 -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Trusts nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL from20020516 BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -]] -_addon.name='Trusts' -_addon.author='from20020516' -_addon.version='1.1' -_addon.commands={'trusts','tru'} - -config = require('config') -math = require('math') -math.randomseed(os.clock()) -require('logger') - -windower.register_event('load',function() - defaults = { - auto=true, - language=windower.ffxi.get_info().language, - sets={ - ['default']={ - English={ - ['1']='Valaineral', - ['2']='Mihli Aliapoh', - ['3']='Tenzen', - ['4']='Adelheid', - ['5']='Joachim'}, - Japanese={ - ['1']='ヴァレンラール', - ['2']='ミリ・アリアポー', - ['3']='テンゼン', - ['4']='アーデルハイト', - ['5']='ヨアヒム'}}[windower.ffxi.get_info().language]}, - wait={ - ['aftercast']=3, - ['retr']=1.25, - ['retrall']=3},} - settings = config.load(defaults) - lang = string.lower(settings.language) - player = windower.ffxi.get_player() -end) - -windower.register_event('login',function() - player = windower.ffxi.get_player() -end) - -windower.register_event('addon command',function(...) - cmd = {...} - if cmd[1] == 'help' then - local chat = windower.add_to_chat - local color = string.color - chat(1,'Trusts - Command List:') - chat(207,'//tru '..color('save <setname>',166,160)..' --Save trusts in current party.') - chat(207,'//tru '..color('<setname>',166,160)..' --Calls trusts you saved.') - chat(207,'//tru '..color('list',166,160)..' --Lists your saved sets.') - chat(207,'//tru '..color('random',166,160)..' --What\'s your fortune today?') - chat(207,'//tru '..color('check',166,160)..' --List of unlearned trusts. gotta catch \'em all!') - elseif cmd[1] == 'save' then - save_set(cmd[2]) - elseif cmd[1] == 'check' then - check_learned() - elseif cmd[1] == 'list' then - list_sets() - else - call_set(cmd[1] or 'default') - end -end) - -function save_set(set) - settings.sets[set] = {} - local trust_ind = 0 - local get_party = windower.ffxi.get_party() - for i=1,5 do - local trust = get_party['p'..i] - if trust and trust.mob.spawn_type == 14 then - trust_ind = trust_ind + 1 - settings.sets[set][tostring(trust_ind)]=trusts:with('models',trust.mob.models[1])[lang] - end - end - settings:save('all') - log('set '..set..' saved.') -end - -function list_sets() - local chat = windower.add_to_chat - settings = config.load() - chat(1, 'Trusts - Saved sets:') - - for set, _ in pairs(settings.sets) do - if set ~= 'default' then - chat(207, set) - end - end -end - -function check_lang(entity) - return {japanese=entity.japanese,english=entity.english}[lang]; -end - -function check_limit() - for i,v in pairs(windower.ffxi.get_key_items()) do - --Trust permit,Rhapsody in.. - limit = S{2497,2499,2501}[v] and 3 or v==2884 and 4 or v==2886 and 5 or limit or 0 - end - return limit; -end - -function call_trust() - if #queue > 0 then - windower.chat.input('/ma "'..windower.to_shift_jis(check_lang(queue[1]))..'" <me>') - end -end - -function check_exist() - local party = {} --include only trusts. --['name']=models - local party_ind = {} -- index of trust's name in current party. {'name1','name2',...,'name5'} - local get_party = windower.ffxi.get_party() - for i=1,5 do - local member = get_party['p'..i] - if member then - if member.mob.spawn_type == 14 then - party[member.name] = member.mob.models[1] - table.insert(party_ind,member.name) - end - end - end - return {party,party_ind}; -end - -function call_set(set) - queue = {} --trusts to be cast. - settings = config.load() - local party,party_ind = unpack(check_exist()) - local limit = check_limit() --upper limit # of calls trust in current player. - local time = os.clock() --window open - local get_spells = windower.ffxi.get_spells() - local get_spell_recasts = windower.ffxi.get_spell_recasts() - - if set == 'random' then - local checked = {} - local others = windower.ffxi.get_party().party1_count - #party_ind - 1 --# of human in party exept <me>. - - if limit == #party_ind then - windower.chat.input('/retr all') - calls = limit - coroutine.sleep(settings.wait.retrall) - else - calls = limit - #party_ind - others - end - - repeat - local index = trusts[math.random(1,#trusts)] - if not table.find(checked,index.name) then - table.insert(checked,index.name) - if get_spells[index.id] and get_spell_recasts[index.id] == 0 then - table.insert(queue,index) - end - end - until #queue >= calls or #checked >= 103 --# of unique names w/o Cornelia - - elseif settings.sets[set] then - retr = {unpack(party_ind)} - for i=1,limit do - if settings.sets[set][tostring(i)] then - local entity = trusts:with(lang,settings.sets[set][tostring(i)]) - if not party[entity.name] - or party[entity.name] ~= entity.models then - if get_spell_recasts[entity.id] == 0 then - if get_spells[entity.id] then - table.insert(queue,entity) - else - table.remove(retr,table.find(retr,party_ind[i])) - error('You aren\'t trusted by '..entity.english..'.') - end - else - table.remove(retr,table.find(retr,party_ind[i])) - local recast = math.floor(get_spell_recasts[entity.id] / 6) / 10 - log(entity.english..' needs '..recast..' secs break.') - end - else - table.remove(retr,table.find(retr,entity.name)) - if settings.auto then - log(entity.english..' already exists.') - end - end - end - end - for index,name in pairs(retr) do - if #retr == #party_ind then - windower.chat.input('/retr all') - coroutine.sleep(settings.wait.retrall) - break; - else - windower.chat.input('/retr '..name) - coroutine.sleep(settings.wait.retr) - end - end - else - error('Unknown set name '..(set or '')) - end - --if /retr then wait at least 3secs. - local delay = (limit - #party_ind) == 0 and math.max(0,settings.wait.retrall + time - os.clock()) or 0 - coroutine.schedule(call_trust,delay) -end - -windower.register_event('action', function(act) - if settings.auto and act.actor_id == player.id and queue and #queue > 0 then - if act.category == 4 and act.param == table.remove(queue,1).id then - coroutine.schedule(call_trust,settings.wait.aftercast) - elseif act.category == 8 and act.param == 28787 and act.targets[1].actions[1].param == queue[1].id then - coroutine.schedule(call_trust,settings.wait.aftercast) - end - end -end) - -function check_learned() - local learned = {} - local get_spells = windower.ffxi.get_spells() - for i,value in ipairs(trusts) do - if get_spells[value.id] == false and not value.english:endswith('(UC)') then - table.insert(learned,value.id) - log(check_lang(value)) - end - end - log('You haven\'t trusted yet from '..#learned..' trusts.') -end - -trusts = T{ - [1]={id=896,japanese="シャントット",english="Shantotto",name="Shantotto",models=3000}, - [2]={id=897,japanese="ナジ",english="Naji",name="Naji",models=3001}, - [3]={id=898,japanese="クピピ",english="Kupipi",name="Kupipi",models=3002}, - [4]={id=899,japanese="エグセニミル",english="Excenmille",name="Excenmille",models=3003}, - [5]={id=900,japanese="アヤメ",english="Ayame",name="Ayame",models=3004}, - [6]={id=901,japanese="ナナー・ミーゴ",english="Nanaa Mihgo",name="NanaaMihgo",models=3005}, - [7]={id=902,japanese="クリルラ",english="Curilla",name="Curilla",models=3006}, - [8]={id=903,japanese="フォルカー",english="Volker",name="Volker",models=3007}, - [9]={id=904,japanese="アジドマルジド",english="Ajido-Marujido",name="Ajido-Marujido",models=3008}, - [10]={id=905,japanese="トリオン",english="Trion",name="Trion",models=3009}, - [11]={id=906,japanese="ザイド",english="Zeid",name="Zeid",models=3010}, - [12]={id=907,japanese="ライオン",english="Lion",name="Lion",models=3011}, - [13]={id=908,japanese="テンゼン",english="Tenzen",name="Tenzen",models=3012}, - [14]={id=909,japanese="ミリ・アリアポー",english="Mihli Aliapoh",name="MihliAliapoh",models=3013}, - [15]={id=910,japanese="ヴァレンラール",english="Valaineral",name="Valaineral",models=3014}, - [16]={id=911,japanese="ヨアヒム",english="Joachim",name="Joachim",models=3015}, - [17]={id=912,japanese="ナジャ・サラヒム",english="Naja Salaheem",name="NajaSalaheem",models=3016}, - [18]={id=913,japanese="プリッシュ",english="Prishe",name="Prishe",models=3017}, - [19]={id=914,japanese="ウルミア",english="Ulmia",name="Ulmia",models=3018}, - [20]={id=915,japanese="スカリーZ",english="Shikaree Z",name="ShikareeZ",models=3019}, - [21]={id=916,japanese="チェルキキ",english="Cherukiki",name="Cherukiki",models=3020}, - [22]={id=917,japanese="アイアンイーター",english="Iron Eater",name="IronEater",models=3021}, - [23]={id=918,japanese="ゲッショー",english="Gessho",name="Gessho",models=3022}, - [24]={id=919,japanese="ガダラル",english="Gadalar",name="Gadalar",models=3023}, - [25]={id=920,japanese="ライニマード",english="Rainemard",name="Rainemard",models=3024}, - [26]={id=921,japanese="イングリッド",english="Ingrid",name="Ingrid",models=3025}, - [27]={id=922,japanese="レコ・ハボッカ",english="Lehko Habhoka",name="LehkoHabhoka",models=3026}, - [28]={id=923,japanese="ナシュメラ",english="Nashmeira",name="Nashmeira",models=3027}, - [29]={id=924,japanese="ザザーグ",english="Zazarg",name="Zazarg",models=3028}, - [30]={id=925,japanese="アヴゼン",english="Ovjang",name="Ovjang",models=3029}, - [31]={id=926,japanese="メネジン",english="Mnejing",name="Mnejing",models=3030}, - [32]={id=927,japanese="サクラ",english="Sakura",name="Sakura",models=3031}, - [33]={id=928,japanese="ルザフ",english="Luzaf",name="Luzaf",models=3032}, - [34]={id=929,japanese="ナジュリス",english="Najelith",name="Najelith",models=3033}, - [35]={id=930,japanese="アルド",english="Aldo",name="Aldo",models=3034}, - [36]={id=931,japanese="モーグリ",english="Moogle",name="Moogle",models=3035}, - [37]={id=932,japanese="ファブリニクス",english="Fablinix",name="Fablinix",models=3036}, - [38]={id=933,japanese="マート",english="Maat",name="Maat",models=3037}, - [39]={id=934,japanese="D.シャントット",english="D. Shantotto",name="D.Shantotto",models=3038}, - [40]={id=935,japanese="星の神子",english="Star Sibyl",name="StarSibyl",models=3039}, - [41]={id=936,japanese="カラハバルハ",english="Karaha-Baruha",name="Karaha-Baruha",models=3040}, - [42]={id=937,japanese="シド",english="Cid",name="Cid",models=3041}, - [43]={id=938,japanese="ギルガメッシュ",english="Gilgamesh",name="Gilgamesh",models=3042}, - [44]={id=939,japanese="アレヴァト",english="Areuhat",name="Areuhat",models=3043}, - [45]={id=940,japanese="セミ・ラフィーナ",english="Semih Lafihna",name="SemihLafihna",models=3044}, - [46]={id=941,japanese="エリヴィラ",english="Elivira",name="Elivira",models=3045}, - [47]={id=942,japanese="ノユリ",english="Noillurie",name="Noillurie",models=3046}, - [48]={id=943,japanese="ルー・マカラッカ",english="Lhu Mhakaracca",name="LhuMhakaracca",models=3047}, - [49]={id=944,japanese="フェリアスコフィン",english="Ferreous Coffin",name="FerreousCoffin",models=3048}, - [50]={id=945,japanese="リリゼット",english="Lilisette",name="Lilisette",models=3049}, - [51]={id=946,japanese="ミュモル",english="Mumor",name="Mumor",models=3050}, - [52]={id=947,japanese="ウカ・トトゥリン",english="Uka Totlihn",name="UkaTotlihn",models=3051}, - [53]={id=948,japanese="クララ",english="Klara",name="Klara",models=3053}, - [54]={id=949,japanese="ロマー・ミーゴ",english="Romaa Mihgo",name="RomaaMihgo",models=3054}, - [55]={id=950,japanese="クイン・ハスデンナ",english="Kuyin Hathdenna",name="KuyinHathdenna",models=3055}, - [56]={id=951,japanese="ラーアル",english="Rahal",name="Rahal",models=3056}, - [57]={id=952,japanese="コルモル",english="Koru-Moru",name="Koru-Moru",models=3057}, - [58]={id=953,japanese="ピエージェ(UC)",english="Pieuje (UC)",name="Pieuje",models=3058}, - [59]={id=954,japanese="I.シールド(UC)",english="I. Shield (UC)",name="InvincibleShld",models=3060}, - [60]={id=955,japanese="アプルル(UC)",english="Apururu (UC)",name="Apururu",models=3061}, - [61]={id=956,japanese="ジャコ(UC)",english="Jakoh (UC)",name="JakohWahcondalo",models=3062}, - [62]={id=957,japanese="フラヴィリア(UC)",english="Flaviria (UC)",name="Flaviria",models=3059}, - [63]={id=958,japanese="ウェイレア",english="Babban",name="Babban",models=3067}, - [64]={id=959,japanese="アベンツィオ",english="Abenzio",name="Abenzio",models=3068}, - [65]={id=960,japanese="ルガジーン",english="Rughadjeen",name="Rughadjeen",models=3069}, - [66]={id=961,japanese="クッキーチェブキー",english="Kukki-Chebukki",name="Kukki-Chebukki",models=3070}, - [67]={id=962,japanese="マルグレート",english="Margret",name="Margret",models=3071}, - [68]={id=963,japanese="チャチャルン",english="Chacharoon",name="Chacharoon",models=3072}, - [69]={id=964,japanese="レイ・ランガヴォ",english="Lhe Lhangavo",name="LheLhangavo",models=3073}, - [70]={id=965,japanese="アシェラ",english="Arciela",name="Arciela",models=3074}, - [71]={id=966,japanese="マヤコフ",english="Mayakov",name="Mayakov",models=3075}, - [72]={id=967,japanese="クルタダ",english="Qultada",name="Qultada",models=3076}, - [73]={id=968,japanese="アーデルハイト",english="Adelheid",name="Adelheid",models=3077}, - [74]={id=969,japanese="アムチュチュ",english="Amchuchu",name="Amchuchu",models=3078}, - [75]={id=970,japanese="ブリジッド",english="Brygid",name="Brygid",models=3079}, - [76]={id=971,japanese="ミルドリオン",english="Mildaurion",name="Mildaurion",models=3080}, - [77]={id=972,japanese="ハルヴァー",english="Halver",name="Halver",models=3087}, - [78]={id=973,japanese="ロンジェルツ",english="Rongelouts",name="Rongelouts",models=3088}, - [79]={id=974,japanese="レオノアーヌ",english="Leonoyne",name="Leonoyne",models=3089}, - [80]={id=975,japanese="マクシミリアン",english="Maximilian",name="Maximilian",models=3090}, - [81]={id=976,japanese="カイルパイル",english="Kayeel-Payeel",name="Kayeel-Payeel",models=3091}, - [82]={id=977,japanese="ロベルアクベル",english="Robel-Akbel",name="Robel-Akbel",models=3092}, - [83]={id=978,japanese="クポフリート",english="Kupofried",name="Kupofried",models=3093}, - [84]={id=979,japanese="セルテウス",english="Selh\'teus",name="Selh\'teus",models=3094}, - [85]={id=980,japanese="ヨランオラン(UC)",english="Yoran-Oran (UC)",name="Yoran-Oran",models=3095}, - [86]={id=981,japanese="シルヴィ(UC)",english="Sylvie (UC)",name="Sylvie",models=3096}, - [87]={id=982,japanese="アブクーバ",english="Abquhbah",name="Abquhbah",models=3098}, - [88]={id=983,japanese="バラモア",english="Balamor",name="Balamor",models=3099}, - [89]={id=984,japanese="オーグスト",english="August",name="August",models=3100}, - [90]={id=985,japanese="ロスレーシャ",english="Rosulatia",name="Rosulatia",models=3101}, - [91]={id=986,japanese="テオドール",english="Teodor",name="Teodor",models=3103}, - [92]={id=987,japanese="ウルゴア",english="Ullegore",name="Ullegore",models=3105}, - [93]={id=988,japanese="マッキーチェブキー",english="Makki-Chebukki",name="Makki-Chebukki",models=3106}, - [94]={id=989,japanese="キング・オブ・ハーツ",english="King of Hearts",name="KingOfHearts",models=3107}, - [95]={id=990,japanese="モリマー",english="Morimar",name="Morimar",models=3108}, - [96]={id=991,japanese="ダラクァルン",english="Darrcuiln",name="Darrcuiln",models=3109}, - [97]={id=992,japanese="アークHM",english="AAHM",name="ArkHM",models=3113}, - [98]={id=993,japanese="アークEV",english="AAEV",name="ArkEV",models=3114}, - [99]={id=994,japanese="アークMR",english="AAMR",name="ArkMR",models=3115}, - [100]={id=995,japanese="アークTT",english="AATT",name="ArkTT",models=3116}, - [101]={id=996,japanese="アークGK",english="AAGK",name="ArkGK",models=3117}, - [102]={id=997,japanese="イロハ",english="Iroha",name="Iroha",models=3111}, - [103]={id=998,japanese="ユグナス",english="Ygnas",name="Ygnas",models=3118}, - [104]={id=1004,japanese="エグセニミルII",english="Excenmille [S]",name="Excenmille",models=3052}, - [105]={id=1005,japanese="アヤメ(UC)",english="Ayame (UC)",name="Ayame",models=3063}, - [106]={id=1006,japanese="マート(UC)",english="Maat (UC)",name="Maat",models=3064}, --expected models - [107]={id=1007,japanese="アルド(UC)",english="Aldo (UC)",name="Aldo",models=3065}, --expected models - [108]={id=1008,japanese="ナジャ(UC)",english="Naja (UC)",name="NajaSalaheem",models=3066}, - [109]={id=1009,japanese="ライオンII",english="Lion II",name="Lion",models=3081}, - [110]={id=1010,japanese="ザイドII",english="Zeid II",name="Zeid",models=3086}, - [111]={id=1011,japanese="プリッシュII",english="Prishe II",name="Prishe",models=3082}, - [112]={id=1012,japanese="ナシュメラII",english="Nashmeira II",name="Nashmeira",models=3083}, - [113]={id=1013,japanese="リリゼットII",english="Lilisette II",name="Lilisette",models=3084}, - [114]={id=1014,japanese="テンゼンII",english="Tenzen II",name="Tenzen",models=3097}, - [115]={id=1015,japanese="ミュモルII",english="Mumor II",name="Mumor",models=3104}, - [116]={id=1016,japanese="イングリッドII",english="Ingrid II",name="Ingrid",models=3102}, - [117]={id=1017,japanese="アシェラII",english="Arciela II",name="Arciela",models=3085}, - [118]={id=1018,japanese="イロハII",english="Iroha II",name="Iroha",models=3112}, - [119]={id=1019,japanese="シャントットII",english="Shantotto II",name="Shantotto",models=3110}, --- [120]={id=1003,japanese="コーネリア",english="Cornelia",name="Cornelia",models=3119}, --goodbye, my love - [121]={id=999,japanese="モンブロー",english="Monberaux",name="Monberaux",models=3120}, - [122]={id=1003,japanese="マツイP",english="Matsui-P",name="Matsui-P",models=3121}, -} |