Jump to content

FORUM TEST RELEASE: Project Zomboid - Version 2.9.9.14


lemmy101

Recommended Posts

REMEMBER: This is a forum test release because it may have new bugs or other serious issues, in fact a few we're aware of already and this latest build hasn't had a huge amount of closed testing. However we'd like to extend it to a forum test to get any remaining issues as quickly as possible.

 

If not comfortable with that, please wait until official release on Desura, which should hopefully be for Mondoid if it goes well. REMEMBER, it's always advised to manually back up your saves (C:\Users\<username>\Zomboid\<gamemode>) when using forum builds.
 

Version 2.9.9.15 : http://theindiestone.com/forums/index.php/topic/763-forum-test-release-project-zomboid-version-29915/

 
HOT FIX FOR GOD MODE (sorry for that) : go in media/lua/camping/camping.lua and replace everything with that :

-----------------------------------------------------------------------
--                          CAMPING MOD                              --
--                      CODE BY ROBERT JOHNSON                       --
--                          TEXTURE BY THUZTOR                         --
-----------------------------------------------------------------------
--                          OFFICIAL TOPIC                           --
--   http://theindiestone.com/community/viewtopic.php?f=31&t=8968    --
--                                                                   --
-----------------------------------------------------------------------

require 'luautils'

camping = {};
gameTime = {};
camping.player = {};
camping.playerData = {};
camping.tick = 0;
camping.currentGridSquare = {};
camping.campfires = {};
camping.tents = {};
camping.cookingFood = {};
camping.upHeatOk = false;
camping.hourElapsed = 0;
camping.previousHour = 0;
camping.campfireXp = 0;
camping.forcedSleep = false;
camping.tentClicked = {};
camping.mouseLeftClicked = false;
camping.mouseRightClicked = false;

camping.doCamping = function(character, item)
    camping.currentGridSquare = camping.player:getCurrentSquare();
    if(item:getType() == "FireWoodKit") then
        camping.lightFireWithWoodKit();
    elseif(item:getType() == "SteelAndFlint") then
        camping.lightFireWithSteelAndFlint();
    end
end

camping.lightFireWithSteelAndFlint = function()
    -- fireSteelAndFlintAction
end

function fireSteelAndFlintAction()
    local currentCampfire = camping.getCurrentCampfire();
    -- 1 to 3 chance to start fire with wood kit !
    local randFireNumber = 3 - camping.campfireXp;
    if(randFireNumber < 1) then
        randFireNumber = 1;
    end
    local randFire = ZombRand(randFireNumber);
    if(randFire == 0) then
        currentCampfire.fireLvl = 2;
        camping.changeFireLvl(currentCampfire);
        camping.gainXp();
    end
end

camping.lightFireWithWoodKit = function()
    --fireWoodAction
end

-- light the campfire with wood (Kindling)
function fireWoodAction(currentCampfire, player, isOutdoorsMan)
    -- 1 to 5 chance to start fire with wood kit !
    -- a outdoorsman have a greater chance to light the fire
    local randNumber = 6;
    if isOutdoorsMan then
        randNumber = 2;
    end
    if ZombRand(randNumber) == 0 then
        currentCampfire.fireLvl = 2;
        camping.changeFireLvl(currentCampfire);
    else
        -- fail ? Maybe the wood kit will broke...
        if ZombRand(randNumber) == 0 then
            player:Say("I broke my kindling...");
            player:getInventory():Remove("FireWoodKit");
        else
            player:Say("Crap, I fail...");
        end
    end
end

-- The Doors FTW ! :)
camping.lightMyFire = function(campfire, player)
    local lighter = player:getInventory():FindAndReturn("Lighter");
    lighter:Use();
    campfire.fireLvl = 2;
    camping.changeFireLvl(campfire);
end

-- edit the sprite according to the fire lvl
camping.changeFireLvl = function(campFire)
    if campFire.gridSquare then
        local previousCont = campFire.tile:getItemContainer() or ItemContainer.new();
        camping.removeTileFromGrid(campFire.gridSquare);
        local tile = IsoObject.new(campFire.gridSquare, "TileThuztorFirePit_0", "Campfire");
        if(campFire.fireLvl == 1) then
            tile = IsoObject.new(campFire.gridSquare, "TileThuztorFirePitMedium_0", "Campfire");
        elseif(campFire.fireLvl == 2) then
            tile = IsoObject.new(campFire.gridSquare, "TileThuztorFirePitBig_0", "Campfire");
            getSoundManager():PlayWorldSound("campfire", false, campFire.gridSquare, 0, 10, 1, true);
        end
        campFire.tile = tile;
        campFire.tile:setOutlineOnMouseover(true);
        campFire.tile:setContainer(previousCont);
        campFire.gridSquare:AddTileObject(tile);
        camping.saveData(campFire);
    end
end

-- add petrol (from petrol can) over the campfire
camping.addPetrol = function(campfire, player)
    local petrolCan = player:getInventory():FindAndReturn("PetrolCan");
    petrolCan:Use();
    campfire.hasPetrol = true;
    camping.saveData(campfire);
end

-- add a campfire to the ground
camping.addCampfire = function(grid)
    local id = #camping.campfires + 1;
    local newCampFire = {};
    local tile = {};
    if grid then
        tile = IsoObject.new(grid, "TileThuztorFirePit_0", "Campfire");
        grid:AddTileObject(tile);
        newCampFire.tile = tile;
        newCampFire.tile:setOutlineOnMouseover(true);
        newCampFire.tile:setContainer(ItemContainer.new());
        newCampFire.gridSquare = grid;
        newCampFire.x = grid:getX();
        newCampFire.y = grid:getY();
        newCampFire.z = grid:getZ();
        newCampFire.addTile = "false";
    else
        newCampFire.addTile = "true";
    end
    --tile:AttachAnim( "Smoke", "01", 4, IsoFireManager.SmokeAnimDelay, 0, 12, true, 0, false, 0.7f,IsoFireManager.SmokeTintMod );
    --tile:AttachAnim( "Fire", "01", 4, IsoFireManager.FireAnimDelay, -16, -72, true, 0, false, 0.7f,IsoFireManager.FireTintMod );
    newCampFire.id = id;
    newCampFire.fireLvl = 0;
    newCampFire.hasPetrol = false;
    table.insert(camping.campfires, id, newCampFire);
    camping.saveData(newCampFire);
    return newCampFire;
end

-- add a tent to the ground
camping.addTent = function(grid)
    local id = #camping.tents + 1;
    local newTent = {};
    if grid then
        grid:AddTileObject(IsoObject.new(grid, "TileIndieStoneTentFrontLeft", "Tent"));
        newTent.gridSquare = grid;
        newTent.x = grid:getX();
        newTent.y = grid:getY();
        newTent.z = grid:getZ();
        newTent.addTile = "false";
    else
        newTent.addTile = "true";
    end
    newTent.id = id;
    table.insert(camping.tents, id, newTent);
    camping.saveData(nil, newTent);
    return newTent;
end

-- remove a tent
camping.removeTent = function(tent)
    -- we start to remove it from our tent list (camping.tents)
    local tentNew = {};
    for iN,vN in pairs(camping.tents) do
        if(iN ~= tent.id) then
            tentNew[iN] = vN;
        end
    end
    camping.tents = tentNew;
    -- then remove it physically from the ground
    camping.removeTileFromGrid(tent.gridSquare);
    -- we notice into our modata that we don't have a tent here anymore
    camping.playerData["tent:" .. tent.id .. ":x"] = -1;
    -- we give back the tent kit to the player
    camping.player:getInventory():AddItem("camping.CampingTentKit");
end

-- remove a camp fire
camping.removeCampfire = function(campfire)
    -- we start to remove it from our campfire list (camping.campfires)
    local campfireNew = {};
    for iN,vN in pairs(camping.campfires) do
        if(iN ~= campfire.id) then
            campfireNew[iN] = vN;
        end
    end
    camping.campfires = campfireNew;
    -- then remove it physically from the ground
    camping.removeTileFromGrid(campfire.gridSquare);
    -- we notice into our modata that we don't have a campfire here anymore
    camping.playerData["campfire:" .. campfire.id .. ":x"] = -1;
    -- we give back the campfire kit to the player
    camping.player:getInventory():AddItem("camping.CampfireKit");
end

-- return the campfire on the gridSquare the player is standing on
-- or from the gridsquare in parameter (if from context menu for example)
camping.getCurrentCampfire = function(square)
    if not square then
        return nil;
    end
    for iCur,vCur in pairs(camping.campfires) do
        -- we test if the x,y,z of our currentGridSquare exist in the list of the campfires tile list
        if vCur.gridSquare and (vCur.gridSquare:getX() == square:getX() and vCur.gridSquare:getY() == square:getY() and vCur.gridSquare:getZ() == square:getZ()) then
            return vCur;
        end
    end
    return nil;
end

-- return the tent on the gridSquare the player is standing on
-- or from the gridsquare in parameter (if from context menu for example)
camping.getCurrentTent = function(grid)
    if not grid then
        return nil;
    end
    for iCur,vCur in pairs(camping.tents) do
        -- we test if the x,y,z of our currentGridSquare exist in the list of the tents tile list
        if vCur.gridSquare and (vCur.gridSquare:getX() == grid:getX() and vCur.gridSquare:getY() == grid:getY() and vCur.gridSquare:getZ() == grid:getZ()) then
            return vCur;
        end
    end
    return nil;
end

-- remove the campfire or tent (sprite) from the grid
camping.removeTileFromGrid = function(grid)
    for i,v in pairs(grid:getLuaTileObjectList()) do
        if luautils.stringStarts(v:getObjectName(), "Campfire") then
            grid:RemoveTileObject(v);
        elseif luautils.stringStarts(v:getObjectName(), "Tent") then
            grid:RemoveTileObject(v);
        end
    end
end

camping.saveData = function(camp, tent)
    if(camp ~= nil) then
        if camp.gridSquare then
            camping.playerData["campfire:" .. camp.id .. ":x"] = camp.gridSquare:getX();
            camping.playerData["campfire:" .. camp.id .. ":y"] = camp.gridSquare:getY();
            camping.playerData["campfire:" .. camp.id .. ":z"] = camp.gridSquare:getZ();
        end
        camping.playerData["campfire:" .. camp.id .. ":fireLvl"] = camp.fireLvl;
        camping.playerData["campfire:" .. camp.id .. ":hasPetrol"] = camp.hasPetrol;
        camping.playerData["campfire:" .. camp.id .. ":id"] = camp.id;
        camping.playerData["campfire:" .. camp.id .. ":addTile"] = camp.addTile;
        camping.saveItem(camp);
    end
    if(tent ~= nil) then
        if tent.gridSquare then
            camping.playerData["tent:" .. tent.id .. ":x"] = tent.gridSquare:getX();
            camping.playerData["tent:" .. tent.id .. ":y"] = tent.gridSquare:getY();
            camping.playerData["tent:" .. tent.id .. ":z"] = tent.gridSquare:getZ();
        end
        camping.playerData["tent:" .. tent.id .. ":id"] = tent.id;
        camping.playerData["tent:" .. tent.id .. ":addTile"] = tent.addTile;
    end
end

-- load all our tent and campfire
camping.loadDatas = function()
    camping.player = getPlayer();
    camping.playerData = gameTime:getModData();
    local sec = math.floor(gameTime:getTimeOfDay() * 3600);
    camping.previousHour = math.floor(sec / 3600);
    camping.campfireXp = camping.playerData["campfireXp"] or 0;
    -- first we check in our table PlayerData all the thing starting with "campfire:" because they are my saving grid system
    -- with that we gonna make an unique array with the id of the index after campfire: (one index per campfire)
    local indexes = {};
    -- load our campfire
    for iPData,vPData in pairs(camping.playerData) do
        for index in string.gmatch(iPData, "^campfire:(.+):") do
            if tonumber(index) then
                if indexes[tonumber(index)] == nil then
                    indexes[tonumber(index)] = index;
                end
            end
        end
    end
    -- now we fetch our indexes array to get all our grid information (x,y,z etc.)
    for ind,var in ipairs(indexes) do
        local x = camping.playerData["campfire:" .. ind .. ":x"];
        -- if it's -1 it's because we have remove the tile, but I can't find a way to remove infos from the playerData...
        if(x > -1) then
            local y = camping.playerData["campfire:" .. ind .. ":y"];
            local z = camping.playerData["campfire:" .. ind .. ":z"];
            local grid = getWorld():getCell():getGridSquare(x, y, z);
            local fireLvl = camping.playerData["campfire:" .. ind .. ":fireLvl"];
            local hasPetrol = camping.playerData["campfire:" .. ind .. ":hasPetrol"];
            local newcampFire = camping.addCampfire(grid);
            if not newcampFire.gridSquare then
--~                 print("no grid " .. x .. " " .. y);
                newcampFire.x = x;
                newcampFire.y = y;
                newcampFire.z = z;
            end
            newcampFire.fireLvl = fireLvl;
            newcampFire.hasPetrol = hasPetrol;
            camping.changeFireLvl(newcampFire);
            camping.loadItem(newcampFire);
        end
    end
    -- load our tents
    indexes = {};
    for iPData,vPData in pairs(camping.playerData) do
        for index in string.gmatch(iPData, "^tent:(.+):") do
            if tonumber(index) then
                if indexes[tonumber(index)] == nil then
                    indexes[tonumber(index)] = index;
                end
            end
        end
    end
    -- now we fetch our indexes array to get all our grid information (x,y,z etc.)
    for ind,var in ipairs(indexes) do
        local x = camping.playerData["tent:" .. ind .. ":x"];
        -- if it's -1 it's because we have remove the tile, but I can't find a way to remove infos from the playerData...
        if x > -1 then
            local y = camping.playerData["tent:" .. ind .. ":y"];
            local z = camping.playerData["tent:" .. ind .. ":z"];
            local grid = getWorld():getCell():getGridSquare(x, y, z);
            local newTent = camping.addTent(grid);
            if not newTent.gridSquare then
                newTent.x = x;
                newTent.y = y;
                newTent.z = z;
            end
        end
    end
end

-- we lower by 1 the firelvl (every 3 hours if no more wood)
camping.lowerFirelvl = function()
    for iCamp, vCamp in pairs(camping.campfires) do
        if(vCamp.fireLvl > 0) then
            vCamp.fireLvl = vCamp.fireLvl - 1;
            camping.changeFireLvl(vCamp);
        end
    end
end

-- every tick we gonna check things
camping.checkCamping = function()
    if getCore():isDedicated() then return end
    -- maybe we have to wake up if we are sleeping in a tent !
    if(camping.player:isAsleep() and camping.forcedSleep) then
        if(camping.player:getStats():getFatigue() == 0) then
            camping.player:setAsleep(false);
            camping.forcedSleep = false;
        end
    end
    camping.tick = camping.tick + 1;
    -- 30 ticks ~= 1s
    if(camping.tick == 60) then
        local sec = math.floor(gameTime:getTimeOfDay() * 3600);
        local currentHour = math.floor(sec / 3600);
        -- an hour as passed
        if(currentHour ~= camping.previousHour) then
            camping.previousHour = currentHour;
            camping.hourElapsed = camping.hourElapsed + 1;
            -- every 3 hours elapsed, we lower by 1 the fire lvl
            if(camping.hourElapsed == 3) then
                camping.lowerFirelvl();
                camping.hourElapsed = 0;
            end
        end
        camping.tick = 0;
        -- we search in all our firecamp if they are food to cook
        for iCamp, vCamp in pairs(camping.campfires) do
            -- if it's raining, we set the firelvl to 0
            if RainManager.isRaining() and vCamp.fireLvl > 0 then
                vCamp.fireLvl = 0;
                camping.changeFireLvl(vCamp);
            end
            -- add fire sound around the campfire
            if vCamp.fireLvl > 0 then
                --getSoundManager():PlayWorldSound("campfire", false, vCamp.gridSquare, 0, 10, 1, true);
            end
            if vCamp.tile and vCamp.gridSquare and vCamp.tile:getItemContainer():getItems() ~= nil and vCamp.fireLvl > 0 then
                for i = 0, vCamp.tile:getItemContainer():getItems():size() - 1 do
                    local vItem = vCamp.tile:getItemContainer():getItems():get(i);
                    if luautils.stringStarts(vItem:toString(), "zombie.inventory.types.Food") then
                        -- if food is already cooked, we gonna set the cooking minute = time to cook it
                        if vItem:getLastCookMinute() == 0 and vItem:isCooked() then
                            vItem:setLastCookMinute(vItem:getMinutesToCook());
                        end
                        if not vItem:isBurnt() then
                            -- fireLvl = 2 (great fire) : cooking time normal (1s = 1minute)
                            -- fireLvl = 1, we gonna up 1 time on 2 the cooking time.
                            if vCamp.fireLvl == 2 or camping.upHeatOk then
                                vItem:setLastCookMinute(vItem:getLastCookMinute() + 1);
                                vItem:setHeat(vItem:getHeat() + 0.09);
                                if vItem:getHeat() > 2 then
                                    vItem:setHeat(2);
                                end
                                camping.isCooked(vItem);
                                camping.isBurnt(vItem);
                                vItem:update();
                                camping.upHeatOk = false;
                            else
                                camping.upHeatOk = true;
                            end
                        end
                    -- if we try to add wood to our fire with woodenPlank
                    elseif (vItem:getName() == "Wooden Plank" or vItem:getName() == "Log") and vCamp.fireLvl < 2 then
                        vCamp.fireLvl = vCamp.fireLvl + 1;
                        vCamp.tile:getItemContainer():Remove(vItem);
                        camping.changeFireLvl(vCamp);
                        camping.hourElapsed = 0;
                    elseif vItem:getCategory() == "Literature" and vCamp.fireLvl < 2 then
                        vCamp.fireLvl = vCamp.fireLvl + 1;
                        vCamp.tile:getItemContainer():Remove(vItem);
                        camping.changeFireLvl(vCamp);
                        camping.hourElapsed = camping.hourElapsed - 1;
                        if camping.hourElapsed < 0 then
                            camping.hourElapsed = 0;
                        end
                    -- if we try to stop our fire with water
                    -- the waterSource must be not empty (that's why I test the usedDelta)
                    elseif vItem:isWaterSource() and math.floor(vItem:getUsedDelta()/vItem:getUseDelta()) > 0 then
                        vCamp.fireLvl = 0;
                        camping.changeFireLvl(vCamp);
                        vCamp.hasPetrol = false;
                        vItem:Use();
                        camping.hourElapsed = 0;
                    end
                end
            end
            camping.saveItem(vCamp);
        end
    end
end

-- sleep into the tent
camping.sleep = function()
    camping.player:setAsleep(true);
    camping.forcedSleep = true;
end

-- attract the zombie to the campfire and warm the player
camping.nearCamp = function(delay)
    local playerSquare = camping.player:getCurrentSquare();
    local findCloseCampfire = false;
    for iCamp, vCamp in pairs(camping.campfires) do
        -- if campfire is burning (and still there, I mean not destroy because of streaming)
        if vCamp.fireLvl > 0 and vCamp.addTile == "false" then
            -- zombie are attracted 10 from the 10 next tile if fireLvl is at 1, or 20 if it's at 2
            local squareAround = luautils.getNextTiles(getWorld():getCell(), vCamp.gridSquare, vCamp.fireLvl * 10);
            for u,j in pairs(squareAround) do
                for k,l in pairs(j:getLuaMovingObjectList()) do
                    if luautils.stringStarts(l:toString(), "zombie.characters.IsoZombie") then
                        l:PathTo(vCamp.gridSquare:getX(), vCamp.gridSquare:getY(), vCamp.gridSquare:getZ(), false, delay);
                    end
                end
            end
        end
        for i,vPlayer in IsoPlayer.getPlayers() do
            -- warm the player if he's less than 3 tile from the fire
            -- can up the maximum body T� only by 10 (so you can't set up 50 campfire and be always hot, even during high winter)
            if vPlayer:getCurrentSquare():DistTo(vCamp.gridSquare) <= 3 and season.temperatureModifier <= 10 then
                -- if the fire lvl of the campfire is 1, up by 2 the body t�, otherwise by 4
                season.temperatureModifier = season.temperatureModifier + (2 * vCamp.fireLvl);
                findCloseCampfire = true;
            end
            -- the player getting dry faster when around a campfire
            if vPlayer:getCurrentSquare():DistTo(vCamp.gridSquare) <= 3 then
                vPlayer:getBodyDamage():setWetness(vPlayer:getBodyDamage():getWetness() -  ((vPlayer:getBodyDamage():getWetnessReductionValue() * GameTime:getInstance():getMultiplier()) * vCamp.fireLvl));
            end
        end
    end
    -- if we haven't find any closed campfire, we nullify the temperatureModifier
    if not findCloseCampfire then
        season.temperatureModifier = 0;
    end
end

-- cook the food
camping.isCooked = function(food)
    if(not food:isCooked()) then
        if(food:getLastCookMinute() >= food:getMinutesToCook()) then
            food:setCooked(true);
        end
    end
end

-- burn the food
camping.isBurnt = function(food)
    if(not food:isBurnt()) then
        if(food:getLastCookMinute() >= food:getMinutesToBurn()) then
            food:setBurnt(true);
        end
    end
end

-- save all the items in the camp container
camping.saveItem = function(camp)
    if camp.tile and camp.gridSquare then
        for i = 0, camp.tile:getItemContainer():getItems():size() - 1 do
            local item = camp.tile:getItemContainer():getItems():get(i);
            camping.playerData["campfire:" .. camp.id .. ":item:" .. i] = item:getModule() .. "." .. item:getType();
        end
    end
end

-- load the item in the camp container
camping.loadItem = function(camp)
    local indexesItem = {};
    -- we fetch all the index for the item (like campfire:1:item:[1], etc.)
    for iPData,vPData in pairs(camping.playerData) do
        for index in string.gmatch(iPData, "campfire:" .. camp.id .. ":item:(.+)") do
            if(indexesItem[index] == nil) then
                indexesItem[index] = index;
            end
        end
    end
    -- then get all the items (items are save with module.name like Base.Carrots)
    for indItem,varItem in pairs(indexesItem) do
        if camping.playerData["campfire:" .. camp.id .. ":item:" .. indItem] then
            camp.tile:getContainer():AddItem(camping.playerData["campfire:" .. camp.id .. ":item:" .. indItem]);
            camping.playerData["campfire:" .. camp.id .. ":item:" .. indItem] = nil;
        end
    end
end


camping.reuseGridsquare = function(sq)
--~     print("grid : " .. sq:getX() .. " " .. sq:getY() .. " is reused");
    for i,tent in pairs(camping.tents) do
        if tent.x == sq:getX() and tent.y == sq:getY() and tent.z == sq:getZ() then
--~             print("FOUND A TENT REUSE : " .. tent.x .. " " .. tent.y);
            tent.addTile = "true";
            tent.gridSquare = nil;
            camping.saveData(nil, tent);
        end
    end
    for i,campfire in pairs(camping.campfires) do
        if campfire.x == sq:getX() and campfire.y == sq:getY() and campfire.z == sq:getZ() then
--~             print("FOUND A CAMPFIRE REUSE : " .. campfire.x .. " " .. campfire.y);
            campfire.addTile = "true";
            campfire.gridSquare = nil;
            camping.saveData(campfire, nil);
        end
    end
end

camping.loadGridsquare = function(sq)
    for i,tent in pairs(camping.tents) do
        if tent.x == sq:getX() and tent.y == sq:getY() and tent.z == sq:getZ() then
            if tent.addTile == "true" then
--~                 print("FOUND A TENT LOADED : " .. tent.x .. " " .. tent.y);
                tent.addTile = "false";
                tent.gridSquare = sq;
                local tile = IsoObject.new(sq, "TileIndieStoneTentFrontLeft", "Tent");
                sq:AddTileObject(tile);
                camping.saveData(nil, tent);
                break;
            end
        end
    end
    for i,campfire in pairs(camping.campfires) do
        if campfire.x == sq:getX() and campfire.y == sq:getY() and campfire.z == sq:getZ() then
--~             print("FOUND A CAMPFIRE LOADED : " .. campfire.x .. " " .. campfire.y);
            if campfire.addTile == "true" then
                campfire.addTile = "false";
                local tile = IsoObject.new(sq, "TileThuztorFirePit_0", "Campfire");
                campfire.gridSquare = sq;
                sq:AddTileObject(tile);
                campfire.tile = tile;
                campfire.tile:setOutlineOnMouseover(true);
                campfire.tile:setContainer(ItemContainer.new());
                camping.changeFireLvl(campfire);
                -- now load all the item
                camping.loadItem(campfire);
                camping.saveData(campfire, nil);
                break;
            end
        end
    end
end

camping.attractZed = function()
    camping.nearCamp(0);
end

Events.EveryTenMinutes.Add(camping.attractZed);

Events.OnTick.Add(camping.checkCamping);

Events.OnGameStart.Add(camping.loadDatas);

Events.ReuseGridsquare.Add(camping.reuseGridsquare);

Events.LoadGridsquare.Add(camping.loadGridsquare);

 
  • Fixed shader issue stopping a bunch of people running the game.
  • Lowered zombie numbers (seems something's gone amiss there)
  • Fixed food name.
  • Removed the number of read page in the name of the book (now it's only in the tooltip).
  • You can now fast forward when you read a skill book and still have the multiplier.
  • Removed some unintended output console message.
  • When you craft, the crafted item will have the condition of the required item, same for age/rotten stuff.
  • Tweaked the crawler fight a bit, they now have a chance to miss you while attacking, and the fighting will be easier.
  • Lot of lua stuff (see Lua request thread).
  • Some code improvement.
  • Fix : The torch/light source won't be used if they are turned off.
  • No more "running on the spot" zombies.
  • Can't push crawler with a weapon no more.
  • Crawler won't try to break window/door (thump) no more.
  •  
Link to comment
Share on other sites

 

I like 100%!!!! Looking forward to sheet ropes/ water barrels. Long live Lemmy!!!!

 

Those things are already in, any problem with them ? :(

 

 

There was an issue in 2.9.9.11 where using a sheetrope would kill you even though jumping from that height wouldn't & placing a sheetrope wouldn't consume the nail you needed to place it.... Also I think water barrels were listed in furniture so ppl were having problems finding them

Link to comment
Share on other sites

 

 

I like 100%!!!! Looking forward to sheet ropes/ water barrels. Long live Lemmy!!!!

 

Those things are already in, any problem with them ? :(

 

 

Before I download & take a look, there was an issue in 2.9.9.11 where using a sheetrope would kill you even though jumping from that height wouldn't & placing a sheetrope wouldn't consume the nail you needed to place it.... Also I think water barrels were listed in furniture so ppl were having problems finding them

 

 

Sheet rope instadeath seems already fixed in 2.9.9.13

Link to comment
Share on other sites

 

 

 

I like 100%!!!! Looking forward to sheet ropes/ water barrels. Long live Lemmy!!!!

 

Those things are already in, any problem with them ? :(

 

 

Before I download & take a look, there was an issue in 2.9.9.11 where using a sheetrope would kill you even though jumping from that height wouldn't & placing a sheetrope wouldn't consume the nail you needed to place it.... Also I think water barrels were listed in furniture so ppl were having problems finding them

 

 

Sheet rope instadeath seems already fixed in 2.9.9.13

 

 

Nice :D

Downloading now.....

Link to comment
Share on other sites

Wich Skills/Bugs ?

 

Also : edited OP with cool stuff :D

 

Does that mean no more making a nailed bat with a broken one now?

 

Looking forward to the reduced zombie numbers. Seems theres ALOT of them at the moment :P

 

I seen that on your stream, that was well amusing haha

Link to comment
Share on other sites

Hi ! My first post here, I just want you guys to know, this game is really awesome, you guys are working hard on it and like a lot of other players, I appreciate it !

During my last game I found a small bug, not really a big problem, but I wanted to explain it in case you are not aware of that already.

 

I was trying to dig in the ground, but the ghost image that normally shows dug dirt was replaced by a wooden crate :shock: ... I found out that if you press ''r'' one time or 2, it just disappears/comeback ... well I took a screenshot but I cant find how to post it :unsure:

 

Anyway Hope it helps you a bit !

Link to comment
Share on other sites

wait a minute  v 2.9.9.14?

isn't the latest on desura 2.9.9.10:(?

 

Be VERY careful speider

 

New rule, ANYONE who complains about a version number in future gets instabanned. Sick to the back TEETH of it.  :P

 

In short, no. The version numbers are too long as it is. I tried to shorten them so we could have more leeway, since 3.0 is the NPC build, but got nothing but shit for it because I tried to sneak it back a bit so I could shorten it, so this is the best we can do at the moment.

 

 

In short, GODDAMN why is everyone SO OBSESSED with what the version number is????

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...