SubstanceRule |
SubstanceRule works with all content collections in a lab. If certain content collection satisfies rule conditions, input substances are replaced with output substances. Additionally an arbitrary action can be invoked right after.
< Rules > <SubstanceRule> <Conditions> <RuleCondition Expression="${Binding Water.Temperature, Converter=GreaterThanOrEquals, ConverterParameter=100}"> </Conditions> <In> <SubstanceIn ContentType="Water" /> </In> <Out> <SubstanceOut ContentType="WaterGas" AmountExpression="${Binding Water.Amount}" /> </Out> <Action> <ShowEvaporationEffect Target="{Binding}" /> </Action> </SubstanceRule> </Rules>
Such rule will find every Water in the lab and transform it into a WaterGas in case its temperature has reached 100 degrees. For each case evaporation effect will be displayed. All other substances in content collections with newly created WaterGas will stay unaffected.
< Rules > <SubstanceRule Duration="60"> <Conditions> <RuleCondition ForbiddenImpact="Vortex"> </Conditions> <In> <SubstanceIn ContentType="OilWaterSolution" /> </In> <Out> <SubstanceOut ContentType="Water" AmountExpression="${Calc Arg1={Binding OilWaterSolution.Amount}, Arg2=2, Operation=Divide}" /> <SubstanceOut ContentType="Oil" AmountExpression="${Calc Arg1={Binding OilWaterSolution.Amount}, Arg2=2, Operation=Divide}" /> </Out> </SubstanceRule> </Rules>
Rule in example above will make sure that every OilWaterSolution in a lab is separated into Oil and Water in equal amounts if no vortex is applied for 60 seconds.
< SubstanceRule DurationExpression="${Calc Arg1={Calc Arg1={Binding Sugar.SolubilityFactor}, Arg2={Binding Temperature}, Operation=Divide}, Arg2=10, Operation=Multiply}" InstantImpact="Vortex"> <In> <SubstanceIn ContentType="Sugar" /> <SubstanceIn ContentType="Water" /> </In> <Out> <SubstanceOut ContentType="SugarWaterSolution" AmountExpression="${Calc Arg1={Binding Sugar.Amount}, Arg2={Binding Water.Amount}, Operation=Add}" /> </Out> </SubstanceRule>
This rule will form a solution out of Water and Sugar during a time frame that depends on solubility factor of Sugar and a temperature of a content collection. Duration can be different for each content collection, which is why DurationExpression is used. Solution will be created immediately if content collection is vortexed.