4 Commits

Author SHA1 Message Date
ZioPao
839ce002a3 More tests 2025-10-04 15:05:33 +02:00
ZioPao
49eee7ce84 fix: 42.12 new bodyloc 2025-10-04 04:23:12 +02:00
ZioPao
1c72647d40 fix: fix for cheat prevention with both hands feasibility to false 2025-10-04 04:22:26 +02:00
ZioPao
a9a7063287 fix: override for both hands interaction for b42 and cheat prevention 2025-10-04 04:22:04 +02:00
87 changed files with 262 additions and 285 deletions

View File

@@ -25,16 +25,16 @@ local og_ISUnequipAction_complete = ISUnequipAction.complete
function 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 -- 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. -- matter for performance but it's really ugly.
-- local isProst = ProsthesisHandler.SearchAndSetupProsthesis(self.item, false) local isProst = ProsthesisHandler.SearchAndSetupProsthesis(self.item, false)
-- local group local group
-- if isProst then if isProst then
-- group = BodyLocations.getGroup("Human") group = BodyLocations.getGroup("Human")
-- group:setMultiItem("TOC_ArmProst", false) group:setMultiItem("TOC_ArmProst", false)
-- end end
og_ISUnequipAction_complete(self) og_ISUnequipAction_complete(self)
-- if isProst then if isProst then
-- group:setMultiItem("TOC_ArmProst", true) group:setMultiItem("TOC_ArmProst", true)
-- end end
end end

View File

@@ -1,53 +0,0 @@
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,
}
}
}

View File

@@ -4,7 +4,7 @@ description=You've been bitten. You have only two choices.
id=TheOnlyCure id=TheOnlyCure
icon=icon.png icon=icon.png
url=https://github.com/ZioPao/The-Only-Cure url=https://github.com/ZioPao/The-Only-Cure
modversion=2.2.2 modversion=2.2
versionMin=42.6 versionMin=42.6
loadModAfter=\FancyHandwork,\BrutalHandwork,\TwoWeaponsOnBackRework loadModAfter=\FancyHandwork,\BrutalHandwork,\TwoWeaponsOnBackRework

View File

@@ -1,16 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<clothingItem> <clothingItem>
<m_MaleModel>Amputation\Amputation_Left_LowerArm_Male</m_MaleModel> <m_MaleModel>Amputation\Amputation_FA_LR</m_MaleModel>
<m_FemaleModel>Amputation\Amputation_Left_LowerArm_Female</m_FemaleModel> <m_FemaleModel>Amputation\Amputation_Left_LowerArm_Female</m_FemaleModel>
<m_GUID>d3816fe0-48e1-4cf5-a8e4-48c72595edb4</m_GUID> <m_GUID>d3816fe0-48e1-4cf5-a8e4-48c72595edb4</m_GUID>
<m_Static>false</m_Static> <m_Static>false</m_Static>
<m_AllowRandomHue>false</m_AllowRandomHue> <m_AllowRandomHue>false</m_AllowRandomHue>
<m_AllowRandomTint>false</m_AllowRandomTint> <m_AllowRandomTint>false</m_AllowRandomTint>
<m_Masks>4</m_Masks> <m_UnderlayMasksFolder>media/textures/Amputations/Masks/TestDouble</m_UnderlayMasksFolder>
<m_Masks>3</m_Masks>
<m_Masks>4</m_Masks>
<m_Masks>6</m_Masks>
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
<!-- HUMAN --> <!-- HUMAN -->

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<clothingItem>
<m_MaleModel>Amputation\Amputation_FA_LR</m_MaleModel>
<m_FemaleModel>Amputation\Amputation_FA_LR</m_FemaleModel>
<m_GUID>8e5bc1b4-d79b-4a17-b86b-71dab6ace816</m_GUID>
<m_Static>false</m_Static>
<m_AllowRandomHue>false</m_AllowRandomHue>
<m_AllowRandomTint>false</m_AllowRandomTint>
<m_Masks>4</m_Masks>
<m_Masks>6</m_Masks>
<!-- 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\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>
<!-- 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>
<!-- ZOMBIE -->
<textureChoices>Amputations\Zombie\Forearm\z_skin01_l1</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin01_l2</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin01_l3</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin02_l1</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin02_l2</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin02_l3</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin03_l1</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin03_l2</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin03_l3</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin04_l1</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin04_l2</textureChoices>
<textureChoices>Amputations\Zombie\Forearm\z_skin04_l3</textureChoices>
</clothingItem>

View File

@@ -10,8 +10,6 @@
<m_Masks>5</m_Masks> <m_Masks>5</m_Masks>
<m_Masks>6</m_Masks> <m_Masks>6</m_Masks>
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
<!-- HUMAN --> <!-- HUMAN -->
<textureChoices>Amputations\Human\Forearm\skin01_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin01_b</textureChoices>
<textureChoices>Amputations\Human\Forearm\skin02_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin02_b</textureChoices>

View File

@@ -7,33 +7,18 @@
<m_AllowRandomHue>false</m_AllowRandomHue> <m_AllowRandomHue>false</m_AllowRandomHue>
<m_AllowRandomTint>false</m_AllowRandomTint> <m_AllowRandomTint>false</m_AllowRandomTint>
<m_Masks>4</m_Masks> <m_Masks>4</m_Masks>
<!-- <m_MasksFolder>none</m_MasksFolder> --> <m_MasksFolder>none</m_MasksFolder>
<!-- HUMAN --> <!-- HUMAN -->
<textureChoices>Amputations\Human\Hand\skin01_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin01_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin02_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin02_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin03_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin03_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin04_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin04_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin05_b</textureChoices> <textureChoices>Amputations\Human\Forearm\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> </clothingItem>

View File

@@ -6,32 +6,18 @@
<m_AllowRandomHue>false</m_AllowRandomHue> <m_AllowRandomHue>false</m_AllowRandomHue>
<m_AllowRandomTint>false</m_AllowRandomTint> <m_AllowRandomTint>false</m_AllowRandomTint>
<m_Masks>6</m_Masks> <m_Masks>6</m_Masks>
<!-- <m_MasksFolder>none</m_MasksFolder> --> <m_MasksFolder>none</m_MasksFolder>
<!-- HUMAN --> <!-- HUMAN -->
<textureChoices>Amputations\Human\Hand\skin01_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin01_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin02_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin02_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin03_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin03_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin04_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin04_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin05_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin05_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin01_hairy_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin01_hairy_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin02_hairy_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin02_hairy_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin03_hairy_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin03_hairy_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin04_hairy_b</textureChoices> <textureChoices>Amputations\Human\Forearm\skin04_hairy_b</textureChoices>
<textureChoices>Amputations\Human\Hand\skin05_hairy_b</textureChoices> <textureChoices>Amputations\Human\Forearm\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> </clothingItem>

View File

@@ -9,8 +9,6 @@
<m_Masks>3</m_Masks> <m_Masks>3</m_Masks>
<m_Masks>4</m_Masks> <m_Masks>4</m_Masks>
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
<!-- HUMAN --> <!-- HUMAN -->
<textureChoices>Amputations\Human\Upperarm\skin01_b</textureChoices> <textureChoices>Amputations\Human\Upperarm\skin01_b</textureChoices>
<textureChoices>Amputations\Human\Upperarm\skin02_b</textureChoices> <textureChoices>Amputations\Human\Upperarm\skin02_b</textureChoices>

View File

@@ -8,7 +8,6 @@
<m_AllowRandomTint>false</m_AllowRandomTint> <m_AllowRandomTint>false</m_AllowRandomTint>
<m_Masks>5</m_Masks> <m_Masks>5</m_Masks>
<m_Masks>6</m_Masks> <m_Masks>6</m_Masks>
<!-- <m_UnderlayMasksFolder>media/textures/Amputations/Masks</m_UnderlayMasksFolder> -->
<!-- HUMAN --> <!-- HUMAN -->
<textureChoices>Amputations\Human\Upperarm\skin01_b</textureChoices> <textureChoices>Amputations\Human\Upperarm\skin01_b</textureChoices>

View File

@@ -57,5 +57,11 @@
<guid>9a5fe063-63c7-4e6f-81ca-ee77c6678e0d</guid> <guid>9a5fe063-63c7-4e6f-81ca-ee77c6678e0d</guid>
</files> </files>
<!-- TEST -->
<files>
<path>media/clothing/clothingItems/Amputation_ForeArm_LR.xml</path>
<guid>8e5bc1b4-d79b-4a17-b86b-71dab6ace816</guid>
</files>
</fileGuidTable> </fileGuidTable>

View File

@@ -17,6 +17,7 @@ ItemsController.Player = {}
---@return number ---@return number
---@private ---@private
function ItemsController.Player.GetAmputationTexturesIndex(playerObj, isCicatrized) function ItemsController.Player.GetAmputationTexturesIndex(playerObj, isCicatrized)
-- todo
local textureString = playerObj:getHumanVisual():getSkinTexture() local textureString = playerObj:getHumanVisual():getSkinTexture()
local isHairy = textureString:sub(-1) == "a" local isHairy = textureString:sub(-1) == "a"

View File

@@ -64,18 +64,18 @@ end
---@param obj any self ---@param obj any self
---@param wrappedFunc function ---@param wrappedFunc function
function TourniquetController.WrapClothingAction(obj, wrappedFunc) function TourniquetController.WrapClothingAction(obj, wrappedFunc)
-- local isTourniquet = TourniquetController.IsItemTourniquet(obj.item:getFullType()) local isTourniquet = TourniquetController.IsItemTourniquet(obj.item:getFullType())
-- local group local group
-- if isTourniquet then if isTourniquet then
-- group = BodyLocations.getGroup("Human") group = BodyLocations.getGroup("Human")
-- group:setMultiItem(TourniquetController.bodyLoc, false) group:setMultiItem(TourniquetController.bodyLoc, false)
-- end end
local ogValue = wrappedFunc(obj) local ogValue = wrappedFunc(obj)
-- if isTourniquet then if isTourniquet then
-- group:setMultiItem(TourniquetController.bodyLoc, true) group:setMultiItem(TourniquetController.bodyLoc, true)
-- end end
return ogValue -- Needed for isValid return ogValue -- Needed for isValid
end end

View File

@@ -9,8 +9,8 @@ local OverridenMethodsArchive = require("TOC/OverridenMethodsArchive")
---@class ProsthesisHandler ---@class ProsthesisHandler
local ProsthesisHandler = {} local ProsthesisHandler = {}
local bodylocArmProstBaseline = "TOC_ArmProst" local bodyLocArmProst = StaticData.MOD_BODYLOCS_BASE_IND_STR.TOC_ArmProst
--local bodyLocLegProst = "TOC_LegProst" local bodyLocLegProst = StaticData.MOD_BODYLOCS_BASE_IND_STR.TOC_LegProst
---Check if the following item is a prosthesis or not ---Check if the following item is a prosthesis or not
---@param item InventoryItem? ---@param item InventoryItem?
@@ -23,7 +23,7 @@ function ProsthesisHandler.CheckIfProst(item)
return false return false
end end
return item:getBodyLocation():contains(bodylocArmProstBaseline) return item:getBodyLocation():contains(bodyLocArmProst)
end end
---Get the grouping for the prosthesis ---Get the grouping for the prosthesis
@@ -33,10 +33,13 @@ function ProsthesisHandler.GetGroup(item)
local fullType = item:getFullType() local fullType = item:getFullType()
local side = CommonMethods.GetSide(fullType) local side = CommonMethods.GetSide(fullType)
local bodyLocation = item:getBodyLocation() local bodyLocation = item:getBodyLocation()
local position local position
if bodyLocation:contains(bodylocArmProstBaseline) then if bodyLocation == bodyLocArmProst then
position = "Top_" position = "Top_"
elseif bodyLocation == bodyLocLegProst then
position = "Bottom_"
else else
TOC_DEBUG.print("Something is wrong, no position in this item") TOC_DEBUG.print("Something is wrong, no position in this item")
position = nil position = nil
@@ -164,15 +167,15 @@ function ISUnequipAction:perform()
]] ]]
local isProst = ProsthesisHandler.SearchAndSetupProsthesis(self.item, false) local isProst = ProsthesisHandler.SearchAndSetupProsthesis(self.item, false)
-- local group local group
-- if isProst then if isProst then
-- group = BodyLocations.getGroup("Human") group = BodyLocations.getGroup("Human")
-- group:setMultiItem("TOC_ArmProst", false) group:setMultiItem("TOC_ArmProst", false)
-- end end
og_ISUnequipAction_perform(self) og_ISUnequipAction_perform(self)
if isProst then if isProst then
-- group:setMultiItem("TOC_ArmProst", true) group:setMultiItem("TOC_ArmProst", true)
-- we need to fetch the limbname associated to the prosthesis -- we need to fetch the limbname associated to the prosthesis
local side = CommonMethods.GetSide(self.item:getFullType()) local side = CommonMethods.GetSide(self.item:getFullType())

View File

@@ -6,7 +6,7 @@ require("TOC/Events")
---@class Main ---@class Main
local Main = { local Main = {
_version = "2.2.2" _version = "2.1.6"
} }
function Main.Start() function Main.Start()

View File

@@ -143,6 +143,26 @@ function ISHealthPanel:render()
end 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 -- We need to override this to force the alpha to 1
local og_ISCharacterInfoWindow_render = ISCharacterInfoWindow.prerender local og_ISCharacterInfoWindow_render = ISCharacterInfoWindow.prerender
function ISCharacterInfoWindow:prerender() function ISCharacterInfoWindow:prerender()

View File

@@ -33,17 +33,15 @@ function BaseHandler:checkItems()
local containers = ISInventoryPaneContextMenu.getContainers(self:getDoctor()) local containers = ISInventoryPaneContextMenu.getContainers(self:getDoctor())
local done = {} local done = {}
local childContainers = {} local childContainers = {}
if containers ~= nil then for i=1,containers:size() do
for i=1, containers:size() do local container = containers:get(i-1)
local container = containers:get(i-1) done[container] = true
done[container] = true table.wipe(childContainers)
table.wipe(childContainers) self:checkContainerItems(container, childContainers)
self:checkContainerItems(container, childContainers) for _,container2 in ipairs(childContainers) do
for _,container2 in ipairs(childContainers) do if not done[container2] then
if not done[container2] then done[container2] = true
done[container2] = true self:checkContainerItems(container2, nil)
self:checkContainerItems(container2, nil)
end
end end
end end
end end
@@ -103,7 +101,7 @@ function BaseHandler:getItemOfTag(items, type)
end end
function BaseHandler:getAllItemsOfType(items, type) function BaseHandler:getAllItemsOfType(items, type)
items = {} local items = {}
for _,item in ipairs(items) do for _,item in ipairs(items) do
if item:getFullType() == type then if item:getFullType() == type then
table.insert(items, item) table.insert(items, item)

View File

@@ -9,19 +9,8 @@ local group = BodyLocations.getGroup("Human")
---@type ArrayList ---@type ArrayList
local list = customGetVal(group, 1) 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... -- TODO Not sure if this method actually works as intende with b42, but for our use case it's fine...
---@param toRelocateOrCreate string ---@param toRelocateOrCreate string
---@param locationElement string ---@param locationElement string
---@param afterBoolean boolean ---@param afterBoolean boolean
@@ -34,7 +23,14 @@ function BodyLocationsAPI.MoveOrCreateBeforeOrAfter(toRelocateOrCreate, location
-- Check type of arg 1 == string - if not, error out. -- 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 if type(toRelocateOrCreate) ~= "string" then error("Argument 1 is not of type string. Please re-check!", 2) end
local curItem = BodyLocationsAPI.New(toRelocateOrCreate) local curItem
if StaticData.COMPAT_42 then
curItem = BodyLocation.new(group, toRelocateOrCreate) -- create new item
group:getAllLocations():add(curItem) -- add to the list
else
curItem = group:getOrCreateLocation(toRelocateOrCreate) -- get current item - or create
end
list:remove(curItem) -- remove from the list list:remove(curItem) -- remove from the list
local index = group:indexOf(locationElement) -- get current index after removal of the location to move to 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 if afterBoolean then index = index + 1 end -- if we want it after it, we increase the index to move to by one
@@ -47,33 +43,29 @@ function BodyLocationsAPI.MoveOrCreateBeforeOrAfter(toRelocateOrCreate, location
end end
end end
function TestBodyLocations()
local group = BodyLocations.getGroup("Human")
local x = group:getAllLocations()
for i=0, x:size() -1 do
-- function TestBodyLocations() ---@type BodyLocation
-- local group = BodyLocations.getGroup("Human") local bl = x:get(i)
-- local x = group:getAllLocations()
-- for i=0, x:size() -1 do print(bl:getId())
end
-- ---@type BodyLocation end
-- local bl = x:get(i)
-- print(bl:getId())
-- end
-- end
-- MultiItem causes a ton of issues... fucking hell -- MultiItem causes a ton of issues... fucking hell
-- local curItem = BodyLocation.new(group, "TOC_Arm_L") -- BodyLocationsAPI.MoveOrCreateBeforeOrAfter("TOC_Arm", "Shirt", true)
-- group:getAllLocations():add(curItem) -- group:setMultiItem("TOC_Arm", true)
-- local curItem = BodyLocation.new(group, "TOC_Arm_R") local curItem = BodyLocation.new(group, "TOC_Arm") -- create new item
-- group:getAllLocations():add(curItem) group:getAllLocations():add(curItem) -- add to the list
BodyLocationsAPI.MoveOrCreateBeforeOrAfter("TOC_ArmProst", "TOC_Arm", true)
group:setMultiItem("TOC_ArmProst", true)
BodyLocationsAPI.New("TOC_Arm_L") BodyLocationsAPI.MoveOrCreateBeforeOrAfter("TOC_ArmAccessory", "TOC_ArmProst", true)
BodyLocationsAPI.New("TOC_Arm_R") group:setMultiItem("TOC_ArmAccessory", true)
BodyLocationsAPI.New("TOC_ArmProst_L")
BodyLocationsAPI.New("TOC_ArmProst_R")
BodyLocationsAPI.New("TOC_ArmAccessory_L")
BodyLocationsAPI.New("TOC_ArmAccessory_R")

View File

@@ -13,12 +13,10 @@ end
---Print debug ---Print debug
---@param string string ---@param string string
function TOC_DEBUG.print(string) function TOC_DEBUG.print(string)
if isDebugEnabled() then --if isDebugEnabled() then
local runningFile = TOC_DEBUG.getRunningFile() local runningFile = TOC_DEBUG.getRunningFile()
print("[TOC]" .. "[" .. runningFile .. "] " .. tostring(string)) print("[TOC]" .. "[" .. runningFile .. "] " .. tostring(string))
else --end
print(string)
end
end end
---Horrendous but I don't really care about performance for this ---Horrendous but I don't really care about performance for this

View File

@@ -49,14 +49,11 @@ StaticData.PARTS_STR = {
"UpperArm" "UpperArm"
} }
-- TODO make it a bit more elegant
StaticData.MOD_BODYLOCS_BASE_IND_STR = {
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", StaticData.MOD_BODYLOCS_BASE_IND_STR = {
TOC_ArmProst = "TOC_ArmProst",
TOC_LegProst = "TOC_LegProst",
TOC_Arm = "TOC_Arm",
} }
-- No "MAX" here. -- No "MAX" here.
@@ -152,7 +149,6 @@ StaticData.AMP_GROUPS_BASE_IND_STR = {
Bottom = "Bottom" 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_IND_STR = {}
StaticData.AMP_GROUPS_STR = {} StaticData.AMP_GROUPS_STR = {}

Binary file not shown.

View File

@@ -9,10 +9,9 @@ module TOC
{ {
Type = Clothing, Type = Clothing,
DisplayCategory = Amputation, DisplayCategory = Amputation,
hidden = true,
ClothingItem = Amputation_Hand_R, ClothingItem = Amputation_Hand_R,
BodyLocation = TOC_Arm_R, BodyLocation = TOC_Arm,
Weight = 0, Weight = 0,
CombatSpeedModifier = 0.9, CombatSpeedModifier = 0.9,
@@ -28,10 +27,9 @@ module TOC
{ {
Type = Clothing, Type = Clothing,
DisplayCategory = Amputation, DisplayCategory = Amputation,
hidden = true,
ClothingItem = Amputation_ForeArm_R, ClothingItem = Amputation_ForeArm_R,
BodyLocation = TOC_Arm_R, BodyLocation = TOC_Arm,
Weight = 0, Weight = 0,
CombatSpeedModifier = 0.8, CombatSpeedModifier = 0.8,
@@ -46,10 +44,9 @@ module TOC
{ {
Type = Clothing, Type = Clothing,
DisplayCategory = Amputation, DisplayCategory = Amputation,
hidden = true,
ClothingItem = Amputation_UpperArm_R, ClothingItem = Amputation_UpperArm_R,
BodyLocation = TOC_Arm_R, BodyLocation = TOC_Arm,
BloodLocation = UpperArms;UpperBody, BloodLocation = UpperArms;UpperBody,
Weight = 0, Weight = 0,
CombatSpeedModifier = 0.7, CombatSpeedModifier = 0.7,
@@ -63,10 +60,9 @@ module TOC
{ {
Type = Clothing, Type = Clothing,
DisplayCategory = Amputation, DisplayCategory = Amputation,
hidden = true,
ClothingItem = Amputation_Hand_L, ClothingItem = Amputation_Hand_L,
BodyLocation = TOC_Arm_L, BodyLocation = TOC_Arm,
Weight = 0, Weight = 0,
CombatSpeedModifier = 0.9, CombatSpeedModifier = 0.9,
@@ -82,10 +78,9 @@ module TOC
{ {
Type = Clothing, Type = Clothing,
DisplayCategory = Amputation, DisplayCategory = Amputation,
hidden = true,
ClothingItem = Amputation_ForeArm_L, ClothingItem = Amputation_ForeArm_L,
BodyLocation = TOC_Arm_L, BodyLocation = TOC_Arm,
Weight = 0, Weight = 0,
CombatSpeedModifier = 0.8, CombatSpeedModifier = 0.8,
@@ -101,10 +96,9 @@ module TOC
{ {
Type = Clothing, Type = Clothing,
DisplayCategory = Amputation, DisplayCategory = Amputation,
hidden = true,
ClothingItem = Amputation_UpperArm_L, ClothingItem = Amputation_UpperArm_L,
BodyLocation = TOC_Arm_L, BodyLocation = TOC_Arm,
Weight = 0, Weight = 0,
CombatSpeedModifier = 0.7, CombatSpeedModifier = 0.7,
@@ -115,4 +109,24 @@ module TOC
CanHaveHoles = false, CanHaveHoles = false,
} }
item Amputation_FA_LR
{
Type = Clothing,
DisplayCategory = Amputation,
ClothingItem = Amputation_ForeArm_LR,
BodyLocation = TOC_Arm,
Weight = 0,
CombatSpeedModifier = 0.7,
BloodLocation = UpperArms;UpperBody,
Insulation = 1.0,
WindResistance = 1.0,
WaterResistance = 1.0,
CanHaveHoles = false,
}
} }

View File

@@ -16,7 +16,7 @@ module TOC
ClothingItemExtra = Prost_HookArm_R, ClothingItemExtra = Prost_HookArm_R,
ClothingItemExtraOption = InstallProstRight, ClothingItemExtraOption = InstallProstRight,
clothingExtraSubmenu = InstallProstLeft, clothingExtraSubmenu = InstallProstLeft,
BodyLocation = TOC_ArmProst_L, BodyLocation = TOC_ArmProst,
Weight = 1.5, Weight = 1.5,
CombatSpeedModifier = 1.05, CombatSpeedModifier = 1.05,
BloodLocation = UpperArms;UpperBody, BloodLocation = UpperArms;UpperBody,
@@ -38,7 +38,7 @@ module TOC
ClothingItemExtra = Prost_HookArm_L, ClothingItemExtra = Prost_HookArm_L,
ClothingItemExtraOption = InstallProstLeft, ClothingItemExtraOption = InstallProstLeft,
clothingExtraSubmenu = InstallProstRight, clothingExtraSubmenu = InstallProstRight,
BodyLocation = TOC_ArmProst_R, BodyLocation = TOC_ArmProst,
Weight = 1.5, Weight = 1.5,
CombatSpeedModifier = 1.05, CombatSpeedModifier = 1.05,
BloodLocation = UpperArms;UpperBody, BloodLocation = UpperArms;UpperBody,
@@ -60,7 +60,7 @@ module TOC
ClothingItemExtra = Prost_NormalArm_R, ClothingItemExtra = Prost_NormalArm_R,
ClothingItemExtraOption = InstallProstRight, ClothingItemExtraOption = InstallProstRight,
clothingExtraSubmenu = InstallProstLeft, clothingExtraSubmenu = InstallProstLeft,
BodyLocation = TOC_ArmProst_L, BodyLocation = TOC_ArmProst,
Weight = 2, Weight = 2,
CombatSpeedModifier = 1.1, CombatSpeedModifier = 1.1,
BloodLocation = UpperArms;UpperBody, BloodLocation = UpperArms;UpperBody,
@@ -82,7 +82,7 @@ module TOC
ClothingItemExtra = Prost_NormalArm_L, ClothingItemExtra = Prost_NormalArm_L,
ClothingItemExtraOption = InstallProstLeft, ClothingItemExtraOption = InstallProstLeft,
clothingExtraSubmenu = InstallProstRight, clothingExtraSubmenu = InstallProstRight,
BodyLocation = TOC_ArmProst_R, BodyLocation = TOC_ArmProst,
Weight = 2, Weight = 2,
CombatSpeedModifier = 1.1, CombatSpeedModifier = 1.1,
BloodLocation = UpperArms;UpperBody, BloodLocation = UpperArms;UpperBody,

View File

@@ -15,7 +15,7 @@ module TOC
ClothingItemExtra = Surg_Arm_Tourniquet_R, ClothingItemExtra = Surg_Arm_Tourniquet_R,
ClothingItemExtraOption = PutTourniquetArmRight, ClothingItemExtraOption = PutTourniquetArmRight,
clothingExtraSubmenu = PutTourniquetArmLeft, clothingExtraSubmenu = PutTourniquetArmLeft,
BodyLocation = TOC_ArmAccessory_L, BodyLocation = TOC_ArmAccessory,
BloodLocation = UpperArms;UpperBody, BloodLocation = UpperArms;UpperBody,
Weight = 0.25, Weight = 0.25,
@@ -35,7 +35,7 @@ module TOC
ClothingItemExtra = Surg_Arm_Tourniquet_L, ClothingItemExtra = Surg_Arm_Tourniquet_L,
ClothingItemExtraOption = PutTourniquetArmLeft, ClothingItemExtraOption = PutTourniquetArmLeft,
clothingExtraSubmenu = PutTourniquetArmRight, clothingExtraSubmenu = PutTourniquetArmRight,
BodyLocation = TOC_ArmAccessory_R, BodyLocation = TOC_ArmAccessory,
BloodLocation = UpperArms;UpperBody, BloodLocation = UpperArms;UpperBody,
Weight = 0.25, Weight = 0.25,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 B

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -1,65 +1,46 @@
from pathlib import Path from pathlib import Path
from PIL import Image from PIL import Image
import os
input_bodies_path = Path('input/body') input_bodies_path = Path('input/body')
input_wound_texture = Path('input/wound.png') input_wound_texture = Path('input/wound.png')
# 45, 33 TEXTURE # 48, 33 TEXTURE
# 256,256 # 256,256
IMG_WIDTH = 256 IMG_WIDTH = 256
COORDS_L = { COORDS_L = {
"H": (2, 100), #"H": (0, 115),
"F": (2, 59), "F": (0, 59),
"U": (2,21), "U": (0,21),
} }
COORDS_R = { COORDS_R = {
"H": (IMG_WIDTH - 43- COORDS_L['H'][0], COORDS_L['H'][1]), #"H": (IMG_WIDTH - 50- COORDS_L['H'][0], COORDS_L['H'][1]),
"F": (IMG_WIDTH - 43 - COORDS_L['F'][0], COORDS_L['F'][1]), "F": (IMG_WIDTH - 48 - COORDS_L['F'][0], COORDS_L['F'][1]),
"U": (IMG_WIDTH - 43 - COORDS_L['U'][0], COORDS_L['U'][1]), "U": (IMG_WIDTH - 48 - COORDS_L['U'][0], COORDS_L['U'][1]),
} }
FULL_COORDS = {key: (COORDS_L[key], COORDS_R[key]) for key in COORDS_L} STATES = ["BOTH"]
print(FULL_COORDS)
overlay = Image.open(input_wound_texture) overlay = Image.open(input_wound_texture)
for filepath in input_bodies_path.glob('*.png'): # Only PNG files for filepath in input_bodies_path.glob('*.png'): # Only PNG files
print(f'Processing {filepath.name}...')
base = Image.open(filepath) base = Image.open(filepath)
body_name = filepath.stem
body_name = filepath.stem.replace('MaleBody', 'skin') for key_L, value_L in COORDS_L.items():
if body_name.endswith('a'): for key_R, value_R in COORDS_R.items():
body_name = body_name[:-1] + '_hairy_b' for state in STATES:
else: result = base.copy()
body_name = body_name + '_b'
for key, (value_L, value_R) in FULL_COORDS.items():
print(key)
result = base.copy()
result.paste(overlay, value_L, mask=overlay)
result.paste(overlay, value_R, mask=overlay)
output_path = 'output/'
if key == "H":
os.makedirs('output/Hand', exist_ok=True)
output_path = 'output/Hand'
if key == "F":
os.makedirs('output/Forearm', exist_ok=True)
output_path = 'output/Forearm'
if key == "U":
os.makedirs('output/UpperArm', exist_ok=True)
output_path = 'output/UpperArm'
result.save(f'{output_path}/{body_name}.png')
if state == "BOTH" or state == "ONLY_LEFT":
result.paste(overlay, value_L, mask=overlay)
if state == "BOTH" or state == "ONLY_RIGHT":
result.paste(overlay, value_R, mask=overlay)
result.save(f'output/{body_name}_{key_L}_{key_R}_{state}.png')

View File

@@ -1,3 +0,0 @@
16:46:38:807 [CRITICAL] SharedConnection - Failed to open WinHTTP Session. The parameter is incorrect.
, last error code = 87

View File

@@ -4,21 +4,26 @@
[h1]You're bitten. You have two choices.[/h1] [h1]You're bitten. You have two choices.[/h1]
Wait until you succumb to the virus or take matters into your hands. Cut off that infected part and live to die another day. Wait until you succumb to the virus or take matters into your hands. Cut off that infected part and live to die another day.
This version of [b]The Only Cure[/b] has been rebuilt from scratch to support future additions and to feel as close as possible as a vanilla mechanic.
[b]If you're using an older version of The Only Cure and want to switch with this, you're gonna need to create a new character\save to prevent issues.[/b]
[b]The older version will be delisted shortly and it will not be supported anymore.[/b]
[h1]Supports [b]Single Player[/b] and [b]Multiplayer[/b]. Host Mode is currently [b]UNSUPPORTED![/b][/h1]
[h1]Setup[/h1] [h1]Setup[/h1]
[strike]Use it with the following mods for the intended experience: Use it with the following mods for the intended experience:
[list] [list]
[*] [url=https://steamcommunity.com/sharedfiles/filedetails/?id=2904920097]Fancy Handwork[/url] [*] [url=https://steamcommunity.com/sharedfiles/filedetails/?id=2904920097]Fancy Handwork[/url]
[*] [url=https://steamcommunity.com/sharedfiles/filedetails/?id=2934621024]Brutal Handwork[/url] [*] [url=https://steamcommunity.com/sharedfiles/filedetails/?id=2934621024]Brutal Handwork[/url]
[/list] [/list]
Place them [b]BEFORE[/b] The Only Cure in your mod list![/strike] Place them [b]BEFORE[/b] The Only Cure in your mod list!
[b]At the moment, the mods listed here aren't compatible with B42.[/b]
[hr][/hr] [hr][/hr]
[h1]Quick guide[/h1] [h1]Quick guide[/h1]
[h2]Amputation[/h2] [h2]Amputation[/h2]
Get a [i]Saw[/i]/[i]Garden Saw[/i], right click on it, and choose which limb to amputate. You can also drag n' drop your Saw item directly into the afflicted area to start cutting it off. Get a [i]Saw[/i] or a [i]Garden Saw[/i], right click on it, and choose which limb to amputate. You can also drag n' drop your Saw item directly into the afflicted area to start cutting it off.
If you have some [i]bandages[/i] and\or [i]stitches[/i] in your inventory you will automatically use them, multiplying the chances of your survival. If you have some [i]bandages[/i] and\or [i]stitches[/i] in your inventory you will automatically use them, multiplying the chances of your survival.
If you have a [i]tourniquet[/i], place it on the correct side to dampen the amount of damage you will take after you're done amputating the limb. If you have a [i]tourniquet[/i], place it on the correct side to dampen the amount of damage you will take after you're done amputating the limb.
@@ -72,8 +77,8 @@ Got any issues or found some pesky bugs? Report them on GitHub!
[th]Compatibility API[/th] [th]Compatibility API[/th]
[/tr] [/tr]
[tr] [tr]
[th]JCloudJalix, Rinary1, pllq, ttaeo, pgmbru[/th] [th]JCloudJalix[/th]
[th]Translation[/th] [th]German translation[/th]
[/tr] [/tr]
[/table] [/table]

View File

@@ -1,7 +0,0 @@
name=The Only Cure
poster=poster.png
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.1

View File

@@ -4,4 +4,4 @@ description=You've been bitten. You have only two choices.
id=TheOnlyCure id=TheOnlyCure
icon=icon.png icon=icon.png
url=https://github.com/ZioPao/The-Only-Cure url=https://github.com/ZioPao/The-Only-Cure
modversion=2.2.1 modversion=2.1.7

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -1,6 +1,6 @@
version=1 version=1
id=3580276809 id=3236152598
title=[B42] The Only Cure title=The Only Cure - Rebuilt
description=[img]https://raw.githubusercontent.com/ZioPao/The-Only-Cure/551125bb50cb65608ad89ca81ef0daccb3b02c4c/dev_stuff/logos/title.png[/img] description=[img]https://raw.githubusercontent.com/ZioPao/The-Only-Cure/551125bb50cb65608ad89ca81ef0daccb3b02c4c/dev_stuff/logos/title.png[/img]
description= description=
@@ -27,7 +27,7 @@ description=
description=[h1]Setup[/h1] description=[h1]Setup[/h1]
description=[strike]Use it with the following mods for the intended experience: description=Use it with the following mods for the intended experience:
description=[list] description=[list]
@@ -39,12 +39,10 @@ description=[/list]
description= description=
description=Place them [b]BEFORE[/b] The Only Cure in your mod list![/strike] description=Place them [b]BEFORE[/b] The Only Cure in your mod list!
description= description=
description=[b]At the moment, the mods listed here aren't compatible with B42.
description=[hr][/hr] description=[hr][/hr]
description= description=
@@ -183,5 +181,5 @@ description=
description=[hr][/hr] description=[hr][/hr]
tags=Build 42;Balance;Interface;Items;Misc;Multiplayer;Realistic;Textures tags=Build 41;Balance;Interface;Items;Misc;Multiplayer;Realistic;Textures
visibility=public visibility=public