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!
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.
Why use a periodic action at all.
Using ApplyTargettedBuffToSelf in the ability file is generally a better way to go with this.
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.
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?
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.
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
TXTentityType "Buff"onReapplyDuplicateType "PrioritizeNewBuffs"buffStackingLimitType "ForAllPlayers"stackingLimit 1allowFirstSpawnerToStack FALSEbuffExclusivityForAIType "ExclusiveForAllPlayers"isInterruptable FALSEisChannelling FALSEnumInstantActions 0numPeriodicActions 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 0numEntityModifiers 0numEntityBoolModifiers 0numFinishConditions 2finishCondition 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
BuffTargetTXTentityType "Buff"onReapplyDuplicateType "PrioritizeNewBuffs"buffStackingLimitType "ForAllPlayers"stackingLimit 1allowFirstSpawnerToStack FALSEbuffExclusivityForAIType "ExclusiveForAllPlayers"isInterruptable FALSEisChannelling FALSEnumInstantActions 3instantAction buffInstantActionType "DoInterrupt" instantActionTriggerType "OnDelay" delayTime 0.000000instantAction buffInstantActionType "InitializeMovementTowardLastSpawner" instantActionTriggerType "OnDelay" delayTime 0.000000 minLinearSpeed 1000.000000 maxLinearSpeed 1000.000000instantAction buffInstantActionType "ResetPhysicsState" instantActionTriggerType "OnDelay" delayTime 20.000000numPeriodicActions 0numOverTimeActions 0numEntityModifiers 0numEntityBoolModifiers 3entityBoolModifier "DisableAbilities"entityBoolModifier "DisablePhaseJump"entityBoolModifier "DisableLinearEngines"numFinishConditions 2finishCondition 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?
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
Silencedhawk, your tip worked! Many Thanks for your assistance!
There are many great features available to you once you register, including:
Sign in or Create Account