diff --git a/addons/EmpyPopTracker/EmpyPopTracker.lua b/addons/EmpyPopTracker/EmpyPopTracker.lua
index 751ea953f..797226ddb 100644
--- a/addons/EmpyPopTracker/EmpyPopTracker.lua
+++ b/addons/EmpyPopTracker/EmpyPopTracker.lua
@@ -29,7 +29,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 _addon.name = 'Empy Pop Tracker'
 _addon.author = 'Dean James (Xurion of Bismarck)'
 _addon.commands = { 'ept', 'empypoptracker' }
-_addon.version = '2.1.1'
+_addon.version = '2.2.1'
 
 config = require('config')
 res = require('resources')
@@ -57,15 +57,30 @@ defaults.text.text.size = 10
 defaults.tracking = 'briareus'
 defaults.visible = true
 defaults.add_to_chat_mode = 8
+defaults.colors = {}
+defaults.colors.needed = {}
+defaults.colors.needed.red = 255
+defaults.colors.needed.green = 50
+defaults.colors.needed.blue = 50
+defaults.colors.obtained = {}
+defaults.colors.obtained.red = 100
+defaults.colors.obtained.green = 255
+defaults.colors.obtained.blue = 100
+defaults.colors.pool = {}
+defaults.colors.pool.red = 255
+defaults.colors.pool.green = 170
+defaults.colors.pool.blue = 0
+defaults.colors.bgall = {}
+defaults.colors.bgall.red = 0
+defaults.colors.bgall.green = 75
+defaults.colors.bgall.blue = 0
 
 EmpyPopTracker.settings = config.load(defaults)
 EmpyPopTracker.text = require('texts').new(EmpyPopTracker.settings.text, EmpyPopTracker.settings)
 
-colors = {}
-colors.success = '\\cs(100,255,100)'
-colors.danger = '\\cs(255,50,50)'
-colors.warning = '\\cs(255,170,0)'
-colors.close = '\\cr'
+function start_color(color)
+    return '\\cs(' .. EmpyPopTracker.settings.colors[color].red .. ',' .. EmpyPopTracker.settings.colors[color].green .. ',' .. EmpyPopTracker.settings.colors[color].blue .. ')'
+end
 
 function owns_item(id, items)
     for _, bag in pairs(items) do
@@ -149,16 +164,16 @@ function generate_text(data, key_items, items, depth)
 
         local item_colour
         if owns_pop then
-            item_colour = colors.success
+            item_colour = start_color('obtained')
         else
-            item_colour = colors.danger
+            item_colour = start_color('needed')
         end
 
         local pool_notification = ''
         if in_pool_count > 0 then
-            pool_notification = colors.warning .. ' [' .. in_pool_count .. ']' .. colors.close
+            pool_notification = start_color('pool') .. ' [' .. in_pool_count .. ']' .. '\\cr'
         end
-        text = text .. '\n' .. get_indent(depth) .. pop.dropped_from.name .. '\n' .. get_indent(depth) .. ' >> ' .. item_colour .. item_identifier .. pop_name .. colors.close .. pool_notification
+        text = text .. '\n' .. get_indent(depth) .. pop.dropped_from.name .. '\n' .. get_indent(depth) .. ' >> ' .. item_colour .. item_identifier .. pop_name .. '\\cr' .. pool_notification
         if pop.dropped_from.pops then
             text = text .. generate_text(pop.dropped_from, key_items, items, depth + 1)
         end
@@ -269,9 +284,9 @@ EmpyPopTracker.update = function()
     local generated_info = EmpyPopTracker.generate_info(tracked_nm_data, key_items, items)
     EmpyPopTracker.text:text(generated_info.text)
     if generated_info.has_all_pops then
-        EmpyPopTracker.text:bg_color(0, 75, 0)
+        EmpyPopTracker.text:bg_color(EmpyPopTracker.settings.colors.bgall.red, EmpyPopTracker.settings.colors.bgall.green, EmpyPopTracker.settings.colors.bgall.blue)
     else
-        EmpyPopTracker.text:bg_color(0, 0, 0)
+        EmpyPopTracker.text:bg_color(EmpyPopTracker.settings.text.red, EmpyPopTracker.settings.text.green, EmpyPopTracker.settings.text.blue)
     end
     if EmpyPopTracker.settings.visible then
         EmpyPopTracker.text:visible(true)
diff --git a/addons/EmpyPopTracker/README.md b/addons/EmpyPopTracker/README.md
index 5fd2550af..5ff3d1214 100644
--- a/addons/EmpyPopTracker/README.md
+++ b/addons/EmpyPopTracker/README.md
@@ -6,6 +6,8 @@ An FFXI Windower 4 addon that tracks items and key items for popping various NMs
 
 Originally developed to track Abyssea Empyrean weapon NMs, hence the name. Key items are identified by the Zhe (Ж) character. Treasure pool counts for pop items are listed in amber after the item in the format of [3] (assuming 3 of that item in the pool).
 
+All text colours are configurable via the auto-generated settings.xml file.
+
 ## Load
 
 `//lua load empypoptracker`
@@ -48,6 +50,6 @@ Fistule is a unique NM when compared to the others. It does not require KIs that
 
 ## Contributing
 
-Notice something not quite right? [Raise an issue](https://github.com/xurion/ffxi-empy-pop-tracker/issues).
+If there's an NM you want to have added, or if you notice something not quite right, please [raise an issue](https://github.com/xurion/ffxi-empy-pop-tracker/issues).
 
-[Pull requests](https://github.com/xurion/ffxi-empy-pop-tracker/pulls) welcome!
+Or better yet, [pull requests](https://github.com/xurion/ffxi-empy-pop-tracker/pulls) are welcome!
diff --git a/addons/EmpyPopTracker/nms/chloris.lua b/addons/EmpyPopTracker/nms/chloris.lua
index df7451eed..875b5bff2 100644
--- a/addons/EmpyPopTracker/nms/chloris.lua
+++ b/addons/EmpyPopTracker/nms/chloris.lua
@@ -78,6 +78,10 @@ return {
         dropped_from = {
             name = 'Ophanim, Forced (G-9)',
             pops = { {
+                id = 2917, --Bloodshot Hecteye
+                type = 'item',
+                dropped_from = { name = 'Beholder (G-9)' }
+            }, {
                 id = 2946, --Tarnished Pincer
                 type = 'item',
                 dropped_from = {
@@ -86,21 +90,17 @@ return {
                         id = 2916, --High-quality Limule Pincer
                         type = 'item',
                         dropped_from = { name = 'Gulch Limule (H-10)' }
-                    }, {
-                        id = 2917, --Bloodshot Hecteye
-                        type = 'item',
-                        dropped_from = { name = 'Beholder (G-9)' }
-                    }, {
-                        id = 2945, --Shriveled Wing
+                    } }
+                }
+            }, {
+                id = 2945, --Shriveled Wing
+                type = 'item',
+                dropped_from = {
+                    name = 'Halimede, Forced (G-12)',
+                    pops = { {
+                        id = 2915, --High-quality Clionid Wing
                         type = 'item',
-                        dropped_from = {
-                            name = 'Halimede, Forced (G-12)',
-                            pops = { {
-                                id = 2915, --High-quality Clionid Wing
-                                type = 'item',
-                                dropped_from = { name = 'Gully Clionid (G-12)' }
-                            } }
-                        }
+                        dropped_from = { name = 'Gully Clionid (G-12)' }
                     } }
                 }
             } }
diff --git a/addons/addons.xml b/addons/addons.xml
index 7243b1c91..ed64f3a4f 100644
--- a/addons/addons.xml
+++ b/addons/addons.xml
@@ -809,4 +809,11 @@
     <bugtracker>https://github.com/Windower/Lua/issues</bugtracker>
     <support>https://github.com/azamorapl</support>
   </addon>
+  <addon>
+    <name>IndiNope</name>
+    <author>Lili</author>
+    <description>Block graphical effects from Geomancer's Indi- spells.</description>
+    <bugtracker>https://github.com/Windower/Lua/issues</bugtracker>
+    <support>https://github.com/lili-ffxi</support>
+  </addon>  
 </addons>
diff --git a/addons/indinope/README.md b/addons/indinope/README.md
new file mode 100644
index 000000000..16c82a4e4
--- /dev/null
+++ b/addons/indinope/README.md
@@ -0,0 +1,15 @@
+# IndiNope 1.0.4
+Hides visual effects from geomancy on players.
+
+Currently does not hide geomancy effect around luopans.
+
+**No commands.** Load it and it's on, unload and it's off.
+
+### Changelog:
+
+1.0.4 - More tweaks.  
+1.0.3 - A few tweaks.  
+1.0.1 - Fixed a bug where Indi-Nope would make Master stars disappear. Thanks Kenshi for finding out.  
+1.0.0 - Initial release.  
+
+Thanks to Thorny, this addon is a port to windower of his Ashita code with the same functionality.
diff --git a/addons/indinope/indinope.lua b/addons/indinope/indinope.lua
new file mode 100644
index 000000000..e085b2b79
--- /dev/null
+++ b/addons/indinope/indinope.lua
@@ -0,0 +1,48 @@
+--[[
+Copyright © Lili, 2020
+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 IndiNope 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 LILI 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 = 'IndiNope'
+_addon.author = 'Lili'
+_addon.version = '1.0.4'
+
+require('bit')
+
+offsets = { [0x00D] = 67, [0x037] = 89, }
+
+windower.register_event('incoming chunk', function(id, original, modified, injected, blocked)
+    if injected or blocked or not offsets[id] then return end
+
+    offset = offsets[id]
+    flags = original:byte(offsets[id])
+
+    -- if any of the bits 0 through 7 are set, a bubble is shown and we want to block it.
+    if bit.band(flags, 0x7F) ~= 0 then
+        packet = original:sub(1, offset - 1) .. string.char(bit.band(flags, 0x80)) .. original:sub(offset + 1) -- preserve bit 8 (Job Master stars)
+        return packet
+    end
+end)
