Jump to content

[Mod Release] Breakable Ice


Recommended Posts

I worked so hard on this mod and I've finally got it into a release candidate.

 

Note: This is a server only mod. Clients do not need to subscribe to this mod in order to gain benefit from a server running it.
 
Mod Notes:
Pond ice is now breakable during winter.
Ice will crystallize as the temperature gets colder and will melt as the temperature warms up.
Ice will endlessly crystallize during winter.
Fires will prevent ice from crystallizing as it keeps the temperature of the water above the crystallization point.
 
Ice can be destroyed or melted by the following methods:
Pickaxes will slowly break ice when worked.
Fires will slowly melt ice while lit.
Gunpowder will cause massive chunks of ice to break when used near ponds.
 
Estimation:
A single pond frozen for 7 days requires roughly 1 full day of a stage 4 fire in order to melt.
 
Recommendations:
I recommend using a combination of methods above to reduce the amount of effort it requires to break the ice.
 
 
Link:
 
 
Please provide any and all feedback about the mod either on Steam, Klei download page or in this topic. Thank you for reading and checking out the mod hope you enjoy it!
Edited by Kzisor
Link to comment
Share on other sites

@Jjmarco, I'd recommend testing it out in a few instances. Once don't harvest ice for several days into winter. The second constantly harvest ice from a few ponds. Third test it out using a fire pit. Let me know how each one fairs.

 

@DrSmugleaf, I'd test my mod first before nerfing sollyz's leveling. If players do not constantly break the ice the ice will continue to grow endlessly. 

Link to comment
Share on other sites

@Kzisor, only 5 days into winter without breaking a pond, I had to use 10 pickaxes to break the ice!

If I constantly harvest ice from few ponds, the ice breaks within 1-3 hits.

If I put a roaring fire pit next to one, the ice eventually melts, and doesn't reform whatsoever until the fire dies out.

 

I also noticed that if you break the ice while standing on the pond, you'll just hover over it, and will get shoved aside once you move a little.

Just a bit of a cosmetic quirk.

 

It also seems that c_spawned ponds don't follow the ice growing equation, and break in one hit no matter what.

I don't think that's a major problem though, but just letting you know in case you didn't.

Link to comment
Share on other sites

@Jjmarco, thank you for the amazing tests!

 

Yes ice grows endlessly meaning the longer you leave it to grow the more pickaxes/longer it takes fire to melt it. Gunpowder also works to help destroy layers of ice, that easter egg was found by star.

 

I'm not sure how exactly to handle that bug, but as it's cosmetic only I think it should be okay for now.

 

The bug about c_spawn seems strange as that is how I tested the mod for 3 weeks and they would always grow a lot of ice when left alone. I don't think it's that much of a deal breaker as only a few cases would use c_spawn to make ponds appear.

Link to comment
Share on other sites

@PeterA, sure. I'll explain it a little.

 

 

How I created this mod to be server only required:

I started by creating all the items to be only used by the server. This sounds like it's difficult, but in reality it wasn't. By using the following code I was able to determine whether the instance was the server or a client.

 

if not TheWorld.ismastersim then return inst end

 

If we were a client we would simply not proceed. I made sure that I altered nothing in the files that the client would need to know about. I did this by only modifying components and using proper API in order to address code relation to the games prefabs. This is simply making sure to use "AddPrefabPostInit" to modify existing prefabs. If we were to overwrite the prefabs then clients might need to know about the changes that we've made.

 

The next phase of working with a server only mod is inside the modinfo.lua file. Simply using the following code it allows clients to connect without worrying about downloading the mod.

 

all_clients_require_mod = false

client_only_mod = false

 

This is how I roughly made my mod a server only mod. If anyone has any questions feel free to contact me and I will answer as soon as I am able.

 

Regards,

~Kzisor/Ysovuka

Link to comment
Share on other sites

@Kzisor, I believe the key point of confusion about making it server-side only was that "break ice" seems like it would be a new action. But I'm guessing you just made ponds workable, which propagates the availability of actions through tags.

Edited by rezecib
Link to comment
Share on other sites

Update: Version 0.0.4

 

Change notes:

Ice crystal thickness will be decreased by half upon the start of summer.

 

Update: Version 0.0.3

 

Change notes:

Frogs and Mosquito's will no longer spawn while the pond is frozen.

Edited by Kzisor
Link to comment
Share on other sites

Hi,

It was fine but then crashed when I host a lan game. The crash didn't happen right away but when it approaches dusk.

 

Log:

[00:37:37]: [string "../mods/workshop-385979230/data/prefabs/pon..."]:276: attempt to call global 'ReturnChildren' (a nil value)
LUA ERROR stack traceback:
../mods/workshop-385979230/data/prefabs/pond.lua:276 in (field) ? (Lua) <273-280>
   inst = 100238 - pond (valid:true)
   isday = false
scripts/components/worldstate.lua:31 in (upvalue) SetVariable (Lua) <23-47>
   var = isday
   val = false
   togglename = day
   watchers = table: 0E2A9B60
   k = 100238 - pond (valid:true)
   v = table: 54688180
   i = 1
   fn = table: 54688298
scripts/components/worldstate.lua:64 in (local) fn (Lua) <62-67>
   src = 100021 - forest (valid:true)
   phase = dusk
scripts/entityscript.lua:877 in (method) PushEvent (Lua) <871-894>
   self (valid:true) =
      GUID = 100021
      Transform = Transform (0D5A3C78)
      inlimbo = false
      event_listening = table: 0E2B0C58
      Pathfinder = Pathfinder (0D5A3BD8)
      actioncomponents = table: 0E2B00C8
      worldstatewatching = table: 0E2A8BE8
      net = 100025 - world_network (valid:true)
      meta = table: 514D3558
      Map = Map (0D5A3C18)
      entity = Entity (50F89C60)
      minimap = 100022 - minimap (valid:true)
      prefab = forest
      updatecomponents = table: 0E2A6460
      GroundCreep = GroundCreep (0D5A3AB8)
      PostInit = function - scripts/prefabs/world.lua:118
      name = MISSING NAME
      persists = false
      OnRemoveEntity = function - scripts/prefabs/world.lua:133
      pendingtasks = table: 0E2B2B98
      event_listeners = table: 0E2B0E88
      hideminimap = false
      state = table: 0E2B0910
      ismastersim = true
      spawntime = 0
      WaveComponent = WaveComponent (0D5A4718)
      replica = table: 0E2B0460
      topology = table: 514D88A0
      components = table: 0E2B0280
      SoundEmitter = SoundEmitter (0D5A3B78)
   event = phasechanged
   data = dusk
   listeners = table: 0E2B0AA0
   entity = 100021 - forest (valid:true)
   fns = table: 0E2B0A28
   i = 1
   fn = function - scripts/components/worldstate.lua:62
scripts/components/clock.lua:242 in (method) OnUpdate (Lua) <176-262>
   self =
      OnSave = function - scripts/components/clock.lua:270
      inst = 100025 - world_network (valid:true)
      OnLoad = function - scripts/components/clock.lua:288
      LongUpdate = function - scripts/components/clock.lua:176
      OnUpdate = function - scripts/components/clock.lua:176
      GetDebugString = function - scripts/components/clock.lua:321
   dt = 0.033333335071802
   remainingtimeinphase = 149.94435831532
scripts/update.lua:151 in () ? (Lua) <118-180>
   dt = 0.033333335071802
   tick = 5400
   k = 100025
   v = 100025 - world_network (valid:true)
   cmp = table: 0E0D5DD0
 
Not sure if it's because of lan game, or other mods installed that may conflict or what.
Thanks.
Link to comment
Share on other sites

@SenL,

Thanks for the report. I'll get that fixed asap, it's not a mod conflict it's an authors lack of sleep when fixing it. 

 

Update: Version 0.0.6

 

Change Notes:

Fixed a crash that was caused by fixing a different crash.

Edited by Kzisor
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...