BasicBouncer when inherited from will create a projectile that can receive projectile team colors and that can bounce on floors, ceilings, walls, and water floors as well.
Unlike normal projectiles, if your projectile must bounce but goes over 60 speed, you cannot use BasicFastProjectile or FastProjectile inherited actors, because they cannot bounce. Your projectile will just have to be subject to phasing through people at odd angles.
<aside> 🚨 Wait! Stop! Before you copy this actor's definition into your mod, remember the following things:
actor BasicBouncer : BasicProjectile
{
+BOUNCEONFLOORS
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+CANBOUNCEWATER
}
These are user variables that can be added to the actor for various effects. You do not need to give them a value, they just must be defined.
var int user_NoTranslation - Disables projectile team colors on this actor
var int user_TranslateWhiteColors - Allows projectile team colors to recolor white.
var int user_TranslateBlackColors - Allows projectile team colors to recolor black.
var int user_PierceRipper - Makes it so that this actor only does damage once to another actor. The actor being damaged must have +USEDAMAGEEVENTSCRIPT, like players already do.
A_GiveInventory("PierceRipperLimit", x) in the Spawn state of the actor.var int user_DamageKill - Makes it so that this actor only does damage once before entering Death state. The actor that is being damaged must have +USEDAMAGEEVENTSCRIPT, like players already do. The actor with this flag must also have reactiontime set.
reactiontime value. A projectile with reactiontime 3 will only be able to damage 3 times to any players before dying.var int user_noOwnerDamage - If the actor has the +SHOOTABLE actor flag, the +USEDAMAGEEVENTSCRIPT actor flag, and a health value, this property will prevent the owner of the actor as well as their teammates from dealing damage to it.
Here is a simplified version of the Triple Blade projectile from MM8BDM. Note that it is using user_PierceRipper with a finetuned limit, so it will only be able to damage the same person 3 times, totaling for 15 damage.
actor SimpleTripleBlade : BasicBouncer
{
+RIPPER
+DONTBLAST
-BOUNCEONWALLS
bouncecount 2
Obituary "$OB_TRIPLEBLADE"
damagetype "TripleBlade"
Radius 16
Height 5
Damage (5)
Speed 30
var int user_PierceRipper;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("PierceRipperLimit", 3)
TBL1 E 1
wait
Death:
TNT1 A 0
stop
}
}