hell_knight
Playing WoW
- Reaction score
- 126
My idea will function like a boomerang, you charge it up maybe make it like in zelda choose 5 points ect, Probaly gonna make it pick up items too ect
- WolSHaman
- darkchaoself
- rodead
[*]Tinki3- PurgeandFire
[*]Uareanoob- Grymlax
- hell_knight9
- The Mapmaker
[*]Rheias- 0zaru
[*]Naminator
[*]~GaLs~- Nyph
[*]Überplayer- Prediter[BuB
- Hatebreeder
- Pigger
- NuBy
- FroznYoghurt
- Slywolf15
- Sevion
Bolded ones are the ones that you should watch out for
Dont take it personally if your not bolded
Actually, I'm kinda glad to be in a contest with them. Besides, my GUI skills are no match anyway to their JASS skills!
I don't use Jass. I use godlike SFX.
think you forgot Pyro in that list
Everyone please take this contest seriously... I am hoping to see some superb spell around XD
function B2S takes boolean B returns string
if B then
return "True"
else
return "False"
endif
endfunction
//*******************************************************************
//* Start Configuration *
//*******************************************************************
constant function GB_AbilityId takes nothing returns integer
return 039;A001039;
endfunction
constant function GB_DummyAbilityId takes nothing returns integer
return 039;A003039; //The Raise Dead ability that is actually cast
endfunction
constant function GB_DummyUnitId takes nothing returns integer
return 039;h000039;
endfunction
constant function GB_DummyEffectUnitId takes nothing returns integer
return 039;h001039;
endfunction
constant function GB_ThrowInterval takes integer Level returns real
return 1.50
endfunction
constant function GB_Radius takes integer Level returns real
return 200.00
endfunction
constant function GB_NumberOfIterations takes integer Level returns integer
return 5
endfunction
constant function GB_ChannelingOrderString takes nothing returns string
return "starfall"
endfunction
constant function GB_GroundEffectPath takes nothing returns string
return "Abilities\\Spells\\Human\\FlameStrike\\FlameStrikeTarget.mdl"
endfunction
constant function GB_FirstOnCast takes nothing returns boolean
return true
endfunction
constant function GB_CorpseFlyHeight takes integer Level returns real
return 300.00
endfunction
constant function GB_CorpseFlyHeightRate takes integer Level returns real
return 150.00
endfunction
constant function GB_Damage takes integer Level returns real
return 50.00*Level
endfunction
//*******************************************************************
//* End Configuration *
//*******************************************************************
function GB_CastConditions takes nothing returns boolean
return GetSpellAbilityId() == GB_AbilityId()
endfunction
function GB_RaiseDeadDetectConditions takes nothing returns boolean
return GetUnitTypeId(GetSummonedUnit()) == GB_DummyEffectUnitId()
endfunction
function GB_EnemyFilter takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(), bj_forceRandomCurrentPick)
endfunction
function GB_CorpseLevitateCallback takes nothing returns nothing
call BJDebugMsg("Levitated Fully")
endfunction
function GB_RaiseDeadDetect takes nothing returns nothing
local unit U = GetSummoningUnit
local timer T = GetAttachedTimer(U, "GB Timer")
local unit U2 = GetSummonedUnit()
local real X = GetUnitX(U2)
local real Y = GetUnitY(U2)
local group G = CreateGroup()
local boolexpr B = Condition(function GB_EnemyFilter)
local player P = GetOwningPlayer(U)
local integer Level = GetAttachedInt(T, "GB Level")
local real R = GB_Radius(Level)
local unit Target
local real Angle
local timer T = CreateTimer()
set bj_forceRandomCurrentPick = P
call GroupEnumUnitsInRange(G, X, Y, R, B)
set bj_forceRandomCurrentPick = null
set Target = GroupPickRandomUnit(G)
set X2 = GetUnitX(Target)
set Y2 = GetUnitY(Target)
call DestroyGroup(G)
call DestroyBoolExpr(B)
set Angle = Atan2(Y2-Y, X2-X)*59.295827
call AttachObject(T, "GB
call AttachReal(T, "GB Angle", Angle)
call AttachReal(T, "GB Target X", X2)
call AttachReal(T, "GB Target Y", Y2)
call TimerStart(T, 0.03, true, function GB_MoveCallback)
set T = null
set Target = null
set U = null
set U2 = null
endfunction
function GB_ThrowCallback takes nothing returns nothing
local timer T = GetExpiredTimer()
local unit U = GetAttachedUnit(T, "GB Caster")
local real X = GetAttachedReal(T, "GB CastX")
local real Y = GetAttachedReal(T, "GB CastY")
local integer Level = GetAttachedInt(T, "GB Level")
local integer Countup = GetAttachedInt(T, "GB Countup")
local group G = CreateGroup()
local unit Corpse
local real R = GB_Radius(Level)
local boolexpr B = Condition(function GB_DeadUnitFilter)
local player P = GetOwningPlayer(U)
local unit Target
local real X2
local real Y2
local real X3
local real Y3
local real Angle
local unit ExplosionDummy
local timer T2 = CreateTimer()
local unit U2
local real Height = GB_CorpseFlyHeight(Level)
local real Rate = GB_CorpseFlyHeightRate(Level)
local boolean CorpseAvailable
local unit Dummy
set Countup = Countup+1
if (Countup > GB_NumberOfIterations(Level)) or (GetUnitCurrentOrder(U) != OrderId(GB_ChannelingOrderString())) then
call DestroyEffect(GetAttachedEffect(T, "GB Ground Effect"))
call PauseTimer(T)
call CleanAttachedVars(T)
call DestroyTimer(T)
else
call AttachInt(T, "GB Countup", Countup)
set Dummy = CreateUnit(P, GB_DummyUnitId(), X, Y, 0.00)
call UnitApplyTimedLife(Dummy, 039;BTLF039;, 2.00)
call UnitAddAbility(Dummy, GB_DummyAbilityId())
call IssueImmediateOrder(Dummy, "raisedeadon")
call IssueImmediateOrder(Dummy, "instant")
call AttachObject(Dummy, "GB Timer", T)
// call GroupEnumUnitsInRange(G, X, Y, R, B)
// set Corpse = GroupPickRandomUnit(G)
// set X2 = GetUnitX(Corpse)
// set Y2 = GetUnitY(Corpse)
// call GroupClear(G)
// call DestroyBoolExpr(B)
// set bj_forceRandomCurrentPick = P
// set B = Condition(function GB_EnemyFilter)
// call GroupEnumUnitsInRange(G, X, Y, R, B)
// set bj_forceRandomCurrentPick = null
// set Target = GroupPickRandomUnit(G)
// set X3 = GetUnitX(Target)
// set Y3 = GetUnitY(Target)
// call DestroyGroup(G)
// call DestroyBoolExpr(B)
// set Angle = Atan2(Y3-Y2, X3-X2)*59.295827
// set ExplosionDummy = CreateUnit(P, GetUnitTypeId(Corpse), X2, Y2, Angle)
// call UnitAddAbility(ExplosionDummy, 'Aloc')
// call SetUnitExploded(ExplosionDummy, true)
// call KillUnit(ExplosionDummy)
// set U2 = Corpse
// set Corpse = CreateUnit(P, GB_DummyEffectUnitId(), X2, Y2, Angle)
// call AttachReal(Corpse, "GB Corpse Max Life", GetUnitState(U2, UNIT_STATE_MAX_LIFE))
// call AttachObject(T2, "GB Corpse", Corpse)
// call RemoveUnit(U2)
// call SetUnitFlyHeight(Corpse, Height, Rate)
// call TimerStart(T2, Height/Rate, false, function GB_CorpseLevitateCallback)
endif
set T = null
set U = null
set G = null
set Corpse = null
set B = null
set P = null
set Target = null
set ExplosionDummy = null
set T2 = null
set U2 = null
endfunction
function GB_Cast takes nothing returns nothing
local unit U = GetTriggerUnit()
local real X = GetUnitX(U)
local real Y = GetUnitY(U)
local timer T = CreateTimer()
local integer Level = GetUnitAbilityLevel(U, GB_AbilityId())
local integer Countup = 0
local unit Corpse
local unit Target
local unit ExplosionDummy
local group G = CreateGroup()
local real R = GB_Radius(Level)
local real X2
local real Y2
local real X3
local real Y3
local player P = GetOwningPlayer(U)
local real Angle
local timer T2
local unit U2
local real Height = GB_CorpseFlyHeight(Level)
local real Rate = GB_CorpseFlyHeightRate(Level)
local boolean CorpseAvailable
local unit Dummy
call AttachObject(T, "GB Caster", U)
call AttachReal(T, "GB CastX", X)
call AttachReal(T, "GB CastY", Y)
call AttachInt(T, "GB Level", Level)
call AttachObject(T, "GB Ground Effect", AddSpecialEffect(GB_GroundEffectPath(), X, Y))
call BJDebugMsg("Cast")
if GB_FirstOnCast() then
set Countup = Countup+1
set Dummy = CreateUnit(P, GB_DummyUnitId(), X, Y, 0.00)
call UnitApplyTimedLife(Dummy, 039;BTLF039;, 2.00)
call UnitAddAbility(Dummy, GB_DummyAbilityId())
call IssueImmediateOrder(Dummy, "raisedeadon")
call IssueImmediateOrder(Dummy, "instant")
call AttachObject(Dummy, "GB Timer", T)
// call AttachObject(T2, "GB Corpse", Corpse)
// call SetUnitFlyHeight(Corpse, Height, Rate)
// set T2 = CreateTimer()
// call TimerStart(T2, Height/Rate, false, function GB_CorpseLevitateCallback)
endif
call AttachInt(T, "GB Countup", Countup)
call TimerStart(T, GB_ThrowInterval(Level), true, function GB_ThrowCallback)
set U = null
set T = null
set Corpse = null
set Target = null
set ExplosionDummy = null
set G = null
set B = null
set P = null
set T2 = null
set U2 = null
endfunction
//==========================================================================================
function InitTrig_Grisly_Barrage takes nothing returns nothing
local trigger RaiseDeadDetect = CreateTrigger()
set gg_trg_Grisly_Barrage = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_Grisly_Barrage, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(gg_trg_Grisly_Barrage, Condition(function GB_CastConditions))
call TriggerAddAction(gg_trg_Grisly_Barrage, function GB_Cast)
call TriggerRegisterAnyUnitEventBJ(RaiseDeadDetect, EVENT_PLAYER_UNIT_SUMMON)
call TriggerAddCondition(RaiseDeadDetect, Condition(function GB_RaiseDeadDetectConditions))
call TriggerAddAction(RaiseDeadDetect, function GB_RaiseDeadDetect)
set RaiseDeadDetect = null
endfunction
Cool, maybe I start coding my spell already =).
@Pyrogasm
Just palce your code inside a structure and make the functions private .
think you forgot Pyro in that list
No he didn't.
Yes he is, he missed out pyrogasm...
>>Bolded ones are the ones that you should watch out for
Dont take it personally if your not bolded
I do, why me? lol
But i feel greats
You did forget me... bastard.
That sounds damn cool. If the name hadn't been used in a spell contest at Wc3c, I would have suggested that you call it "Gravestorm". Maybe, uhhh, something like "Forsaken Cemetary"... blah, I don't know.
Props to you if you make it work well.