<aside> ⚠️ Warning: Before beginning this tutorial, you should already be familiar with the DECORATE and ACS languages.
</aside>
Some actor properties are floating point numbers and must be modified multiplicatively in order for multiple effects to impact the same property.
The engine handles certain effects like this automatically, such as PowerSpeed
or PowerDamage
. However, not all features you may want to modify are supported for us, or situations where supported properties can’t be modified due to complications such as morphs. This is where AProp Powerups come in.
AProp Powerups support the following actor properties:
APROP_JumpZ
: The speed the actor is launched vertically when jumping.APROP_Gravity
: How quickly the actor accelerates downwards while airborne.APROP_Alpha
: Translucency of the actor.APROP_Speed
: How quickly the actor moves.APROP_ScaleX
: How much the actor is horizontally scaled.APROP_ScaleY
: How much the actor is vertically scaled.APROP_Friction
: Currently unsupported but reserved for future use.The following custom actor properties are also supported. These actor properties are accessed using [core_SetCustomActorProperty](<https://mm8bdm.notion.site/core_SetCustomActorProperty-e510672de29d4dfa9445816166a54ede>)
and [core_GetCustomActorProperty](<https://mm8bdm.notion.site/core_GetCustomActorProperty-906cf910277c4895b70aa2914270e675>)
.
CAPROP_AirJumpZ
: The speed the actor is launched vertically when air jumping.CAPROP_WallJumpZ
: The speed the actor is launched vertically when wall jumping.To create an AProp Powerup, you need some code in DECORATE and ACS. in DECORATE, you need to define two actors: a powerup giver and the powerup itself. These actors are only really used as triggers for the scripts they run, so they require minimal information, but they should exist regardless.
actor MushJumpPowerGiver : PowerApropGiver {}
actor MushJumpPower : PowerUp
{
+INVENTORY.ALWAYSPICKUP
powerup.duration -20
}
actor MushGravPowerGiver : PowerApropGiver {}
actor MushGravPower : PowerUp
{
+INVENTORY.ALWAYSPICKUP
powerup.duration -20
}
actor MushHeightPowerGiver : PowerApropGiver {}
actor MushHeightPower : PowerUp
{
+INVENTORY.ALWAYSPICKUP
powerup.duration -20
}
The first actor inherits from PowerApropGiver
, the second inherits from PowerUp
. Be sure to specify the time limit in the powerup.duration
. As with normal powerups, using +INVENTORY.ALWAYSPICKUP
allows the duration to be reset if the powerup is given again within the initial duration.