• Content Count

  • Joined

  • Last visited

 Content Type 




Klei Bug Tracker

Game Updates

Hot Lava Bug Reporter

Posts posted by Nycidian

  1. My mod adds the follow behaviour as the third action in everyone's brain which happens to be after the runaway behaviour.  If you insert it as the second element, it'll be higher priority than the runaway actions and they will prefer to follow you.  I just thought it was more entertaining the other way :-).

    I haven't really looked closely at what Xainfaith was doing but If I remember correctly he put the follow behavior first and the bunny was still running away when you got close to it however that's what he said, its possible it wasn't working like he thought it was.


    Anyway if he does not  get back to me with a week or so I'll be looking at it more closely, thank you for the imput

  2. Yes, it is.


    Well then while I appreciate the suggestion and I realize the hassle I'm going to continue with it even if no one finds it useful I have a couple of mods planned that will use the features so it will be nice for all of them and it is teaching me ton about lua which honestly is why I do any of this.


    I still would like to know if there are any other way to communicate between mods other than the global variables or events, just a name of a method so I knew where to look would be awesome.

  3. Why don't you just write it as an external mod, expose an API to be loaded by require() and let other mods optionally use it? This "one size fit" submod will only give you headaches, and in particular you'll have to keep the interface essentially frozen to avoid breaking backwards compatibility...

    Because if I understand what your suggesting that would require other mods to also have my mod loaded for it to work which them means those mod would require their down loaders to also download my mod for it to work.


    That is if I understand what your suggesting.

  4. This is off topic sorry malacath, though it seems your question was answered so I won't feel to bad about derailment.



    The method used for AManager really only works when you're dealing with mod(s) that you have total control of. When you're modifying things common to all mods, you should always attempt to make things as self-contained as possible so that they work regardless of how other mods try to do similar things.


    I'm asking this for my mod BTW. 


    Do you you think a more secure way rather than using global variable would be push and listen for event calls to communicate between the sub mods? It would be a bit more complicated but less likely to be messed with by other mods I would think.


    I just don't know of another way to communicate between mods other than events or the global variable.

  5. I just mean there has to be one mod which overrides IsCharacterUnlocked so that mod must be anabled no matter what. That would either mean everyone who wants to play with Waverly will also have to enable the additional mod or everyone who wants to play with, let's call him, Wilfred has to enable the Waverly mod whihc contains the override of IsCharacterUnlocked


    Actually there is a way to do that without overwriting you make a sub mod like I'm designing with AManager that only loads once no matter how many mods its in. 


    AManager currently can be placed in 100 different mods and it would only be present once ingame and since this in't a component it would actually be far easier to do as I had issues with components but sqeek helped me figure it out.

  6. What about this as a more universal solution/

    function ModPlayerProfile(PlayerProfile)    local oldIsCharacterUnlocked = PlayerProfile.IsCharacterUnlocked    function PlayerProfile:IsCharacterUnlocked(character)        local oldres = oldIsCharacterUnlocked(self, character)        if table.contains(LOCKEDMODCHARACTERLIST, character) and not self.persistdata.unlocked_characters[character] then            return false        end        return oldres    endendAddGlobalClassPostConstruct("playerprofile", "PlayerProfile", ModPlayerProfile)

    Then add any character you want locked into LOCKEDMODCHARACTERLIST


    And add any character you want to unlock to persistdata.unlocked_characters


    You then can use the same solution for all your mod characters or if you add multiple in a single mod and others could use the same solution.


    Just a thought.

  7. EDIT: Judging by the code Nycidian posted, you could add your custom character to the global CHARACTERLIST table to make it respect the character not being in the unlocked_characters table, but I'm not sure what side-effects that may have. I think the method in the OP is probably the cleanest.

    I looked at the variable CHARACTERLIST all it is is a simple array with the character prefab names so my guess is nothing bad would happen doing simply


    table.insert( CHARACTERLIST, "waverly")

  8. It being in the persistdata.unlocked_characters table would make it unlocked, not locked, and all mod characters are unlocked by default anyway (even if they're not in the unlocked_characters table) because of the third if check in the IsCharacterUnlocked() function.

    Malacath, looks like a perfectly acceptable method to me. If all mods used the same method, there would not be any conflicts.


    As i edited while you were replying


    To clarify, you would need to add your character to CHARACTERLIST by default and then add it to persistdata.unlocked_characters when it became unlocked.



    I'm pretty sure that would work without touching the function and would always be compatable with other mods as long as you just added to the tables and did not overwrite characters. Am I wrong?

    • Like 1

  9. So I've been doing this for the first time for the Waverly mod and I had a quite queasy feeling back then because I had to mess with the PlayerProfile. Now I'm getting in the position where I have to do it again and ideally I would like the two mods to be compatible and adjusted my code accordingly

    function ModPlayerProfile(PlayerProfile)    local oldIsCharacterUnlocked = PlayerProfile.IsCharacterUnlocked    function PlayerProfile:IsCharacterUnlocked(character)        local oldres = oldIsCharacterUnlocked(self, character)        if character == "waverly" and not self.persistdata.unlocked_characters[character] then            return false        end        return oldres    endendAddGlobalClassPostConstruct("playerprofile", "PlayerProfile", ModPlayerProfile)
    Assuming all mods would do it like this I think that it would work just fine but I'd really like an opinion of a good modder, or maybe two... hell the opinion of any modder coming by would be a great thing.

    Main reason I'm asking this is because I'm just not feeling to confident messing with things like the PlayerProfile


    So thanks to everyone considering to help me here  ^^


    Ok silly question why not just add waverly to persistdata.unlocked_characters?


    From the regular function it looks like all that would need to happen for the function to work like you want is for your character to be in that function  table

    function PlayerProfile:IsCharacterUnlocked(character)    if character == "wilson" then		return true    end        if self.persistdata.unlocked_characters[character] then        return true	end	if not table.contains(CHARACTERLIST, character) then		return true -- mod character	end	return falseend

    Edit: To clarify, you would need to add your character to CHARACTERLIST by default and then add it to persistdata.unlocked_characters when it became unlocked.

  10. Btw, have you seen Cheerios mod which basically makes it super easy to add the rabbit as a follower for you? Idk if you might've actually already done that, just wanted to let you know in case.


    I have not seen it but I know of it but Xain already has the follower part in the mod last I heard he was working on getting the rabbit not to run away from you when it was following you, and from comments about Cheerios mod in another thread apparently the rabbits have the same problem in his mod so its likely not all that helpful to us. Though if Xain does not show back up it might help me to understand whats going on if I have to take over that part of the code.

  11. Any news? Will this be uploaded to steam workshop once its done?


    When it gets to a decent stage yes it will be uploaded, as for progress Xainfaith ATM the moment is MIA but its only been a a week or so so I'm waiting to see if perhaps he just got super busy at work if he doesn't get back I'll take over what he was doing or find someone else as I had turned someone down for coding help recently as with me an Xain it seemed at the time we were fine.

  12. @Nycidian


    If you'd like to do something like the screenshot I posted, all I did was take the umbrella atlas (only the one in, since this was just a quick mock up for a screenshot), desaturate it, shift the colour curve down a bit and reduce the opacity (the game's "shadow thingies" have an opacity of 50%, but I left it at about 60% to preserve a few more details of the artwork).

    Isn't there a way to reduce opacity on the entire animation in the game? 

  13. This is based on a drawing by Willette:


    What do you think about giving her a recipe for a shadow umbrella? I'm not sure what its effects would be, but visually it suits her.



    I like it.


    There are two ways right now you can impact gruesomeness one is to directly increase/decrease it the other is you can impact the static luminosity which basically makes it darker or lighter than it already is.


    My thoughts would be a shadow umbrella would make it darker. So if you want a high amount of gruesomeness you would want a shadow umbrella during the day  or near a fire so you don't start naturally creeping up.


    I have been thinking about adding more items that affect the luminosity one already for a test is the garland and I thought about the straw hat making it effectively darker by a small amount but more items would be great.

  14. This looks amazing. Is anyone already doing the character quotes?

    I was going to start on those but so far no not really I've been putting it off because I'm lazy :-)


    If you want a go at them your welcome too just an FYI while some of the quotes will be the same, some of them will need to eventually change depending on gruesomeness. If you can get the base strings done for her we'll see if what strings we want to change if any and worry about that later however.


    Here is the base speech file with the changes that are necessary none of the actual string are correct save one but the variable names are all there including the minor changes.






  15. Well, just so you know, I was excluding the background loop of the hair-bow due to depth of field, which is why it's slightly higher than the foreground loop. Also, remember that, due to the idle animation, a split second difference can result in "misalignment issues" in a screenshot, when it normally wouldn't be the case.


    If your happy with it then its fine I think it definitely looks much better I still think its a bit long but that is just me.

    Btw, in case you missed it:


    Here is the updated version changing the direction of how the gruesome meter works it should hopefully illustrate to you why I wanted the background to be green as well.



    It will definitely need some testing as its likely I missed something.


    Edit: already found a bug with attacks


    Updated file:

  16. Do you mean this?


    I left it as is so it doesn't look out of place amongst the other badges.


    Also, I've been meaning to ask, is this happening to you?


    It looks like the sanity and grue badges are getting a double frame overlay that is slightly misaligned.

    I did men that but it needs to be there it just should be green as in this game green for the widgets means good and at 0 when I reverse the widget which i'm going to do 0 gruesomeness will mean men she is normal charlie so in a good state ( so green) which will be gradually covered up as she gets more gruesome ( ie bad).


    I'll look into the double  frames when I get a chance I have a guess as too why.


    As for the face


    I don't think the bobbing is why look at my picture I aligned both top and bottom this includes the bow yet still it was longer than the other head, and i'm not sure if that looks better as I would really need to see it in the game to get a good idea