diff options
author | chai <chaifix@163.com> | 2021-11-15 13:53:59 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-11-15 13:53:59 +0800 |
commit | 942a030afd348ab2e02eac8054b43e3c3a72ea48 (patch) | |
tree | a13459f39a3d2f1b533fbd1b5ab523d7a621f673 /Data/BuiltIn/Libraries/lua-addons/addons/shortcuts/statics.lua | |
parent | e307051a56a54c27f10438fd2025edf61d0dfeed (diff) |
*rename
Diffstat (limited to 'Data/BuiltIn/Libraries/lua-addons/addons/shortcuts/statics.lua')
-rw-r--r-- | Data/BuiltIn/Libraries/lua-addons/addons/shortcuts/statics.lua | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/shortcuts/statics.lua b/Data/BuiltIn/Libraries/lua-addons/addons/shortcuts/statics.lua new file mode 100644 index 0000000..4fd1219 --- /dev/null +++ b/Data/BuiltIn/Libraries/lua-addons/addons/shortcuts/statics.lua @@ -0,0 +1,212 @@ +--Copyright (c) 2014, Byrthnoth +--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 andor other materials provided with the distribution. +-- * Neither the name of <addon name> 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 <your name> 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. + +-- Convert the spells and job abilities into a referenceable list of aliases -- +validabils = {} + +--f = io.open('..addonsprdata'..tostring(os.clock())..'.log','w+') +--for i,v in pairs(validabils) do +-- f:write(tostring(i)..' '..tostring(v)..'\n') +--end + +-- Constants used in the rest of the addon. + +-- List of valid prefixes to be interpreted with the resources. The values currently have no use. +command_list = {['ja']='job_abilities',['jobability']='job_abilities',['so']='spells',['song']='spells',['ma']='spells',['magic']='spells',['nin']='spells',['ninjutsu']='spells', + ['ra']='Ranged Attack',['range']='Ranged Attack',['throw']='Ranged Attack',['shoot']='Ranged Attack',['monsterskill']='monster_skills',['ms']='monster_skills', + ['ws']='weapon_skills',['weaponskill']='weapon_skills',['item']='Ability',['pet']='job_abilities',['mo']='mounts',['mount']='mounts'} + +in_game_res_commands = {['ja']='/ja',['jobability']='/ja',['pet']='/ja', + ['so']='/ma',['song']='/ma',['ma']='/ma',['magic']='/ma',['nin']='/ma',['ninjutsu']='/ma', + ['monsterskill']='/ms',['ms']='/ms',['ws']='/ws',['weaponskill']='/ws', + ['ra']='/ra',['range']='/ra',['throw']='/ra',['shoot']='/ra',['mount']='/mo',['mo']='/mo'} + +-- List of other commands that might use name completion. +local No_targets = {['Player']=false,['Enemy']=false,['Party']=false,['Ally']=false,['NPC']=false,['Self']=false,['Corpse']=false} +local All_targets = {['Player']=true,['Enemy']=true,['Party']=true,['Ally']=true,['NPC']=true,['Self']=true,['Corpse']=true} +local PC_targets = {['Player']=true,['Enemy']=false,['Party']=true,['Ally']=true,['NPC']=false,['Self']=true,['Corpse']=true} +local Party_targets = {['Player']=false,['Enemy']=false,['Party']=true,['Ally']=false,['NPC']=false,['Self']=true,['Corpse']=true} +local Alliance_targets = {['Player']=false,['Enemy']=false,['Party']=false,['Ally']=true,['NPC']=false,['Self']=true,['Corpse']=true} +local BST_targets = {['Player']=true,['Enemy']=false,['Party']=false,['Ally']=false,['NPC']=false,['Self']=true,['Corpse']=false} + +local function new_cmd_entry(default_targets,subcommands) + local rettab = table.reassign({},default_targets) + if subcommands then + rettab.args = subcommands + end + return rettab +end + +local emote_table = new_cmd_entry(All_targets,{motion=true}) + +command2_list = { + --['kick']=true, --Is this actually a command? + ['assist']=All_targets, + ['alliancecmd']=new_cmd_entry(No_targets,{ + kick=Alliance_targets, + add=PC_targets, + leader=Alliance_targets, + breakup=true, + leave=true, + looter=Alliance_targets}), + ['partycmd']=new_cmd_entry(No_targets,{ + kick=Party_targets, + add=PC_targets, + leader=Party_targets, + breakup=true, + leave=true, + looter=Party_targets}), + ['acmd']=new_cmd_entry(No_targets,{ + kick=Alliance_targets, + add=PC_targets, + leader=Alliance_targets, + breakup=true, + leave=true, + looter=Alliance_targets}), + ['pcmd']=new_cmd_entry(No_targets,{ + kick=Party_targets, + add=PC_targets, + leader=Party_targets, + breakup=true, + leave=true, + looter=Party_targets}), + ['wave']=emote_table, + ['poke']=emote_table, + ['dance']=emote_table, + ['dance1']=emote_table, + ['dance2']=emote_table, + ['dance3']=emote_table, + ['dance4']=emote_table, + ['amazed']=emote_table, + ['angry']=emote_table, + ['bell']=emote_table, + ['bellsw']=emote_table, + ['blush']=emote_table, + ['bow']=emote_table, + ['cheer']=emote_table, + ['clap']=emote_table, + ['comfort']=emote_table, + ['cry']=emote_table, + ['disgusted']=emote_table, + ['doze']=emote_table, + ['doubt']=emote_table, + ['huh']=emote_table, + ['farewell']=emote_table, + ['goodbye']=emote_table, + ['fume']=emote_table, + ['grin']=emote_table, + ['hurray']=emote_table, + ['joy']=emote_table, + ['kneel']=emote_table, + ['laugh']=emote_table, + ['muted']=emote_table, + ['kneel']=emote_table, + ['laugh']=emote_table, + ['no']=emote_table, + ['nod']=emote_table, + ['yes']=emote_table, + ['panic']=emote_table, + ['point']=emote_table, + ['praise']=emote_table, + ['psych']=emote_table, + ['salute']=emote_table, + ['shocked']=emote_table, + ['sigh']=emote_table, + ['sit']=emote_table, + ['slap']=emote_table, + ['smile']=emote_table, + ['stagger']=emote_table, + ['stare']=emote_table, + ['sulk']=emote_table, + ['surprised']=emote_table, + ['think']=emote_table, + ['toss']=emote_table, + ['upset']=emote_table, + ['welcome']=emote_table, + ['check']=new_cmd_entry(PC_targets), + ['c']=new_cmd_entry(PC_targets), + ['checkparam']=new_cmd_entry({['Player']=false,['Enemy']=false,['Party']=false,['Ally']=false,['NPC']=false,['Self']=true,['Corpse']=false},{}), -- Blank table forces it into the second processing stream, which lets it default to <me> + ['target']=new_cmd_entry(PC_targets), + ['ta']=new_cmd_entry(PC_targets), + ['ra']=new_cmd_entry({['Player']=false,['Enemy']=true,['Party']=false,['Ally']=false,['NPC']=false,['Self']=false,['Corpse']=false}), + ['follow']=new_cmd_entry(All_targets), + ['recruit']=new_cmd_entry(PC_targets), + ['rec']=new_cmd_entry(PC_targets), + ['retr']=new_cmd_entry(Party_targets,{all=No_targets}), + ['returntrust']=new_cmd_entry(Party_targets,{all=No_targets}), + ['refa']=new_cmd_entry(Party_targets,{all=No_targets}), + ['returnfaith']=new_cmd_entry(Party_targets,{all=No_targets}), + ['bstpet']=new_cmd_entry(No_targets,{['1']=BST_targets,['2']=BST_targets,['3']=BST_targets,['4']=BST_targets,['5']=BST_targets,['6']=BST_targets,['7']=BST_targets}), + } + +unhandled_list = {['p']=true,['s']=true,['sh']=true,['yell']=true,['echo']=true,['t']=true,['l']=true,['breaklinkshell']=true} + +-- List of commands to be ignored +ignore_list = {['equip']=true,['raw']=true,['fish']=true,['dig']=true,['range']=true,['map']=true,['hide']=true,['jump']=true,['attackoff']=true,['quest']=true,['recruitlist']=true,['rlist']=true,['statustimer']=true} + +-- Targets to ignore and just pass through +pass_through_targs = T{'<t>','<me>','<ft>','<scan>','<bt>','<lastst>','<r>','<pet>','<p0>','<p1>','<p2>','<p3>','<p4>', + '<p5>','<a10>','<a11>','<a12>','<a13>','<a14>','<a15>','<a20>','<a21>','<a22>','<a23>','<a24>','<a25>','<focust>'} + +st_targs = T{'<st>','<stpc>','<stal>','<stnpc>','<stpt>'} + +targ_reps = {t='<t>',me='<me>',ft='<ft>',scan='<scan>',bt='<bt>',lastst='<lastst>',r='<r>',pet='<pet>',p0='<p0>',p1='<p1>',p2='<p2>',p3='<p3>',p4='<p4>', + p5='<p5>',a10='<a10>',a11='<a11>',a12='<a12>',a13='<a13>',a14='<a14>',a15='<a15>',a20='<a20>',a21='<a21>',a22='<a22>',a23='<a23>',a24='<a24>',a25='<a25>', + st='<st>',stpc='<stpc>',stal='<stal>',stnpc='<stnpc>',stpt='<stpt>',focust='<focust>'} + +language = 'english' -- windower.ffxi.get_info()['language']:lower() + + +----------------------------------------------------------------------------------- +--Name: make_abil() +--Args: +---- ind (string): stripped ability name +---- t (string): type of ability (Magic or Ability) +---- i (number): index id +----------------------------------------------------------------------------------- +--Returns: +---- Nothing, adds a new line to validabils or modifies it. +----------------------------------------------------------------------------------- +function make_abil(ind,res,id) + validabils[ind] = validabils[ind] or L{} + validabils[ind]:append({res=res,id=id}) +end + +-- Iterate through resources and make validabils. +function validabils_it(resource) + for id,v in pairs(res[resource]) do + if (not v.monster_level and v.prefix) or (v.monster_level and v.monster_level ~= -1 and v.ja:sub(1,1) ~= '#' ) then + -- Monster Abilities contains a large number of player-usable moves (but not monstrosity-usable). This excludes them. + make_abil(strip(v.english),resource,id) + end + end +end + +validabils_it('spells') +validabils_it('job_abilities') +validabils_it('weapon_skills') +validabils_it('monster_skills') +validabils_it('mounts')
\ No newline at end of file |