User:Polavux/Technical:Bloons TD 5 (multiplatform)/Weapons: Difference between revisions

more properties
Line 222: Line 222:


== Tasks ==
== Tasks ==
A <code>Task</code> is a process that executes when a weapon fires. An array of tasks is executed in its array order, lowest first. Some tasks, such as Projectile, AreaOfEffect, and Effect tasks, can also have tasks, which are referred to as "sub-tasks" and execute under different conditions.
A <code>Task</code> is a process that executes when a weapon fires. An array of tasks is executed in its array order, lowest first. Some tasks, such as Projectile, AreaOfEffect, and Effect tasks, can also have tasks, which are referred to as "sub-tasks" and execute under different conditions. The <code>Type</code> determines which task to use and what properties are allowed.


===AreaOfEffect===
===AreaOfEffect===
Line 232: Line 232:
!Behavior when absent
!Behavior when absent
|-
|-
|<code>Range</code>
|<code>CanHitLead</code>
|The radius of the area of effect.
|
|Boolean
|
|
|-
|<code>DisabledTasks</code>
|
|Array of numbers
|
|
|-
|<code>Duration</code>
|
|Number
|Number
|Yes
|
|
|
|-
|-
Line 242: Line 254:
|Number
|Number
|Yes
|Yes
|
|-
|<code>Range</code>
|The radius of the area of effect.
|Number
|Yes
|
|-
|<code>Sort</code>
|
|
|
|
|
|-
|-
Line 248: Line 272:
|Array of objects
|Array of objects
|
|
|
|-
|<code>UseRangeModifier</code>
|If <code>true</code>, the range scales with range modifiers. Exclusive to ''Bloons TD Battles''.
|Boolean
|No
|
|
|}
|}


===BloonSpawnedEvent===
===BloonSpawnedEvent===
Executes its tasks on all bloons spawned.
Executes its tasks on each Bloon that spawns.
{| class="wikitable"
{| class="wikitable"
!Key
!Key
Line 263: Line 293:
|How long the event lasts for.
|How long the event lasts for.
|Number
|Number
|
|
|-
|<code>Tasks</code>
|
|Array of objects
|
|
|
|
Line 268: Line 304:


===ChainTasks===
===ChainTasks===
{|class="wikitable sortable"
!Key
!Description
!Type
!Required?
!Behavior when absent
|-
|<code>CutOffDistance</code>
|
|
|
|
|-
|<code>NumJumps</code>
|
|
|
|
|-
|<code>NumPersists</code>
|
|
|
|
|-
|<code>Tasks</code>
|
|
|
|
|}


===ChangeSubtaskEnabled===
===ChangeSubtaskEnabled===
Line 297: Line 364:
!Required?
!Required?
!Behavior when absent
!Behavior when absent
|-
|<code>AutoCollect</code>
|
|
|
|
|-
|<code>Bank</code>
|
|Boolean
|
|
|-
|<code>BonusMultiplierForManualCollection</code>
|
|
|No
|
|-
|<code>ClickOnly</code>
|
|
|
|
|-
|<code>CollectionRadius</code>
|The radius in which the collectable can be collected from.
|Number
|
|
|-
|-
|<code>Duration</code>
|<code>Duration</code>
Line 304: Line 401:
|
|
|-
|-
|<code>MoneyRange</code>
|<code>GivesCashWhenExpired</code>
|The minimum and maximum number of cash the collectable at base gives.
|
|Array of numbers
|
|
|
|-
|<code>GraphicName</code>
|
|
|
|
|-
|<code>LimitHealth</code>
|
|
|
|
|-
|<code>LivesMultiplier</code>
|The multiplier for how many lives are given, the total lives given is <math>\text{Lives Range} \times \text{LivesMultiplier}</math>.
|Number
|
|
|
|
Line 313: Line 428:
|The minimum and maximum number of lives the collectable at base gives.
|The minimum and maximum number of lives the collectable at base gives.
|Array of numbers
|Array of numbers
|
|
|-
|<code>LoopAnimation</code>
|
|
|
|
|
|
|-
|-
|<code>MoneyMultiplier</code>
|<code>MoneyMultiplier</code>
|The multiplier for how much cash is given, the total cash given is <math>\text{Money Range} \times \text{Money Multiplier}</math>.
|The multiplier for how much cash is given, the total cash given is <math>\text{Money Range} \times \text{MoneyMultiplier}</math>.
|Number
|Number
|
|
|
|
|-
|-
|<code>MoneyMultiplier</code>
|<code>MoneyRange</code>
|The multiplier for how many lives are given, the total lives given is <math>\text{Lives Range} \times \text{Lives Multiplier}</math>.
|The minimum and maximum number of cash the collectable at base gives.
|Number
|Array of numbers
|
|
|
|
|-
|-
|<code>CollectionRadius</code>
|<code>MoneyRangeIncreasePerRound</code>
|The radius in which the collectable can be collected from.
|
|Number
|
|
|
|
|
Line 337: Line 458:
|The [[#Movement|movement]] of the collectable.
|The [[#Movement|movement]] of the collectable.
|Object
|Object
|
|
|-
|<code>SpriteFile</code>
|
|
|
|
|-
|<code>Tasks</code>
|
|
|
|
|
|
Line 376: Line 509:


===Damage===
===Damage===
Deals damage to Bloons. For weapons, this deals damage to its target directly (i.e. Sniper Monkey behavior). For projectiles, deals damage on collision.
Deals damage to Bloons. For weapons, this deals damage to its target directly (i.e. Sniper Monkey behavior). For tasks that collide with Bloons (projectiles, areas of effect, etc), this deals damage on collision.
{| class="wikitable sortable"
{| class="wikitable sortable"
!Key
!Key
Line 385: Line 518:
|-
|-
|<code>Amount</code>
|<code>Amount</code>
|The amount of damage dealt. (If this weapon/projectile's task list does not have a <code>MultiLayerDamage</code> task below it, the damage will not pass through layers.)
|The amount of damage dealt. (If this weapon/projectile's task list does not have a <code>MultiLayerDamage</code> status below it, the damage will not pass through layers.)
|Number
|Number
|
|
Line 421: Line 554:
|}
|}
|String
|String
|
|
|-
|<code>InformDamageFromParentTask</code>
|
|
|
|
|
|
Line 463: Line 602:
!Behavior when absent
!Behavior when absent
|-
|-
|<code>InitialOffset</code>
|<code>AcquireTarget</code>
|The angle of the "first" projectile.
|
|Number
|
|
|
|-
|<code>AimAtTarget</code>
|If <code>true</code>, then the angles of the projectiles are offset by the angle of the shot.
|Boolean
|
|
|-
|<code>AimOffsetsAtTarget</code>
|
|
|
|
|
|
Line 472: Line 623:
|The change in angle for all subsequent projectiles.
|The change in angle for all subsequent projectiles.
|Number
|Number
|
|
|-
|<code>DisabledTasks</code>
|
|
|
|
|
|
|-
|-
|<code>FireCount</code>
|<code>FireCount</code>
|Amount of projectiles fired.
|The number of times each subtask executes when this executes.
|Number
|Number
|
|
|
|
|-
|-
|<code>AimAtTarget</code>
|<code>InitialOffset</code>
|If on, then the angles of the projectiles are offset by the angle of the shot.
|The angle of the "first" projectile.
|Boolean
|Number
|
|
|-
|<code>MarkIDForProjectiles</code>
|
|
|
|
|
|
Line 491: Line 654:
|Array of objects
|Array of objects
|No
|No
|
|-
|<code>Radius</code>
|
|
|
|
|-
|<code>ShotDelay</code>
|
|
|
|
|-
|<code>Tasks</code>
|A list of tasks to execute when this task executes.
|Array of objects
|
|
|
|}
|}
Line 501: Line 682:
!Required?
!Required?
!Behavior when absent
!Behavior when absent
|-
|<code>CollidesOnlyWithTarget</code>
|
|Boolean
|No
|Defaults to <code>false</code>
|-
|-
|<code>CollisionType</code>
|<code>CollisionType</code>
|Determines how the projectile handles collision with Bloons.
|Determines how the projectile handles collision with Bloons.
{| class="wikitable"
*<code>Once</code>: can only collide with the same Bloon or its children once.
|<code>Once</code>
*<code>Continual</code>: can collide with any Bloon once per frame, even ones it has already hit.
|Can only collide with the same Bloon or its children once.
*<code>None</code>: cannot collide with Bloons.
|String
|
|
|-
|<code>DisabledTasks</code>
|
|Array of numbers
|No
|
|-
|<code>DrawLayer</code>
|
|Number
|No
|
|-
|-
|<code>Continual</code>
|<code>ForcePersists</code>
|Can collide with the same Bloon once per frame.
|If true, pierce cannot be modified.
|Boolean
|No
|Defaults to <code>false</code>
|-
|-
|<code>None</code>
|<code>GraphicName</code>
|Cannot collide with Bloons.
|
|}
|String
|String
|
|
|
|
|-
|-
|<code>ForcePersists</code>
|<code>GraphicsAtPierceLevels</code>
|If true, pierce cannot be increased.
|
|
|No
|
|-
|<code>HasFixedAngle</code>
|
|Boolean
|Boolean
|No
|No
|Defaults to <code>false</code>
|Defaults to <code>false</code>
|-
|<code>HasLimitedDuration</code>
|
|Boolean
|No
|
|-
|<code>HasRandomOrientation</code>
|
|Boolean
|No
|
|-
|<code>IgnoreStatusEffect</code>
|
|
|No
|
|-
|<code>LimitedDuration</code>
|
|
|No
|
|-
|<code>LoopAnimation</code>
|
|
|No
|
|-
|<code>LoopForever</code>
|
|
|No
|
|-
|<code>Movement</code>
|The [[#Movement|movement]] of the projectile.
|Object
|
|
|-
|-
|<code>NumPersists</code>
|<code>NumPersists</code>
Line 528: Line 780:
|Number
|Number
|
|
|
|-
|<code>OnlyCollidePastCutOff</code>
|
|Boolean
|No
|
|
|-
|-
Line 533: Line 791:
|
|
|Number
|Number
|No
|Uses the sprite's bounding box as a collision box
|-
|<code>RemoveAfterRoundStart</code>
|
|
|
|No
|
|-
|<code>RemoveOnRoundEnd</code>
|
|
|No
|
|-
|<code>SpinRate</code>
|
|Boolean
|No
|
|
|-
|-
Line 542: Line 818:
|
|
|-
|-
|<code>TerminateOnZeroPersists</code>
|<code>StopAtEndOfCurves</code>
|If true, the projectile expires when all pierce is consumed.
|
|Boolean
|
|No
|
|-
|<code>SpriteFile</code>
|
|String
|
|
|
|
Line 554: Line 836:
|
|
|-
|-
|<code>Movement</code>
|<code>TasksToProcessOnCollision</code>
|The [[#Movement|movement]] of the projectile.
|
|Object
|
|
|
|-
|<code>TasksToProcessOnTerminate</code>
|
|
|
|
|-
|<code>TerminateOnTowerRemoved</code>
|
|Boolean
|
|
|-
|<code>TerminateOnZeroPersists</code>
|If <code>true</code>, the projectile expires when all pierce is consumed.
|Boolean
|
|
|-
|<code>TerminatePastCutoff</code>
|
|
|
|
|
|
Line 562: Line 868:


===RandomFire===
===RandomFire===
Targets a random point within a specified radius.
{| class="wikitable"
{| class="wikitable"
!Key
!Key
Line 568: Line 875:
!Required?
!Required?
!Behavior when absent
!Behavior when absent
|-
|<code>FireFullRange</code>
|If <code>true</code>, this can only target points at the full extent of the range. Ignored if <code>OnlyTargetPathLocations</code> is set to <code>true</code>.
|Boolean
|
|
|-
|<code>FollowTarget</code>
|
|Boolean
|
|
|-
|<code>HasRandomOrientation</code>
|
|Boolean
|No
|
|-
|<code>MinimumRange</code>
|The minimum targeting radius.
|Number
|No
|
|-
|<code>OnlyTargetPathLocations</code>
|If <code>true</code>, this can only target points on a path within range (i.e. Spike Factory behavior).
|Boolean
|No
|Defaults to <code>false</code>
|-
|<code>OnlyTargetPlacementLocations</code>
|
|Boolean
|No
|Defaults to <code>false</code>
|-
|<code>PlacementTowerType</code>
|
|String
|No
|
|-
|-
|<code>Range</code>
|<code>Range</code>
|The radius of the random fire.
|The maximum targeting radius.
|Number
|Number
|
|
|
|
|-
|-
|<code>OnlyTargetPathLocations</code>
|<code>TargetIsWeaponTaskOrigin</code>
|Whether to shoot the projectile on the path or not.
|
|Boolean
|Boolean
|
|
|
|
|-
|-
|<code>FireFullRange</code>
|<code>Tasks</code>
|A list of tasks to execute when this task executes.
|Array of objects
|
|
|
|
|-
|<code>TerminateOnZeroPersists</code>
|
|
|
|
|-
|<code>FollowTarget</code>
|
|
|
|
|-
|<code>UseRangeModifier</code>
|If <code>true</code>, the targeting range scales with range modifiers. Exclusive to ''Bloons TD Battles''.
|Boolean
|No
|Defaults to <code>false</code>
|-
|<code>WaitTimeRange</code>
|
|
|Array of numbers
|No
|
|
|}
|}
Line 611: Line 972:


===RemoveStatusEffect===
===RemoveStatusEffect===
{| class="wikitable"
!Key
!Description
!Type
!Required?
!Behavior when absent
|-
|<code>Status</code>
|
|
|
|
|}


=== RestoreAmmo ===
=== RestoreAmmo ===
Line 625: Line 999:
|
|
|
|
|-
|<code>Proxied</code>
|If <code>true</code>, also restore ammo to the weapon that spawned this aircraft.
|Boolean
|No
|Defaults to <code>false</code>
|-
|-
|<code>RoundRobin</code>
|<code>RoundRobin</code>
Line 631: Line 1,011:
|
|
|
|
|-
|<code>Proxied</code>
|If <code>true</code>, also restore ammo to the weapon that spawned this aircraft.
|Boolean
|No
|Defaults to <code>false</code>
|-
|-
|<code>SlotIndex</code>
|<code>SlotIndex</code>
Line 670: Line 1,044:
|<code>FireMode</code>
|<code>FireMode</code>
|A list of flags specifying something idk
|A list of flags specifying something idk
{|class="wikitable"
*<code>FireNormal</code> (unused)
|<code>FireNormal</code>
*<code>FireOnApply</code>
|Unused
*<code>FireOnCommand</code> (unused)
|-
*<code>FireOnLastPop</code> (unused)
|<code>FireOnApply</code>
*<code>FireOnPop</code> (unused)
|
*<code>FireOnRemove</code> (unused)
|-
*<code>RemoveOnLastApply</code>
|<code>FireOnCommand</code>
|Unused
|-
|<code>FireOnLastPop</code>
|Unused
|-
|<code>FireOnPop</code>
|Unused
|-
|<code>FireOnRemove</code>
|Unused
|-
|<code>RemoveOnLastApply</code>
|
|}
|Array of strings
|Array of strings
|No
|No
Line 806: Line 1,165:


===TimerFire===
===TimerFire===
 
Executes
=== TowerModifier ===
{| class="wikitable"
{| class="wikitable sortable"
!Key
!Key
!Description
!Description
Line 815: Line 1,173:
!Behavior when absent
!Behavior when absent
|-
|-
|<code>Range</code>
|<code>CompoundSprite</code>
|Range of the modifier.
|
|Number
|String
|
|
|-
|<code>InitialTime</code>
|
|
|
|No
|
|
|-
|-
|<code>PriorityLevel</code>
|<code>Loops</code>
|
|
|
|Number
|
|
|
|
|-
|-
|<code>RequiresEmptyPriorityLevel</code>
|<code>NumLoops</code>
|If true, the modifier's priority level must be empty for it to work, else, it can stack with other modifiers of that priority level
|
|Boolean
|
|
|
|
|
|-
|-
|<code>TerminateOnUserUpgrade</code>
|<code>SpriteList</code>
|
|Array of strings
|
|
|
|Boolean
|-
|<code>Tasks</code>
|A list of tasks to execute when the time is up.
|Array of objects
|
|
|
|
|-
|-
|<code>Period</code>
|<code>TimeDelay</code>
|The amount of attacks it takes for the modifier to be applied.
|The delay, in seconds.
|Number
|Number
|
|
|
|
|}
=== TowerModifier ===
{| class="wikitable sortable"
!Key
!Description
!Type
!Required?
!Behavior when absent
|-
|-
|<code>WeaponSlotIndex</code>
|<code>ApplyToUserTower</code>
|The slot index of the weapon the modifier is applied to.
|
|Number
|
|
|
|
|
|-
|-
|<code>TargetingFilter</code>
|<code>CanApplyToUserTower</code>
|What the modifier targets.
|
|Array of objects
|
|
|
|
|
|-
|<code>Duration</code>
|How long the modifier is active for.
|Number
|No
|Defaults to <code>-1</code>
|-
|-
|<code>Modifier</code>
|<code>Modifier</code>
Line 894: Line 1,279:
|
|
|-
|-
|<code>Duration</code>
|<code>ModifyMovingTowers</code>
|How long the modifier is active for.
|
|
|
|
|-
|<code>ModifyNewlySpawnedTowers</code>
|
|
|
|
|-
|<code>NumPersists</code>
|
|Number
|
|
|-
|<code>Period</code>
|The amount of attacks it takes for the modifier to be applied.
|Number
|
|
|-
|<code>PriorityLevel</code>
|
|Number
|
|
|-
|<code>Range</code>
|Range of the modifier.
|Number
|
|
|-
|<code>ReplacesPriorityLevel</code>
|
|
|
|
|-
|<code>RequiresEmptyPriorityLevel</code>
|If true, the modifier's priority level must be empty for it to work, else, it can stack with other modifiers of that priority level
|Boolean
|
|
|-
|<code>RoundDuration</code>
|
|
|
|
|-
|<code>Stackable</code>
|
|
|
|
|-
|<code>TargetIsWeaponTaskOrigin</code>
|
|
|
|
|-
|<code>TargetingFilter</code>
|What the modifier targets.
|Array of objects
|
|
|-
|<code>TaskPersistsWithDuration</code>
|
|
|
|
|-
|<code>Tasks</code>
|
|
|
|
|-
|<code>TerminateOnUserTargetChange</code>
|
|
|
|
|-
|<code>TerminateOnUserUpgrade</code>
|
|Boolean
|
|
|-
|<code>WeaponSlotIndex</code>
|The slot index of the weapon the modifier is applied to.
|Number
|Number
|No
|
|Deafults to <code>-1</code>
|
|}
|}


==Movement ==
==Movement ==
<code>Movement</code> is a property shared by Projectiles, Collectables, and TextEffects.
<code>Movement</code> is a property shared by Projectiles, Collectables, and TextEffects. The <code>Type</code> determines how it moves and what sub-properties are allowed.


===Forward===
===Forward===
Line 923: Line 1,404:
|Number
|Number
|No
|No
|Deafults to <code>-1</code>
|Defaults to <code>-1</code>
|-
|-
|<code>SpeedDecay</code>
|<code>SpeedDecay</code>
Line 1,061: Line 1,542:
|Number
|Number
|No
|No
|Deafults to <code>-1</code>
|Defaults to <code>-1</code>
|-
|-
|<code>SeekAngle</code>
|<code>SeekAngle</code>