Jump to content

Question on Kismet's Current Difficulty Action - Broken?


abeclancy

Recommended Posts

It's in New Action > Scripting > Current Difficulty. It seems like it doesn't work when you are using the Tactical debug menu's ability to generate missions. Seems like the scripting flow just dies when it encounters the Current Difficulty action, so you can't test how different difficulties affect your mission, and in fact any scripting tied to Rookie/Veteran/Commander/Legend output just doesn't trigger.

 

Anyone back me up or prove me wrong? If this is indeed broken, how do you do scripting based on the difficulty? Is there a Tactical Tag that can be used instead?

 

https://www.dropbox.com/s/dk0dlo16wmd3iwm/kismet-currentdifficulty-nottriggering.jpg?dl=0

(The first tutorial box is shown, the second isn't.)

Link to comment
Share on other sites

Alright, so I think I might have figured out what's been causing me issues. Apparently all of the (!C) (not converted) actions (Switch, Gate, etc) have issues and don't work properly. Seems like they all used to work, then stopped working for some reason. Since I have absolutely no idea how to make non-not-converted actions, my advice to anyone doing map scripting is to actually just go to one of the vanilla mission map files, copy any necessary (!C) actions from there, paste them in to your map, and use them from there.

 

Actually, come to think of it I don't know what the heck "not converted" means anyways, so maybe they were never supposed to really work in the first place.

Link to comment
Share on other sites

The answer to the problems you are having with certain kismet nodes are pretty straight forward.

 

Basically, you don't want to mix & match converted with unconverted nodes. However, in some cases using an unconverted node is essential ( such as with logic gates ) so in those situations the level designers manually flagged the node as converted. You can do this by viewing hidden properties on the node and then flagging the appropriate variable. Because this has already been done on base game kismet script nodes, that is why they operate correctly.

 

What does "converted" mean? That just means that the kismet node is safe to use as part of a game play logic sequence, which is not allowed to be latent, manipulate actors, or store state internally ( kismet variables must be used instead for storage ). Why individual logic sequence actions weren't flagged as converted, I couldn't say - but in general it is likely because they store some kind of state internally that isn't part of the game state system and thus not "safe". An example of this would be a conditional that internally tracks how many times it has run. Technically not safe if you are going to use that internally tracked value, but if you don't plan on using that you can just flag the conditional as converted and use it anyways.

Link to comment
Share on other sites

Interesting, and that does explain why a few of the Kismet actions are listed as (!C). Switch for example, does seem to have an internal state, in that you can have it disable outputs after they are used. Gate has an internal state because it can be opened and closed through signals to the gate.

 

For anyone interested, FxsRMcFall's notes are spot-on as usual. In the Kismet view, in the Properties window is a wrench icon that lets you view hidden properties, and the one you are interested in is "Converted For Replay System". If you turn on the converted status for any action (Gate, Switch, etc.), then you can't use any state information in that action node because of... reasons. Seems like it is because the internal values of those actions are not saved, so that when the game is reloaded they are all reset to their initial values.

 

So if you covert any (!C) action to a © action, do not use any internal states of those actions!

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...