Changed file names
This commit is contained in:
178
media/lua/client/TOC_ModCompatibility.lua
Normal file
178
media/lua/client/TOC_ModCompatibility.lua
Normal file
@@ -0,0 +1,178 @@
|
||||
------------------------------------------
|
||||
-------------- THE ONLY CURE -------------
|
||||
------------------------------------------
|
||||
|
||||
------------------------------------------
|
||||
-- Compatibility for various mods
|
||||
------------------------------------------
|
||||
|
||||
|
||||
local function SetCompatibilityFancyHandwork()
|
||||
local og_ISHotbar_equipItem = ISHotbar.equipItem
|
||||
|
||||
function ISHotbar:equipItem(item)
|
||||
local mod = isFHModKeyDown()
|
||||
local primary = self.chr:getPrimaryHandItem()
|
||||
local secondary = self.chr:getSecondaryHandItem()
|
||||
local equip = true
|
||||
|
||||
local limbsData = getPlayer():getModData().TOC.limbs
|
||||
local canBeHeld = TOC_Common.GetCanBeHeldTable(limbsData)
|
||||
|
||||
|
||||
-- If we already have the item equipped
|
||||
if (primary and primary == item) or (secondary and secondary == item) then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, item, 20))
|
||||
equip = false
|
||||
end
|
||||
|
||||
-- If we didn't just do something
|
||||
if equip then
|
||||
-- Handle holding big objects
|
||||
if primary and isForceDropHeavyItem(primary) then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, primary, 50))
|
||||
----- treat "equip" as if we have something equipped from here down
|
||||
equip = false
|
||||
end
|
||||
if mod then
|
||||
--print("TOC: Fancy Handwork modifier")
|
||||
-- If we still have something equipped in secondary, unequip
|
||||
if secondary and equip and canBeHeld["Left"] then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, secondary, 20))
|
||||
end
|
||||
|
||||
if canBeHeld["Left"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, false, item:isTwoHandWeapon()))
|
||||
elseif canBeHeld["Right"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, true, item:isTwoHandWeapon()))
|
||||
|
||||
end
|
||||
else
|
||||
-- If we still have something equipped in primary, unequip
|
||||
if primary and equip and canBeHeld["Right"] then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, primary, 20))
|
||||
end
|
||||
-- Equip Primary
|
||||
if canBeHeld["Right"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, true, item:isTwoHandWeapon()))
|
||||
elseif canBeHeld["Left"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, false, item:isTwoHandWeapon()))
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
self.chr:getInventory():setDrawDirty(true)
|
||||
getPlayerData(self.chr:getPlayerNum()).playerInventory:refreshBackpacks()
|
||||
end
|
||||
|
||||
local og_FHSwapHandsAction = FHSwapHandsAction.start
|
||||
|
||||
|
||||
function FHSwapHandsAction:isValid()
|
||||
local limbsData = getPlayer():getModData().TOC.limbs
|
||||
local canBeHeld = TOC_Common.GetCanBeHeldTable(limbsData)
|
||||
|
||||
return (canBeHeld["Right"] and canBeHeld["Left"]) and(((self.character:getPrimaryHandItem() or self.character:getSecondaryHandItem()) ~= nil))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
local function SetCompatibilityFancyHandWorkAndSwapIt()
|
||||
|
||||
SetCompatibilityFancyHandwork()
|
||||
|
||||
-- Override equip Item once again with the necessary changes
|
||||
function ISHotbar:equipItem(item)
|
||||
local mod = isFHModKeyDown()
|
||||
local primary = self.chr:getPrimaryHandItem()
|
||||
local secondary = self.chr:getSecondaryHandItem()
|
||||
local equip = true
|
||||
|
||||
local limbsData = getPlayer():getModData().TOC.limbs
|
||||
local canBeHeld = TOC_Common.GetCanBeHeldTable(limbsData)
|
||||
|
||||
-- If we already have the item equipped
|
||||
if (primary and primary == item) or (secondary and secondary == item) then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, item, 20))
|
||||
equip = false
|
||||
end
|
||||
|
||||
-- If we didn't just do something
|
||||
if equip then
|
||||
-- Handle holding big objects
|
||||
if primary and isForceDropHeavyItem(primary) then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, primary, 50))
|
||||
----- treat "equip" as if we have something equipped from here down
|
||||
equip = false
|
||||
end
|
||||
if mod then
|
||||
--print("TOC: Fancy Handwork modifier")
|
||||
-- If we still have something equipped in secondary, unequip
|
||||
if secondary and equip and canBeHeld["Left"] then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, secondary, 20))
|
||||
end
|
||||
|
||||
if canBeHeld["Left"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, false, item:isTwoHandWeapon()))
|
||||
elseif canBeHeld["Right"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, true, item:isTwoHandWeapon()))
|
||||
|
||||
end
|
||||
else
|
||||
-- If we still have something equipped in primary, unequip
|
||||
if primary and equip and canBeHeld["Right"] then
|
||||
ISTimedActionQueue.add(ISUnequipAction:new(self.chr, primary, 20))
|
||||
end
|
||||
-- Equip Primary
|
||||
if canBeHeld["Right"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, true, item:isTwoHandWeapon()))
|
||||
elseif canBeHeld["Left"] then
|
||||
ISTimedActionQueue.add(ISEquipWeaponAction:new(self.chr, item, 20, false, item:isTwoHandWeapon()))
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
-- Swap It part
|
||||
local i_slotinuse = item:getAttachedSlot()
|
||||
local slot = self.availableSlot[i_slotinuse]
|
||||
local slotIndexID = "swap_Hotbar"..i_slotinuse
|
||||
if slot and SwapItConfig.config[slotIndexID] == true then
|
||||
if primary and not self:isInHotbar(primary) and self:canBeAttached(slot, primary) then
|
||||
self:removeItem(item, false)--false = don't run animation
|
||||
self:attachItem(primary, slot.def.attachments[primary:getAttachmentType()], i_slotinuse, slot.def, true)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
self.chr:getInventory():setDrawDirty(true)
|
||||
getPlayerData(self.chr:getPlayerNum()).playerInventory:refreshBackpacks()
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
--------------------------------------------------------
|
||||
|
||||
local function CheckModCompatibility()
|
||||
local activatedMods = getActivatedMods()
|
||||
print("TOC: Checking mods")
|
||||
|
||||
if activatedMods:contains("FancyHandwork") then
|
||||
|
||||
if activatedMods:contains("SwapIt") then
|
||||
require "SwapIt Main"
|
||||
print("TOC: Overriding FancyHandwork and SwapIt methods")
|
||||
SetCompatibilityFancyHandWorkAndSwapIt()
|
||||
else
|
||||
print("TOC: Overriding FancyHandwork methods")
|
||||
require "TimedActions/FHSwapHandsAction"
|
||||
SetCompatibilityFancyHandwork()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print("TOC: Starting CheckModCompatibility")
|
||||
Events.OnGameStart.Add(CheckModCompatibility)
|
||||
|
||||
Reference in New Issue
Block a user