Compare commits
18 Commits
dev-fix-se
...
dev-bandag
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52de7e8b06 | ||
|
|
be4588fc43 | ||
|
|
4bafb3a15c | ||
|
|
fd056aea1e | ||
|
|
100abab2aa | ||
|
|
789b0635e0 | ||
|
|
d6d9ba7028 | ||
|
|
a182fb07e5 | ||
|
|
528a43247a | ||
|
|
b281ce7d12 | ||
|
|
9db3a1c944 | ||
|
|
a74e33134d | ||
|
|
1caf4a4b49 | ||
|
|
5f71cebdc0 | ||
|
|
4714bd7b82 | ||
|
|
4d20cc2559 | ||
|
|
5ec0ec1a9b | ||
|
|
89a28e846a |
2
.gitignore
vendored
@@ -0,0 +1,2 @@
|
||||
dev_stuff/gen_amp_textures/.venv
|
||||
dev_stuff/gen_amp_textures/output
|
||||
@@ -4,7 +4,7 @@ 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"))
|
||||
-- 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
|
||||
@@ -25,16 +25,16 @@ 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
|
||||
-- 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
|
||||
-- if isProst then
|
||||
-- group:setMultiItem("TOC_ArmProst", true)
|
||||
-- end
|
||||
|
||||
end
|
||||
53
42/media/scripts/TOC_recipes.txt
Normal file
@@ -0,0 +1,53 @@
|
||||
module TOC
|
||||
{
|
||||
imports
|
||||
{
|
||||
Base
|
||||
}
|
||||
/*************Craft Prosthetics*******************/
|
||||
craftRecipe Craft Prosthetic Arm
|
||||
{
|
||||
timedAction = BuildMetalStructureSmall,
|
||||
Time = 150,
|
||||
Tags = InHandCraft,
|
||||
category = Welding,
|
||||
NeedToBeLearn = false,
|
||||
SkillRequired = MetalWelding:4,
|
||||
xpAward = MetalWelding:50,
|
||||
inputs
|
||||
{
|
||||
item 4 [MetalPipe],
|
||||
item 2 [Plank],
|
||||
item 4 [Base.BlowTorch] flags[DontRecordInput],
|
||||
item 4 [Base.WeldingRods] flags[DontRecordInput],
|
||||
|
||||
}
|
||||
outputs
|
||||
{
|
||||
item 1 TOC.Prost_NormalArm_L,
|
||||
}
|
||||
}
|
||||
|
||||
craftRecipe Craft Prosthetic Hook
|
||||
{
|
||||
timedAction = BuildMetalStructureSmall,
|
||||
Time = 100,
|
||||
Tags = InHandCraft,
|
||||
category = Welding,
|
||||
NeedToBeLearn = false,
|
||||
SkillRequired = MetalWelding:2,
|
||||
xpAward = MetalWelding:30,
|
||||
inputs
|
||||
{
|
||||
item 2 [MetalPipe],
|
||||
item 1 [Plank],
|
||||
item 4 [Base.BlowTorch] flags[DontRecordInput],
|
||||
item 2 [Base.WeldingRods] flags[DontRecordInput],
|
||||
|
||||
}
|
||||
outputs
|
||||
{
|
||||
item 1 TOC.Prost_HookArm_L,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ description=You've been bitten. You have only two choices.
|
||||
id=TheOnlyCure
|
||||
icon=icon.png
|
||||
url=https://github.com/ZioPao/The-Only-Cure
|
||||
modversion=2.2
|
||||
modversion=2.2.2
|
||||
versionMin=42.6
|
||||
|
||||
loadModAfter=\FancyHandwork,\BrutalHandwork,\TwoWeaponsOnBackRework
|
||||
|
||||
@@ -7,9 +7,10 @@
|
||||
<m_AllowRandomHue>false</m_AllowRandomHue>
|
||||
<m_AllowRandomTint>false</m_AllowRandomTint>
|
||||
|
||||
<m_Masks>3</m_Masks>
|
||||
<m_Masks>4</m_Masks>
|
||||
<m_Masks>3</m_Masks>
|
||||
|
||||
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
|
||||
|
||||
|
||||
<!-- HUMAN -->
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
<m_Masks>5</m_Masks>
|
||||
<m_Masks>6</m_Masks>
|
||||
|
||||
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
|
||||
|
||||
<!-- HUMAN -->
|
||||
<textureChoices>Amputations\Human\Forearm\skin01_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin02_b</textureChoices>
|
||||
|
||||
@@ -7,18 +7,33 @@
|
||||
<m_AllowRandomHue>false</m_AllowRandomHue>
|
||||
<m_AllowRandomTint>false</m_AllowRandomTint>
|
||||
<m_Masks>4</m_Masks>
|
||||
<m_MasksFolder>none</m_MasksFolder>
|
||||
<!-- <m_MasksFolder>none</m_MasksFolder> -->
|
||||
|
||||
<!-- HUMAN -->
|
||||
<textureChoices>Amputations\Human\Forearm\skin01_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin02_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin03_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin04_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin05_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin01_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin02_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin03_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin04_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin05_b</textureChoices>
|
||||
|
||||
<textureChoices>Amputations\Human\Hand\skin01_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin02_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin03_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin04_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin05_hairy_b</textureChoices>
|
||||
|
||||
<!-- HUMAN AFTER CICATRIZATION -->
|
||||
|
||||
<textureChoices>Body\MaleBody01</textureChoices>
|
||||
<textureChoices>Body\MaleBody02</textureChoices>
|
||||
<textureChoices>Body\MaleBody03</textureChoices>
|
||||
<textureChoices>Body\MaleBody04</textureChoices>
|
||||
<textureChoices>Body\MaleBody05</textureChoices>
|
||||
|
||||
<textureChoices>Body\MaleBody01a</textureChoices>
|
||||
<textureChoices>Body\MaleBody02a</textureChoices>
|
||||
<textureChoices>Body\MaleBody03a</textureChoices>
|
||||
<textureChoices>Body\MaleBody04</textureChoices>
|
||||
<textureChoices>Body\MaleBody05a</textureChoices>
|
||||
|
||||
<textureChoices>Amputations\Human\Forearm\skin01_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin02_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin03_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin04_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin05_hairy_b</textureChoices>
|
||||
</clothingItem>
|
||||
@@ -6,18 +6,32 @@
|
||||
<m_AllowRandomHue>false</m_AllowRandomHue>
|
||||
<m_AllowRandomTint>false</m_AllowRandomTint>
|
||||
<m_Masks>6</m_Masks>
|
||||
<m_MasksFolder>none</m_MasksFolder>
|
||||
<!-- <m_MasksFolder>none</m_MasksFolder> -->
|
||||
|
||||
<!-- HUMAN -->
|
||||
<textureChoices>Amputations\Human\Forearm\skin01_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin02_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin03_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin04_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin05_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin01_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin02_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin03_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin04_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin05_b</textureChoices>
|
||||
|
||||
<textureChoices>Amputations\Human\Forearm\skin01_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin02_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin03_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin04_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Forearm\skin05_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin01_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin02_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin03_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin04_hairy_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Hand\skin05_hairy_b</textureChoices>
|
||||
|
||||
<!-- HUMAN AFTER CICATRIZATION -->
|
||||
|
||||
<textureChoices>Body\MaleBody01</textureChoices>
|
||||
<textureChoices>Body\MaleBody02</textureChoices>
|
||||
<textureChoices>Body\MaleBody03</textureChoices>
|
||||
<textureChoices>Body\MaleBody04</textureChoices>
|
||||
<textureChoices>Body\MaleBody05</textureChoices>
|
||||
|
||||
<textureChoices>Body\MaleBody01a</textureChoices>
|
||||
<textureChoices>Body\MaleBody02a</textureChoices>
|
||||
<textureChoices>Body\MaleBody03a</textureChoices>
|
||||
<textureChoices>Body\MaleBody04</textureChoices>
|
||||
<textureChoices>Body\MaleBody05a</textureChoices>
|
||||
</clothingItem>
|
||||
@@ -9,6 +9,8 @@
|
||||
<m_Masks>3</m_Masks>
|
||||
<m_Masks>4</m_Masks>
|
||||
|
||||
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
|
||||
|
||||
<!-- HUMAN -->
|
||||
<textureChoices>Amputations\Human\Upperarm\skin01_b</textureChoices>
|
||||
<textureChoices>Amputations\Human\Upperarm\skin02_b</textureChoices>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<m_AllowRandomTint>false</m_AllowRandomTint>
|
||||
<m_Masks>5</m_Masks>
|
||||
<m_Masks>6</m_Masks>
|
||||
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
|
||||
|
||||
<!-- HUMAN -->
|
||||
<textureChoices>Amputations\Human\Upperarm\skin01_b</textureChoices>
|
||||
|
||||
15
common/media/clothing/clothingItems/Bandage_LeftLowerArm.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<clothingItem>
|
||||
<m_MaleModel></m_MaleModel>
|
||||
<m_FemaleModel></m_FemaleModel>
|
||||
<m_GUID>c99332ec-18fa-4d37-9049-9e6f6f7468e5</m_GUID>
|
||||
<m_Static>false</m_Static>
|
||||
<m_AllowRandomHue>false</m_AllowRandomHue>
|
||||
<m_AllowRandomTint>false</m_AllowRandomTint>
|
||||
<m_AttachBone></m_AttachBone>
|
||||
<m_BaseTextures>bodydmg\malebody01_bandages_lower_left_arm</m_BaseTextures>
|
||||
<m_BaseTextures>Amputations\Bandages\MaleBody01_bandages_lower_left_arm</m_BaseTextures>
|
||||
<m_BaseTextures>Amputations\Bandages\test</m_BaseTextures>
|
||||
|
||||
|
||||
</clothingItem>
|
||||
@@ -17,7 +17,6 @@ ItemsController.Player = {}
|
||||
---@return number
|
||||
---@private
|
||||
function ItemsController.Player.GetAmputationTexturesIndex(playerObj, isCicatrized)
|
||||
-- FIX Broken
|
||||
local textureString = playerObj:getHumanVisual():getSkinTexture()
|
||||
local isHairy = textureString:sub(-1) == "a"
|
||||
|
||||
@@ -79,13 +78,16 @@ end
|
||||
---Deletes all the old amputation items, used for resets
|
||||
---@param playerObj IsoPlayer
|
||||
function ItemsController.Player.DeleteAllOldAmputationItems(playerObj)
|
||||
-- TODO Fix visual bug
|
||||
-- This part is a workaround for a pretty shitty implementation on the java side. Check ProsthesisHandler for more infos
|
||||
local group = BodyLocations.getGroup("Human")
|
||||
group:setMultiItem("TOC_Arm", false)
|
||||
group:setMultiItem("TOC_ArmProst", false)
|
||||
-- local group = BodyLocations.getGroup("Human")
|
||||
-- group:setMultiItem("TOC_Arm", false)
|
||||
-- group:setMultiItem("TOC_ArmProst", false)
|
||||
|
||||
for i = 1, #StaticData.LIMBS_STR do
|
||||
local limbName = StaticData.LIMBS_STR[i]
|
||||
|
||||
-- TODO Won't work with dedicated clothingItems for multi amps
|
||||
local clothItemName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. limbName
|
||||
local clothItem = playerObj:getInventory():FindAndReturn(clothItemName)
|
||||
---@cast clothItem InventoryItem
|
||||
@@ -94,8 +96,8 @@ function ItemsController.Player.DeleteAllOldAmputationItems(playerObj)
|
||||
-- Reset model just in case
|
||||
playerObj:resetModel()
|
||||
|
||||
group:setMultiItem("TOC_Arm", true)
|
||||
group:setMultiItem("TOC_ArmProst", true)
|
||||
-- group:setMultiItem("TOC_Arm", true)
|
||||
-- group:setMultiItem("TOC_ArmProst", true)
|
||||
end
|
||||
|
||||
---Spawns and equips the correct amputation item to the player.
|
||||
|
||||
@@ -36,11 +36,12 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- We need to override when the player changes key binds manually to be sure that TOC changes are re-applied
|
||||
local og_MainOptions_apply = MainOptions.apply
|
||||
function MainOptions:apply(closeAfter)
|
||||
og_MainOptions_apply(self, closeAfter)
|
||||
CachedDataHandler.OverrideBothHandsFeasibility()
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------
|
||||
|
||||
@@ -64,18 +64,18 @@ end
|
||||
---@param obj any self
|
||||
---@param wrappedFunc function
|
||||
function TourniquetController.WrapClothingAction(obj, wrappedFunc)
|
||||
local isTourniquet = TourniquetController.IsItemTourniquet(obj.item:getFullType())
|
||||
local group
|
||||
if isTourniquet then
|
||||
group = BodyLocations.getGroup("Human")
|
||||
group:setMultiItem(TourniquetController.bodyLoc, false)
|
||||
end
|
||||
-- local isTourniquet = TourniquetController.IsItemTourniquet(obj.item:getFullType())
|
||||
-- local group
|
||||
-- if isTourniquet then
|
||||
-- group = BodyLocations.getGroup("Human")
|
||||
-- group:setMultiItem(TourniquetController.bodyLoc, false)
|
||||
-- end
|
||||
|
||||
local ogValue = wrappedFunc(obj)
|
||||
|
||||
if isTourniquet then
|
||||
group:setMultiItem(TourniquetController.bodyLoc, true)
|
||||
end
|
||||
-- if isTourniquet then
|
||||
-- group:setMultiItem(TourniquetController.bodyLoc, true)
|
||||
-- end
|
||||
|
||||
return ogValue -- Needed for isValid
|
||||
end
|
||||
|
||||
@@ -23,7 +23,7 @@ end
|
||||
function CachedDataHandler.CalculateCacheableValues(username)
|
||||
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
||||
if getPlayer():getUsername() == username then
|
||||
CachedDataHandler.CalculateBothHandsFeasibility()
|
||||
CachedDataHandler.OverrideBothHandsFeasibility()
|
||||
end
|
||||
end
|
||||
|
||||
@@ -130,14 +130,13 @@ function CachedDataHandler.GetHandFeasibility(side)
|
||||
|
||||
-- FIX horrendous workaround, but with a forced init we run the caching too early and it breaks this, setting it to nil.
|
||||
if CachedDataHandler.handFeasibility[side] == nil then
|
||||
CachedDataHandler.CalculateBothHandsFeasibility()
|
||||
CachedDataHandler.OverrideBothHandsFeasibility()
|
||||
end
|
||||
|
||||
return CachedDataHandler.handFeasibility[side]
|
||||
end
|
||||
|
||||
|
||||
function CachedDataHandler.CalculateBothHandsFeasibility()
|
||||
function CachedDataHandler.OverrideBothHandsFeasibility()
|
||||
CachedDataHandler.CalculateHandFeasibility("Hand_L")
|
||||
CachedDataHandler.CalculateHandFeasibility("Hand_R")
|
||||
local interactStr = "Interact"
|
||||
@@ -151,13 +150,23 @@ function CachedDataHandler.CalculateBothHandsFeasibility()
|
||||
if not CachedDataHandler.GetBothHandsFeasibility() then
|
||||
TOC_DEBUG.print("Disabling interact key")
|
||||
TOC_DEBUG.print("Cached current key for interact: " .. tostring(CachedDataHandler.interactKey))
|
||||
getCore():addKeyBinding(interactStr, Keyboard.KEY_NONE)
|
||||
else
|
||||
TOC_DEBUG.print("Re-enabling interact key")
|
||||
TOC_DEBUG.print("Cached current key for interact: " .. tostring(CachedDataHandler.interactKey))
|
||||
|
||||
if StaticData.COMPAT_42 then
|
||||
getCore():addKeyBinding(interactStr, Keyboard.KEY_NONE, 0, false, false, false)
|
||||
else
|
||||
getCore():addKeyBinding(interactStr, Keyboard.KEY_NONE)
|
||||
|
||||
end
|
||||
else
|
||||
--TOC_DEBUG.print("Re-enabling interact key")
|
||||
--TOC_DEBUG.print("Cached current key for interact: " .. tostring(CachedDataHandler.interactKey))
|
||||
|
||||
if StaticData.COMPAT_42 then
|
||||
getCore():addKeyBinding(interactStr, CachedDataHandler.interactKey, 0, false, false, false)
|
||||
else
|
||||
getCore():addKeyBinding(interactStr, CachedDataHandler.interactKey)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function CachedDataHandler.GetBothHandsFeasibility()
|
||||
@@ -165,3 +174,4 @@ function CachedDataHandler.GetBothHandsFeasibility()
|
||||
end
|
||||
|
||||
return CachedDataHandler
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ local OverridenMethodsArchive = require("TOC/OverridenMethodsArchive")
|
||||
---@class ProsthesisHandler
|
||||
local ProsthesisHandler = {}
|
||||
|
||||
local bodyLocArmProst = StaticData.MOD_BODYLOCS_BASE_IND_STR.TOC_ArmProst
|
||||
local bodyLocLegProst = StaticData.MOD_BODYLOCS_BASE_IND_STR.TOC_LegProst
|
||||
local bodylocArmProstBaseline = "TOC_ArmProst"
|
||||
--local bodyLocLegProst = "TOC_LegProst"
|
||||
|
||||
---Check if the following item is a prosthesis or not
|
||||
---@param item InventoryItem?
|
||||
@@ -23,7 +23,7 @@ function ProsthesisHandler.CheckIfProst(item)
|
||||
|
||||
return false
|
||||
end
|
||||
return item:getBodyLocation():contains(bodyLocArmProst)
|
||||
return item:getBodyLocation():contains(bodylocArmProstBaseline)
|
||||
end
|
||||
|
||||
---Get the grouping for the prosthesis
|
||||
@@ -33,13 +33,10 @@ function ProsthesisHandler.GetGroup(item)
|
||||
local fullType = item:getFullType()
|
||||
local side = CommonMethods.GetSide(fullType)
|
||||
|
||||
|
||||
local bodyLocation = item:getBodyLocation()
|
||||
local position
|
||||
if bodyLocation == bodyLocArmProst then
|
||||
if bodyLocation:contains(bodylocArmProstBaseline) then
|
||||
position = "Top_"
|
||||
elseif bodyLocation == bodyLocLegProst then
|
||||
position = "Bottom_"
|
||||
else
|
||||
TOC_DEBUG.print("Something is wrong, no position in this item")
|
||||
position = nil
|
||||
@@ -86,7 +83,7 @@ function ProsthesisHandler.SearchAndSetupProsthesis(item, isEquipping)
|
||||
dcInst:apply()
|
||||
|
||||
-- Calculates hands feasibility once again
|
||||
CachedDataHandler.CalculateBothHandsFeasibility()
|
||||
CachedDataHandler.OverrideBothHandsFeasibility()
|
||||
return true
|
||||
end
|
||||
|
||||
@@ -167,15 +164,15 @@ function ISUnequipAction:perform()
|
||||
]]
|
||||
|
||||
local isProst = ProsthesisHandler.SearchAndSetupProsthesis(self.item, false)
|
||||
local group
|
||||
if isProst then
|
||||
group = BodyLocations.getGroup("Human")
|
||||
group:setMultiItem("TOC_ArmProst", false)
|
||||
end
|
||||
-- local group
|
||||
-- if isProst then
|
||||
-- group = BodyLocations.getGroup("Human")
|
||||
-- group:setMultiItem("TOC_ArmProst", false)
|
||||
-- end
|
||||
og_ISUnequipAction_perform(self)
|
||||
|
||||
if isProst then
|
||||
group:setMultiItem("TOC_ArmProst", true)
|
||||
-- group:setMultiItem("TOC_ArmProst", true)
|
||||
|
||||
-- we need to fetch the limbname associated to the prosthesis
|
||||
local side = CommonMethods.GetSide(self.item:getFullType())
|
||||
|
||||
@@ -6,7 +6,7 @@ require("TOC/Events")
|
||||
|
||||
---@class Main
|
||||
local Main = {
|
||||
_version = "2.1.6"
|
||||
_version = "2.2.2"
|
||||
}
|
||||
|
||||
function Main.Start()
|
||||
|
||||
@@ -143,26 +143,6 @@ function ISHealthPanel:render()
|
||||
end
|
||||
|
||||
|
||||
-- local og_ISHealthPanel_update = ISHealthPanel.update
|
||||
-- function ISHealthPanel:update()
|
||||
-- og_ISHealthPanel_update(self)
|
||||
-- -- TODO Listen for changes on other player side instead of looping this
|
||||
|
||||
|
||||
-- -- FIX Re-enable it, just for test
|
||||
-- if self.character then
|
||||
-- local locPlUsername = getPlayer():getUsername()
|
||||
-- local remPlUsername = self.character:getUsername()
|
||||
-- if locPlUsername ~= remPlUsername and self:isReallyVisible() then
|
||||
-- -- Request update for TOC DATA
|
||||
-- local key = CommandsData.GetKey(remPlUsername)
|
||||
-- --ModData.request(key)
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
|
||||
|
||||
|
||||
-- We need to override this to force the alpha to 1
|
||||
local og_ISCharacterInfoWindow_render = ISCharacterInfoWindow.prerender
|
||||
function ISCharacterInfoWindow:prerender()
|
||||
|
||||
@@ -33,7 +33,8 @@ function BaseHandler:checkItems()
|
||||
local containers = ISInventoryPaneContextMenu.getContainers(self:getDoctor())
|
||||
local done = {}
|
||||
local childContainers = {}
|
||||
for i=1,containers:size() do
|
||||
if containers ~= nil then
|
||||
for i=1, containers:size() do
|
||||
local container = containers:get(i-1)
|
||||
done[container] = true
|
||||
table.wipe(childContainers)
|
||||
@@ -45,6 +46,7 @@ function BaseHandler:checkItems()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BaseHandler:checkContainerItems(container, childContainers)
|
||||
@@ -101,7 +103,7 @@ function BaseHandler:getItemOfTag(items, type)
|
||||
end
|
||||
|
||||
function BaseHandler:getAllItemsOfType(items, type)
|
||||
local items = {}
|
||||
items = {}
|
||||
for _,item in ipairs(items) do
|
||||
if item:getFullType() == type then
|
||||
table.insert(items, item)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
require("TOC/Debug")
|
||||
require("NPCs/BodyLocations")
|
||||
local StaticData = require("TOC/StaticData")
|
||||
|
||||
local BodyLocationsAPI = {}
|
||||
local function customGetVal(obj, int) return getClassFieldVal(obj, getClassField(obj, int)) end
|
||||
@@ -8,6 +9,19 @@ local group = BodyLocations.getGroup("Human")
|
||||
---@type ArrayList
|
||||
local list = customGetVal(group, 1)
|
||||
|
||||
---@param bodyLoc string
|
||||
function BodyLocationsAPI.New(bodyLoc)
|
||||
local curItem
|
||||
if StaticData.COMPAT_42 then
|
||||
curItem = BodyLocation.new(group, bodyLoc) -- create new item
|
||||
group:getAllLocations():add(curItem) -- add to the list
|
||||
else
|
||||
curItem = group:getOrCreateLocation(bodyLoc) -- get current item - or create
|
||||
end
|
||||
return curItem
|
||||
end
|
||||
|
||||
-- TODO Not sure if this method actually works as intende with b42, but for our use case it's fine...
|
||||
---@param toRelocateOrCreate string
|
||||
---@param locationElement string
|
||||
---@param afterBoolean boolean
|
||||
@@ -19,7 +33,8 @@ function BodyLocationsAPI.MoveOrCreateBeforeOrAfter(toRelocateOrCreate, location
|
||||
if itemToMoveTo ~= nil then
|
||||
-- Check type of arg 1 == string - if not, error out.
|
||||
if type(toRelocateOrCreate) ~= "string" then error("Argument 1 is not of type string. Please re-check!", 2) end
|
||||
local curItem = group:getOrCreateLocation(toRelocateOrCreate) -- get current item - or create
|
||||
|
||||
local curItem = BodyLocationsAPI.New(toRelocateOrCreate)
|
||||
list:remove(curItem) -- remove from the list
|
||||
local index = group:indexOf(locationElement) -- get current index after removal of the location to move to
|
||||
if afterBoolean then index = index + 1 end -- if we want it after it, we increase the index to move to by one
|
||||
@@ -32,27 +47,33 @@ function BodyLocationsAPI.MoveOrCreateBeforeOrAfter(toRelocateOrCreate, location
|
||||
end
|
||||
end
|
||||
|
||||
function TestBodyLocations()
|
||||
local group = BodyLocations.getGroup("Human")
|
||||
local x = group:getAllLocations()
|
||||
|
||||
for i=0, x:size() -1 do
|
||||
|
||||
---@type BodyLocation
|
||||
local bl = x:get(i)
|
||||
-- function TestBodyLocations()
|
||||
-- local group = BodyLocations.getGroup("Human")
|
||||
-- local x = group:getAllLocations()
|
||||
|
||||
print(bl:getId())
|
||||
end
|
||||
-- for i=0, x:size() -1 do
|
||||
|
||||
end
|
||||
-- ---@type BodyLocation
|
||||
-- local bl = x:get(i)
|
||||
|
||||
-- print(bl:getId())
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- MultiItem causes a ton of issues... fucking hell
|
||||
|
||||
BodyLocationsAPI.MoveOrCreateBeforeOrAfter("TOC_Arm", "FullTop", true)
|
||||
group:setMultiItem("TOC_Arm", true)
|
||||
-- local curItem = BodyLocation.new(group, "TOC_Arm_L")
|
||||
-- group:getAllLocations():add(curItem)
|
||||
|
||||
BodyLocationsAPI.MoveOrCreateBeforeOrAfter("TOC_ArmProst", "TOC_Arm", true)
|
||||
group:setMultiItem("TOC_ArmProst", true)
|
||||
-- local curItem = BodyLocation.new(group, "TOC_Arm_R")
|
||||
-- group:getAllLocations():add(curItem)
|
||||
|
||||
BodyLocationsAPI.MoveOrCreateBeforeOrAfter("TOC_ArmAccessory", "TOC_ArmProst", true)
|
||||
group:setMultiItem("TOC_ArmAccessory", true)
|
||||
|
||||
BodyLocationsAPI.New("TOC_Arm_L")
|
||||
BodyLocationsAPI.New("TOC_Arm_R")
|
||||
BodyLocationsAPI.New("TOC_ArmProst_L")
|
||||
BodyLocationsAPI.New("TOC_ArmProst_R")
|
||||
BodyLocationsAPI.New("TOC_ArmAccessory_L")
|
||||
BodyLocationsAPI.New("TOC_ArmAccessory_R")
|
||||
@@ -13,10 +13,12 @@ end
|
||||
---Print debug
|
||||
---@param string string
|
||||
function TOC_DEBUG.print(string)
|
||||
--if isDebugEnabled() then
|
||||
if isDebugEnabled() then
|
||||
local runningFile = TOC_DEBUG.getRunningFile()
|
||||
print("[TOC]" .. "[" .. runningFile .. "] " .. tostring(string))
|
||||
--end
|
||||
else
|
||||
print(string)
|
||||
end
|
||||
end
|
||||
|
||||
---Horrendous but I don't really care about performance for this
|
||||
|
||||
@@ -49,11 +49,14 @@ StaticData.PARTS_STR = {
|
||||
"UpperArm"
|
||||
}
|
||||
|
||||
|
||||
-- TODO make it a bit more elegant
|
||||
StaticData.MOD_BODYLOCS_BASE_IND_STR = {
|
||||
TOC_ArmProst = "TOC_ArmProst",
|
||||
TOC_LegProst = "TOC_LegProst",
|
||||
TOC_Arm = "TOC_Arm",
|
||||
TOC_ArmProst_L = "TOC_ArmProst_L",
|
||||
TOC_ArmProst_R = "TOC_ArmProst_R",
|
||||
TOC_Arm_L = "TOC_Arm_L",
|
||||
TOC_Arm_R = "TOC_Arm_R",
|
||||
|
||||
--TOC_LegProst = "TOC_LegProst",
|
||||
}
|
||||
|
||||
-- No "MAX" here.
|
||||
@@ -149,6 +152,7 @@ StaticData.AMP_GROUPS_BASE_IND_STR = {
|
||||
Bottom = "Bottom"
|
||||
}
|
||||
|
||||
-- FIX This should be aligned with the body locs, no reason anymore to keep it separated
|
||||
StaticData.AMP_GROUPS_IND_STR = {}
|
||||
StaticData.AMP_GROUPS_STR = {}
|
||||
|
||||
|
||||
@@ -9,9 +9,10 @@ module TOC
|
||||
{
|
||||
Type = Clothing,
|
||||
DisplayCategory = Amputation,
|
||||
hidden = true,
|
||||
|
||||
ClothingItem = Amputation_Hand_R,
|
||||
BodyLocation = TOC_Arm,
|
||||
BodyLocation = TOC_Arm_R,
|
||||
|
||||
Weight = 0,
|
||||
CombatSpeedModifier = 0.9,
|
||||
@@ -27,9 +28,10 @@ module TOC
|
||||
{
|
||||
Type = Clothing,
|
||||
DisplayCategory = Amputation,
|
||||
hidden = true,
|
||||
|
||||
ClothingItem = Amputation_ForeArm_R,
|
||||
BodyLocation = TOC_Arm,
|
||||
BodyLocation = TOC_Arm_R,
|
||||
|
||||
Weight = 0,
|
||||
CombatSpeedModifier = 0.8,
|
||||
@@ -44,9 +46,10 @@ module TOC
|
||||
{
|
||||
Type = Clothing,
|
||||
DisplayCategory = Amputation,
|
||||
hidden = true,
|
||||
|
||||
ClothingItem = Amputation_UpperArm_R,
|
||||
BodyLocation = TOC_Arm,
|
||||
BodyLocation = TOC_Arm_R,
|
||||
BloodLocation = UpperArms;UpperBody,
|
||||
Weight = 0,
|
||||
CombatSpeedModifier = 0.7,
|
||||
@@ -60,9 +63,10 @@ module TOC
|
||||
{
|
||||
Type = Clothing,
|
||||
DisplayCategory = Amputation,
|
||||
hidden = true,
|
||||
|
||||
ClothingItem = Amputation_Hand_L,
|
||||
BodyLocation = TOC_Arm,
|
||||
BodyLocation = TOC_Arm_L,
|
||||
|
||||
Weight = 0,
|
||||
CombatSpeedModifier = 0.9,
|
||||
@@ -78,9 +82,10 @@ module TOC
|
||||
{
|
||||
Type = Clothing,
|
||||
DisplayCategory = Amputation,
|
||||
hidden = true,
|
||||
|
||||
ClothingItem = Amputation_ForeArm_L,
|
||||
BodyLocation = TOC_Arm,
|
||||
BodyLocation = TOC_Arm_L,
|
||||
|
||||
Weight = 0,
|
||||
CombatSpeedModifier = 0.8,
|
||||
@@ -96,9 +101,10 @@ module TOC
|
||||
{
|
||||
Type = Clothing,
|
||||
DisplayCategory = Amputation,
|
||||
hidden = true,
|
||||
|
||||
ClothingItem = Amputation_UpperArm_L,
|
||||
BodyLocation = TOC_Arm,
|
||||
BodyLocation = TOC_Arm_L,
|
||||
|
||||
Weight = 0,
|
||||
CombatSpeedModifier = 0.7,
|
||||
|
||||
@@ -16,7 +16,7 @@ module TOC
|
||||
ClothingItemExtra = Prost_HookArm_R,
|
||||
ClothingItemExtraOption = InstallProstRight,
|
||||
clothingExtraSubmenu = InstallProstLeft,
|
||||
BodyLocation = TOC_ArmProst,
|
||||
BodyLocation = TOC_ArmProst_L,
|
||||
Weight = 1.5,
|
||||
CombatSpeedModifier = 1.05,
|
||||
BloodLocation = UpperArms;UpperBody,
|
||||
@@ -38,7 +38,7 @@ module TOC
|
||||
ClothingItemExtra = Prost_HookArm_L,
|
||||
ClothingItemExtraOption = InstallProstLeft,
|
||||
clothingExtraSubmenu = InstallProstRight,
|
||||
BodyLocation = TOC_ArmProst,
|
||||
BodyLocation = TOC_ArmProst_R,
|
||||
Weight = 1.5,
|
||||
CombatSpeedModifier = 1.05,
|
||||
BloodLocation = UpperArms;UpperBody,
|
||||
@@ -60,7 +60,7 @@ module TOC
|
||||
ClothingItemExtra = Prost_NormalArm_R,
|
||||
ClothingItemExtraOption = InstallProstRight,
|
||||
clothingExtraSubmenu = InstallProstLeft,
|
||||
BodyLocation = TOC_ArmProst,
|
||||
BodyLocation = TOC_ArmProst_L,
|
||||
Weight = 2,
|
||||
CombatSpeedModifier = 1.1,
|
||||
BloodLocation = UpperArms;UpperBody,
|
||||
@@ -82,7 +82,7 @@ module TOC
|
||||
ClothingItemExtra = Prost_NormalArm_L,
|
||||
ClothingItemExtraOption = InstallProstLeft,
|
||||
clothingExtraSubmenu = InstallProstRight,
|
||||
BodyLocation = TOC_ArmProst,
|
||||
BodyLocation = TOC_ArmProst_R,
|
||||
Weight = 2,
|
||||
CombatSpeedModifier = 1.1,
|
||||
BloodLocation = UpperArms;UpperBody,
|
||||
|
||||
@@ -15,7 +15,7 @@ module TOC
|
||||
ClothingItemExtra = Surg_Arm_Tourniquet_R,
|
||||
ClothingItemExtraOption = PutTourniquetArmRight,
|
||||
clothingExtraSubmenu = PutTourniquetArmLeft,
|
||||
BodyLocation = TOC_ArmAccessory,
|
||||
BodyLocation = TOC_ArmAccessory_L,
|
||||
BloodLocation = UpperArms;UpperBody,
|
||||
|
||||
Weight = 0.25,
|
||||
@@ -35,7 +35,7 @@ module TOC
|
||||
ClothingItemExtra = Surg_Arm_Tourniquet_L,
|
||||
ClothingItemExtraOption = PutTourniquetArmLeft,
|
||||
clothingExtraSubmenu = PutTourniquetArmRight,
|
||||
BodyLocation = TOC_ArmAccessory,
|
||||
BodyLocation = TOC_ArmAccessory_R,
|
||||
BloodLocation = UpperArms;UpperBody,
|
||||
|
||||
Weight = 0.25,
|
||||
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
BIN
common/media/textures/Amputations/Bandages/test.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 55 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin01_b.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin01_hairy_b.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin02_b.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin02_hairy_b.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin03_b.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin03_hairy_b.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin04_b.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin04_hairy_b.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin05_b.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
common/media/textures/Amputations/Human/Hand/skin05_hairy_b.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 55 KiB |
BIN
common/media/textures/Amputations/Masks/Belt.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
common/media/textures/Amputations/Masks/Chest.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |