Jump to content
Hydromancerx

Hydrocraft Mod

Recommended Posts

1 hour ago, lazyman said:

anyone know if the well automatically generates water/what is the purpose of a water pump?

In game wells you find aren't limitless. But they start with a ton. 
Hydrocraft Wells are empty until filled
MoreBuild Wells have some water, but are replenished every time it rains. 

Water Pump is unlimited water.  You extract it with a bucket. 

But easier than that.  Put rain collectors one level up and one level adjacent to placed sinks, tubs, toilets etc.  And it'll give you fresh water from it.  As long as the rain collectors have water. 

Share this post


Link to post
Share on other sites

I'm running a server, not a dedicated one and I am the Admin but no one else can use the sleeping bags and I cannot figure out make them Admin or why they can't use the sleeping bags? 

Share this post


Link to post
Share on other sites

Found a quite annoying bug:

 

I made a few meshed potatoes with a potatoe mesher and some cooking pots.

I had 3 pots of water in inventory and used potatoes out of a shelf.

 

It seems, the mesh does not consume the pots, but every consume of cooked potatoe mesh gives a fresh pot.

Share this post


Link to post
Share on other sites

I've found Blacksmithing books, and I can read them, but I can't seem to actually find the skill Blacksmithing. There's Metalworking, but that seems to be completely separate. What raises Blacksmithing, and how do I put points into it?

Share this post


Link to post
Share on other sites
1 hour ago, DeNarr said:

I've found Blacksmithing books, and I can read them, but I can't seem to actually find the skill Blacksmithing. There's Metalworking, but that seems to be completely separate. What raises Blacksmithing, and how do I put points into it?

Check the hydrocraft wiki.  I think Blacksmithing only opens up certain recipes, it's not one of the skill books per say.   I'll look after work.

Share this post


Link to post
Share on other sites
19 minutes ago, Paul Redeker said:

Check the hydrocraft wiki.  I think Blacksmithing only opens up certain recipes, it's not one of the skill books per say.   I'll look after work.

 

I've actually already found and read the Blacksmithing book. What I'm asking about is how do I raise the skill? It isn't listed as one of the skills on the character menu.

Share this post


Link to post
Share on other sites
1 hour ago, DeNarr said:

 

I've actually already found and read the Blacksmithing book. What I'm asking about is how do I raise the skill? It isn't listed as one of the skills on the character menu.

Because there isn't a Blacksmithing skill.  There are other books to read to make items such as sledgehammers,swords,armor, ingots, etc.   Some also have other reqs to make as well such as min levels of blade or blunt mx to create items.   Blacksmithing book isn't listed on the most current Hydrocraft wiki (granted I'm searching on my phone).  So I'd look in the Hydro Mod files to see if it's part of any recipes.  It might be one of those items that will be useful in later updates.  If you have the book, it should tell you what recipes it enables if you hover over it in your inventory.  Or if it just reduces boredom. 

Share this post


Link to post
Share on other sites
53 minutes ago, Paul Redeker said:

Because there isn't a Blacksmithing skill.  There are other books to read to make items such as sledgehammers,swords,armor, ingots, etc.   Some also have other reqs to make as well such as min levels of blade or blunt mx to create items.   Blacksmithing book isn't listed on the most current Hydrocraft wiki (granted I'm searching on my phone).  So I'd look in the Hydro Mod files to see if it's part of any recipes.  It might be one of those items that will be useful in later updates.  If you have the book, it should tell you what recipes it enables if you hover over it in your inventory.  Or if it just reduces boredom. 

 

Sorry, the skill is "Smithing". They have typical skill books just like any other skill. Here is a list of them in the wiki:

 

http://undeniable.info/pz/wiki/itemlist.php?SEARCH=smithing&pn=1&wherein=0&cat=0&type=0

Share this post


Link to post
Share on other sites
1 hour ago, DeNarr said:

 

Sorry, the skill is "Smithing". They have typical skill books just like any other skill. Here is a list of them in the wiki:

 

http://undeniable.info/pz/wiki/itemlist.php?SEARCH=smithing&pn=1&wherein=0&cat=0&type=0

So it dawned on me on the ride home.  Smithing is not Hydrocraft.  It's part of the Base game. And the reason you don't see the skill is because some of the smithing and metal crafting was left out.  Some people thought it was too unrealistic, too minecrafty.   But the code for some of it is still there. In case maybe they decide to add it back in later maybe?

Share this post


Link to post
Share on other sites

Is there a way to customize what items can spawn? Like an in game "check or uncheck the box" kind of thing?  I like most of the stuff in this mod and I always play with it -- there's just some items I don't find necessary/lore-breaking, and not having them would increase my odds of finding stuff I do want.

Share this post


Link to post
Share on other sites

Found bug in armor system. If armor blocks bite or scratch and infection mortality set off(transmission set to everyone is infected), character will be ill.

Edited by archi9

Share this post


Link to post
Share on other sites

So I finally got up to the dissection table, which was a project I'd been building towards for a while. I love being able to cut up zombies for first aid skill (seems more flavorful than jumping through windows to cut myself). However, I notice that it requires an entire thing of bleach every time to clean the table. And we can't even make bleach with anything. This seems a little silly. I'd really like a renewable resource in order to clean the table. Honestly, I'm not even sure why it needs to be something as powerful as bleach, considering I'm just cutting up zombies. Just let me wipe it down with a rag or something.

Share this post


Link to post
Share on other sites
2 minutes ago, DeNarr said:

 Just let me wipe it down with a rag or something.

Or make bleach kind of like disinfectant in that you can 'bleach a rag' and use that to wipe down the table without using up the whole bottle.

I'm no coder, but making a bleach-y clone of the well known and beloved rubbing alcohol bottle doesn't sound like it would be too hard.

Share this post


Link to post
Share on other sites

@Hydromancerx

 

Please update armor.lua file to fix bugs!

 

Spoiler

--[[
Injury Detection And Armor Based Injury Blocking
By Nolan Ritchie


]]

function loadArmorToPlayer(Armor, player)
    ArmorSaveBodyDamage(player);
    loadArmor(Armor);    
end

function getBodyPartDisplayName(TypeIn)

    BPType = tostring(TypeIn);
    if(BPType == "Foot_L") then return "Left Foot";
    elseif(BPType == "Foot_R") then return "Right Foot";
    elseif(BPType == "ForeArm_L") then return "Left Fore Arm";
    elseif(BPType == "ForeArm_R") then return "Right Fore Arm";
    elseif(BPType == "Hand_L") then return "Left Hand";
    elseif(BPType == "Hand_R") then return "Right Hand";
    elseif(BPType == "LowerLeg_L") then return "Left Lower Leg";
    elseif(BPType == "LowerLeg_R") then return "Right Lower Leg";
    elseif(BPType == "Torso_Lower") then return "Lower Torso";
    elseif(BPType == "Torso_Upper") then return "Upper Torso";
    elseif(BPType == "UpperArm_L") then return "Left Upper Arm";
    elseif(BPType == "UpperArm_R") then return "Right Upper Arm";
    elseif(BPType == "UpperLeg_L") then return "Left Upper Leg";
    elseif(BPType == "UpperLeg_R") then return "Right Upper Leg";
    else return BPType;
    end

end

function ExamineArmor(items, result, player)
    
    for i=0, items:size()-1 do
        Armor = items:get(i);
    end
    
    loadArmor(Armor);
    
    local out = "Remaining Durability: " .. tostring(Armor:getModData().Durability) .. "\n";
    local BPs = player:getBodyDamage():getBodyParts();
    for i=0, BPs:size()-1 do        
        
        if(Armor:getModData().ScratchRes ~= nil) and (Armor:getModData().ScratchRes[tostring(BPs:get(i):getType())] ~= nil) then
            out = out .. tostring(Armor:getModData().ScratchRes[tostring(BPs:get(i):getType())]).. "%" .. " chance to block Scratches on the " .. getBodyPartDisplayName(BPs:get(i):getType()) .. "\n";
        end
        if(Armor:getModData().DeepWoundRes ~= nil) and (Armor:getModData().DeepWoundRes[tostring(BPs:get(i):getType())] ~= nil) then
            out = out  .. tostring(Armor:getModData().DeepWoundRes[tostring(BPs:get(i):getType())]).. "%" .. " Chance to block to Deep Wounds on the " .. getBodyPartDisplayName(BPs:get(i):getType()) .. "\n";
        end
        if(Armor:getModData().BiteRes ~= nil) and (Armor:getModData().BiteRes[tostring(BPs:get(i):getType())] ~= nil) then
            out = out  .. tostring(Armor:getModData().BiteRes[tostring(BPs:get(i):getType())]) .. "%".. " Chance to block to Bites on the " .. getBodyPartDisplayName(BPs:get(i):getType()) .. "\n";
        end
        if(Armor:getModData().GlassRes ~= nil) and (Armor:getModData().GlassRes[tostring(BPs:get(i):getType())] ~= nil) then
            out = out  .. tostring(Armor:getModData().GlassRes[tostring(BPs:get(i):getType())]) .. "%".. " Chance to block to Glass on the " .. getBodyPartDisplayName(BPs:get(i):getType()) .. "\n";
        end
        if(Armor:getModData().FractureRes ~= nil) and (Armor:getModData().FractureRes[tostring(BPs:get(i):getType())] ~= nil) then
            out = out  .. tostring(Armor:getModData().FractureRes[tostring(BPs:get(i):getType())]) .. "%".. " Chance to block to Fractures on the " .. getBodyPartDisplayName(BPs:get(i):getType()) .. "\n";
        end
        if(Armor:getModData().BurnRes ~= nil) and (Armor:getModData().BurnRes[tostring(BPs:get(i):getType())] ~= nil) then
            out = out .. tostring(Armor:getModData().BurnRes[tostring(BPs:get(i):getType())])  .. "%".. " Chance to block to Burns on the " .. getBodyPartDisplayName(BPs:get(i):getType()) .. "\n";
        end
        if(Armor:getModData().BulletRes ~= nil) and (Armor:getModData().BulletRes[tostring(BPs:get(i):getType())] ~= nil) then
            out = out  .. tostring(Armor:getModData().BulletRes[tostring(BPs:get(i):getType())]).. "%" .. " Chance to block to Bullets on the " .. getBodyPartDisplayName(BPs:get(i):getType()) .. "\n";
        end
    end
    out = Armor:getDisplayName() .. "\n" .. out;
    ArmorWindow:setText(out);
    ArmorWindow:setVisible(true);
    --player:Say();
end

function ArmorSaveBodyDamage(player)
    
    ArmorTempBodyDamage = {};
    local BD = player:getBodyDamage();
    --local InjuryTypes = {0 = "Scratch",1 = "DeepWound", 2 = "Burn", 3 = "BulletRes", 4 = "Fracture", 5 = "Glass"};
    
    ArmorTempBodyDamage["IsInfected"] = BD:IsInfected();
        
    local BPs = BD:getBodyParts();
    for i=0, BPs:size()-1 do
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())] = {Splint= false, Bandage = false, Bite = false, Scratch = false, DeepWound = false, Burn = false, Bullet = false, Fracture = false, Glass = false};
        
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Splint"] = BPs:get(i):isSplint();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bandage"] = BPs:get(i):bandaged();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Scratch"] = BPs:get(i):scratched();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["DeepWound"] = BPs:get(i):deepWounded();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Burn"] = BPs:get(i):getBurnTime();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bullet"] = BPs:get(i):haveBullet();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Fracture"] = BPs:get(i):getFractureTime();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Glass"] = BPs:get(i):haveGlass();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bite"] = BPs:get(i):bitten();
            ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["HasInjury"] = BPs:get(i):HasInjury();
        
    end
    ArmorBDamageSaved = true;
end

function tryBlock(BodyPartType, InjuryType, ArmorType, player)
    local Armor = player:getInventory():getItemFromType(ArmorType);
    if(InjuryType == "Scratch") then
        if(Armor:getModData().ScratchRes ~= nil) and (Armor:getModData().ScratchRes[BodyPartType] ~= nil) then
            return ( (ZombRand(100)+1) < Armor:getModData().ScratchRes[BodyPartType] );
        end    
    elseif(InjuryType == "DeepWound") then
        if((Armor:getModData().DeepWoundRes ~= nil) and Armor:getModData().DeepWoundRes[BodyPartType] ~= nil) then
            return ( (ZombRand(100)+1) < Armor:getModData().DeepWoundRes[BodyPartType] );
        end
    elseif(InjuryType == "Bite") then
        if(Armor:getModData().BiteRes ~= nil) and (Armor:getModData().BiteRes[BodyPartType] ~= nil) then
            return ( (ZombRand(100)+1) < Armor:getModData().BiteRes[BodyPartType] );
        end
    elseif(InjuryType == "Fracture") then
        if(Armor:getModData().FractureRes ~= nil) and (Armor:getModData().FractureRes[BodyPartType] ~= nil) then
            return ( (ZombRand(100)+1) < Armor:getModData().FractureRes[BodyPartType] );
        end
    elseif(InjuryType == "Burn") then
        if(Armor:getModData().BurnRes ~= nil) and (Armor:getModData().BurnRes[BodyPartType] ~= nil) then
            return ( (ZombRand(100)+1) < Armor:getModData().BurnRes[BodyPartType] );
        end
    elseif(InjuryType == "Glass") then
        if(Armor:getModData().GlassRes ~= nil) and (Armor:getModData().GlassRes[BodyPartType] ~= nil) then
            return ( (ZombRand(100)+1) < Armor:getModData().GlassRes[BodyPartType] );
        end
    elseif(InjuryType == "Bullet") then
        if(Armor:getModData().BulletRes ~= nil) and (Armor:getModData().BulletRes[BodyPartType] ~= nil) then
            return ( (ZombRand(100)+1) < Armor:getModData().BulletRes[BodyPartType] );
        end
    end

end
function EquipAsShield(items, result, player) -- Recipe must only have one ingredient which is the armor, and be set to "keep"
    for i=0, items:size()-1 do
        loadArmorToPlayer(items:get(i), player);        
        if (player:getSecondaryHandItem() == player:getPrimaryHandItem()) then
            player:setPrimaryHandItem(nil);
        end
        player:setSecondaryHandItem(items:get(i));
        player:getModData().ShieldArmor = items:get(i):getType();            
    end
end
function EquipOnHead(items, result, player) -- Recipe must only have one ingredient which is the armor, and be set to "keep"
    for i=0, items:size()-1 do
        loadArmorToPlayer(items:get(i), player);
        player:getModData().HeadArmor = items:get(i):getType();            
    end
end
function EquipOnHands(items, result, player) -- Recipe must only have one ingredient which is the armor, and be set to "keep"
    for i=0, items:size()-1 do
        loadArmorToPlayer(items:get(i), player);
        player:getModData().HandArmor = items:get(i):getType();            
    end
end
function EquipOnArms(items, result, player) -- Recipe must only have one ingredient which is the armor, and be set to "keep"
    for i=0, items:size()-1 do
        loadArmorToPlayer(items:get(i), player);
        player:getModData().ArmArmor = items:get(i):getType();            
    end
end
function EquipOnLegs(items, result, player) -- Recipe must only have one ingredient which is the armor, and be set to "keep"
    for i=0, items:size()-1 do
        loadArmorToPlayer(items:get(i), player);
        player:getModData().LegArmor = items:get(i):getType();            
    end
end
function EquipOnChest(items, result, player) -- Recipe must only have one ingredient which is the armor, and be set to "keep"
    for i=0, items:size()-1 do
        loadArmorToPlayer(items:get(i), player);
        player:getModData().ChestArmor = items:get(i):getType();            
    end
end
function EquipOnFeet(items, result, player) -- Recipe must only have one ingredient which is the armor, and be set to "keep"
    for i=0, items:size()-1 do
        loadArmorToPlayer(items:get(i), player);
        player:getModData().FootArmor = items:get(i):getType();            
    end
end

function DamageArmor(Armor, player, InjuryType)

    local Damage = 1;
    
    if(InjuryType == "Scratch") then
        Damage = 1;
    elseif(InjuryType == "DeepWound") then
        Damage = 3;
    elseif(InjuryType == "Bite") then
        Damage = 2;
    elseif(InjuryType == "Fracture") then
        Damage = 3;
    elseif(InjuryType == "Burn") then
        Damage = 2;
    elseif(InjuryType == "Glass") then
        Damage = 2;
    elseif(InjuryType == "Bullet") then
        Damage = 5;
    end

    local isBroken = false;
    Armor:getModData().Durability = Armor:getModData().Durability - Damage;
    if (Armor:getModData().Durability <= 0) then
        isBroken = true;
        if(Armor:getModData().onBreakTurnInto ~= nil) then
            player:Say("adding broken armor" .. Armor:getModData().onBreakTurnInto);
            player:getInventory():AddItem(Armor:getModData().onBreakTurnInto);
        end
        player:getInventory():Remove(Armor);
    end
    return isBroken;
end

function wasDamagedBlocked(BodyPartType, InjuryType, player)

    if(ArmorTempBodyDamage[tostring(BodyPartType)]["Bandage"] == true) or (ArmorTempBodyDamage[tostring(BodyPartType)]["Splint"] == true) then
    return false;
    end

    if(player:getSecondaryHandItem() ~= nil) then
        if(player:getModData().ShieldArmor ~= nil) and (player:getSecondaryHandItem():getType() == player:getModData().ShieldArmor)  then
            if(tryBlock(BodyPartType, InjuryType, player:getModData().ShieldArmor, player) == true) then
                if(DamageArmor(player:getInventory():getItemFromType(player:getModData().ShieldArmor),player,InjuryType) == true) then
                    player:setSecondaryHandItem(nil);
                end
                return true;
            end
        end
    end
    if(player:getModData().HeadArmor ~= nil) and (player:getInventory():contains(player:getModData().HeadArmor)) then
        if(tryBlock(BodyPartType, InjuryType, player:getModData().HeadArmor, player) == true) then
            DamageArmor(player:getInventory():getItemFromType(player:getModData().HeadArmor),player,InjuryType);
            return true;
        end
    end
    if(player:getModData().HandArmor ~= nil) and (player:getInventory():contains(player:getModData().HandArmor)) then
        if(tryBlock(BodyPartType, InjuryType, player:getModData().HandArmor, player) == true) then
            DamageArmor(player:getInventory():getItemFromType(player:getModData().HandArmor),player,InjuryType);
            return true;
        end
    end
    if(player:getModData().ArmArmor ~= nil) and (player:getInventory():contains(player:getModData().ArmArmor)) then
        if(tryBlock(BodyPartType, InjuryType, player:getModData().ArmArmor, player) == true) then
            DamageArmor(player:getInventory():getItemFromType(player:getModData().ArmArmor),player,InjuryType);
            return true;
        end
    end
    if(player:getModData().ChestArmor ~= nil) and (player:getInventory():contains(player:getModData().ChestArmor)) then
        if(tryBlock(BodyPartType, InjuryType, player:getModData().ChestArmor, player) == true) then
            DamageArmor(player:getInventory():getItemFromType(player:getModData().ChestArmor),player,InjuryType);
            return true;
        end
    end
    if(player:getModData().LegArmor ~= nil) and (player:getInventory():contains(player:getModData().LegArmor)) then
        if(tryBlock(BodyPartType, InjuryType, player:getModData().LegArmor, player) == true) then
            DamageArmor(player:getInventory():getItemFromType(player:getModData().LegArmor),player,InjuryType);
            return true;
        end
    end
    if(player:getModData().FootArmor ~= nil) and (player:getInventory():contains(player:getModData().FootArmor)) then
        if(tryBlock(BodyPartType, InjuryType, player:getModData().FootArmor, player) == true) then
            DamageArmor(player:getInventory():getItemFromType(player:getModData().FootArmor),player,InjuryType);
            return true;
        end
    end

    return false;
    
end

function healBodyPart(bodyPart, player, BD)

    bodyPart:SetInfected(false);
    bodyPart:setInfectedWound(false);
    bodyPart:SetFakeInfected(false);
    if(ArmorTempBodyDamage["IsInfected"] == false) and (BD:IsInfected() == true) then
        BD:setInf(false); -- remove infection if did not have before the blocked scratch
    end
    bodyPart:RestoreToFullHealth();
    bodyPart:DamageUpdate() ;
    player:Say("!");
    sendClientCommand(player, "Armor", "Say", {saythis = "!"});
    
end

function ArmorCheckForDamage(player)
local ArmorbInjuryDetected = false;
    if(ArmorBDamageSaved ~= nil) and (player ~= nil) then
        
        local BD = player:getBodyDamage();
        --local InjuryTypes = {0 = "Scratch",1 = "DeepWound", 2 = "Burn", 3 = "BulletRes", 4 = "Fracture", 5 = "Glass"};
        
        --ArmorTempBodyDamage["IsInfected"] = BD:IsInfected();
            
        local BPs = BD:getBodyParts();
        for i=0, BPs:size()-1 do
            if((ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bandage"] == false) and (ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["HasInjury"] == false)) then
            
                if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Scratch"] ~= BPs:get(i):scratched()) and (BPs:get(i):scratched() == true) then
                    --player:Say("Scratch Detected on ".. tostring(BPs:get(i):getType()));
                    if(wasDamagedBlocked(tostring(BPs:get(i):getType()), "Scratch", player)) then
                        healBodyPart(BPs:get(i), player, BD);                        
                    end
                    ArmorbInjuryDetected = true;
                end
                if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["DeepWound"] ~= BPs:get(i):deepWounded()) and (BPs:get(i):deepWounded() == true) and (ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bullet"] ~= true) and (ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Glass"] ~= true) then
                    if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bullet"]) or (ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Glass"]) then
                        ArmorbInjuryDetected = true;
                    else                        
                        if(wasDamagedBlocked(tostring(BPs:get(i):getType()), "DeepWound", player)) then
                            healBodyPart(BPs:get(i), player, BD);    
                        end
                    end
                    ArmorbInjuryDetected = true;
                end
                if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bite"] ~= BPs:get(i):bitten()) and (BPs:get(i):bitten() == true) then
                    --player:Say("Bite Detected on ".. tostring(BPs:get(i):getType()));
                    if(wasDamagedBlocked(tostring(BPs:get(i):getType()), "Bite", player)) then
                        healBodyPart(BPs:get(i), player, BD);    
                    end
                    ArmorbInjuryDetected = true;
                end
                if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Burn"] ~= BPs:get(i):getBurnTime()) and (BPs:get(i):getBurnTime() ~= 0) then
                    --player:Say("Burn Detected on ".. tostring(BPs:get(i):getType()) );
                    if(wasDamagedBlocked(tostring(BPs:get(i):getType()), "Burn", player)) then
                        healBodyPart(BPs:get(i), player, BD);    
                    end
                    ArmorbInjuryDetected = true;
                end
                if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Bullet"] ~= BPs:get(i):haveBullet()) and (BPs:get(i):haveBullet() == true) and (BPs:get(i):deepWounded() == false) then
                    --player:Say("Lodged Bullets Detected on ".. tostring(BPs:get(i):getType()));
                    if(wasDamagedBlocked(tostring(BPs:get(i):getType()), "Bullet", player)) then
                        healBodyPart(BPs:get(i), player, BD);    
                    end
                    ArmorbInjuryDetected = true;
                end
                if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Fracture"] ~= BPs:get(i):getFractureTime()) and (BPs:get(i):getFractureTime() ~= 0) and (BPs:get(i):isSplint() == false) then
                    --player:Say("Fracture Detected on ".. tostring(BPs:get(i):getType()));
                    if(wasDamagedBlocked(tostring(BPs:get(i):getType()), "Fracture", player)) then
                        healBodyPart(BPs:get(i), player, BD);    
                    end
                    ArmorbInjuryDetected = true;
                end
                if(ArmorTempBodyDamage[tostring(BPs:get(i):getType())]["Glass"] ~= BPs:get(i):haveGlass()) and (BPs:get(i):haveGlass() == true) and (BPs:get(i):deepWounded() == false) then
                    --player:Say("Logged Glass Detected on ".. tostring(BPs:get(i):getType()));
                    if(wasDamagedBlocked(tostring(BPs:get(i):getType()), "Glass", player)) then
                        healBodyPart(BPs:get(i), player, BD);    
                    end
                    ArmorbInjuryDetected = true;
                end
            end
        end
        
    end
    
    if(ArmorbInjuryDetected) then
        ArmorSaveBodyDamage(player);
    end
    
    return ArmorbInjuryDetected;
end

function ArmorupdateThePlayer(player)
    ArmorCheckForDamage(player);
    player:getInventory():Remove("HCEquiparmor");
end

function ArmorInit()
    ArmorSaveBodyDamage(getPlayer());
end
function ArmorKeysUp(keynum)
    --getPlayer():Say(tostring(keynum));
    if keynum == 25 then
        local player = getPlayer();
        local armorstring = "Currently Equipped Armor \n";
        if(player:getModData().ShieldArmor ~= nil) and (player:getSecondaryHandItem() ~= nil) and (player:getSecondaryHandItem():getType() == player:getModData().ShieldArmor) then
        armorstring = armorstring .. "Shield: " .. player:getInventory():getItemFromType(player:getModData().ShieldArmor):getDisplayName() .. "\n";
        end
        if(player:getModData().HeadArmor ~= nil) and (player:getInventory():contains(player:getModData().HeadArmor)) then
        armorstring = armorstring .. "Helmet: " .. player:getInventory():getItemFromType(player:getModData().HeadArmor):getDisplayName() .. "\n";
        end
        if(player:getModData().HandArmor ~= nil) and (player:getInventory():contains(player:getModData().HandArmor)) then
        armorstring = armorstring .. "Hands: " .. player:getInventory():getItemFromType(player:getModData().HandArmor):getDisplayName() .. "\n";
        end
        if(player:getModData().ArmArmor ~= nil) and (player:getInventory():contains(player:getModData().ArmArmor)) then
        armorstring = armorstring .. "Arms: " .. player:getInventory():getItemFromType(player:getModData().ArmArmor):getDisplayName() .. "\n";
        end
        if(player:getModData().LegArmor ~= nil) and (player:getInventory():contains(player:getModData().LegArmor)) then
        armorstring = armorstring .. "Legs: " .. player:getInventory():getItemFromType(player:getModData().LegArmor):getDisplayName() .. "\n";
        end
        if(player:getModData().ChestArmor ~= nil) and (player:getInventory():contains(player:getModData().ChestArmor)) then
        armorstring = armorstring .. "Chest: " .. player:getInventory():getItemFromType(player:getModData().ChestArmor):getDisplayName() .. "\n";
        end
        if(player:getModData().FootArmor ~= nil) and (player:getInventory():contains(player:getModData().FootArmor)) then
        armorstring = armorstring .. "Feet: " .. player:getInventory():getItemFromType(player:getModData().FootArmor):getDisplayName() .. "\n";
        end
                
        ArmorWindow:setText(armorstring);
        ArmorWindow:setVisible(true);
    end        
end

Events.OnKeyPressed.Add(ArmorKeysUp);
Events.OnPlayerUpdate.Add(ArmorupdateThePlayer);
Events.OnGameStart.Add(ArmorInit);

 

 

Share this post


Link to post
Share on other sites

Hydrocraft v8.6 has been released!

 

Which includes ...

 

- Armor Mod Update

- Fixed Make Calcium Oxide with Anchored Kiln

- Fixed Amazonite

- Fixed Lamelar Armor

- Reduced Weight of Egg Timer

- Increased weight of Riot Shield

- Added Banjo and Harp

- Added Jalapeno .

- Added Armadillo and Porcupine.

- Thanks to everyone who helped!

 

Enjoy!

Share this post


Link to post
Share on other sites
28 minutes ago, Hydromancerx said:

Hydrocraft v8.6 has been released!

 

Which includes ...

 

- Armor Mod Update

- Fixed Make Calcium Oxide with Anchored Kiln

- Fixed Amazonite

- Fixed Lamelar Armor

- Reduced Weight of Egg Timer

- Increased weight of Riot Shield

- Added Banjo and Harp

- Added Jalapeno .

- Added Armadillo and Porcupine.

- Thanks to everyone who helped!

 

Enjoy!

 

- Added Jalapeno .

 

YES! THANK YOU!

Edited by Runda20

Share this post


Link to post
Share on other sites

Feedback after coop playing for a loong deep while.

1) (THANK YOU)^5

2) All points below are really minor, they do not cancel out point one.

- Firstly fantasy about top most stuff. Just to imagine how to use the tech. Top radio tech that might be implemented (radio tower etc) plus top computer tech, i.e. programming, plus top medical tech, i.e. injection and autopsies might result in future quests combining incoming radio requests for microbiology research of autopsies followed by airdrop reward from outside. I.e. even without quest engine the radio tower could generate some 'broadcast record' item, acting like a gift box, possibly giving items necessary to craft specific autopsy or specific research which would in turn yield specific item necessary to craft a gift airdrop or trade token.

- Now to slightly more practical. Dried vegetables and homemade cooking oil lack cooking applications, which is slightly sad cuz it is a good method of preserving food. Would be great to see them usable in recipes with other craftable preservables - basic soup, fries salads plus pasta, risotto and dough. End goal to reward skilled cooking with a full cycle of both creating varied long storable food and using it. And yep, must have canned meat.

- Sad song about duct tape. Basically the duct tape related crafting adds cosmetic alternative and variety addition with smithing. I mean bats and clubs with attachments vs maces and duct tape fletching vs bird farming methods. Problem is that related results focus on one type of duct tape only and we ended up having quite some other types of sticky tapes, just not the black colored one. Of all the ideas we thought that it would be best to make regular use of rubber crafting by adding a recipe of glue plus rubber sheet plus keepknife to get duct tape. I'd like to stress this suggestion, because it seems to allow to make more regular use out of whole crafting branches of your mod that are cool and fun to use. ps maybe complicate recipe even more by requiring for example both glue and tar cuz duct tape would still be worth it.

- Just a fun note. Not sure what you are currently doing about hunting dogs, but since hunting still requires poop yet no dogs, it makes for an awe inspiring sight with my hollywood style blonde taking tribal hunter style taste of animal poop, somehow finding this animal and proceeding to terminate it with a wooden stake.

- Purely cosmetic yet very important - floor tile crafting. Currently it's all about ripping floors from places and maybe using item duping to avoid destroying multiple locations. If the mod is about crafting, why not let it craft carpets and tiles to make more use out of both textile and pottery/masonry and even dye side of the crafting tree?

- Purely theoretical temporary use of rarer metals in alloys, in turn usable for either crafting not related to durability, i.e. furniture or just make 'iron alloy' craftable by mixing iron powder with powders of currently unusable metals and then cast in blast furnace to get 'iron alloy' ingot then usable to create 'alloy' items of iron durability and icons.

- Alternative and maybe more realistic idea about trading. Imagine a group of people who captured large scale storages of goods (military surplus foods, weapons or other themed warehouses) - this would result in a group possibly willing to be selling one or several types of things that they have in return not for money but for very specific items that they'd expect from this region. Then they'd come around in a truck and deal with locals buying specific sets of goods and selling their specific sets of goods. What's the difference with current trade system? 1) Limited scope of supply and demand depending what warehouse the visitors own, possibly several types of vendors (which might be switched out on the map by admin saying stuff like this truck came and this truck gone) 2) Different currency because comeon. Since this game does not support barter calculations, possible replacement for bucks would be something like 1buck 1x9mm bullet, 5 bucks shotgun shell or 5x9mm, 20 bucks = 1x7.62 or 4x12g or 20x9mm. 3) Much steeper price tags - groups who have taken the risk of travelling in post apoc to do the trade would only do so to get high margin of profit, meaning up to 1 to 20 buy/sell price difference on avg goods and at least 1 to 5 loss on best supply/demand match 3) for example 3 types of vendors with different supply/demand a) group owns food warehouse, sells canned food and such things as flour, pasta, soup boulion and spices, buys weapons, both findable and craftable b) group ows a military base, sells guns and gear, buys food and booze c) group of workers fortified their factory - sell machined metal and tools, buy food, metal and chemicals. Since different factions can have different trucks, this would make for different 'trading' crafting recipes applicable to them, maybe even having individual tokens for individual currencies.

- Only whiskey usable to disinfect cotton swabs? On behalf of a collective of russian people I find this state of events deeply racist! ;)

- Lastly the blunt crafting tree seemed a tiny bit lacking in top item department, and to counter that there were several ideas. 1) the already mentioned duct tape recipe resulting on wider blunt variety 2) Add steel only flanged mace recipe - basically longer version of a mace, functionally similar to spiked bat with better durability, requiring maint 6 and maybe rubber or rope for handle 3) Otherwise useful weapon 'flail' suffers from higher price in ingots, making it more expensive to maintain, therefore 2 ideas to compensate that a) add 'fix flail' recipe, requiring only one link of chain and one metal ingot (and anvil) to basically reforge the flail and reset its repairs count (similar to makeshift axes but without the worsening cascade) b) between the bottom stone flail and top steel flail add iron one based on stick, rope and iron ingot and repairable with rope.

 

Thanks for reading. Of all the ideas mentioned above, duct tape and floor tile points are imho most relevant to making the best out of this mod, the rest are just for company. Main excuse for spamming you with this text - it's a result of beta testing by several people on a map that went from zero to absolute maximum (4 .. 4 zombies) and built everything there was to build, culminating in stealthy raids to most populated areas costing full bags of steel blades to shop in cool places.

 

Aaand back to point -- 1) (THANK YOU)^5

Share this post


Link to post
Share on other sites

I'm not sure if this bug has been reported but there is no magazine or book I can find that teaches "Make Selfmade Heater". I've looked through the docs and can't see it listed. Thanks

Share this post


Link to post
Share on other sites

Mod does not work properly: it treats the symptoms of the infection, but does not save from the infection itself. The character loses his health and dies, and becomes a zombie, despite the fact that there is neither nausea, nor anxiety, nor any other damage.

 

Spoiler

ZG0kOYy.png

Remove symptoms not a infection.

 

Edited by Di-Crash

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...