Sound does not play

wraithseeker

Tired.
Reaction score
122
JASS:
scope deathpact initializer Init

globals
    private constant integer SPELL = 'A00P'
    private constant string EFFECT = "Abilities\\Spells\\Other\\Doom\\DoomTarget.mdl" 
    private sound SLEEP
    private constant string GHOST = "Objects\\Spawnmodels\\Undead\\UndeadDissipate\\UndeadDissipate.mdl" 
    private constant string UDEATH = "Objects\\Spawnmodels\\Undead\\UDeathMedium\\UDeath.mdl"
    private boolexpr b
endglobals

private struct data
    static data temp
    unit caster
    unit target
    timer t
    lightning p
    integer ticks
    
    implement AutoData
    
static method create takes nothing returns data
    local data d = data.allocate()
    set d.caster = GetTriggerUnit()
    set d.target = GetSpellTargetUnit()
    set d.t = NewTimer()
    set d.ticks = 0
    call StunUnit(d.target,3,false)
    call AddTimedEffectTarget(EFFECT,d.target,"origin",9999)
    return d
endmethod

method onDestroy takes nothing returns nothing
    call ReleaseTimer(.t)
    call DestroyLightning(.p)
endmethod

endstruct

private function Conditions takes nothing returns boolean
    return GetSpellAbilityId() == SPELL
endfunction

private function CheckEnemies takes nothing returns boolean
    local data d = data.temp
    return IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(d.caster)) and GetFilterUnit() != d.caster and GetWidgetLife(GetFilterUnit()) > 0.0451 
endfunction

private function Loop takes nothing returns nothing
    local data d = GetTimerData(GetExpiredTimer())
    local real TLife = GetWidgetLife(d.target) * 0.10
    local real TMana =  GetUnitState(d.target,UNIT_STATE_MANA) *0.10
    local real x = GetUnitX(d.target)
    local real y = GetUnitY(d.target)
    local unit u
    call DestroyEffect(AddSpecialEffect(GHOST,x,y))
    call SetWidgetLife(d.caster,GetWidgetLife(d.caster)+ TLife)
    call SetUnitState(d.caster,UNIT_STATE_MANA,GetUnitState(d.caster,UNIT_STATE_MANA) + TMana)
    call SetWidgetLife(d.target,GetWidgetLife(d.target)-TLife)
    call SetUnitState(d.target,UNIT_STATE_MANA,GetUnitState(d.target,UNIT_STATE_MANA) - TMana)
    set d.ticks = d.ticks + 1
    if d.ticks == 3 then
        call DestroyEffect(AddSpecialEffect(UDEATH,x,y))
        call SetUnitOwner(d.target,GetOwningPlayer(d.caster),true)
        call UnitApplyTimedLife(d.target,'BUan',10)
        call DelayedAttackSpeed(d.target,100,10)
        set d.temp = d
        call GroupEnumUnitsInRange(ENUM_GROUP,x,y,400,b)
        loop
            set u = FirstOfGroup(ENUM_GROUP)
            exitwhen u == null
            call StunUnit(u,GetRandomReal(2,3),false)
            call GroupRemoveUnit(ENUM_GROUP,u)
        endloop
    endif
endfunction

private function Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local unit t = GetSpellTargetUnit()
    local data d
    local integer id = GetUnitId(u)
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_SPELL_EFFECT then
        call StartSound(SLEEP)
        call KillSoundWhenDone(SLEEP)
        set d = data.create()
        set d.p = AddLightning("AFOD",true,GetUnitX(u),GetUnitY(u),GetUnitX(t),GetUnitY(t))
        set data<u> = d
        call SetTimerData(d.t,d)
        call TimerStart(d.t,1,true,function Loop)
        set u = null
        set t = null
    elseif GetTriggerEventId() == EVENT_PLAYER_UNIT_SPELL_ENDCAST then
        set d = data<u>
        call StopStun(d.target)
        call d.destroy()
        set u = null
    endif
endfunction

//===========================================================================
private function Init takes nothing returns nothing
    local trigger t = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_ENDCAST)
    call TriggerAddAction( t, function Actions )
    call TriggerAddCondition(t,Condition(function Conditions))
    set SLEEP = CreateSoundFromLabel(&quot;SleepBirth1&quot;,false,true,true,10,10)
    set b = Filter(function CheckEnemies)
endfunction
endscope
</u></u>


Tell me why does the sound not play?
 

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
I don't think you incorporated all the parts of the BJ. You may want to consider just using the BJ instead, it'll work. Did you create the sound in the sound editor?
 

wraithseeker

Tired.
Reaction score
122
I tried to not use sound editor variables as they are too messy.

If I figured other people could do it this way why can't I? Also SimError is created using almost the same method as mine.
 

saw792

Is known to say things. That is all.
Reaction score
280
Change fade in and fade out to 10000 then, as that is what blizzard has used in it's BJs.
 

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
I tried to not use sound editor variables as they are too messy.

If I figured other people could do it this way why can't I? Also SimError is created using almost the same method as mine.

Sound editor is the only way to do it as far as I know. Stop being stubborn, just copy/paste it over from a GUI trigger...
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top