Hey guys. I got a request for a quick explanation of the new features in SequenceBars v3.00, which I’ve just posted. In particular, the feature to allow sequences to run continuously. So, I’ve come up with a kind of contrived example to show how it works. It’s not going to be very realistic, but it’s easy for me to demonstrate. What I’m going to do is, I’m going to assume that I want to see some skills up here on my screen when I’m close to a forge and have them disappear when I get far away from the forge.
As you can see, when I get close to the forge, I get these effects on my character: Superior forge, Forge, Workbench. So I can create a sequence bar that has a conditional in it that looks for that effect. So let’s go ahead and make a couple of sequence bars. When you load it for the first time you’ll have a couple of things here. You don’t need a group, so just delete that. A couple of bars. So I’ll have one for “near a forge skills” and one for…
So I can just put some random stuff here. You can show and hide these in several different ways. But what I’m going to show is automatically showing and hiding them based on whether this effect is present on my character. So I’m going to create another bar for controlling these two bars. Let’s call it “forge detector”. And so, what you can do is, create a conditional here (if-then-else)… which, for those who are familiar with this will know, This allows you to put a conditional here, and then if the condition is true, then whatever is in slot 2 will execute. And if it’s false, then whatever is over here in slot 4 will show in the bar. So my condition is, I’m going to look to see if that effect is present. The effect is just “Forge”. And then if the effect is present, I’m going to generate a user event. If the effect is not present, I’m going to generate a different user event. Let’s call this one “forge detected”.
And this one will be “forge not detected”. So if we’re near a forge it’s going to generate this event; if we’re not near a forge, it’s going to generate this event. The next thing to do is to make these bars be controlled by those events. And so I need to enable event behaviors. And “add behavior”: I want to show this bar when the user event occurs: “forge detected”. And I want to hide this bar when the forge is not detected. So there’s my two event behaviors for that bar. And then likewise for this other bar… For this one, I want to hide the bar when the forge is detected. And then I want to show the bar when the forge is not detected. And the last thing I want to do is to make all of these slots automatic so I don’t have to click on them. This icon means that all of the slots in the bar are automatic. And I’m not displaying automatic slots. I’ve got “hide automatic slots” enabled. So it’s hiding all of the slots.
So in order to run all of these — to run this bar — I can reset the bar by just clicking on the title, or clicking on this button. And as you can see, one of the bars disappeared, because we don’t have the “Forge” effect on us. And so it generated this “forge not detected” user event, and that bar got hidden. So if we get a little bit closer… Now we’ve got the “Forge” effect. If I reset the bar again, we can see what happened there. And that’s because it generated the “forge detected” event. This you could all do in the earlier versions of SequenceBars. The new feature I’ve added in version 3 is the ability to execute this bar continuously. Since all of these are automatic, there’s nothing preventing it from just executing continuously without you having to reset it manually. So, the way to enable that is you just choose “run continuously” here. And now you can see, it’s got this gear icon. If I click play on it, now it’s continuously running this.
It’s continuously checking to see if the effect is present, and generating one of these two events based on the condition. So if I get closer, you’ll be able to see… Just by walking closer and walking farther away, as the effect goes on my character and goes off of my character, I’m displaying different bars. And this bar doesn’t have to be visible for it to be active. I can hide this, and it’s still running. So as I get farther away and closer to the forge, it’s still working. Now, one thing to notice is… When you start doing stuff like this and constantly running stuff in the background, if you’re not careful, it can have a performance impact on the client. I’m still getting a very good frame rate here, so this is not having much of an effect. But… If you notice, if I try to hide this bar, it doesn’t work.
And that’s because my “forge detector” here is running, and it’s constantly generating this “forge detected” event. And this bar, whenever it receives that event, it gets shown. So even though I’m not doing anything here, there’s a constant stream of events being generated by this bar and being propagated through the system and processed by this bar, because it’s listening for that event. So, that’s kind of inefficient. So you want to be sure you’re not running this when you don’t have to. One thing you can do is, make it only run when you’re not in combat. So I can just say, “start executing when combat ends”. And “stop executing when combat begins”.
Because when you’re not in combat, you really don’t care about performance as much. Another thing you can do, which is a little bit more complicated is… You can make it so you only generate a single event when you get close to the forge, and another event when you get farther away, when you leave the area of the forge, but you’re not constantly generating an event. You’re not constantly generating a stream of events. And the way you can do that… I’m sure there’s a couple of ways to do it. I haven’t fully thought of all the things you can do with this. I’m sure some people will come up with some things I hadn’t thought of. What we can do is duplicate this, so I’m just going to “clone” that. And these are equivalent now. Either one of them does the same thing. And I will demonstrate here. But let’s change this a bit. This forge detector, I’m only going to make it generate the “forge detected” event. And this one, I’m only going to make it generate the “forge not detected” event. So I’m just going to delete the “else” clause here.
And here I’m going to delete the “if” clause. And this needs to be “if the effect is not present”. If the effect is not present, we’re going to generate “forge not detected”. If the effect is present, generate “forge detected”. So, what I have now is basically equivalent to what I had before. If I’m running both of these, it’s still going to generate a constant stream of events. So that’s not much of an improvement. But, what I can do is… This guy is looking to see if we’ve arrived at the forge, so I’m going to rename this to “forge arrival detector”. Yes, I know this thing is very flaky, but it’s a very low priority.
And this one to “forge departure detector”. I’m going to make this one start running when we have just departed from the forge. And when it detects the forge, it’s going to generate this “forge detected” event, so it’s going to stop itself: Add behavior: stop executing when forge detected. And then for this one over here, just the opposite. It’s going to generate the “forge not detected” event, and stop itself.
I think I got that right, let’s see. So, only one of these is going to run at a time. But as I get closer, this one stopped itself, and that event started this one executing. So this is checking for the departure from the forge. Once it detects it, it generates an event that stops itself and starts the other one. So it’s checking for arrival at the forge. And you can see, I’m not clicking anything, but as I get closer and farther away, either one is executing or the other, but not both together.
And crucially, we’re not generating a constant stream of events, because these conditions are always false. So I can hide this, and if it were generating a constant stream of events, it would immediately reappear, but it didn’t. I’ve hidden it, and it won’t come back until we come back within range of the forge. So, this is a rather contrived example, just showing the features, and how they work.
A more realistic one might be if you’re in combat, and you want to check if your morale has gone below a certain level, and if you have a skill that can restore morale, check to see if that skill is on cooldown, and if so, then show that skill icon, otherwise show a morale potion. I’m sure there’s many applications of it that I haven’t really thought through. But if you guys think of ways to improve it, let me know. I know that for one thing, there’s a lot more conditions that would be useful that I’ve not implemented, just because I don’t play a lot of different characters, so I just added the ones that are useful to me. But I’m sure that there are ones that would be useful to other players. So, I can add those on request. That’s it for this video. Thanks for watching..
As found on Youtube