vanilla-wow-addons – Rev 1
?pathlinks?
---------------------------------------------
-- Hook functions to track picked up items --
---------------------------------------------
SAS_original_PickupAction = PickupAction;
function SAS_PickupAction(slot)
local PlrName = SASFrame.PlrName;
local itemInfo = SAS_GetMissingItemInfo( slot );
if ( not SAS_SwappingSet ) then
SAS_SavedPickup = SAS_BuildActionInfo(SAS_GetActionInfo(slot));
if ( SAS_SavedPickup ) then
SASDebug("Picked up action "..SAS_ParseActionInfo(SAS_SavedPickup, 1).." from slot "..slot );
SAS_ReturnAction = slot;
SASFakeDrag_Drop(1);
end
end
if ( itemInfo and HasAction(slot) ) then
SASDebug( "Removing missing item from action "..slot..". Attempted to pick up." );
SAS_Saved[PlrName]["MissingItems"][slot] = nil;
SAS_ForceUpdate( slot );
end
SAS_original_PickupAction(slot);
end
PickupAction = SAS_PickupAction;
SAS_original_PlaceAction = PlaceAction;
function SAS_PlaceAction(slot)
if ( not SAS_SwappingSet ) then
SAS_ReturnAction = nil;
SASDebug("Place action "..slot);
SAS_SavedPickup = SAS_BuildActionInfo(SAS_GetActionInfo(slot));
if ( SAS_SavedPickup ) then
SASDebug("Placed action "..SAS_ParseActionInfo(SAS_SavedPickup, 1).." from slot "..slot );
SASFakeDrag_Drop(1);
end
end
SAS_original_PlaceAction(slot);
end
PlaceAction = SAS_PlaceAction;
SAS_original_UseAction = UseAction;
function SAS_UseAction(slot, check, onSelf)
if ( not SAS_SwappingSet ) then
SAS_ReturnAction = nil;
SAS_SavedPickup = SAS_BuildActionInfo(SAS_GetActionInfo(slot));
if ( SAS_SavedPickup ) then
SASFakeDrag_Drop(1);
SASDebug("Use action "..SAS_ParseActionInfo(SAS_SavedPickup, 1).." from slot "..slot );
end
end
SAS_original_UseAction(slot, check, onSelf);
end
UseAction = SAS_UseAction;
SAS_original_PickupContainerItem = PickupContainerItem;
function SAS_PickupContainerItem( bag, slot )
if ( not SAS_SwappingSet ) then
SAS_ReturnAction = nil;
local itemLink = GetContainerItemLink( bag, slot );
if ( itemLink ) then
local name = SAS_FindName(itemLink);
local link = SAS_FindLink(itemLink);
local texture = GetContainerItemInfo( bag, slot );
SAS_SavedPickup = SAS_BuildActionInfo( name, texture, nil, link );
SASFakeDrag_Drop(1);
SASDebug("Pick up container item "..name.." from "..bag..", "..slot );
end
end
SAS_original_PickupContainerItem( bag, slot );
end
PickupContainerItem = SAS_PickupContainerItem;
SAS_original_PickupInventoryItem = PickupInventoryItem;
function SAS_PickupInventoryItem(index)
if ( not SAS_SwappingSet ) then
SAS_ReturnAction = nil;
local itemLink = GetInventoryItemLink( "player", index );
if ( itemLink ) then
local name = SAS_FindName(itemLink);
local link = SAS_FindLink(itemLink);
local texture = GetInventoryItemTexture( "player", index );
SAS_SavedPickup = SAS_BuildActionInfo( name, texture, nil, link );
SASFakeDrag_Drop(1);
SASDebug("Pick up inventory item "..name.." from "..index );
end
end
SAS_original_PickupInventoryItem(index);
end
PickupInventoryItem = SAS_PickupInventoryItem;
SAS_original_PickupMacro = PickupMacro;
function SAS_PickupMacro(index)
if ( not SAS_SwappingSet ) then
SAS_ReturnAction = nil;
local name, texture = GetMacroInfo(index);
local macro = GetMacroIndexByName(name);
if ( name ) then
SAS_SavedPickup = SAS_BuildActionInfo( name, texture, nil, nil, macro );
SASFakeDrag_Drop(1);
SASDebug("Pick up macro "..name.." from "..index );
end
end
SAS_original_PickupMacro(index);
end
PickupMacro = SAS_PickupMacro;
SAS_original_PickupSpell = PickupSpell;
function SAS_PickupSpell(id, bookType)
if ( not SAS_SwappingSet ) then
SAS_ReturnAction = nil;
local name, rank = GetSpellName( id, bookType );
local texture = GetSpellTexture( id, bookType );
if ( name ) then
SAS_SavedPickup = SAS_BuildActionInfo( name, texture, rank );
SASFakeDrag_Drop(1);
SASDebug("Pick up spell "..name.." from "..id);
local passive = IsSpellPassive( id, bookType );
if ( passive ) then
SASDebug("Spell is passive? Why can we pick this up?");
end
SAS_SavedPickup = SAS_BuildActionInfo( name, texture, rank, nil, nil, passive );
end
end
SAS_original_PickupSpell(id, bookType);
end
PickupSpell = SAS_PickupSpell;
--------------------------------------------
-- Hook functions to drop fake drag frame --
--------------------------------------------
SAS_original_WorldFrameOnMouseDown = WorldFrame:GetScript("OnMouseDown");
WorldFrame:SetScript("OnMouseDown", function()
SASFakeDrag_Drop(1);
if ( SAS_original_WorldFrameOnMouseDown ) then
SAS_original_WorldFrameOnMouseDown();
end
end);
-------------------------------------------
-- Hook functions to show missing items --
-------------------------------------------
SAS_original_GetActionTexture = GetActionTexture;
function SAS_GetActionTexture( id )
local PlrName = SASFrame.PlrName;
local texture = SAS_original_GetActionTexture( id );
local itemInfo = SAS_GetMissingItemInfo( id );
if ( itemInfo ) then
if ( texture ) then
SASDebug( "Removing missing item from action "..id..". Real action exists." );
SAS_Saved[PlrName]["MissingItems"][id] = nil;
SAS_ForceUpdate( id );
else
return SAS_FullPath(SAS_ParseActionInfo(itemInfo, 2));
end
end
return texture;
end
GetActionTexture = SAS_GetActionTexture;
SAS_original_IsConsumableAction = IsConsumableAction;
function SAS_IsConsumableAction( id )
if ( SAS_GetMissingItemInfo( id ) ) then
return 1;
end
return SAS_original_IsConsumableAction( id );
end
IsConsumableAction = SAS_IsConsumableAction;
SAS_original_HasAction = HasAction;
function SAS_HasAction( id )
if ( SAS_GetMissingItemInfo( id ) ) then
return 1;
end
return SAS_original_HasAction( id );
end
HasAction = SAS_HasAction;
SAS_original_SetAction = GameTooltip.SetAction;
function SAS_SetAction( this, id )
local PlrName = SASFrame.PlrName;
local itemInfo = SAS_GetMissingItemInfo( id );
if ( itemInfo ) then
local name, link = SAS_ParseActionInfo( itemInfo, 1, 4);
if ( link and GetItemInfo("item:"..link) ) then
TooltipReturn = GameTooltip:SetHyperlink("item:"..link);
if ( not SAS_Saved[PlrName]["HideFakeItemTooltips"] ) then
SASTooltipAddLine( SAS_TEXT_TOOLTIP_GENERATEDACTION );
if ( IsShiftKeyDown() or SAS_IsValidAction ) then
SASTooltipAddLine( SAS_TEXT_TOOLTIP_FAKEACTIONWARN );
end
end
GameTooltip:Show();
--return 1;
return;
else
TooltipReturn = GameTooltip:SetText( name, 1, 1, 1 );
SASTooltipAddLine( SAS_TEXT_TOOLTIP_NOTVALID );
if ( not SAS_Saved[PlrName]["HideFakeItemTooltips"] ) then
SASTooltipAddLine( SAS_TEXT_TOOLTIP_GENERATEDACTION );
if ( IsShiftKeyDown() or SAS_IsValidAction ) then
SASTooltipAddLine( SAS_TEXT_TOOLTIP_FAKEACTIONWARN );
end
end
GameTooltip:Show();
--return 1;
return;
end
end
return SAS_original_SetAction( this, id );
end
GameTooltip.SetAction = SAS_SetAction;