refactor: removed compat with b41 entirely
This commit is contained in:
@@ -1,10 +0,0 @@
|
|||||||
local LimitActionsController = require("TOC/Controllers/LimitActionsController") -- declared in common
|
|
||||||
local OverridenMethodsArchive = require("TOC/OverridenMethodsArchive")
|
|
||||||
|
|
||||||
local og_ISClothingExtraAction_isValid = OverridenMethodsArchive.Get("ISClothingExtraAction_isValid")
|
|
||||||
---@diagnostic disable-next-line: duplicate-set-field
|
|
||||||
function ISClothingExtraAction:isValid()
|
|
||||||
-- TOC_DEBUG.print("Inside ISClothingExtraAction:isValid 42")
|
|
||||||
-- TOC_DEBUG.print(OverridenMethodsArchive.Get("ISClothingExtraAction_isValid"))
|
|
||||||
return LimitActionsController.WrapClothingAction(self, og_ISClothingExtraAction_isValid, instanceItem(self.extra))
|
|
||||||
end
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
local ProsthesisHandler = require("TOC/Handlers/ProsthesisHandler") -- declared in common
|
|
||||||
local OverridenMethodsArchive = require("TOC/OverridenMethodsArchive")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local og_ISClothingExtraAction_isValid = OverridenMethodsArchive.Get("ISClothingExtraAction_isValid")
|
|
||||||
---@diagnostic disable-next-line: duplicate-set-field
|
|
||||||
function ISClothingExtraAction:isValid()
|
|
||||||
local isEquippable = og_ISClothingExtraAction_isValid(self)
|
|
||||||
-- self.extra is a string, not the item
|
|
||||||
local testItem = instanceItem(self.extra)
|
|
||||||
return ProsthesisHandler.Validate(testItem, isEquippable)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local og_ISClothingExtraAction_perform = OverridenMethodsArchive.Get("ISClothingExtraAction_perform")
|
|
||||||
function ISClothingExtraAction:perform()
|
|
||||||
local extraItem = instanceItem(self.extra)
|
|
||||||
ProsthesisHandler.SearchAndSetupProsthesis(extraItem, true)
|
|
||||||
og_ISClothingExtraAction_perform(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local og_ISUnequipAction_complete = ISUnequipAction.complete
|
|
||||||
function ISUnequipAction:complete()
|
|
||||||
-- Horrendous workaround. For B42, as of now, it will basically happen two times, once with :perform and once with :complete. Shouldn't
|
|
||||||
-- matter for performance but it's really ugly.
|
|
||||||
-- local isProst = ProsthesisHandler.SearchAndSetupProsthesis(self.item, false)
|
|
||||||
-- local group
|
|
||||||
-- if isProst then
|
|
||||||
-- group = BodyLocations.getGroup("Human")
|
|
||||||
-- group:setMultiItem("TOC_ArmProst", false)
|
|
||||||
-- end
|
|
||||||
og_ISUnequipAction_complete(self)
|
|
||||||
|
|
||||||
-- if isProst then
|
|
||||||
-- group:setMultiItem("TOC_ArmProst", true)
|
|
||||||
-- end
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -397,7 +397,7 @@ end
|
|||||||
local og_ISClothingExtraAction_isValid = OverridenMethodsArchive.Save("ISClothingExtraAction_isValid", ISClothingExtraAction.isValid)
|
local og_ISClothingExtraAction_isValid = OverridenMethodsArchive.Save("ISClothingExtraAction_isValid", ISClothingExtraAction.isValid)
|
||||||
---@diagnostic disable-next-line: duplicate-set-field
|
---@diagnostic disable-next-line: duplicate-set-field
|
||||||
function ISClothingExtraAction:isValid()
|
function ISClothingExtraAction:isValid()
|
||||||
return LimitActionsController.WrapClothingAction(self, og_ISClothingExtraAction_isValid, InventoryItemFactory.CreateItem(self.extra))
|
return LimitActionsController.WrapClothingAction(self, og_ISClothingExtraAction_isValid, instanceItem(self.extra))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ function LocalPlayerController.ManageTraits()
|
|||||||
|
|
||||||
local AmputationHandler = require("TOC/Handlers/AmputationHandler")
|
local AmputationHandler = require("TOC/Handlers/AmputationHandler")
|
||||||
for k, v in pairs(StaticData.TRAITS_BP) do
|
for k, v in pairs(StaticData.TRAITS_BP) do
|
||||||
if playerObj:HasTrait(k) then
|
if playerObj:hasTrait(k) then
|
||||||
-- Once we find one, we should be done since they're exclusive
|
-- Once we find one, we should be done since they're exclusive
|
||||||
TOC_DEBUG.print("Player has amputation trait " .. k .. ", executing it")
|
TOC_DEBUG.print("Player has amputation trait " .. k .. ", executing it")
|
||||||
local tempHandler = AmputationHandler:new(v, playerObj)
|
local tempHandler = AmputationHandler:new(v, playerObj)
|
||||||
@@ -133,19 +133,14 @@ function ISClothingExtraAction:isValid()
|
|||||||
local isEquippable = og_ISClothingExtraAction_isValid(self)
|
local isEquippable = og_ISClothingExtraAction_isValid(self)
|
||||||
-- self.extra is a string, not the item
|
-- self.extra is a string, not the item
|
||||||
|
|
||||||
-- B42 Compatibility to add
|
local testItem = instanceItem(self.extra)
|
||||||
local testItem = InventoryItemFactory.CreateItem(self.extra)
|
|
||||||
return ProsthesisHandler.Validate(testItem, isEquippable)
|
return ProsthesisHandler.Validate(testItem, isEquippable)
|
||||||
end
|
end
|
||||||
|
|
||||||
local og_ISClothingExtraAction_perform = OverridenMethodsArchive.Save("ISClothingExtraAction_perform", ISClothingExtraAction.perform)
|
local og_ISClothingExtraAction_perform = OverridenMethodsArchive.Save("ISClothingExtraAction_perform", ISClothingExtraAction.perform)
|
||||||
---@diagnostic disable-next-line: duplicate-set-field
|
---@diagnostic disable-next-line: duplicate-set-field
|
||||||
function ISClothingExtraAction:perform()
|
function ISClothingExtraAction:perform()
|
||||||
|
local extraItem = instanceItem(self.extra)
|
||||||
|
|
||||||
-- B42 Compatibility to add
|
|
||||||
|
|
||||||
local extraItem = InventoryItemFactory.CreateItem(self.extra)
|
|
||||||
ProsthesisHandler.SearchAndSetupProsthesis(extraItem, true)
|
ProsthesisHandler.SearchAndSetupProsthesis(extraItem, true)
|
||||||
og_ISClothingExtraAction_perform(self)
|
og_ISClothingExtraAction_perform(self)
|
||||||
end
|
end
|
||||||
@@ -187,4 +182,22 @@ function ISUnequipAction:perform()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local og_ISUnequipAction_complete = ISUnequipAction.complete
|
||||||
|
function ISUnequipAction:complete()
|
||||||
|
-- Horrendous workaround. For B42, as of now, it will basically happen two times, once with :perform and once with :complete. Shouldn't
|
||||||
|
-- matter for performance but it's really ugly.
|
||||||
|
-- local isProst = ProsthesisHandler.SearchAndSetupProsthesis(self.item, false)
|
||||||
|
-- local group
|
||||||
|
-- if isProst then
|
||||||
|
-- group = BodyLocations.getGroup("Human")
|
||||||
|
-- group:setMultiItem("TOC_ArmProst", false)
|
||||||
|
-- end
|
||||||
|
og_ISUnequipAction_complete(self)
|
||||||
|
|
||||||
|
-- if isProst then
|
||||||
|
-- group:setMultiItem("TOC_ArmProst", true)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
return ProsthesisHandler
|
return ProsthesisHandler
|
||||||
@@ -6,7 +6,7 @@ require("TOC/Events")
|
|||||||
|
|
||||||
---@class Main
|
---@class Main
|
||||||
local Main = {
|
local Main = {
|
||||||
_version = "2.2.2"
|
_version = "2.3"
|
||||||
}
|
}
|
||||||
|
|
||||||
function Main.Start()
|
function Main.Start()
|
||||||
@@ -87,7 +87,7 @@ function CleanWoundAction:perform()
|
|||||||
|
|
||||||
TOC_DEBUG.print("CleanWound for " .. self.otherPlayer:getUsername())
|
TOC_DEBUG.print("CleanWound for " .. self.otherPlayer:getUsername())
|
||||||
|
|
||||||
if self.character:HasTrait("Hemophobic") then
|
if self.character:hasTrait("Hemophobic") then
|
||||||
self.character:getStats():setPanic(self.character:getStats():getPanic() + 15)
|
self.character:getStats():setPanic(self.character:getStats():getPanic() + 15)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ local function AddStoveContextMenu(playerNum, context, worldObjects, test)
|
|||||||
|
|
||||||
|
|
||||||
-- Notifications, in case the player can't do the action
|
-- Notifications, in case the player can't do the action
|
||||||
local isPlayerCourageous = pl:HasTrait("Brave") or pl:HasTrait("Desensitized") or pl:getPerkLevel(Perks.Strength) > 5
|
local isPlayerCourageous = pl:hasTrait("Brave") or pl:hasTrait("Desensitized") or pl:getPerkLevel(Perks.Strength) > 5
|
||||||
local isTempHighEnough = stoveObj:getCurrentTemperature() >= 250
|
local isTempHighEnough = stoveObj:getCurrentTemperature() >= 250
|
||||||
local isLimbFree = not dcInst:getIsProstEquipped(limbName)
|
local isLimbFree = not dcInst:getIsProstEquipped(limbName)
|
||||||
|
|
||||||
110
42/media/lua/shared/TOC/BodyLocations.lua
Normal file
110
42/media/lua/shared/TOC/BodyLocations.lua
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
--Based on RabenRabo's bodylocation solution from their mod "Fantasy Bodyparts" and "Fantasy Legs" sub-mod.
|
||||||
|
--Modified by GanydeBielovzki with permission for batch use for the Frockin' Splendor franchise and spin-offs.
|
||||||
|
--To copy, further modify or otherwise use this code the original creator and the modifier must be credited.
|
||||||
|
|
||||||
|
local function copyBodyLocationProperties(oldGroup, oldLocID, newGroup)
|
||||||
|
for k = 0, oldGroup:size()-1 do
|
||||||
|
local otherLocID = oldGroup:getLocationByIndex(k):getId()
|
||||||
|
if oldGroup:isExclusive(oldLocID, otherLocID)
|
||||||
|
then
|
||||||
|
newGroup:setExclusive(oldLocID, otherLocID)
|
||||||
|
end
|
||||||
|
if oldGroup:isHideModel(oldLocID, otherLocID)
|
||||||
|
then
|
||||||
|
newGroup:setHideModel(oldLocID, otherLocID)
|
||||||
|
end
|
||||||
|
if oldGroup:isAltModel(oldLocID, otherLocID)
|
||||||
|
then
|
||||||
|
newGroup:setAltModel(oldLocID, otherLocID)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function addBodyLocationsAt(groupName, locationList)
|
||||||
|
local results = {}
|
||||||
|
|
||||||
|
-- get list (!!actually a view!!) of all groups and copy to array (BodyLocations.reset() will also clear the view)
|
||||||
|
local allGroupsList = BodyLocations.getAllGroups()
|
||||||
|
local allGroups = {}
|
||||||
|
for i = 0, allGroupsList:size()-1 do
|
||||||
|
allGroups[i + 1] = allGroupsList:get(i)
|
||||||
|
end
|
||||||
|
|
||||||
|
BodyLocations.reset()
|
||||||
|
|
||||||
|
-- recreate all groups/bodylocations and insert new bodylocations
|
||||||
|
for i = 1, #allGroups do
|
||||||
|
local oldGroup = allGroups[i]
|
||||||
|
local newGroup = BodyLocations.getGroup(oldGroup:getId())
|
||||||
|
|
||||||
|
-- FIRST: Process all original locations AND insert new ones at correct positions
|
||||||
|
for j = 0, oldGroup:size()-1 do
|
||||||
|
local oldLoc = oldGroup:getLocationByIndex(j)
|
||||||
|
local oldLocID = oldLoc:getId()
|
||||||
|
|
||||||
|
-- For each location definition, check if it should be inserted here
|
||||||
|
for _, locDef in ipairs(locationList) do
|
||||||
|
if oldGroup:getId() == groupName then
|
||||||
|
local newLocID = type(locDef.name) ~= "string" and locDef.name or
|
||||||
|
ItemBodyLocation.get(ResourceLocation.of(locDef.name))
|
||||||
|
|
||||||
|
local refLocID = type(locDef.reference) ~= "string" and locDef.reference or
|
||||||
|
ResourceLocation.of(locDef.reference)
|
||||||
|
|
||||||
|
local isTargetGroupAndLoc = refLocID == oldLocID
|
||||||
|
|
||||||
|
if isTargetGroupAndLoc and locDef.before then
|
||||||
|
results[locDef.name] = newGroup:getOrCreateLocation(newLocID)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add the original location
|
||||||
|
newGroup:getOrCreateLocation(oldLocID)
|
||||||
|
|
||||||
|
-- Check for "after" insertions
|
||||||
|
for _, locDef in ipairs(locationList) do
|
||||||
|
if oldGroup:getId() == groupName then
|
||||||
|
local newLocID = type(locDef.name) ~= "string" and locDef.name or
|
||||||
|
ItemBodyLocation.get(ResourceLocation.of(locDef.name))
|
||||||
|
|
||||||
|
local refLocID = type(locDef.reference) ~= "string" and locDef.reference or
|
||||||
|
ResourceLocation.of(locDef.reference)
|
||||||
|
|
||||||
|
local isTargetGroupAndLoc = refLocID == oldLocID
|
||||||
|
|
||||||
|
if isTargetGroupAndLoc and not locDef.before then
|
||||||
|
results[locDef.name] = newGroup:getOrCreateLocation(newLocID)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- SECOND: copy bodylocation properties from old groups to new groups
|
||||||
|
for j = 0, oldGroup:size()-1 do
|
||||||
|
local oldLocID = oldGroup:getLocationByIndex(j):getId()
|
||||||
|
newGroup:setMultiItem(oldLocID, oldGroup:isMultiItem(oldLocID))
|
||||||
|
copyBodyLocationProperties(oldGroup, oldLocID, newGroup)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return results
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local results = addBodyLocationsAt("Human", {
|
||||||
|
{name = "toc:TOC_Arm_L", reference = ItemBodyLocation.FULL_TOP, before = false},
|
||||||
|
{name = "toc:TOC_Arm_R", reference = ItemBodyLocation.FULL_TOP, before = false},
|
||||||
|
{name = "toc:TOC_ArmProst_L", reference = ItemBodyLocation.FULL_TOP, before = false},
|
||||||
|
{name = "toc:TOC_ArmProst_R", reference = ItemBodyLocation.FULL_TOP, before = false},
|
||||||
|
{name = "toc:TOC_ArmAccessory_L", reference = ItemBodyLocation.FULL_TOP, before = false},
|
||||||
|
{name = "toc:TOC_ArmAccessory_R", reference = ItemBodyLocation.FULL_TOP, before = false},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
results['toc:TOC_Arm_L']:setMultiItem(true)
|
||||||
|
results['toc:TOC_Arm_R']:setMultiItem(true)
|
||||||
|
results['toc:TOC_ArmProst_L']:setMultiItem(true)
|
||||||
|
results['toc:TOC_ArmProst_R']:setMultiItem(true)
|
||||||
|
results['toc:TOC_ArmAccessory_L']:setMultiItem(true)
|
||||||
|
results['toc:TOC_ArmAccessory_R']:setMultiItem(true)
|
||||||
1
42/media/lua/shared/TOC/Registries.lua
Normal file
1
42/media/lua/shared/TOC/Registries.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return TOC_Registries
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user