Kismet - Objective delay

  • Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

Beskar Mando

Grizzled Veteran
Dec 13, 2014
1,575
63
48
Baltimore, Maryland
steamcommunity.com
I’d like to have a delay before an objective is locked and defenders cannot recapture it.

That works but it doesn’t check if the status of the specific objective had changed when a timer reaches zero. It’ll be locked no matter who controls it.
So I tried to add another Objective Status behind Delay but that crashed the editor.

What you're literally telling the kismet to do is this, I'll explain in a scenario:
If attackers hold objective, Display Text 1, Activate timer, Timer end, Once timer ends Display Text 2, and Deactivate Objective. It's like a line of commands that happen, not dependent on the variables you want.
The only variable is who controls the objective at the start, which means if this sequence is activated or not. You're aren't actually telling the kismet anything except to display these texts after a certain time if the attackers hold the objective, and then deactivate. The sequence won't stop even if the defenders recapped the objective during the timer. It'll still go on, and then deactivate the objective. You don't have a the variables you want in order to do what you want. You need this:

I can't remember off the top of my head what all the actors in the kismet are.

Team A: Attackers
Team B: Defenders

(Hard to create a multivariable & outcome equation using arrows and text)
Main Sequence
Objective Status: Control= Team A->Display Text1 to Team B-> Delay ->

This is where you'd branch off into to different sequences depending on the variable:
Sub-Sequence A:
Timer end: (Variable A) Objective Status: Control= Team A ->ActiveObjective
(deactivate)->DisplayText2-> (activate next series of objectives)

Sub-Sequence B:
Timer end:(Variable B) Objective Status: Control= Team B, (Sorry a bit tired, and SDK deprived there should be some sort of actor that continues to have the objective activated, or not.) ->attach this arrow to the start of Main Sequence at the actor: Objective Status: Control=Team A

Basically Sequence B is kind of a loop, which is what you want to happen in your case if the defenders keep counter-attacking successfully.
 
Last edited:

nymets1104

Active member
Dec 18, 2012
2,432
24
38
USA
This has been driving me nuts all night, at work so cant get into sdk either. I think you will need a gate.
 

nymets1104

Active member
Dec 18, 2012
2,432
24
38
USA
Ok I think I got it:

Spoiler!


There is a checkbox on the timer to "restart on start" which means every time it fires the start command, it restarts at the full time.

Also, set the text for draw text in the properties and not with a string variable. I found that if you use a variable, everytime it fires off, it adds the strings so you will end up with numerous repeated messages.

I tested this with bots from both teams and it seems to work :D
 

Defwen

FNG / Fresh Meat
May 25, 2013
120
0
0
defwen.com
Unfortunately that doesn't seems to work for me. Objective is deactivated no matter of its status.

Spoiler!
 

Beskar Mando

Grizzled Veteran
Dec 13, 2014
1,575
63
48
Baltimore, Maryland
steamcommunity.com
You have to use the abort option, not the stop option. The stop function, prevents it from happening, aborting it, well aborts it. Attach an objective status there, along with perhaps a third text, saying "Defending team has recaptured Objective X" then tie this into the sequence. Nymets's idea is on track, but the sequence he's using for the defending team, just prevents it from occurring, not stopping it. You have to have another variable that checks this, to see if it should be aborted. Then have that sequence return to the main sequence.
The kismet is basically an a visual object-oriented coding platform. It's easy to mistake thing for others. The key is to take everything Literally, and not interpret it. The problem with Nymet's idea is that he interpreted the stop function as when to abort rather than what to do when the other variable is true (when the Allies hold the objective). Nymets's has the first two parts down, when the delay should activate and when it shouldn't. But what he doesn't have is what to do when it the variable turns from A to B during the delay. Which is where the abort function of the actor comes in.
 
Last edited:

nymets1104

Active member
Dec 18, 2012
2,432
24
38
USA
Hmm, I am still confused. I tested this on the TE-AttackDefend Map from the SDK and it worked both ways.

Here is the documentation on the Delay Node:
https://udn.epicgames.com/Three/KismetReference.html#Delay

The Aborted event fires off when the event Delay is stopped.

If The delay counter is "stopped" by the Allies Retaking the cap, then the "Finished" event never fires off which should prevent the objective from locking.

There is nothing else in the Kismet affecting the objective is there?

You did select "Start will Restart"?

Delay.PNG
 

Twrecks

Active member
Dec 28, 2011
1,241
10
38
Ventura, California
Defwen,


Try making a copy of the Object Variable "RSObjective2", so both the action "Activate Objective" and Condition "Objective Status" call their own separate Object Variables. Well, because they're different variables....
 

Defwen

FNG / Fresh Meat
May 25, 2013
120
0
0
defwen.com
There is nothing else in the Kismet affecting the objective is there?

Well, there are two objectives in a line so if both are captured, game moves forward. This actually should also stop the timer so a message won't pop up when both objectives are no longer in a game. But I'd care about the second objective when the first is working.

Spoiler!


You did select "Start will Restart"?
Yes.

Defwen,
Try making a copy of the Object Variable "RSObjective2", so both the action "Activate Objective" and Condition "Objective Status" call their own separate Object Variables. Well, because they're different variables....
No change.


Also tried this (not sure if it's even correct) but the objective is still being deactivated.
Spoiler!
 

Twrecks

Active member
Dec 28, 2011
1,241
10
38
Ventura, California
Looks like your Kismet is failing before it even gets to Nymet's sequence.

Two Objective Variables called from one Objective Status? Fail.

"Objective Status" pulls one (and only one) variable to check a condition regardless of how many you have linked, it doesn't make comparisons between multiple variables to decide an output.
 

Defwen

FNG / Fresh Meat
May 25, 2013
120
0
0
defwen.com
Well, I either don't know what you are talking about or I'm missing something here because I have it same way as official maps. Kismet, without delay, works as should.

Spoiler!
 

Twrecks

Active member
Dec 28, 2011
1,241
10
38
Ventura, California
I stand corrected. Got a map that I'm trying this on, would like a count down timer as well. Yea, with the delay works fine, adding text is the challenge.
 

nymets1104

Active member
Dec 18, 2012
2,432
24
38
USA
I stand corrected. Got a map that I'm trying this on, would like a count down timer as well. Yea, with the delay works fine, adding text is the challenge.

I found "display alert" is easier to work with but the downside is you cant format the text.
 

Twrecks

Active member
Dec 28, 2011
1,241
10
38
Ventura, California
I found "display alert" is easier to work with but the downside is you cant format the text.


Perfect!


Formatting text and location aside... right-clicking the OUT node on the Alert to add a delay before looping. And that's an empty string variable linked to the Output and Alert nodes.
Don't mind the links out, I also have a push back on the Axis spawns when both objectives are taken.

Here it be. I only have a 30 second countdown here, you can change it to whatever:
 

Attachments

  • lockdown22.jpg
    lockdown22.jpg
    65.1 KB · Views: 0
  • countdown.jpg
    countdown.jpg
    55.6 KB · Views: 0
  • stringer.jpg
    stringer.jpg
    70.2 KB · Views: 0
Last edited:

Defwen

FNG / Fresh Meat
May 25, 2013
120
0
0
defwen.com
Twrecks, your solution works even for me. :) Ty

However, I don't think it resets. I tested it and second time I captured the objective, it was locked very fast.
 

Twrecks

Active member
Dec 28, 2011
1,241
10
38
Ventura, California
Try adding a "Cast to Int".


Basically, it over-rides the Integer Variable to what ever you want from a Float Variable.
 

Attachments

  • caster.jpg
    caster.jpg
    93.2 KB · Views: 0
Last edited: