summaryrefslogtreecommitdiff
path: root/Data/BuiltIn/Libraries/lua-addons/addons/ohShi/text_handling.lua
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-15 13:53:59 +0800
committerchai <chaifix@163.com>2021-11-15 13:53:59 +0800
commit942a030afd348ab2e02eac8054b43e3c3a72ea48 (patch)
treea13459f39a3d2f1b533fbd1b5ab523d7a621f673 /Data/BuiltIn/Libraries/lua-addons/addons/ohShi/text_handling.lua
parente307051a56a54c27f10438fd2025edf61d0dfeed (diff)
*rename
Diffstat (limited to 'Data/BuiltIn/Libraries/lua-addons/addons/ohShi/text_handling.lua')
-rw-r--r--Data/BuiltIn/Libraries/lua-addons/addons/ohShi/text_handling.lua145
1 files changed, 145 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/ohShi/text_handling.lua b/Data/BuiltIn/Libraries/lua-addons/addons/ohShi/text_handling.lua
new file mode 100644
index 0000000..fb0d56e
--- /dev/null
+++ b/Data/BuiltIn/Libraries/lua-addons/addons/ohShi/text_handling.lua
@@ -0,0 +1,145 @@
+--[[
+Copyright (c) 2013, Ricky Gall
+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 <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.
+]]
+
+texts = require 'texts'
+
+--Create the textbox
+function initText()
+ ohShi_tb = texts.new(settings)
+ tracking:append('ohShi initialized ')
+ textUpdate()
+ coroutine.schedule(remText, settings.duration or 7)
+end
+
+--Removes first line of a textbox
+function remText()
+ if tracking:length() > 0 then
+ table.remove(tracking,1)
+ textUpdate()
+ end
+end
+
+--Add text to textbox. Anytime text is added this is called.
+function addText(name, abtype, abil, dMob, dangerous)
+ if tracking:length() > 9 then
+ tracking:clear()
+ textUpdate()
+ end
+ if abtype == 'ws' then
+ abil = tonumber(abil)
+ doit = true
+ if abil <= 255 then
+ abilname = res.weapon_skills[abil].english
+ else
+ abilname = res.monster_abilities[abil].english
+ end
+ elseif abtype == 'spell' then
+ abil = tonumber(abil)
+ doit = true
+ abilname = res.spells[abil].english
+ elseif abtype == 'roll' then
+ abil = tonumber(abil)
+ doit = true
+ abilname = res.job_abilities[abil].english .. ' [' .. dMob .. ']'
+ dMob = nil
+ dangerous = nil
+ elseif name == 'vulnerable' then
+ if dMob == ' extremely ' then
+ tracking:append(' \\cs(255,100,100)Weakness 5: '..dangerous:capitalize()..'\\cr')
+ elseif dMob == ' highly ' then
+ tracking:append(' \\cs(255,100,100)Weakness 3: '..dangerous:capitalize()..'\\cr')
+ else
+ tracking:append(' Weakness 1: '..dangerous:capitalize())
+ end
+ elseif name == 'bluered' then
+ tracking:append(' Blue: '..dMob..'% Red: '..dangerous..'%')
+ elseif name == 'red' then
+ tracking:append(' Red: '..dMob..'%')
+ elseif name == 'blue' then
+ tracking:append(' Blue: '..dMob..'%')
+ elseif name == 'devastates' then
+ tracking:append(' Fiend devastated by: '..dMob)
+ elseif name == 'victory' then
+ tracking:append(' Key to Victory: '..dMob)
+ else
+ tracking:append(' '..name)
+ end
+ if doit then
+ local str = name..': '..abilname
+ if dangerous or dMob then
+ tracking:append(' \\cs(255,100,100)'..str..'\\cr')
+ flashImage()
+ else
+ tracking:append(' '..str)
+ end
+ end
+ coroutine.schedule(remText, settings.duration or 7)
+ textUpdate()
+end
+
+--Called anytime text is added to the tracking table
+--Refreshes the textbox and hides/shows it if needed.
+function textUpdate()
+ if #tracking > 0 then
+ local txt = ''
+ for inc = 1, #tracking do
+ txt = txt..tracking[inc]
+ if inc < #tracking then
+ txt = txt..'\n'
+ end
+ end
+ ohShi_tb:text(txt)
+ ohShi_tb:show()
+ else
+ ohShi_tb:text('')
+ ohShi_tb:hide()
+ end
+end
+
+--image handling
+--This function is used to flash the warning image
+--when a danger tp/spell is used.
+function flashImage()
+ local name = 'ohShi'..tostring(math.random(10000000,99999999))
+ prims:add(name)
+ windower.prim.create(name)
+ windower.prim.set_color(name,255,255,255,255)
+ windower.prim.set_fit_to_texture(name,false)
+ windower.prim.set_texture(name,windower.addon_path..'data/warning.png')
+ windower.prim.set_repeat(name,1,1)
+ windower.prim.set_visibility(name,true)
+ windower.prim.set_position(name,settings.pos.x-30,settings.pos.y-10)
+ windower.prim.set_size(name,30,30)
+ coroutine.schedule(deleteImage:prepare(name), settings.duration or 7)
+end
+
+--Called to delete the image after it's time is up.
+function deleteImage(str)
+ prims:remove(str)
+ windower.prim.delete(str)
+end