Hovercrafts


Speed across land and water in your own personal hovercraft. 2 versions, plus 2 more with the mod 'Laser Tanks'.

Content
2 years ago
0.16 - 1.1
64.3K
Transportation

b [Fixed]Water becomes walkable

5 years ago

Kind of defeats the point of having a hovercraft, but by enabling this mod water/deepwater/etc already becomes walkable by players, the bugs then become trivial to kill. ^.^;

5 years ago

I will look into it this evening. Testing a moment ago I didn't have the same problem.

5 years ago

It seems to happen in data-final-fixes.lua starting at line 6:

for k,waterTiles in pairs({"water","water-green","deepwater","deepwater-green"}) do
        if data.raw.tile[waterTiles] then
                local mask = data.raw.tile[waterTiles].collision_mask
                for i=#mask,1,-1 do
                        if mask[i] == "player-layer" then         -- only change if not already altered by another mod
                                mask[i] = "layer-12"
                        end
                end
        end
end
5 years ago
(updated 5 years ago)

I have tried everything I can think of to recreate your issue. This includes completely deleting the game files both in my Steam folder and appdata folder. I still have no issue with being able to walk on water. I will again take a look at it come Saturday to see if I can prevent the issue nonetheless.

I apologize for the issue and the delay in resolving it. It is just a very busy time for me at the moment so I am not able to focus as much on it as I would like at the moment. I do hope to have it resolved shortly after I get back from out of town trip next week.

Just to double check. Are you running the same mod list you included in your last discussion thread? If so then the mod, Canal Builder, does enable "swimming" which is essentially walking on water at a much slower pace. Try disabling that mod to see if you are still able to walk on water.

5 years ago

Just to double check. Are you running the same mod list you included in your last discussion thread? If so then the mod, Canal Builder, does enable "swimming" which is essentially walking on water at a much slower pace. Try disabling that mod to see if you are still able to walk on water.

Same mod set as listed previously, the server is only updated once a week, next update should be tomorrow evening. The Hovercraft mod is not installed right now due to this issue. The Canal Builder mod does indeed make shallow water walkable and that is working properly (with biters getting around walls at those points as expected), and deep water is not walkable. The only difference with the current mod set now and before is hovercraft is not enabled.

For note, of all mods the only reference to layer-12 are:

╰─➤  grep -nR 'layer-12' *                        
Hovercrafts_0.17.02/data-final-fixes.lua:11:                            mask[i] = "layer-12"
Hovercrafts_0.17.02/data-final-fixes.lua:25:                    data.raw.car[k].collision_mask = {"player-layer","train-layer","layer-12"}
Hovercrafts_0.17.02/data-final-fixes.lua:27:                    data.raw.car[k].collision_mask[#mask+1] = "layer-12"
Hovercrafts_0.17.02/data-final-fixes.lua:39:                    data.raw.unit[k].collision_mask = {"player-layer","train-layer","layer-12"}
Hovercrafts_0.17.02/data-final-fixes.lua:41:                    data.raw.unit[k].collision_mask[#mask+1] = "layer-12"
Hovercrafts_0.17.02/prototypes/hovercraft.lua:6:data.raw.player.player.collision_mask = {"player-layer","train-layer","consider-tile-transitions","layer-12"}

And the references to deepwater are:

╰─➤  grep -nR 'deepwater' *                    
AbandonedRuins_0.2.4/mediumRuins.lua:6:            if surface.get_tile(x, y).name == "water" or surface.get_tile(x, y).name == "deepwater" then
AbandonedRuins_0.2.4/largeRuins.lua:5:            if surface.get_tile(x, y).name == "water" or surface.get_tile(x, y).name == "deepwater" then
AbandonedRuins_0.2.4/smallRuins.lua:6:            if surface.get_tile(x, y).name == "water" or surface.get_tile(x, y).name == "deepwater" then
alien-biomes_0.4.7/data-final-fixes.lua:134:  if tile.name == "water" or tile.name == "deepwater" or tile.name == "water-shallow" or tile.name == "water-mud" then
alien-biomes_0.4.7/data-final-fixes.lua:227:  remove_tile("deepwater-green")
alien-biomes_0.4.7/data-final-fixes.lua:258:      "out-of-map", "deepwater", "deepwater-green", "water", "water-green", "water-shallow", "water-mud", "grass-1",
alien-biomes_0.4.7/data-final-fixes.lua:361:  local exclusions = {"out-of-map", "water","deepwater","water-green","deepwater-green", "water-shallow", "water-mud", "grass-1", "landfill"}
alien-biomes_0.4.7/data-final-fixes.lua:384:  data.raw.tile["deepwater"].layer = 2
alien-biomes_0.4.7/data-final-fixes.lua:386:  if data.raw.tile["deepwater-green"] then data.raw.tile["deepwater-green"].layer = 2 end
alien-biomes_0.4.7/prototypes/biome/biomes.lua:384:    if _ ~= "water" and _ ~= "deepwater" then
CanalBuilder17_0.0.1/control.lua:4:local isWaterTile = {["water"]=true,["deepwater"]=true}
CanalBuilder17_0.0.1/control.lua:21:            if surface.count_tiles_filtered{area = area, name = {"water","deepwater"}, limit = 25} --+
CanalBuilder17_0.0.1/control.lua:22:                    --surface.count_tiles_filtered{area = area, name = "deepwater", limit = 25} 
cargo-ships_0.0.37/control.lua:101:                             table.insert(old_tiles, {name = tile.old_tile.name or "deepwater", position = tile.position})
cargo-ships_0.0.37/control.lua:258:             deep_tiles = game.surfaces[1].count_tiles_filtered{area=e.area,name={"water","water-green","deepwater","deepwater-green"}}
cargo-ships_0.0.37/control.lua:260:             deep_tiles = game.surfaces[1].count_tiles_filtered{area=e.area, name = "deepwater"}
Dectorio_0.9.10/config.lua:138:DECT.CONFIG.BASE_WATER_TILES = {"water", "deepwater", "water-green", "deepwater-green"}
Dectorio_0.9.10/migrations/0.8.6.lua:12:                        rec["dect-base-deepwater"].enabled = true
Dectorio_0.9.10/migrations/0.8.6.lua:19:                        if rec["dect-base-deepwater-green"] then
Dectorio_0.9.10/migrations/0.8.6.lua:20:                                rec["dect-base-deepwater-green"].enabled = true
Dectorio_0.9.10/prototypes/third-party/config.lua:10:   DECT.CONFIG.BASE_WATER_TILES = {"water", "deepwater"}
FARL_3.1.4/FARL.lua:919:            local water_tiles = {water = true, deepwater = true, ['water-shallow'] = true, ['water-mud'] = true}
FARL_3.1.4/FARL.lua:925:                        if tileName ~= "deepwater" then
FARL_3.1.4/FARL.lua:1008:        local water_tiles = {water = true, deepwater = true, ['water-shallow'] = true, ['water-mud'] = true}
FARL_3.1.4/FARL.lua:1011:                if tileName ~= "deepwater" then
Hovercrafts_0.17.02/data-final-fixes.lua:6:for k,waterTiles in pairs({"water","water-green","deepwater","deepwater-green"}) do
Hovercrafts_0.17.02/control.lua:5:local isWaterTile = {["water"]=true,["deepwater"]=true}
Hovercrafts_0.17.02/control.lua:28:                     surface.count_tiles_filtered{area = area, name = "deepwater", limit = 25} >= 25
Natural_Evolution_Enemies_0.17.8/control.lua:232:  ["deepwater"] = true,
Natural_Evolution_Enemies_0.17.8/control.lua:233:  ["deepwater-green"] = true,
Rampant_0.17.14/tests.lua:332:      color = "deepwater"
Rampant_0.17.14/tests.lua:348:      color = "deepwater"
Rampant_0.17.14/tests.lua:364:      color = "deepwater"
Rampant_0.17.14/libs/Constants.lua:38:constants.WATER_TILE_NAMES = { "water", "deepwater", "water-green", "deepwater-green" }
Raven_0.1.4/control.lua:49:                             if tilename == "deepwater" or tilename == "water" or tilename == "water-green" or tilename == "deepwater-green" then
Raven_0.1.4/control.lua:56:                                                     if tilename == "deepwater" or tilename == "water" or tilename == "water-green" or tilename == "deepwater-green" then
Raven_0.1.4/control.lua:110:            if tilename == "deepwater" or tilename == "water" or tilename == "water-green" or tilename == "deepwater-green" then player.character.die() return end

If you want I can grab a save from the pack tomorrow and upload it so you can sync to it and see it, but likely it's one of the above mods that is causing this bad interaction. I'm quite curious as to which. ^.^;

5 years ago

Okay, I will take a look at it this evening and see if I can figure it out. I am still learning this all as I go, but I want to apologise for the inconvenience. I do hope to get this issue resolved so everyone can enjoy this mod as it is intended.

Thanks again for your patience and assistance as I work through this.

5 years ago

No worry, got home, uploaded a fresh save of the mod set, the server updated tonight to factorio 0.17.31 and the latest mods, so if you sync to this savegame you'll be updated as well, you'll need to grab the hovercraft mod (or just leave it in your mod directory enabled before-hand) and it should work. You'll probably need to disable angel's refining or aai industries until one or the other updates, I'm running a custom version of aai industries to work around an angel's refining bug, but you can grab the server version of that at https://overminddl1.com/Factorio/fixes/aai-industries_0.3.6.zip if you want to drop it in beforehand too. Save game is at: https://overminddl1.com/Factorio/saves/Testing4.zip

5 years ago

Tested it, adding hovercraft to that above save does indeed make deepwater walkable where it is not otherwise, so it's a good, if somewhat large, testcase. :-)

5 years ago

Okay, with your save and mod list installed I am able to swim in deep water. So my guess it is a conflict between a mod/s and hovercrafts. I tried using just the mods listed above that mention anything about deepwater to no avail.

So this may take some time for me to figure out and understand. It's a lot of mods to go through to find the one causing the problem.

5 years ago
(updated 5 years ago)

Binary search method perhaps, if I get time later I'll try, just removing half (other than this mod), test if it doesn't happen remove the other half and add half of the originally removed set back, if it still happens then remove half of the still remaining set, and repeat, a max of 8 restarts needed then, all will be significantly faster to restart then the full set... ^.^;

5 years ago

It is Bob's multiple characters and classes. The special classes specifically. If you pick the balanced class it changes nothing.

I'll look into a possible solution later this evening once I return home.

5 years ago

Ahh, I wonder if they walk via a different layer or something...

5 years ago

Okay, I've found a solution to the problem. He needs to add my version of Hovercrafts as an optional dependency and they will work together just fine. I will post it on the mod to request him to do so and leave it in his hands.

5 years ago

Awesome, thanks!

5 years ago

That was incredible to find, good work!

5 years ago

Thank you very much. I enjoyed the hunt, but hated it took me so long as I have been really busy the past month. I also wish I knew more to fix it on my end if possible.

I haven't received a response from the creator of the mod regarding my request for him to add the optional dependency. It is easy enough for one to do themselves if anyone would like me to explain it.

Thanks again for your support and I do hope y'all enjoy my version of hovercraft.

5 years ago
(updated 5 years ago)

Thanks to the help from, Bobingabout, I have resolved the conflict so there shouldn't be any issues with hovercraft, canelbuilder17, and bob's character classes.

5 years ago

You're awesome!! Thanks much for the followup!! :-)

New response