How to stop a periodic buff when the target has been destroyed?

Hi,

I'm trying to find a way to stop the self buff from a periodic action once the target has been destroyed. None of th standard finish conditoins lets me do this. As a result I have this stupid looking situation where the beam graphic from my buff self continues on shooting into empty space. Using timers and delays is no use because the buff its self (a tractor beam) is not a direct cause for the death of the target.

Any help with this would be much appreciated. Thanks!

38,731 views 8 replies
Reply #1 Top

http://code.google.com/p/soaseplugin/wiki/RebellionfinishConditionType

NoTarget is a valid finish condition. Alternatively, you could use apply buff to target first to apply the affect of whatever your beam is doing, then use "ApplyBuffToLastSpawnerNoFilterNoRange" to apply a buff that just does the beam effect back at your first ship, and give that buff a "LastSpawnerNoLongerHasBuff" condition on the effect buff, which would deactivate if the target is destroyed.

Reply #2 Top

Why use a periodic action at all.

Using ApplyTargettedBuffToSelf in the ability file is generally a better way to go with this.

 

Reply #3 Top

The reason I chose periodic was to make the tractor beam work. Tractor beams are not an integrated buff but an artificial construction using InitializeMovementTowardLastSpawner. This effect needs to be reapplied every few seconds to make the target follow your ships movements when you are tractoring. But not too often or the target ship will just stay put.

 

With regard to the ApplyBuffToLastSpawnerNoFilterNoRange I'm a bit lost on where to put this.

At the moment I have 2 buff files.

One is buff self, casting the ApplyBuffToTarget as a periodic action. Plus the beam effect towards the target.

The second, which is buff target, has the InitializeMovementTowardLastSpawner as an instant action.

Now if I move the beam effect to the buff target, do I need to make a third file that defines what ApplyBuffToLastSpawnerNoFilterNoRange is doing?

 

Finally "NoTarget" as a finish condition regardless of in which file I put it deactivates all the effects in the buff target file. But not the beam. So that seems bugged in this case.

Reply #4 Top

if you have a Beam effect that lasts for 10 seconds then whatever your finish condition the effect will carry on playing for the full 10 seconds.

You can make your beam effect only lasts for 1 second and have the effect happen 10 times lasting only 1 on a periodic 1 second delay. this way you will only ever have 1 second left over if the target dies

 

Put your weapon in a buff with no Charge or impact effects, add impact effect to your damage and charge effect to your calling buff, then loop it for 1 sec or less

 

check out Cleansing Brilliance (which annoyingly is called BeamBlast)

 

 

Any chance you can SPAM the code your currently using?

Reply #5 Top

Seems like you could use the AbilityBeamBlast as a base for this.

AbilityBeamBlast -> AbilityTractorBeam

BuffBeamBlastCharging -> BuffTractorBeamCharging

BuffBeamBlastActivated -> BuffTractorBeamActivated

BuffBeamBlastDamage -> BuffTractorBeamMovement

 

BuffTractorBeamMovement would use InitializeMovementTowardLastSpawner and add a finishCondition of FirstSpawnerNoLongerHasBuff for BuffTractorBeamActivated. The NoTargets are already in the Charging and Activated buffs.


Reply #6 Top

That 10 second rule must be to blame! I have the tractor currently at 20 seconds.

I have tried to implement what you said sliencedhawk. But what I have now is a tractor beam that will will create an infinite number of beams, adding a new one every second.

How do I make the periodic action stop a period before going on to the next one? Or is that not possible because I'm using a persistant beam effect?

 

Here is are the two files I'm using:

BuffSelf

TXT
entityType "Buff"
onReapplyDuplicateType "PrioritizeNewBuffs"
buffStackingLimitType "ForAllPlayers"
stackingLimit 1
allowFirstSpawnerToStack FALSE
buffExclusivityForAIType "ExclusiveForAllPlayers"
isInterruptable FALSE
isChannelling FALSE
numInstantActions 0
numPeriodicActions 2
    periodicAction
    actionCountType "Infinite"
    actionIntervalTime
        Level:0 1.000000
        Level:1 0.000000
        Level:2 0.000000
    buffInstantActionType "PlayPersistantBeamEffect"
    instantActionTriggerType "OnDelay"
    delayTime 1.000000
    hasWeaponEffects TRUE
    weaponEffectOriginType "Targetter"
    weaponEffectAttachInfo
        attachType "Ability"
        abilityIndex 3
    weaponEffectImpactOffsetType "RandomMesh"
    canWeaponEffectHitHull TRUE
    canWeaponEffectHitShields TRUE
    weaponEffectsDef
        weaponType "Beam"
        burstCount 1
        burstDelay 0.000000
        muzzleEffectName ""
        muzzleSoundMinRespawnTime 0.100000
        muzzleSounds
            soundCount 1
            sound ""
        hitEffectName "Ability_DisintegrationImpactBeam"
        hitHullEffectSounds
            soundCount 1
            sound ""
        hitShieldsEffectSounds
            soundCount 1
            sound ""
        beamEffectSounds
            soundCount 1
            sound "EFFECT_BEAMBLAST_ACTIVATE"
        beamGlowTextureName "CapitalAbilityDisintegration_Glow"
        beamCoreTextureName "CapitalAbilityDisintegration_Core"
        beamWidth 70.000000
        beamGlowColor ffffffff
        beamCoreColor ffffffff
        beamTilingRate 3.000000
    periodicAction
    actionCountType "Infinite"
    actionIntervalTime
        Level:0 3.000000
        Level:1 0.000000
        Level:2 0.000000
    buffInstantActionType "ApplyBuffToTarget"
    instantActionTriggerType "AlwaysPerform"
    buffType "BuffTractorBeamTarget"
    targetFilter
        numOwnerships 2
        ownership "Enemy"
        ownership "Friendly"
        numObjects 2
        object "CapitalShip"
        object "Frigate"
        numSpaces 1
        space "Normal"
        numConstraints 0
    range
        Level:0 3000.000000
        Level:1 0.000000
        Level:2 0.000000
    effectInfo
        effectAttachInfo
            attachType "Invalid"
        smallEffectName ""
        largeEffectName ""
        soundID ""
numOverTimeActions 0
numEntityModifiers 0
numEntityBoolModifiers 0
numFinishConditions 2
finishCondition
    finishConditionType "DamageTaken"
    damageNeeded
        Level:0 1000.000000
        Level:1 0.000000
        Level:2 0.000000
    typeOfDamageNeeded "AFFECTS_SHIELDS_AND_HULL"
finishCondition
    finishConditionType "TimeElapsed"
    time
        Level:0 20.000000
        Level:1 0.000000
        Level:2 0.000000

 

BuffTarget
TXT
entityType "Buff"
onReapplyDuplicateType "PrioritizeNewBuffs"
buffStackingLimitType "ForAllPlayers"
stackingLimit 1
allowFirstSpawnerToStack FALSE
buffExclusivityForAIType "ExclusiveForAllPlayers"
isInterruptable FALSE
isChannelling FALSE
numInstantActions 3
instantAction
    buffInstantActionType "DoInterrupt"
    instantActionTriggerType "OnDelay"
    delayTime 0.000000
instantAction
    buffInstantActionType "InitializeMovementTowardLastSpawner"
    instantActionTriggerType "OnDelay"
    delayTime 0.000000
    minLinearSpeed 1000.000000
    maxLinearSpeed 1000.000000
instantAction
    buffInstantActionType "ResetPhysicsState"
    instantActionTriggerType "OnDelay"
    delayTime 20.000000
numPeriodicActions 0
numOverTimeActions 0
numEntityModifiers 0
numEntityBoolModifiers 3
entityBoolModifier "DisableAbilities"
entityBoolModifier "DisablePhaseJump"
entityBoolModifier "DisableLinearEngines"
numFinishConditions 2
finishCondition
    finishConditionType "FirstSpawnerNoLongerHasBuff"
    buffTypeToQuery "BuffTractorBeamSelf"
finishCondition
    finishConditionType "OwnerChanged"

 

I appologise for the massive spam. And thanks everyone for helping out!

 

Edit: Sorry Zombie didn't see your second post! Are you recommending I use three buff files? One for What's going on in the origin unit, one for the beam effect, and one for the movment changes of the target?

Reply #7 Top

if you wish to keep your current system.. make a 3rd buff file and move your   buffInstantActionType "PlayPersistantBeamEffect" into it, then call it as a periodic in buffself, you can set the beam duration in your new buff and call it for as long as you need/target is alive in your current.

But I would go for Zombies Solution and clone Beamblast from the stock game, need to get home to look at this

+1 Loading…
Reply #8 Top

 Silencedhawk, your tip worked! Many Thanks for your assistance!