Advanced Code - Albiot1/PVZ-Heroes-Modding-Page GitHub Wiki

GrantedTriggeredAbilities

You can create card and then use its unique effect (EffectEntitiesDescriptor) by it like this

{
"$type":"PvZCards.Engine.Components.GrantedTriggeredAbilities, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"a":[ //there can be multiple abilities at once
		{
		 "g":564, //card guiID to use 
                 "vt":0, 
                 "va":2 //value 
                },
		{
		 "g":562,
                 "vt":0, 
                 "va":0
                },
		    ]
	}
}
//562 double strike
//564 overshoot
//668 hunt

ShowTriggeredIcon

its just changing for example attack icon to anti hero

{
"$type":"PvZCards.Engine.Components.ShowTriggeredIcon, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
    "abilities":[
                9 //ability id (for example anti hero)
                ]
    }
}
    • Possible icons
  • 9 Anti Hero
  • 11 Double Strike
  • 12 Overshoot
  • 13 Hunt

EffectEntitiesDescriptor

With this you can create almost any effect you want.

"$type":"PvZCards.Engine.Components.EffectEntitiesDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
   "entities":[ //in entites you can create your effects by adding new "components" line 
                 { 
                   "components":[ //in components you are going to write all of the queries and code



                                ]
                 }, //like this you can have two of the effects
                 { 
                   "components":[



                                ]
                 }
              ]
}

Components list

Triggers

{
"$type": "PvZCards.Engine.Components.TRIGGER_NAME, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{},
},
//replace TRIGGER_NAME with any of these 
-DamageTrigger
-PlayTrigger
-DestroyCardTrigger
-SurprisePhaseStartTrigger
-DiscardFromPlayTrigger
-TurnStartTrigger
-RevealTrigger
-SlowedTrigger
-BuffTrigger
-MoveTrigger
-DrawCardTrigger
-LaneCombatEndTrigger
-LaneCombatStartTrigger
-CombatEndTrigger
-EnterBoardTrigger
-ReturnToHandTrigger
-ExtraAttackTrigger
-HealTrigger
-RevealPhaseEndTrigger
Write abilities inside of this 
{
	"$type":"PvZCards.Engine.Components.EffectEntitiesDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
	"entities":
		[
		"components":
			[
				{ //not sure if needed
				"$type":"PvZCards.Engine.Components.EffectEntityGrouping, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
				"$data":{
				"AbilityGroupId":0
					}
				},
				{ //some first trigger
				"$type":"PvZCards.Engine.Components.TRIGGER_NAME, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
				"$data":{}
				}
			]
		]
	}
}
Trigger target

//you can for example use compsite all query to use a few queris to check the target
{
	"$type":"PvZCards.Engine.Components.TriggerTargetFilter, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"Query":{
			"$type":"PvZCards.Engine.Queries.CompositeAllQuery, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
			"$data":{
				"queries":[]
			}
		}
	}
}
//primary target filter
{
	"$type":"PvZCards.Engine.Components.PrimaryTargetFilter, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"SelectionType": [Manual,Random,All],
		"NumTargets": [number],
		"TargetScopeType": [All,Sorted],
		"TargetScopeSortValue": [None,Attack,Health],
		"TargetScopeSortMethod": [None,Highest,Lowest],
		"AdditionalTargetType": [None,Query],
		"AdditionalTargetQuery":null,
		"OnlyApplyEffectsOnAdditionalTargets":false,
		"Query":{}
		}
	}
},

//or you can use composite any query to check if at least one of them is true 
"Query":{ 
"$type":"PvZCards.Engine.Queries.CompositeAnyQuery, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
	"queries":[]
	}
}

//You can also check if target lacks something for example subtype or superpower component 
{
"$type":"PvZCards.Engine.Queries.NotQuery, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
	"Query":{}
	}
}

Queries


"Query":{ 
"$type":"PvZCards.Engine.Queries.QUERY_NAME, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{}
}

QUERY_NAMES | QUERY_DATA
-SelfQuery
-WillTriggerEffectsQuery
-IsAliveQuery
-FighterQuery
-TargetableInPlayFighterQuery
-WillTriggerOnDeathEffectsQuery
-TrickQuery
-InHandQuery
-OnTerrainQuery | "TerrainType": "PvZCards.Engine.Components.TERRAIN, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
TERRAIN [GrassTerrain,HighgroundTerrain,WaterTerrain]

-SunCostComparisonQuery | "ComparisonOperator":["GreaterOrEqual","LessOrEqual","Equal"],"SunCost:[number] 
-BlockMeterValueQuery | "ComparisonOperator":["GreaterOrEqual","LessOrEqual","Equal"],"BlockMeterValue:[number]
-AttackComparisonQuery | "ComparisonOperator":["GreaterOrEqual","LessOrEqual","Equal"],"AttackValue:[number]
-DamageTakenComparisonQuery | "ComparisonOperator":["GreaterOrEqual","LessOrEqual","Equal"],"DamageTakenValue:[number]
-InSameLaneQuery | "OriginEntityType":"Self"
-SunCostPlusNComparisonQuery | "ComparisonOperator":["GreaterOrEqual","LessOrEqual","Equal"],"AdditionalCost:[number]
-LaneOfIndexQuery | "LaneIndex":[lane index]
-SubtypeQuery | "Subtype":[subtype numb]
-CardGuidQuery | "Guid":[guid numb]
-SubsetQuery | "Subset":[subset string]

-HasComponentQuery |
"ComponentType":"PvZCards.Engine.Components.COMPONENT, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
COMPONENT [ Plants,Player,Zombies,Lane,GrassTerrain,HighgroundTerrain,Superpower,Aquatic,Evolved,Mustache ]

{
	"$type":"PvZCards.Engine.Components.PlayerInfoCondition, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"Faction":["Plants","Zombies"],
		"Query":{
			"$type":"PvZCards.Engine.Queries.QUERIES, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
			"$data":{
				"ComparisonOperator":["GreaterOrEqual","LessOrEqual","Equal"],
				QUERYVALUE
			}
		}
	}
}

QUERIES | QUERYVALUE
BlockMeterValueQuery | "BlockMeterValue":[number]
SunCounterComparisonQuery | "SunCounterValue":[number]
TurnCountQuery | "TurnCount":[number]

//check if card got buffed 
{ 
	"$type":"PvZCards.Engine.Components.EffectValueCondition, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"EffectValue":"TotalBuffAmount",
		"ComparisonOperator":"GreaterOrEqual",
		"ValueAmount":1
	}
}

Specific abilities

//draw card
{
	"$type":"PvZCards.Engine.Components.DrawCardEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"DrawAmount":1
	}
}

//add buff
{
	"$type":"PvZCards.Engine.Components.BuffEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"AttackAmount":3,
		"HealthAmount":3,
		"BuffDuration":"Permanent" //Permanent,EndOfTurn
	}
}

//shuffle card to deck
{
"$type":"PvZCards.Engine.Components.CreateCardInDeckEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"CardGuid":[card guid],
		"AmountToCreate":1,
		"DeckPosition":"Random"
	}
}

//grant an ability for a card
{
	"$type":"PvZCards.Engine.Components.GrantAbilityEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"GrantableAbilityType": ["Strikethrough,Deadly,Unhurtable,CanPlayFighterInSurprisePhase,Frenzy,MinHealth,Truestrike,Aquatic,Teamup,GravestoneSpy,NoExtraAttacks,MultiplyDamage,Graveyard,Mustache,Untrickable,Unhealable,AttackOverride"] ,
		"Duration":[Permanent,EndOfTurn], 
		"AbilityValue":0
	}
}

//grant special abilities
{
	"$type":"PvZCards.Engine.Effects.GrantTriggeredAbilityEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"AbilityGuid":[Ability guid], //562 double strike, 564 overshoot, 615 buff +2/+2 and frenzy, 668 - ability of gravitree (move a zombie to its lane)
		"AbilityValueType":"None", //"None" or "Damage" for overshoot
		"AbilityValueAmount":0
	}
}
//create card
{
	"$type":"PvZCards.Engine.Components.CreateCardEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"CardGuid":[card guid],
		"ForceFaceDown":false //if should be in grave 
	}
}

//move a card
{
	"$type":"PvZCards.Engine.Components.MoveCardToLanesEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		
	}
},


{
	"$type":"PvZCards.Engine.Components.TransformWithCreationSource, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"SourceGuid":-1
	}
},

//set stat effect
{
"$type":"PvZCards.Engine.Components.SetStatEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
	"StatType":, ["Attack","Health"]
	"Value":3,
	"ModifyOperation": , ["Set","Add"]
	StripNoncontinousModifiers":true
	}
}

//damage effect
{
	"$type":"PvZCards.Engine.Components.DamageEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"DamageAmount":1
	}
}

//heal effect
{
	"$type":"PvZCards.Engine.Components.HealEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"HealAmount":1
	}
}

//effect value descriptor can be used to set effect value
{
	"$type":"PvZCards.Engine.Components.EffectValueDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"DestToSourceMap":{
			'EFFECT":"VALUETOSET" //possible effet and values [HealAmount,DamageAmount]
		}
	}
}

//transform into a card 
{
	"$type":"PvZCards.Engine.Components.TransformIntoCardFromSubsetEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"SubsetQuery":{

		}
	}
}

//draw a card 
{
	"$type":"PvZCards.Engine.Components.DrawCardFromSubsetEffectDescriptor, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		"SubsetQuery":{
			"$type":"PvZCards.Engine.Queries.CardGuidQuery, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
			"$data":{
				"Guid":[guid num]
			}
		},
		"DrawAmount":1
	}
}

//card queries

"$type":"PvZCards.Engine.Queries.CardGuidQuery, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
"Guid":110
}

"$type":"PvZCards.Engine.Queries.SubsetQuery, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
"Subset":"knightofthelivingdead"
}

"$type":"PvZCards.Engine.Queries.SubtypeQuery, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"$data":{
"Subtype":11
}

other


{
	"$type":"PvZCards.Engine.Components.OncePerGameCondition, EngineLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
	"$data":{
		
	}
}