Quantcast

1 Add an option to make the corpse arrow sticky

James Whitehead II [10-10-12 - 06:26]
1 Add an option to make the corpse arrow sticky

Other addons that attempt to set waypoints on the crazy arrow when
you are dead will silently fail, if this option is enabled.
Filename
Localization.enUS.lua
TomTom.lua
TomTom_Config.lua
TomTom_Corpse.lua
TomTom_CrazyArrow.lua
diff --git a/Localization.enUS.lua b/Localization.enUS.lua
index 9ca6e13..7ecd28e 100644
--- a/Localization.enUS.lua
+++ b/Localization.enUS.lua
@@ -10,6 +10,7 @@ TomTomLocals = {
 	["Accept waypoints from guild and party members"] = "Accept waypoints from guild and party members",
 	["Allow closest waypoint to be outside current zone"] = "Allow closest waypoint to be outside current zone",
 	["Allow control-right clicking on map to create new waypoint"] = "Allow control-right clicking on map to create new waypoint",
+	["Allow the corpse arrow to override other waypoints"] = "Allow the corpse arrow to override other waypoints",
 	["Alpha"] = "Alpha",
 	["Announce new waypoints when they are added"] = "Announce new waypoints when they are added",
 	["Are you sure you would like to remove ALL TomTom waypoints?"] = "Are you sure you would like to remove ALL TomTom waypoints?",
@@ -156,6 +157,7 @@ TomTomLocals = {
 	["When a new waypoint is added, TomTom can automatically set the new waypoint as the \"Crazy Arrow\" waypoint."] = "When a new waypoint is added, TomTom can automatically set the new waypoint as the \"Crazy Arrow\" waypoint.",
 	["When a pet battle begins, the crazy arrow will be hidden from view. When you exit the pet battle, it will be re-shown."] = "When a pet battle begins, the crazy arrow will be hidden from view. When you exit the pet battle, it will be re-shown.",
 	["When the current waypoint is cleared (either by the user or automatically) and this option is set, TomTom will automatically set the closest waypoint in the current zone as active waypoint."] = "When the current waypoint is cleared (either by the user or automatically) and this option is set, TomTom will automatically set the closest waypoint in the current zone as active waypoint.",
+	["When the player is dead and has a waypoint towards their corpse, it will prevent other waypoints from changing the crazy arrow"] = "When the player is dead and has a waypoint towards their corpse, it will prevent other waypoints from changing the crazy arrow",
 	["When you 'arrive' at a waypoint (this distance is controlled by the 'Arrival Distance' setting in this group) a sound can be played to indicate this.  You can enable or disable this sound using this setting."] = "When you 'arrive' at a waypoint (this distance is controlled by the 'Arrival Distance' setting in this group) a sound can be played to indicate this.  You can enable or disable this sound using this setting.",
 	["World Map"] = "World Map",
 	["Yes"] = "Yes",
diff --git a/TomTom.lua b/TomTom.lua
index 556ec39..225715e 100755
--- a/TomTom.lua
+++ b/TomTom.lua
@@ -59,6 +59,7 @@ function TomTom:Initialize(event, addon)
                 noclick = false,
                 showtta = true,
 				showdistance = true,
+				stickycorpse = false,
                 autoqueue = true,
                 menu = true,
                 scale = 1.0,
diff --git a/TomTom_Config.lua b/TomTom_Config.lua
index a7fa4e5..2e3e043 100755
--- a/TomTom_Config.lua
+++ b/TomTom_Config.lua
@@ -186,6 +186,7 @@ local function createconfig()
 				type = "toggle",
 				name = L["Lock waypoint arrow"],
 				desc = L["Locks the waypoint arrow, so it can't be moved accidentally"],
+				width = "double",
 				arg = "arrow.lock",
 			},
 			rightclick = {
@@ -226,6 +227,7 @@ local function createconfig()
 				name = L["\"Arrival Distance\""],
 				desc = L["This setting will control the distance at which the waypoint arrow switches to a downwards arrow, indicating you have arrived at your destination"],
 				min = 0, max = 150, step = 5,
+				width = "double",
 				arg = "arrow.arrival",
 			},
             enablePing = {
@@ -244,10 +246,18 @@ local function createconfig()
 				width = "double",
 				arg = "arrow.hideDuringPetBattles",
 			},
+			stickyCorpse = {
+				order = 14,
+				type = "toggle",
+				name = L["Allow the corpse arrow to override other waypoints"],
+				desc = L["When the player is dead and has a waypoint towards their corpse, it will prevent other waypoints from changing the crazy arrow"],
+				width = "double",
+				arg = "arrow.stickycorpse",
+			},
 			display = {
 				type = "group",
 				name = L["Arrow display"],
-				order = 14,
+				order = 15,
 				inline = true,
 				args = {
 					help = {
@@ -649,6 +659,7 @@ local function createconfig()
 				name = L["Clear waypoint distance"],
 				desc = L["Waypoints can be automatically cleared when you reach them.  This slider allows you to customize the distance in yards that signals your \"arrival\" at the waypoint.  A setting of 0 turns off the auto-clearing feature\n\nChanging this setting only takes effect after reloading your interface."],
 				min = 0, max = 150, step = 1,
+				width = "double",
 				arg = "persistence.cleardistance",
 			},
 			corpse_arrow = {
diff --git a/TomTom_Corpse.lua b/TomTom_Corpse.lua
index a5e84ca..95fd841 100755
--- a/TomTom_Corpse.lua
+++ b/TomTom_Corpse.lua
@@ -96,6 +96,7 @@ local function SetCorpseArrow()
         uid = TomTom:AddMFWaypoint(m, f, x, y, {
             title = L["My Corpse"],
             persistent = false,
+			corpse = true,
         })
         return uid
     end
diff --git a/TomTom_CrazyArrow.lua b/TomTom_CrazyArrow.lua
index 3b17834..dbe5e61 100755
--- a/TomTom_CrazyArrow.lua
+++ b/TomTom_CrazyArrow.lua
@@ -83,6 +83,11 @@ wayframe.arrow:SetAllPoints()
 local active_point, arrive_distance, showDownArrow, point_title

 function TomTom:SetCrazyArrow(uid, dist, title)
+	if active_point and active_point.corpse and self.db.profile.arrow.stickycorpse then
+		-- do not change the waypoint arrow from corpse
+		return
+	end
+
 	active_point = uid
 	arrive_distance = dist
 	point_title = title