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":{
}
}