--AsmoMOD made by Asmodius, Arthas Server --All rights reserved. -- Declare Needed Variables local AsmoMOD_Color = "|c000566FF"; local AsmoMOD_ColorR = "|c00FF0000"; local ResetGroup = 0; local Reseter; local didWotf = 0; local RipID = 0; local RipAction = 0; local opID = 0; local opAction = 0; local WotfID = 0; local healID = 0; local LightID = 0; local touchID = 0; local feignID = 0; local trapID = 0; local nsID = 1; local inCombat = false; local herbID = 0; local mineID = 0; local nshealme = 0; local SaveMe = 0; local herbmineme = 0; local nslightning = 0; local feigntrap = 0; local justenabled = 0; -- Show the Option Menu function AsmoMOD_showMenu() PlaySound("igMainMenuOpen"); AsmoMODOptions:Show(); end -- Load Event function AsmoMOD_OnLoad() this:RegisterEvent("PLAYER_ENTERING_WORLD") this:RegisterEvent("PLAYER_DEAD"); this:RegisterEvent("UPDATE_BATTLEFIELD_STATUS"); this:RegisterEvent("MERCHANT_SHOW"); this:RegisterEvent("RESURRECT_REQUEST"); this:RegisterEvent("CONFIRM_SUMMON"); this:RegisterEvent("PARTY_INVITE_REQUEST"); this:RegisterEvent("PARTY_MEMBERS_CHANGED"); this:RegisterEvent("PLAYER_CONTROL_LOST"); this:RegisterEvent("PLAYER_CONTROL_GAINED"); this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS"); this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE"); this:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF"); this:RegisterEvent("UNIT_HEALTH"); this:RegisterEvent("PLAYER_UNGHOST"); this:RegisterEvent("PLAYER_REGEN_ENABLED"); this:RegisterEvent("PLAYER_REGEN_DISABLED"); AsmoMOD_Chat("AsmoMOD v1.82 loaded."); if ( AsmoMOD_Save == nil ) then AsmoMOD_Save = {}; AsmoMOD_Save.bgrelenabled = true; AsmoMOD_Save.bgjoinenabled = true; AsmoMOD_Save.repairenabled = true; AsmoMOD_Save.rezenabled = true; AsmoMOD_Save.summonenabled = true; AsmoMOD_Save.groupenabled = true; AsmoMOD_Save.trinketenabled = true; AsmoMOD_Save.riposteenabled = false; AsmoMOD_Save.nsenabled = false; AsmoMOD_Save.lightenabled = false; AsmoMOD_Save.executeenabled = false; AsmoMOD_Save.overpowerenabled = false; AsmoMOD_Save.conserveenabled = false; AsmoMOD_Save.herbmineenabled = false; AsmoMOD_Save.nspercent = 20; AsmoMOD_Save.conservepercent = 80; end SLASH_Asmo1 = "/Asmo"; SlashCmdList["Asmo"] = AsmoMOD_showMenu; SLASH_Asinvite1 = "/Asinvite"; SlashCmdList["Asinvite"] = function(msg) Asmo_HandleInvite(msg); end SLASH_nsheal1 = "/nsheal"; SlashCmdList["nsheal"] = AsmoMOD_nsheal; SLASH_nslight1 = "/nslight"; SlashCmdList["nslight"] = AsmoMOD_nslight; SLASH_feigntrap1 = "/feigntrap"; SlashCmdList["feigntrap"] = AsmoMOD_feigntrap; SLASH_timer1 = "/timer"; SlashCmdList["timer"] = ExecuteCheck; -- Add my options frame to the global UI panel list UIPanelWindows["AsmoMODOptions"] = {area = "center", pushable = 0}; end -- Event Handler function AsmoMOD_OnEvent(event) -- Load Base Variables and Auto-Cast find herbs/minerals if(event == "PLAYER_ENTERING_WORLD") then AsmoMOD_Load(); if(AsmoMOD_Save.herbmineenabled) then herbmineme = 1; end end -- Determine if player is in combat if (event == "PLAYER_REGEN_ENABLED") then inCombat = false; end if (event == "PLAYER_REGEN_DISABLED") then inCombat = true; end -- Auto-release to the GY if ( event == "PLAYER_DEAD" ) then AsmoMOD_Release(); end -- Auto-join the BG when its your turn if ( event == "UPDATE_BATTLEFIELD_STATUS" ) then AsmoMOD_bgJoin(); end -- Auto-Repair when you see a merchant if ( event == "MERCHANT_SHOW") then AsmoMOD_RepairInventory(); AsmoMOD_RepairEquipment(); end -- Auto-Ressurect if ( event == "RESURRECT_REQUEST" ) then AsmoMOD_Resurrect(); end -- Auto-Summon if ( event == "CONFIRM_SUMMON" ) then AsmoMOD_Summon(); end -- Auto-Group if (event == "PARTY_INVITE_REQUEST") then AsmoMOD_Group(); end -- Reset-Group if (event == "PARTY_MEMBERS_CHANGED") then if(ResetGroup == 1) then ResetGroup = 2; return; end if(ResetGroup == 2) then PromoteByName(Reseter); LeaveParty(); ResetGroup = 0; end end -- Restore Control Fear if (event == "PLAYER_CONTROL_GAINED") then SaveMe = 0; end -- Auto-Trinket Fear Detect if (event == "PLAYER_CONTROL_LOST") then if(not GetBattlefieldWinner()) then SaveMe = 1; end end -- Wotf Succeed if(event == "CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS") then if(arg1 == "You gain Will of the Forsaken.") then didWotf = 0; end end -- Auto-Trinket Charm Detect if(event == "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE") then if(arg1 == "You are afflicted by Seduction.") then SaveMe = 1; elseif(arg1 == "You are afflicted by Repentence.") then SaveMe = 1; elseif(arg1 == "You are afflicted by Reckless Charge.") then SaveMe = 1; elseif(arg1 == "You are afflicted by Intimidating Shout.") then SaveMe = 1; end end -- Restore Control Charm if(event == "CHAT_MSG_SPELL_AURA_GONE_SELF") then if(arg1 == "Seduction fades from you.") then SaveMe = 0; elseif(arg1 == "Repentence fades from you.") then SaveMe = 0; elseif(arg1 == "Reckless Charge fades from you.") then SaveMe = 0; elseif(arg1 == "Intimidating Shout fades from you.") then SaveMe = 0; end end -- Auto-NSheal if((event == "UNIT_HEALTH") and AsmoMOD_Save.nsenabled) then --Check to see if the player is below nspercent local ppercent; ppercent = (UnitHealth("player") / UnitHealthMax("player")) * 100; if(ppercent <= AsmoMOD_Save.nspercent) then nshealme = 1; else nshealme = 0; end end -- Auto-Herb/Mine if((event == "PLAYER_UNGHOST") and AsmoMOD_Save.herbmineenabled) then herbmineme = 1; end end -- Load Needed Variables function AsmoMOD_Load() --If users switching between accounts, protect nill errors if ( AsmoMOD_Save == nil ) then AsmoMOD_Save = {}; AsmoMOD_Save.bgrelenabled = true; AsmoMOD_Save.bgjoinenabled = true; AsmoMOD_Save.repairenabled = true; AsmoMOD_Save.rezenabled = true; AsmoMOD_Save.summonenabled = true; AsmoMOD_Save.groupenabled = true; AsmoMOD_Save.trinketenabled = true; AsmoMOD_Save.riposteenabled = false; AsmoMOD_Save.overpowerenabled = false; AsmoMOD_Save.nsenabled = false; AsmoMOD_Save.lightenabled = false; AsmoMOD_Save.executeenabled = false; AsmoMOD_Save.conserveenabled = false; AsmoMOD_Save.herbmineenabled = false; AsmoMOD_Save.nspercent = 20; AsmoMOD_Save.conservepercent = 80; end -- Find all spell IDs local a = 1 while true do local spellName, spellRank = GetSpellName(a, BOOKTYPE_SPELL) if not spellName then do break end end -- Find Riposte ID if (spellName == "Riposte") then texture = GetSpellTexture(a, BOOKTYPE_SPELL) RipID = a -- Find Action Bar Number for Riposte local j; for j=1,72, 1 do if ( HasAction(j) ) then local actiontexture = GetActionTexture(j); if ( actiontexture == texture ) then RipAction = j do break end end end end end -- Find Overpower ID if (spellName == "Overpower") then texture = GetSpellTexture(a, BOOKTYPE_SPELL) opID = a -- Find Action Bar Number for Overpower local j; for j=1,108, 1 do if ( HasAction(j) ) then local actiontexture = GetActionTexture(j); if ( actiontexture == texture ) then opAction = j do break end end end end end -- Find Will of the Forsaken if (spellName == "Will of the Forsaken") then WotfID = a end -- Find Healing Wave ID if (spellName == "Healing Wave") then healID = a end -- Find Chain Lightning ID if (spellNamed == "Chain Lightning") then LightID = a end --Find Healing Touch if (spellName == "Healing Touch") then touchID = a end -- Find NS for Shaman and Druid if (spellName == "Nature's Swiftness") then nsID = a end -- Find Feign ID if (spellName == "Feign Death") then feignID = a end -- Find Trap ID if (spellName == "Freezing Trap") then trapID = a end -- Find Herb ID if (spellName == "Find Herbs") then herbID = a end -- Find Minerals ID if (spellName == "Find Minerals") then mineID = a end a = a + 1; end -- Correct options frame to saved values if(AsmoMOD_Save.bgrelenabled) then bgrelenabled:SetChecked(1); end if(AsmoMOD_Save.bgjoinenabled) then bgjoinenabled:SetChecked(1); end if(AsmoMOD_Save.rezenabled) then RessEnabled:SetChecked(1); end if(AsmoMOD_Save.summonenabled) then SummonEnabled:SetChecked(1); end if(AsmoMOD_Save.repairenabled) then repairenabled:SetChecked(1); end if(AsmoMOD_Save.groupenabled) then groupenabled:SetChecked(1); end if(AsmoMOD_Save.trinketenabled) then trinketenabled:SetChecked(1); end if(AsmoMOD_Save.riposteenabled) then riposteenabled:SetChecked(1); end if(AsmoMOD_Save.nsenabled) then nshealenabled:SetChecked(1); end if(AsmoMOD_Save.executeenabled) then executeenabled:SetChecked(1); end if(AsmoMOD_Save.conserveenabled) then conserveenabled:SetChecked(1); end if(AsmoMOD_Save.herbmineenabled) then herbmineenabled:SetChecked(1); end if(AsmoMOD_Save.overpowerenabled) then openabled:SetChecked(1); end nshealpercentage:SetValue(AsmoMOD_Save.nspercent); conservepercentage:SetValue(AsmoMOD_Save.conservepercent); end -- Cast spells function ExecuteCheck() -- Auto-PvP Trinket and WoTF if ((AsmoMOD_Save.trinketenabled) and (UnitOnTaxi("player") ~= 1)) then -- Use WoTF if it is active if (UnitRace("player") == "Undead") then local duration; if((SaveMe == 1) and (didWotf == 0)) then duration = GetSpellCooldown(WotfID, 1); if(duration == 0) then CastSpell(WotfID, BOOKTYPE_SPELL); didWotf = 1; return; end end end didWotf = 0; -- Use PvP Trinket if it is equipped and active if(SaveMe == 1) then myTrinket0 = GetInventoryItemLink("player", GetInventorySlotInfo("Trinket0Slot")) myTrinket1 = GetInventoryItemLink("player", GetInventorySlotInfo("Trinket1Slot")) if (myTrinket0 == nil) then myTrinket0 = "empty" end if (myTrinket1 == nil) then myTrinket1 = "empty" end if ((string.find(myTrinket0, "Insignia of the Horde") ~= nil) or (string.find(myTrinket0, "Insignia of the Alliance") ~= nil)) then myTrinketUse = GetInventorySlotInfo("Trinket0Slot") elseif ((string.find(myTrinket1, "Insignia of the Horde") ~= nil) or (string.find(myTrinket1, "Insignia of the Alliance") ~= nil)) then myTrinketUse = GetInventorySlotInfo("Trinket1Slot") else myTrinketUse = nil end if(myTrinketUse ~= nil) then UseInventoryItem(myTrinketUse); end end end -- Auto-Riposte if(AsmoMOD_Save.riposteenabled and (UnitClass("player") == "Rogue")) then duration = GetSpellCooldown(RipID, 1); if(IsUsableAction(RipAction)) then if(duration == 0) then CastSpellByName("Riposte"); end end end -- Auto-Overpower if(AsmoMOD_Save.overpowerenabled and (UnitClass("player") == "Warrior")) then duration = GetSpellCooldown(opID, 1); if(IsUsableAction(opAction)) then if(duration == 0) then CastSpellByName("Overpower(Rank 4)"); end end end -- Auto-Execute if((AsmoMOD_Save.executeenabled) and (UnitClass("player") == "Warrior")) then --Check to see if the target is at 20% or less local tpercent; tpercent = (UnitHealth("target") / UnitHealthMax("target")) * 100; if(tpercent <= 20) then if(UnitMana("player") >= 15) then CastSpellByName("Execute(Rank 5)"); end end end -- Auto-NSheal if((nshealme >= 1) and (AsmoMOD_Save.nsenabled)) then duration = GetSpellCooldown(nsID, 1); if(duration == 0) then CastSpellByName("Nature's Swiftness"); end SpellStopCasting(); local i = 1; local nsup = false; while true do buff = UnitBuff("player", i); if not buff then do break end; end if(string.find(buff, "Spell_Nature_RavenForm") ~= nil) then nsup = true; end i = i + 1; end if(nsup == false) then return; end if((UnitClass("player") == "Druid")) then duration = GetSpellCooldown(touchID, 1); if(duration == 0) then nshealme = 2; if(UnitIsEnemy("target", "player")) then TargetUnit("player"); CastSpellByName("Healing Touch(Rank 10)"); TargetLastEnemy(); if (UnitIsDead("target") == 1) or ( UnitExists("target") ~= 1) then TargetNearestEnemy() end else TargetUnit("player"); CastSpellByName("Healing Touch(Rank 10)"); end end elseif((UnitClass("player") == "Shaman")) then duration = GetSpellCooldown(healID, 1); if(duration == 0) then nshealme = 2; if(UnitIsEnemy("target", "player")) then TargetUnit("player"); CastSpellByName("Healing Wave(Rank 9)"); TargetLastEnemy(); if (UnitIsDead("target") == 1) or ( UnitExists("target") ~= 1) then TargetNearestEnemy() end else TargetUnit("player"); CastSpellByName("Healing Wave(Rank 9)"); end end end end -- Mana Conserve if(AsmoMOD_Save.conserveenabled and UnitIsFriend("target", "player")) then local cpercent; cpercent = (UnitHealth("target") / UnitHealthMax("target")) * 100; if(cpercent >= AsmoMOD_Save.conservepercent) then SpellStopCasting(); end end -- Auto-Find herbs/minerals if(AsmoMOD_Save.herbmineenabled and herbmineme == 1) then local _, _, instanceID = GetBattlefieldStatus(1); if ( instanceID == 0 ) and (not UnitOnTaxi("player")) and (not UnitIsDeadOrGhost("player")) and (not inCombat) then if(herbID ~= 0) then CastSpellByName("Find Herbs"); end if(mineID ~= 0) then CastSpellByName("Find Minerals"); end herbmineme = 0; end end end --Invite Handler function Asmo_HandleInvite(msg) local disabled = 0; if ( msg ) then msg = string.lower(msg); end Reseter = msg; InviteByName(msg); ResetGroup = 1; end -- Various Toggle Functions function AsmoMOD_RezToggle() if ( AsmoMOD_Save.rezenabled ) then AsmoMOD_Save.rezenabled = false; AsmoMOD_ChatR("Auto Ressurect has been disabled."); else AsmoMOD_Save.rezenabled = true; AsmoMOD_Chat("Auto Ressurect has been enabled."); end end function AsmoMOD_SummonToggle() if ( AsmoMOD_Save.summonenabled ) then AsmoMOD_Save.summonenabled = false; AsmoMOD_ChatR("Auto Summon has been disabled."); else AsmoMOD_Save.summonenabled = true; AsmoMOD_Chat("Auto Summon has been enabled."); end end function AsmoMOD_bgreltoggle() if ( AsmoMOD_Save.bgrelenabled ) then AsmoMOD_Save.bgrelenabled = false; AsmoMOD_ChatR("Auto BG Release has been disabled."); else AsmoMOD_Save.bgrelenabled = true; AsmoMOD_Chat("Auto BG Release has been enabled."); end end function AsmoMOD_bgjointoggle() if ( AsmoMOD_Save.bgjoinenabled ) then AsmoMOD_Save.bgjoinenabled = false; AsmoMOD_ChatR("Auto BG Join has been disabled."); else AsmoMOD_Save.bgjoinenabled = true; AsmoMOD_Chat("Auto BG Join has been enabled."); end end function AsmoMOD_repairtoggle() if ( AsmoMOD_Save.repairenabled ) then AsmoMOD_Save.repairenabled = false; AsmoMOD_ChatR("Auto Repair has been disabled."); else AsmoMOD_Save.repairenabled = true; AsmoMOD_Chat("Auto Repair has been enabled."); end end function AsmoMOD_grouptoggle() if ( AsmoMOD_Save.groupenabled ) then AsmoMOD_Save.groupenabled = false; AsmoMOD_ChatR("Auto-accept invites has been disabled."); else AsmoMOD_Save.groupenabled = true; AsmoMOD_Chat("Auto-accept invites has been enabled."); end end function AsmoMOD_trinkettoggle() if ( AsmoMOD_Save.trinketenabled ) then AsmoMOD_Save.trinketenabled = false; AsmoMOD_ChatR("Auto-use of the PvP trinket has been disabled."); else AsmoMOD_Save.trinketenabled = true; AsmoMOD_Chat("Auto-use of the PvP trinket has been enabled."); end end function AsmoMOD_ripostetoggle() if ( AsmoMOD_Save.riposteenabled ) then AsmoMOD_Save.riposteenabled = false; AsmoMOD_ChatR("Auto-use of riposte has been disabled."); else AsmoMOD_Save.riposteenabled = true; AsmoMOD_Chat("Auto-use of riposte has been enabled."); AsmoMOD_Load(); end end function AsmoMOD_executetoggle() if ( AsmoMOD_Save.executeenabled ) then AsmoMOD_Save.executeenabled = false; AsmoMOD_ChatR("Auto-use of execute has been disabled."); else AsmoMOD_Save.executeenabled = true; AsmoMOD_Chat("Auto-use of execute has been enabled."); AsmoMOD_Load(); end end function AsmoMOD_nshealtoggle() if ( AsmoMOD_Save.nsenabled ) then AsmoMOD_Save.nsenabled = false; AsmoMOD_ChatR("Auto-use of nsheal has been disabled."); else AsmoMOD_Save.nsenabled = true; AsmoMOD_Chat("Auto-use of nsheal has been enabled."); AsmoMOD_Load(); end end function AsmoMOD_conservetoggle() if ( AsmoMOD_Save.conserveenabled ) then AsmoMOD_Save.conserveenabled = false; AsmoMOD_ChatR("Auto-cancelling of heals has been disabled."); else AsmoMOD_Save.conserveenabled = true; AsmoMOD_Chat("Auto-cancelling of heals has been enabled."); AsmoMOD_Load(); end end function AsmoMOD_herbminetoggle() if ( AsmoMOD_Save.herbmineenabled ) then AsmoMOD_Save.herbmineenabled = false; AsmoMOD_ChatR("Auto-casting of find herbs/minerals has been disabled."); else AsmoMOD_Save.herbmineenabled = true; AsmoMOD_Chat("Auto-casting of find herbs/minerals has been enabled."); AsmoMOD_Load(); end end function AsmoMOD_overpowertoggle() if ( AsmoMOD_Save.overpowerenabled ) then AsmoMOD_Save.overpowerenabled = false; AsmoMOD_ChatR("Auto-casting of overpower has been disabled."); else AsmoMOD_Save.overpowerenabled = true; AsmoMOD_Chat("Auto-casting of overpower has been enabled."); AsmoMOD_Load(); end end -- Auto-Release Implimentation function AsmoMOD_Release() if( AsmoMOD_Save.bgrelenabled ) then local _, _, instanceID = GetBattlefieldStatus(1); if ( instanceID ~= 0 ) then RepopMe(); end return; end end -- Auto-Join BG Implimentation function AsmoMOD_bgJoin() if( AsmoMOD_Save.bgjoinenabled ) then for i=1, MAX_BATTLEFIELD_QUEUES do local status, _, _ = GetBattlefieldStatus(i); if (status == "confirm") then PlaySoundFile("Sound\\Doodad\\BellTollAlliance.wav"); AcceptBattlefieldPort(i, 1); getglobal("StaticPopup1"):Hide(); end end end end -- Auto-Ressurect Implimentation function AsmoMOD_Resurrect() if ( AsmoMOD_Save.rezenabled ) then AcceptResurrect(); getglobal("StaticPopup1"):Hide(); else AsmoMOD_ChatR("Auto Resurrect is set to off. Use the options menu to change this."); end end -- Auto-Repair Equipment Implimentation function AsmoMOD_RepairEquipment() if( (AsmoMOD_Save.repairenabled) and (CanMerchantRepair()) ) then RepairAllItems(); end end -- Auto-Repair Inventory Implimentation function AsmoMOD_RepairInventory() if( (AsmoMOD_Save.repairenabled) and (CanMerchantRepair()) ) then local total = GetRepairAllCost(); total = total + AsmoMOD_GetInventoryCost(); total = total / 10000; AsmoMOD_Chat("All items repaired. Total Cost: " .. total .. " gold."); ShowRepairCursor(); for bag = 0,4,1 do for slot = 1, GetContainerNumSlots(bag) , 1 do local hasCooldown, repairCost = GameTooltip:SetBagItem(bag,slot); if (repairCost and repairCost > 0) then UseContainerItem(bag,slot); end end end HideRepairCursor(); end end -- Get Cost of Repairing Inventory function AsmoMOD_GetInventoryCost() local AsmoMOD_InventoryCost = 0; for bag = 0,4,1 do for slot = 1, GetContainerNumSlots(bag) , 1 do local hasCooldown, repairCost = GameTooltip:SetBagItem(bag,slot); if (repairCost) then AsmoMOD_InventoryCost = AsmoMOD_InventoryCost + repairCost; end end end return AsmoMOD_InventoryCost; end -- Auto-Join Group Implimentation function AsmoMOD_Group() if( AsmoMOD_Save.groupenabled ) then AcceptGroup(); AsmoMOD_HideWindow("PARTY_INVITE"); end end -- Automatic Accept Summon Implimentation function AsmoMOD_Summon() if ( AsmoMOD_Save.summonenabled ) then ConfirmSummon(); getglobal("StaticPopup1"):Hide(); else AsmoMOD_ChatR("Auto Summon is set to off. Use the options menu to change this."); end end -- NS-Heal Start function AsmoMOD_nsheal() duration = GetSpellCooldown(nsID, 1); if(duration == 0) then CastSpellByName("Nature's Swiftness") end SpellStopCasting(); if((UnitClass("player") == "Druid")) then duration = GetSpellCooldown(touchID, 1); if(duration == 0) then if(UnitIsEnemy("target", "player")) then TargetUnit("player"); CastSpellByName("Healing Touch(Rank 10)"); TargetLastEnemy(); if (UnitIsDead("target") == 1) or ( UnitExists("target") ~= 1) then TargetNearestEnemy() end elseif(UnitIsFriend("target", "player")) then CastSpellByName("Healing Touch(Rank 10)"); else TargetUnit("player"); CastSpellByName("Healing Touch(Rank 10)"); end end elseif((UnitClass("player") == "Shaman")) then duration = GetSpellCooldown(healID, 1); if(duration == 0) then if(UnitIsEnemy("target", "player")) then TargetUnit("player"); CastSpellByName("Healing Wave(Rank 9)"); TargetLastEnemy(); if (UnitIsDead("target") == 1) or ( UnitExists("target") ~= 1) then TargetNearestEnemy() end elseif(UnitIsFriend("target", "player")) then CastSpellByName("Healing Wave(Rank 9)"); else TargetUnit("player"); CastSpellByName("Healing Wave(Rank 9)"); end end end end -- NS Lightning Start function AsmoMOD_nslight() duration = GetSpellCooldown(nsID, 1); if(duration == 0) then CastSpellByName("Nature's Swiftness") nslightning = 1; end SpellStopCasting(); duration = GetSpellCooldown(LightID, 1); if(duration == 0) then if(nslightning == 2) then nslightning = 0; return; end nslightning = 2; if(UnitIsEnemy("target", "player")) then CastSpellByName("Chain Lightning(Rank 4)"); else TargetNearestEnemy(); CastSpellByName("Chain Lightning(Rank 4)"); end end end -- Feign-Trap Start function AsmoMOD_feigntrap() PetFollow(); duration = GetSpellCooldown(feignID, 1); if(duration == 0) then CastSpellByName("Feign Death") feigntrap = 1; end SpellStopCasting(); duration = GetSpellCooldown(trapID, 1); if(duration == 0) then if(feigntrap == 2) then feigntrap = 0; return; end feigntrap = 2; CastSpellByName("Freezing Trap(Rank 3)"); end end -- Hide Popupbox Implimentation function AsmoMOD_HideWindow(windowToHide) local windowIndex for windowIndex = 1, STATICPOPUP_NUMDIALOGS do local currentFrame = getglobal("StaticPopup" .. windowIndex) if currentFrame:IsVisible() and (currentFrame.which == windowToHide) then currentFrame:Hide(); end end end -- Basic Text send function function AsmoMOD_Chat(text) DEFAULT_CHAT_FRAME:AddMessage(AsmoMOD_Color..text); end function AsmoMOD_ChatR(text) DEFAULT_CHAT_FRAME:AddMessage(AsmoMOD_ColorR..text); end --Options Functions function AsmoMOD_PercentageChanged() AsmoMOD_Save.nspercent = this:GetValue(); nstext:SetText("NSHeal Percent: ".. AsmoMOD_Save.nspercent .. "%"); end function AsmoMOD_ConserveChanged() AsmoMOD_Save.conservepercent = this:GetValue(); conservetext:SetText("Conserve Percent: ".. AsmoMOD_Save.conservepercent .. "%"); end