• Announcements

    • JoeW
    • JanH

      Rhymes with Play 153 - Oxygen Not Included: Outbreak Upgrade Launch Stream   08/23/2017


      This week on the Rhymes with Play Dev Cast, join us as we play, discuss, and answer questions about the incoming Outbreak Upgrade for Oxygen Not Included! As always, the live stream will be going live Thursday (August 24) at 3:30 PM Pacific / 10:30 PM UTC. Outbreak Upgrade is coming to Oxygen Not Included August 24th, 2017. More information: https://forums.kleientertainment.com/topic/81341-upgrade-imminent/ Where is it? 
      On our official Twitch Channel: https://www.twitch.tv/kleientertainment When is it?
      Twitch Stream Date: August 24, 2017
      3:30 PM PDT (Pacific Time)
      10:30 PM UTC (Coordinated Universal Time) Here is a handy tool you can use to figure out what time that means for you. Check out the stream announce thread for discussions!

MorickClive

Registered Users
  • Content count

    41
  • Joined

  • Last visited

Community Reputation

13 Good

About MorickClive

  • Rank
    Junior Member

Recent Profile Visitors

191 profile views
  1. I use to have considerable trouble with character art, if your character art isn't compiling - that might be all that's wrong, but it's enough to cause the mod to fail entirely: Could not find an asset matching anim/potatoboi.zip in any of the search paths. I used the extended character template to keep things predictable - avoid moving pivot points, just adjust the visual image (you maybe able to get away with change the resolution of the image; if I recall correctly). Sadly I found that many default methods of Spriter tend not to translate well to DS/DST, try to keep it as simple as editing images for this character template; for assets, limit rotational looping(will reset the collision for hover interaction) and alpha tweening, which in my experience haven't worked so smoothly.
  2. Action hover issue

    Sorry to bring this up again although it might be useful to others. I've not fixed it - but rigorously tested it, Spriter animations with full looping rotation seems to cause issue with the collision detection for the mouse/UI interaction. In addition to this, opacity does not tween either. Currently I'm testing with the free provided version, so just a warning to y'all. If anyone knows of any alternative methods of approach, I'm totally happy for any assistance - but my code isn't at fault; I've thoroughly analysed the differences, discrepancies and only found the issue is directly affect by the animation itself. I would have analysed AnimStates further if I could find it (to determine if I'm breaking any rules there), but all I've been able to find is the definable for SoundEmitter (debugsound.lua). Bleh; time to make a expanding/contracting portal I think (maybe something sand related).
  3. edit: whoops didn't see JohnWatson's reply - didn't load on my browser ^^' Could adjust the function through this hypothetically:
  4. Hi all, Having trouble with a teleporter component, from what I observe the action to "jump in" seems to cut off every time the animation of the object comes to an end. Most if not all animations are handled by a custom stategraph and there is no disabling of the component mentioned in the file. This is just my observation however, the reality could be different. Visual of the object: As seen above, the object(Undefinable Void) is successfully highlighted but will lose focus/highlighting whilst being hovered over(both static and mobile cursors), it'll lose focus approximately every 1-2 seconds and return back to focus promptly after half a second. Object's function: The object allows a user to port to another rift location which occasionally moves location every "x" seconds (8 by testing default). The secondary rift never actually disappears or gets removed - only moves around and changes animation. The visual is a swirling effect (perhaps the white graphic is cutting out selection somehow?). Stategraph code Additional code can be provided on request for further investigation. I'll keep cracking at it for a solution myself but if anyone has encountered this or has a fix/method of approach, I'd appreciate any advice. ^^ Edit: disabling the animation looping and having it as a static graphic no longer incurs the problem - suggesting the animation looping process is at fault; but how does the default wormhole overcome this? (it's animated on being near and far)
  5. First you might want to start off with a staple build/mod an expand from there - keep at it and you should get some progress: As for editing the base files, you never do it directly - that will cause issues, but this function slots in functionality directly to existing assets; you'd only have to worry about it should another mod overwrite the values you are setting.
  6. Here, should work in theory: --- Mod Main AddPrefabPostInit("icestaff", function(inst) inst.components.finiteuses:SetMaxUses(X) -- you could also look into removing the component, though I haven't investigated that far. inst.components.weapon:SetOnAttack(nil) -- the function before basically handles sanity. inst.components.weapon:SetDamage(0) -- have some fun (default values set here) inst.components.weapon:SetRange(8, 10) end) Mod function as declared in "modutil.lua" from DST lua files; allows you to add additional conditions to existing prefabs post-initialisation. Can potentially cause conflicts with mods that may edit prefabs(editing shared spaces etc), I'd assume that whichever post init runs last will have dominance or "lasting impact / final say". ---- Might also be of interest to you (from an implementation of new objects point of view):
  7. I'd be interested to see if anyone has directly linked data from that function straight to a character (from what I can tell it's mod utility specific, so I assume it's for the mod initialise only), I have merely used it to adjust my character's mechanic by reading the function value from main. Sample: local Mad_enabled = GetModConfigData("Mad_CHK") -- if mad disabled if not Mad_enabled then AddPrefabPostInit("warrick", function(inst) inst.madness = 1 end) end I've tested the impact of the code via network and client - it all matches up even though inst.madness is network specific (past pristine/not world etc). Hope this helps some!
  8. Code for throwing fireball

    Without providing code, each character has it's own file that highlights custom functionality, Where to place my code: Generally a pointer: your character should have a named file in there should be a list of functions, try to find "master_postinit". Code for character functionality is usually stored "server side" so it is included in the "master_postinit" as opposed to "common_postinit" which is both server and client; you don't have to worry too much about this however. Think of master_postinit as your main function that lets you attach the important functions that work as part of your character. Components: Components are usually existing systems of functionality that allow characters to utilise specific pre-existing code structures that reflect abilities or capabilities. Generalised approach: First you need to consider how the combat system/component for unarmed combat. Every character shares common features that the player_common.lua file contains, in here you will find the line ":AddComponent("combat")" which I gather deals with unarmed combat based on the line ".combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)". You maybe able to manipulate the combat system to work like a weapon or you could attempt to set it so your character always defaults to using a custom weapon without equipment (unsure how this might be supported), I assume you've already found the staff file and see the components that a fire staff would use. You maybe able to test if you can straight up add the weapon code to the character with the component or possibly overwrite the combat system to act as though it were the fire staff instead. Further lua support - ( of which I myself also find handy) Coding isn't too bad to get into, but it often helps to have a platform to stress test logic and reinforce knowledge through testing(which is how I go about many different languages). If you'd like to master the syntax there are plenty of tutorials on lua, I'd say that even I get relatively confused when it comes to meta tables though (but they are often used in specific circumstances that most modders don't need to worry about). Try SciTE for testing theoretic code out, it's what I use: http://www.scintilla.org/SciTEDownload.html (download the respective "executable" version). All this might hopefully may help you hone in on implementing it if you're stuck atm.
  9. Hi all, not sure if anyone is aware or seen the code used. Does anyone know how to go about modifying the parameters for construction placements? I recall at one point the fling-o-matics use to prevent construction if another was within it's fling radius, this could really help me modify a composite structure I'm coding current. I appreciate any information or leads would be greatly appreciated!!
  10. Keep at it and good work! (nice blend in with the art style :D), progress with foreign systems in my experience has always come with some significant blocks - persistence is usually the key. If there's anything from my mod that can help you in any area I'd be happy to explain how it works or aid in the construction of a localised system for you.
  11. it's complaining about this line of code: if TheWorld.state.israining() = true and mitigates_rain = false then When comparing conditional checks you need to ensure you use the "==" comparison statement, It's an easy enough thing to overlook but remember when you state "=" you are assigning a value to a variable, if you are using ==, >=, <=, ~= then you are using a conditional check. -- Ternary function: Handy tip for conditional checking for variable results. If you ever test with print() on a "true" or "false" statement then be aware that print() will unlikely be able to print it out the boolean result, ternary functions can help you here. Anything after the "AND" statement is what happens when the condition is successfully triggered, this can include returning a result based on the condition or even triggering a specific function. (pseudo code) : -- logic examples var = (statement) AND "True string or value" OR "False string or value". print( (statement) AND "True string or value" OR "False string or value" ) -- code examples print ( true AND "It's true" OR nil) -- will print: "It's true" in the DST console my_int = 1 my_bool = my_int < 1 AND true OR false -- value of my_bool would be set -- false unless my_int reflects the initial condition differently
  12. Hi all, Just wanted to know if anyone knows the best way to implement in Transform:SetFourFaced() (which maybe applicable to :setTwoFaced() etc), I have a situation where I have (visually)angled structures that are spawned around a pivot point. Rotation needs to keep up to maintain the illusion each structure is angled towards the center (using different graphics based on the perceived angle). If you know any mod or such that expresses rotational dependent creatures or structures I'd also greatly appreciate it; I can correlate my own efforts with the engine and custom implementation then. Rotationally dependent object example: Beefalo.
  13. Custom Sanity Badge

    You might want to look at this for extracting the sanity badge into spriter, credits to Simplex: I've edited my own widget and then repackaged it for use as a meter but the image keeps failing me as seen below: After getting your asset complete you'd need to disable and hook in your widget in place of the sanity badge, that may need the AddClassPostConstruct() to add additional conditions to existing code files DST uses. I'm still unable to get my badge to fully work how I intended it, it's a tricky process and I'm still looking for assistance with anyone experienced in this field. You should only really need to worry about overwriting the sanity badge asset (so you should be okay), just make sure you set your character to have a tag that triggers the code uniquely for that character. The only mod I've seen to implement a working custom badge is the rick mod, but the way that's implemented is different from the way I've been trying to implement it (graphically at least). Found here: It's Miami Rick.
  14. Multi-part explanation coming up; sorry for length. ^^' General explanation Unlike normal glow berries and light/fern plants, the stalker_forest has special animations associated with the creation of each of it's own plants. In this regard they have unique prefabs to handle each that appear to grow and wither(both with animations attached). On creation the stalker plants will bloom and then exist for a few seconds before withering. You should definitely spawn him in via console to see what I mean: " c_spawn("stalker_forest", 1) ". he'll die if spawned on the surface; but will still spawn in some plants that express it well. Bare this in mind - it's likely that only the assets for these plants can support growth animations, I handled a similar problem with my nature monolith by spawning in the flowers with an additional fx each time to make it seem more believable. Direct question answers To your questions, return usually indicates a value the function will output. In this case it's a if statement, so there are several conditional statements there that are designed to return a bool value. In theory: return map:IsPassableAtPoint(x1, 0, z1) and map:IsDeployPointClear(Vector3(x1, 0, z1), nil, 1) and #TheSim:FindEntities(x1, 0, z1, 2.5, { "stalkerbloom" }) < 4 Check if the point we've found is clear and passable, if there's less than 3 "stalkerbloom"s then this spot is "true" or clear for spawning. if any of those conditions are false the check will fail. -- Tasks explained DoPeriodicTask and DoTaskInTime are both operations entities can perform, at any time an entity has a list of tasks it runs when given: inst:DoTaskInTime(time_val, *your_function* ) -- this will create a function runs in the time allocation you set. inst:DoPeriodicTask(time_interval_val, *your_function* ) -- this will create a function that'll call itself when it finishes and meets the time interval set. In addition you may see occasions where your "inst" will include a function that requires a parameter but doesn't include it., this is usually because lua reads the active table as being a parameter, meaning that functions that include self or inst without declaring it often refer to the object/table calling it. Further lua support - ( of which I myself also find handy) If you'd like to master the syntax there are plenty of tutorials on lua, I'd say that even I get relatively confused when it comes to meta tables though(but they are often used in specific circumstances that most modders don't need to worry about). Try SciTE for testing theoretic code out, it's what I use: http://www.scintilla.org/SciTEDownload.html (download the respective "executable" version).
  15. Stalker_Forest in the Stalker.lua file should help you there as Lumina has stated. As you only want to look for spring to activate this, you'll need inst:WatchWorldState("isspring", *your_Function*) in your character's fn(probably common) setup. This line might help you for checking for situational season changes: if TheWorld.state.isspring then -- spring is here else -- it's not spring end