hey has anyone figured a way for multicast spells to work?
i think this will help youQuote:
hey has anyone figured a way for multicast spells to work?
i tried that but doesnt cast the 2 shots for example so the next chain isnt activated, any other way?Quote:
i think this will help you
if Helper:CheckAvailable( "Rapid Volley" ) then
Helper:CheckExecute( "Rapid Volley" );
Helper:CheckExecute( "Rapid Volley" );
Helper:CheckExecute( "Rapid Volley" );
Helper:CheckExecute( "Rapid Volley" );
Helper:CheckExecute( "Rapid Volley" );
return false;
end
[Only registered and activated users can see links. Click Here To Register...]Quote:
can you upload your source on github please?
Go to Songweaver.lua and copy / paste line 548.Quote:
someone help me play in the sever NA written script to songweaver happened the following error ..
* ? - [String "Songweaver.lua"]: 548: attempt to index field 'Songweaver' (a nil value) can someone tell me what is happening thank you
Quote:
Go to Songweaver.lua and copy / paste line 548.
Quote:
You write it?
Do you have one? Here's one to get you started... PLEASE TWEAK it to your needs, i only wrote it for my own, and my Bard is only level 30 so beyond those skills, you're on your own.
Also I didn't set up anything for group healing, or test the debuff very much
Code:--- (Private Function) Check required healing for the entity. function _Heal( Entity, IsPriority ) -- Retrieve the rechargeable health. local HealthRecharge = Entity:GetHealthMaximum() - Entity:GetHealthMaximum(); -- Retrieve the state. local EntityState = Entity:GetState(); -- Heal 1: Soothing Melody if Helper:CheckAvailable( "Soothing Melody" ) and (( IsPriority and HealthRecharge >= 2526 ) or ( not IsPriority and Entity:GetHealth() < 60 )) then Helper:CheckExecute( "Soothing Melody", Entity ); return false; end -- Heal 2: Chain if Entity:GetID() == Player:GetID() and Helper:CheckAvailable( "Soothing Counterpoint" ) and (( IsPriority and Entity:GetHealth() < 40 ) or ( not IsPriority and Entity:GetHealth() < 50 )) then Helper:CheckExecute( "Soothing Counterpoint" ); return false; end -- Mana 1: Resonating Melody if Helper:CheckAvailable( "Resonating Melody" ) and (( IsPriority and Entity:GetMana() < 40 ) or ( not IsPriority and Entity:GetMana() < 50 )) then Helper:CheckExecute( "Resonating Melody", Entity ); return false; end end --- Perform the attack routine on the selected target. function Attack( Entity, Range, Stunned ) -------------------------------------------------- -- H E A L I N G -- -------------------------------------------------- self:_Heal( Player, true ); -------------------------------------------------- -- A T T A C K (S) -- -------------------------------------------------- -- Initial Attack 2: if Helper:CheckAvailable( "Syncopated Echo" ) then Helper:CheckExecute( "Syncopated Echo" ); return false; end -- Chain Attack 1: Bright Strike if Helper:CheckAvailable( "Bright Strike" ) then Helper:CheckExecute( "Bright Strike" ); return false; elseif Helper:CheckAvailable( "Bright Stroke" ) then Helper:CheckExecute( "Bright Stroke" ); return false; end -- Chain Attack 2 Part I: Song Of Ice if Helper:CheckAvailable( "Song of Ice" ) then Helper:CheckExecute( "Song of Ice" ); return false; elseif Helper:CheckAvailable( "Song of Fire" ) then Helper:CheckExecute( "Song of Fire" ); return false; elseif Helper:CheckAvailable( "Song of Earth" ) then Helper:CheckExecute( "Song of Earth" ); return false; end -------------------------------------------------- -- H E A L I N G -- -------------------------------------------------- self:_Heal( Player, false ); -------------------------------------------------- -- N O R M A L A T T A C K (S) -- -------------------------------------------------- -- Normal Attack 1: if Helper:CheckAvailable( "Pulse" ) then Helper:CheckExecute( "Pulse" ); return false; end -------------------------------------------------- -- I N I T I A L A T T A C K (S) -- -------------------------------------------------- -- Initial Attack 1: Automatic Attack if self.AttackStarted ~= Entity:GetID() then self.AttackStarted = Entity:GetID(); Helper:CheckExecute( "Attack/Chat" ); return false; end -- Nothing was executed, continue with other functions. return true; end --- Perform healing checks both in and our of combat. -- -- [MENTION=1985011]param[/MENTION] bool Indicates whether or not the function is running before force checks. -- [MENTION=326673]return[/MENTION] bool function Heal( BeforeForce ) -- Nothing was executed, continue with other functions. return true; end --- Perform the safety checks before moving to the next target. -- -- [MENTION=326673]return[/MENTION] bool function Pause() -------------------------------------------------- -- H E A L I N G -- -------------------------------------------------- -- Heal 0: Non-Priority Healing self:_Heal( Player, false ); -------------------------------------------------- -- B U F F I N G -- -------------------------------------------------- -- Check if the state checking timer has expired. if ( self.StateBuffTime == nil or self.StateBuffTime < Time()) then -- Retrieve the state. local EntityState = Player:GetState(); -- Buff 1: Etude if Helper:CheckAvailable( "Etude" ) and EntityState:GetState( "Etude" ) == nil then Helper:CheckExecute( "Etude", Player ); return false; end if Helper:CheckAvailable( "Mvt. 3: Autumn" ) and EntityState:GetState( "Mvt. 3: Autumn" ) == nil then Helper:CheckExecute( "Mvt. 3: Autumn", Player ); return false; end -- Buff 3: Promise of Wind if Helper:CheckAvailable( "Protective Ode" ) and EntityState:GetState( Helper:CheckName( "Protective Ode" )) == nil then Helper:CheckExecute( "Protective Ode", Player ); return false; end -- Update the state checking timer. self.StateBuffTime = Time() + 1000; end -- Nothing was executed, continue with other functions. return true; end function _CheckDebuff( Entity ) -- Retrieve the state for the current entity to inspect. local EntityState = Entity:GetState(); -- Loop through the states only when we are available to dispel them. We still check for removed states! if EntityState ~= nil and ( self.StateDispelTime == nil or self.StateDispelTime < Time()) then -- Create the state array for the global entity storage and undispellable states if it does not exist. if self.StateArray == nil or self.StateUndispellable == nil then self.StateArray = {}; self.StateUndispellable = {}; end -- Create the state array for the current entity if it does not exist. if self.StateArray[Entity:GetID()] == nil then self.StateArray[Entity:GetID()] = {}; end -- Loop through the states to find which need to be removed. for ID, Skill in DictionaryIterator( EntityState:GetList()) do -- Check if the current skill is valid and has not been marked and undispellable. if Skill ~= nil and Skill:IsDebuff() and ( self.StateUndispellable[Skill:GetID()] == nil or self.StateUndispellable[Skill:GetID()] < Time()) then -- Check if this entity had the current skill effect on him if self.StateArray[Entity:GetID()][Skill:GetID()] ~= nil and self.StateArray[Entity:GetID()][Skill:GetID()] == 2 then self.StateUndispellable[Skill:GetID()] = Time() + 30000; -- Remove the state from the entity. else -- Retrieve the magical state the current skill. local RemoveMagical = Skill:IsMagical(); -- Check if we are required to change the magical state for the current skill. if self.StateArray[Entity:GetID()][Skill:GetID()] ~= nil then RemoveMagical = not RemoveMagical; end if ( RemoveMagical and Helper:CheckExecute( "Purifying Paean", Entity )) or ( not RemoveMagical and Helper:CheckExecute( "Sonicportation", Entity )) then -- Change the state dispel timer to prevent dispel and cure mind from being used too quickly. self.StateDispelTime = Time() + 500; -- Track the current state of the dispel and cure mind to find undispellable states. if self.StateArray[Entity:GetID()][Skill:GetID()] == nil then self.StateArray[Entity:GetID()][Skill:GetID()] = 1; return false; else self.StateArray[Entity:GetID()][Skill:GetID()] = 2; return false; end end end end end -- Loop through the existing states to find which have been removed correctly. for k,v in pairs( self.StateArray[Entity:GetID()] ) do if v ~= nil and EntityState:GetState( k ) == nil then self.StateArray[Entity:GetID()][k] = nil; end end end -- Return true to let the caller know this function completed. return true; end