• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Need Help With my ability T_T...

Status
Not open for further replies.
Level 8
Joined
Sep 25, 2007
Messages
382
hi ppl , i need help with this skill... well , my last map was totally destroyed due to no of my friends got time , so , im making one map at my size , with some friends xD... i cant give anything yet , cause , there are also lots of things that we dont have , like the terrain (not complete , already started , but lot of work needed)...

well , here the skill things... i dont have a "Direct" name of the skill , but... it makes you have this things.

Description:
The Hero , charges Up strong forces in his fists and feet (sry , my english rly bad) , allowing it to deal more damage , impact damage , and other bonuses , also , this skill consumes mana as it is casted.

Explain: what i refer to "this skill consumes mana as it is casted" , is that , this skill performs it bonuses per second it is casted , each level , it can be Channeled. longer. also , it consumes mana per sec when casting... (not when buffed by it).

--------------------------------------------------

Level 1 - +3 damage/sec , +4% AS/sec , Adds +15 Impact Damage. Can be Channeled up to 4 secs.

Level 2 - +5 damage /sec , +6% AS/sec , Adds +25 Impact Damage. Can Be Channeled up to 5 secs.

Level 3 - +8 damage /sec , +8% AS/sec , Adds +35 Impact Damage. Can be Channeled up to 6 secs.

Level 4 - +10 damage /sec , +10% AS/sec , Adds +50 Impact Damage. Can Be Channeled up to 7 secs.

-------------------------------------------------

well , other thing you should know:

IMPACT DAMAGE = damage that ignores defense.

NOTE: if the unit is stuned , the chaneling is over and the skill is canceled.
Mana and Cooldown are wasted.

-------------------------------------

EFFECTS:

Faeri Dragon Missile / OR / Spirit of Vengeance Missile / OR / Any other you think it coul fit well.

NOTE: this effects goes on fists and legs.

--------------------------------------


WELL , +REP given of course... but im not sure if this skill is possible or something... but this skill will rly make my hero better... anyways , thanks before leaving...
 
Level 13
Joined
Nov 22, 2006
Messages
1,260
Another question (I'm getting irritating with this, I know), is vJass allowed? If not, I would need you to import a system where you have to do some initialization, but if you use Jass NewGen Pack you would just have to import the code, that's all (since globals can be created in JASS when using this program).

Also, do you have any basic idea about JASS or I have to explain every step detailed?

Also also (Pooty's joke), why didn't you post this in the spell request thread by Hindy? Well, nvm, I'll probably make it for you if I have time.

I just hope you agree to use NewGen, it'll make things easier (for you and me).
 
Level 13
Joined
Nov 22, 2006
Messages
1,260
No, it can't move, that's the point, the longer you stay on one place, the longer you can channel and the more bonuses you get (it's like Illuminate in DotA).

Or maybe that's not what monchopim wanted, but if the caster is able to move then the spell would be kinda dumb -.-
 
Level 16
Joined
Mar 26, 2004
Messages
569
Well, i meant, if you cast for like 2 seconds, you get to keep the buffs you got so far when you move. If you're stunned you lose it.

Btw, im setting all durations of the buff to 30 sec.
I'm also basing the impact damage on Bash, which will cause a 0.01 second stun, that ok with you?
 
Level 8
Joined
Sep 25, 2007
Messages
382
Well, i meant, if you cast for like 2 seconds, you get to keep the buffs you got so far when you move. If you're stunned you lose it.

Btw, im setting all durations of the buff to 30 sec.
I'm also basing the impact damage on Bash, which will cause a 0.01 second stun, that ok with you?

yes , its ok , also , I USE NEWGEN... so NP .

also also (lol), if you move while channeling , you get the buff , but with the indicated power... (if it is 7 sec channeling , and you cut it at 3... you get 3 secs buffs)...

another thing , that impact damage with 0.01 stun is great... it is a Stop Channeling kind xD...

well thanks... hope you can make it...

NOTE: yes i use NewGen...
 
Level 16
Joined
Mar 26, 2004
Messages
569
Ok, i got a few things working quite nicely. There are 3 problems though (that i've found so far).

1: The bash ability is visible (even though i'm using a spellbook trying to hide it) FIXED!
2: When casting the spell for the first time (each level) it lags. semi-FIXED!
3: Can't find a way to distinguish the spell being interrupted by stun and interrupted by movement.

Edit:
Made it preload 0.01 sec of time elapsed. So now it's only a lag spike at start :p
 
Last edited:
Level 13
Joined
Nov 22, 2006
Messages
1,260
I use Vexorian's way of preloading (I have no idea why is it like that, but it works).

JASS:
function Preload_Actions takes nothing returns nothing
    call Preload(...)
    call Preload(...)
    call Preload(...)
    // ....
endfunction

function InitTrig_Preload takes nothing returns nothing
    call ExecuteFunc("Preload_Actions")
endfunction

This way I don't think you'll have lags anywhere.

Btw, when you're done with coding, maybe you can post it here so I can optimize it (if it will need optimizing), it's not that I think you're a bad coder.......actually, I have no idea how you code, we'll see.
 
Level 16
Joined
Mar 26, 2004
Messages
569
Well, i got the walk away/stop to keep buffs casted to work. But i can't get the if stunned. This is what im trying to work out:

  • Stops Channeling
    • Events
      • Unit - A unit Stops casting an ability
    • Conditions
      • (Ability being cast) Equal to SpellX
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Triggering unit) is Stunned) Equal to True
        • Then - Actions
          • Do Actions
        • Else - Actions
          • Do nothing
But it can't seem to notice if it's stunned or not.
 
Level 8
Joined
Sep 25, 2007
Messages
382
well anyways , if not , you can make it this way:

if the unit is stuned , you get the channeling/secs buff ... if you channeled 3 secs and you get stuned , you get 3 secs buff , that way it will be easier... though... just to make the things a lil bit easy... thanks for helping... Keep up the hard work :thumbs_up:...
 
Level 16
Joined
Mar 26, 2004
Messages
569
Ok, think everything should work now. (Even though i didn't get that stun thing to work. :< ). Please report to me if there are any bugs.

I went ahead and named it Solemn Warcry but you can always change it.

Was quite an enjoyable challange ^^ since i don't usually do spells. Hope you like it.
 

Attachments

  • Solemn Warcry 1.0.w3x
    25.6 KB · Views: 94
Last edited:
Level 8
Joined
Sep 25, 2007
Messages
382
WOW , man excellent ability , +REP !!!... but , it would be even greater if you can pass it to JASS... but anyways , VERY good work , +REP asnd thanks-...
 
Level 13
Joined
Nov 22, 2006
Messages
1,260
Yeah, just do "Convert to JASS" and paste it here, I'll vJASS it. I'm sensing a why-don't-you-do-it-yourself tone, I forgot to mention that I don't have wc3, so I can't open the map (well, the code could probably be extracted somehow, but I don't want to mess with it). So can you do it, pleeeeeeease? *blink blink*
 
Level 16
Joined
Mar 26, 2004
Messages
569
JASS:
function Trig_Skill_up_Conditions takes nothing returns boolean
    if ( not ( GetLearnedSkillBJ() == 'A001' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Skill_up_Actions takes nothing returns nothing
    set udg_Manadrain = ( udg_Manadrain + 5.00 )
    set udg_BuffAmountMax = ( udg_BuffAmountMax + 1 )
endfunction

//===========================================================================
function InitTrig_Skill_up takes nothing returns nothing
    set gg_trg_Skill_up = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Skill_up, EVENT_PLAYER_HERO_SKILL )
    call TriggerAddCondition( gg_trg_Skill_up, Condition( function Trig_Skill_up_Conditions ) )
    call TriggerAddAction( gg_trg_Skill_up, function Trig_Skill_up_Actions )
endfunction

JASS:
function Trig_Spellcast_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A001' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spellcast_Func002C takes nothing returns boolean
    if ( not ( udg_HasWarcry == true ) ) then
        return false
    endif
    if ( not ( GetUnitAbilityLevelSwapped('A006', udg_SolemnCaster) != GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster) ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spellcast_Actions takes nothing returns nothing
    set udg_SolemnCaster = GetSpellAbilityUnit()
    if ( Trig_Spellcast_Func002C() ) then
        call ConditionalTriggerExecute( gg_trg_Buff_Remove )
    else
    endif
    call UnitAddAbilityBJ( udg_AbilityAttackSpeed[GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster)], udg_SolemnCaster )
    call UnitAddAbilityBJ( udg_AbilityDamage[GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster)], udg_SolemnCaster )
    call UnitAddAbilityBJ( 'A00C', udg_SolemnCaster )
    call SetUnitAbilityLevelSwapped( 'A006', udg_SolemnCaster, GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster) )
    call StartTimerBJ( udg_Bufftimer, false, 30 )
    //  
    call CreateNUnitsAtLocFacingLocBJ( 1, 'h001', GetOwningPlayer(udg_SolemnCaster), GetUnitLoc(udg_SolemnCaster), GetUnitLoc(udg_SolemnCaster) )
    call UnitAddAbilityBJ( 'A004', GetLastCreatedUnit() )
    call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
    call IssueTargetOrderBJ( GetLastCreatedUnit(), "bloodlust", udg_SolemnCaster )
    call EnableTrigger( gg_trg_Add_Bonuses )
    call EnableTrigger( gg_trg_Stops_Channeling )
endfunction

//===========================================================================
function InitTrig_Spellcast takes nothing returns nothing
    set gg_trg_Spellcast = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Spellcast, EVENT_PLAYER_UNIT_SPELL_CHANNEL )
    call TriggerAddCondition( gg_trg_Spellcast, Condition( function Trig_Spellcast_Conditions ) )
    call TriggerAddAction( gg_trg_Spellcast, function Trig_Spellcast_Actions )
endfunction

JASS:
function Trig_Add_Bonuses_Conditions takes nothing returns boolean
    if ( not ( udg_BuffAmount <= udg_BuffAmountMax ) ) then
        return false
    endif
    return true
endfunction

function Trig_Add_Bonuses_Func002001 takes nothing returns boolean
    return ( udg_HasWarcry == false )
endfunction

function Trig_Add_Bonuses_Actions takes nothing returns nothing
    set udg_BuffAmount = ( udg_BuffAmount + 1 )
    if ( Trig_Add_Bonuses_Func002001() ) then
        call SetUnitManaBJ( udg_SolemnCaster, ( GetUnitStateSwap(UNIT_STATE_MANA, udg_SolemnCaster) - udg_Manadrain ) )
    else
        call DoNothing(  )
    endif
    call SetUnitAbilityLevelSwapped( udg_AbilityAttackSpeed[GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster)], udg_SolemnCaster, ( GetUnitAbilityLevelSwapped(udg_AbilityAttackSpeed[GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster)], udg_SolemnCaster) + 1 ) )
    call SetUnitAbilityLevelSwapped( udg_AbilityDamage[GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster)], udg_SolemnCaster, ( GetUnitAbilityLevelSwapped(udg_AbilityDamage[GetUnitAbilityLevelSwapped('A001', udg_SolemnCaster)], udg_SolemnCaster) + 1 ) )
    call AddSpecialEffectTargetUnitBJ( "origin", udg_SolemnCaster, "Abilities\\Spells\\Human\\Feedback\\SpellBreakerAttack.mdl" )
endfunction

//===========================================================================
function InitTrig_Add_Bonuses takes nothing returns nothing
    set gg_trg_Add_Bonuses = CreateTrigger(  )
    call DisableTrigger( gg_trg_Add_Bonuses )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Add_Bonuses, 1.00 )
    call TriggerAddCondition( gg_trg_Add_Bonuses, Condition( function Trig_Add_Bonuses_Conditions ) )
    call TriggerAddAction( gg_trg_Add_Bonuses, function Trig_Add_Bonuses_Actions )
endfunction

JASS:
function Trig_Stops_Channeling_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A001' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Stops_Channeling_Actions takes nothing returns nothing
    set udg_HasWarcry = true
    call AddSpecialEffectTargetUnitBJ( "origin", udg_SolemnCaster, "Abilities\\Spells\\Demon\\DarkPortal\\DarkPortalTarget.mdl" )
    call DisableTrigger( gg_trg_Add_Bonuses )
    call DisableTrigger( GetTriggeringTrigger() )
    set udg_BuffAmount = 0
endfunction

//===========================================================================
function InitTrig_Stops_Channeling takes nothing returns nothing
    set gg_trg_Stops_Channeling = CreateTrigger(  )
    call DisableTrigger( gg_trg_Stops_Channeling )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Stops_Channeling, EVENT_PLAYER_UNIT_SPELL_ENDCAST )
    call TriggerAddCondition( gg_trg_Stops_Channeling, Condition( function Trig_Stops_Channeling_Conditions ) )
    call TriggerAddAction( gg_trg_Stops_Channeling, function Trig_Stops_Channeling_Actions )
endfunction

JASS:
function Trig_Buff_Remove_Actions takes nothing returns nothing
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 4
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        call UnitRemoveAbilityBJ( udg_AbilityAttackSpeed[GetForLoopIndexA()], udg_SolemnCaster )
        call UnitRemoveAbilityBJ( udg_AbilityDamage[GetForLoopIndexA()], udg_SolemnCaster )
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    call UnitRemoveAbilityBJ( 'A006', udg_SolemnCaster )
    call UnitRemoveAbilityBJ( 'A00C', udg_SolemnCaster )
    set udg_HasWarcry = false
endfunction

//===========================================================================
function InitTrig_Buff_Remove takes nothing returns nothing
    set gg_trg_Buff_Remove = CreateTrigger(  )
    call TriggerRegisterTimerExpireEventBJ( gg_trg_Buff_Remove, udg_Bufftimer )
    call TriggerAddAction( gg_trg_Buff_Remove, function Trig_Buff_Remove_Actions )
endfunction
 
Status
Not open for further replies.
Top