FleurDuSoleil3 Posted August 19, 2019 Share Posted August 19, 2019 Hi, all. I took a break from modding for about a year, then decided to get back into it once I heard Hamlet was out. I tried to load up the WIP mod I was making, but have ran into some errors. I'm rusty, too, but trying to relearn everything. To begin with, my character functioned just fine last time I played the game - a year+ ago. If I attempt to load the character in Don't Starve (no compatibility boxes checked), I get this error: [00:00:43]: scripts/mainfunctions.lua(961,1) ...nt_starve/data/../mods/Bobbi/scripts/prefabs/bob.lua:177: attempt to index field 'moisture' (a nil value) Line 177 contains this: inst.components.moisture.maxMoistureRate = 1.25 I remember this worked just fine. All I did was make it so the character got wetter faster. The bob.lua is the prefab file for the custom character. If I attempt to load Don't Starve: Reign of Giants with the character (no compatibility boxes checked), I get the error: [00:01:11]: scripts/mainfunctions.lua(961,1) ...starve/data/../mods/Bobbi/scripts/prefabs/hassli.lua:221: variable 'MakePoisonableCharacter' is not declared That was a new one on me. So, I found and added MakePoisonableCharacter(inst) to line 221 of my prefab. The hassli.lua it is referring to is a copy of Chester called Hassli, and everything else seems identical between Chester and Hassli's prefabs. I get the same error when loading the new file with the MakePoisonableCharacter(inst) line added. If I attempt to load Shipwrecked... The mod is fine, so hooray for small mercies. If I attempt to load Hamlet (no compatibility boxes checked), I get this error: [00:01:22]: scripts/mainfunctions.lua(961,1) ...starve/data/../mods/Bobbi/scripts/prefabs/hassli.lua:229: calling 'CollidesWith' on bad self (number expected, got nil) I checked Chester, and collision was identical, but it did seem I had missed: inst.Physics:CollidesWith(COLLISION.WAVES) So, I added it to the Collision section. --print(" Collision") inst.Physics:SetCollisionGroup(COLLISION.CHARACTERS) inst.Physics:ClearCollisionMask() inst.Physics:CollidesWith(COLLISION.WORLD) [This is line 229] inst.Physics:CollidesWith(COLLISION.OBSTACLES) inst.Physics:CollidesWith(COLLISION.CHARACTERS) inst.Physics:CollidesWith(COLLISION.WAVES) But, when I attempted to load the mod again, I got the same error. I understand I did nothing to actually help the issue, but I have not noticed a value attached to line 229 in Chester's prefab. A lot of this I have the vague feeling is newbie stuff, but I simply can't remember. Haven't touched this sort of stuff in over a year. Hope someone can point me in the right direction. I'll attach the mod so anyone who is interested can have a dig through its guts. Bobbi.7z Link to comment Share on other sites More sharing options...
Ultroman Posted August 20, 2019 Share Posted August 20, 2019 It's all because of the vast differences between the DLCs. There is no moisture component in DS, only in RoG, SW and Hamlet. Same with the CollidesWith thing. chester.lua for DS only has these lines in it: inst.Physics:SetCollisionGroup(COLLISION.CHARACTERS) inst.Physics:ClearCollisionMask() inst.Physics:CollidesWith(COLLISION.WORLD) inst.Physics:CollidesWith(COLLISION.OBSTACLES) inst.Physics:CollidesWith(COLLISION.CHARACTERS) So, not the COLLISION.WAVES thing, because there are no waves in DS or RoG. And it's the same with MakePoisonableCharacter, which is only available in SW and Hamlet. If you want your character to be compatible with all different DLCs, you have to do some things only when the right DLCs are used. You can use the following code to produce boolean variables saying which DLCs are active, and then wrap the "offending" lines in appropriate if-statements. local _G = GLOBAL local IsRoG = _G.IsDLCEnabled(_G.REIGN_OF_GIANTS) local IsSW = _G.IsDLCEnabled(_G.CAPY_DLC) local IsHamlet = _G.IsDLCEnabled(_G.PORKLAND_DLC) Link to comment Share on other sites More sharing options...
FleurDuSoleil3 Posted August 20, 2019 Author Share Posted August 20, 2019 That'll be it. Been gone from this game too long. When I created the mod, I had ticked the 'compatible with so and so' boxes. Knew it would be something stupid. Thanks for that bit of code; that'll be canny helpful. I appreciate it. Link to comment Share on other sites More sharing options...
Ultroman Posted August 20, 2019 Share Posted August 20, 2019 You're welcome. Godspeed with your mod! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.