User Tools

Site Tools


4rpl:commands:applytodamagemap

Index

ApplyToDamageMap

ApplyToDamageMap(<-unit <-cellX <-cellZ <-radius <-amt <-isSquare)

Description

Applies 'amt' to a region in the damage map. The damage map affects the calculation of the min/max creeper when calling GetMaxCreeperCellWithDamage.

The unit is the unit to associate this damage map alteration to. When the unit is destroyed, the amount applied to the damage map will be removed. If the unit is not specified (unit = -1 or less), then no unit association is created. This means that the damage map must be manually cleaned up! Use this with extreme caution.

CellX and cellZ define the center of a circle or square with a specified radius.

The amt value is added to each cell in the defined region. The amount at each cell in the damage map is subtracted from the creeper in each cell when the max/min creeper are being calculated.

The damage map does not affect the calculation of min/max AC. The damage map is global to the map. When multiple scripts/units apply to the damage map, the values add up. Internally the damage map stores longs, so max int and overflow is not a concern. However, any damage map value above max int will be treated as max int for purposes of min/max creeper calculation.

:!: The damage map is persistent (during a game and even across save/load). If the unit is not specified, you must subtract values from the damage map when the applied damage is no longer needed. So, for instance, if you apply damage to the damage map when creating a weapon projectile, your must remove that applied damage once the projectile no longer exists, if the projectile is not specified as the unit in the call to ApplyToDamageMap To remove from the damage map, simply use a negative value for amt.

:!: BE VERY CAREFUL TO SUBTRACT OUT EXACTLY WHAT IS APPLIED TO THE DAMAGE MAP. OTHERWISE VALUES WILL BE LEFT IN THE DAMAGE MAP THAT WILL AFFECT MORTAR FIRE AND ANY OTHER UNIT THAT LOOKS AT THE DAMAGE MAP. See RemoveUnitDamageMap

:WARNING: When using this API, you can't just directly input your damage variable in. A single cell of Creeper with a depth of “1” is actually a value of 1,000,000. Hence the Creeper depth limit of 2,146 in a single cell as the Max Integer of 32 bit is 2,147,483,647. So whenever using this API, what ever amount of damage to the Creeper you wish to map, multiply it by 1,000,000. Otherwise this API will not work effectively.

Examples

ApplyToDamageMap(self <-targetX <-targetZ 10 5000000 false)
 
:Destroyed
   #Remove the damage when this unit is destroyed
   ApplyToDamageMap(self <-targetX <-targetZ 10 -5000000 false)
ApplyToDamageMap(self <-targetX <-targetZ 10 <-DAMAGE 1000000 * false)
#Using a DAMAGE Initial Variable, we multiply it by 1,000,000 to keep it scaled to real values of Creeper depth.
 
:Destroyed
   #Remove the damage when this unit is destroyed
   ApplyToDamageMap(self <-targetX <-targetZ 10 <-DAMAGE -1000000 * false)

Presets

ApplyToDamageMap(<-shotUnit <-targetPos.x <-targetPos.z <-RADIUS <-DAMAGE 1000000 * false)

Index

4rpl/commands/applytodamagemap.txt · Last modified: 2024/02/18 15:07 by Vertu