Trigger Condition Question

Hi to all.

In order to avoid introducing a too complex expression in a trigger condition, I tried to save the variuos conditions on markers, like Cond1, Value : , Cond2, Value : , …, CondN : and then set as condition in the trigger :
$Cond1 $|| $Cond2$ || … || $CondN$. It works!
Unfortunately, I also have to run a trigger when this condition is false.
I tried different syntax forms, but none works.
What, if any, is the correct syntax to use to solve this problem?

Thanks in advance for your support on that matter.
Panther 2010

Hi … Multiple options can be used. Let me show you some :
1- Create all the possible triggers you want and disable some, based on conditions :

  • Restriction: Disable (or Hide, if you prefer)
  • Restrict when properties match : {GO1Level<(3-GetProperty($PlayerSide$+"_RequirementModifierGP"))}
    This quite complex formula prevents a card to be played if we have not reached the Global Counter GO1Level level 3 yet. But the player may have an individual GP modifying these prerequisites … I have 5 colors, so 5 GP : Blue_RequirementModifierGP, Black_RequirementModifierGP, …Red_RequirementModifierGP
  • Restrict these commands : place as many as you want here

2- Define matching properties in the trigger trait

  • Trigger when properties match: globalTMUpdate!=0
  • Trigger when properties match: {$PlayerSide$==“Green”}

3- Define multiple commands, but ensure they only apply to a player:
Keyboard Command: ScorePlusOne
Global Key Command: PlusOneRed

  • Matching Properties {PlayerSide==“Red”}
    The point here is that a button may be pushed by any player, but this would only increase the score of the current player color.

4- to answer your question, the restriction can be based on multiple-choice:
Restriction: Disable
Restrict when properties match: {Generation> “1”||map =~ “cards”||map =~ “hand”||map =~ “research”}
That trait will prevent the card to be moved (the Key Command was to mix 2 decks) :

  • After Generation 1
  • During Generation 1, if the card is in a map named “blablabla_cards”, or “blabla_hand”, or “research_blabla”
    There are 4 maps per player, and all the maps are named by the player color and either map, or hand, cards, or research.

Can you find happiness in these options ?

Hello kerkael,

thank you for your reply.

Let me explain a bit better what I’m doing and what is the problem.

I made a protype, called CRT (Combat Result Table) to simulate the CRT of a game. Unfortunately, a very big amount of trigger conditions is necessary to do this.

I tried to drastically reduce the number of triggers saving each single condition on a marker like this :

Name : Cond1 Value : RANGE=~1|2 && ASP=~1|2 && CH=~1|2,

where RANGE is the distance between units (Row) , ASP is the Odd (Column) and CH is the die roll.

I tried to use the following condition in the trigger : Cond1 || Cond2|| … ||CondN, but this doesn’t work.

I used these syntax expressions to test a single condidion : if(GetProperty(Cond1), “true”,“false”)) and if(GetProperty(“Cond1”), “true”,“false”)), but I always obtain a “false” response.

The if(GetProperty(Property, Value1, value2) works well with numbers, strings and even booleans, but doesn’t work with a condition like Cond1.

If someone of the “Vassal Gods” knows the correct answer of this question, please, help me.

Thanks in advance.

Panther 2010 :question:

Ah, I see? You want the marker to contain a string to be evaluated as a condition.
Did you try with a calculated property instead?

Also if you want to evaluate the content of a trait, you should encapsulate it between $ $, as this example from the design guide :
CurrentTurn = $2d6_result$

It may also be possible your trait needs to be called from the trigger condition, AND evaluated, so $$Cond1$$ should work … maybe ?

Hi kerkael

Well, finally I managed to resolve this damned problem.

This syntax is working well : $CondA$ || $CondB$ || … $CondN$ and returns a true result when at least one of the conditions are true.

My problem was to find a syntax to fire a trigger when the condition is false.
I was able to resolve it using the ! Java unary operator as follows :

This sintax is correctly returning a false value : $!CondA$ && $!CondB$ && … $!CondN$.

Now it is possible to simulate a CRT (or any other kind of table) with a reasonable amount of triggers!

Be well!

Panther 2010 :smiley: