It is always nice to randomly come back into the Hive and see contests like these being held, I am sure going to join this. Good thing I made it just in time, it is already monday.
Time to get creative!
Time to get creative!
| The Nathrezim Agent is a much needed agility-based, short-ranged hero. The Undead faction has three strength-based tanky heroes, which is far too boring in my opinion. Also, the original Dreadlord is hardly to never used in any game, solely on the fact that he just gets overshadowed by all the better options. For the Nathrezim Agent, I wanted to make a unique and lore-integrating stand on the hero. The Nathrezim are known for their tricky, deception, and their capabilities with teleportation - none of which were presented with the vanilla Dreadlord. These demons are also bound by their own laws to fight as one; thus should have some sort of bond in the battlefield. I believe that this hero feel fit in fairly well with the rest of the Undead faction. He brings forth the aspects that no other hero there has. His play style can be either solo, commanding, or a dual-role with his brethren. The hero may be solo, like the main role of Undead, this hero is self sustaining; he may remain invisible while still feeding upon the enemies mana. As a commander, he may summon forth an entire army across the enemy base; or use it for a hasty escape. And finally, as a dual-hero, the Agent is made specifically for fighting along side Dreadlords. He has two abilities that work specifically designed to increase the Dreadlord's offensive capabilities. Maybe now the Dreadlord won't be so outrageously underused. | ||||||
Affiliation: Burning Legion Role: Support/Attacker Race: Nathrezim Gender: Male |
|
![]() | Ability Name: Mind War Ability description |
Level | Duration | Cooldown | Mana Cost | Range | Area of Effect | Allowed Targets | Effect |
1 | 6 s | 15 s | 75 | 900 | 150 | Air, Ground, Organic, Enemy | Prevents Attacks |
2 | 9 s | 15 s | 75 | 900 | 200 | Air, Ground, Organic, Enemy | Prevents Attacks |
3 | 12 s | 15 s | 75 | 900 | 250 | Air, Ground, Organic, Enemy | Prevents Attacks |
![]() | Ability Name: Deceive Ability description |
Level | Duration | Cooldown | Mana Cost | Range | Area of Effect | Allowed Targets | Effect |
1 | N/A | Toggle | 25, -10 per s | N/A | 900 | Self, player's Dreadlord | Shade, +10% attack rate |
2 | N/A | Toggle | 25, -10 per s | N/A | 900 | Self, player's Dreadlord | Shade, +20% attack rate |
3 | N/A | Toggle | 25, -10 per s | N/A | 900 | Self, player's Dreadlord | Shade, +30% attack rate |
![]() | Ability Name: Feeding Ability description |
Level | Duration | Cooldown | Mana Cost | Range | Area of Effect | Allowed Targets | Effect |
1 | N/A | N/A | N/A | N/A | 900 | Self, Player's Dreadlord | Drains 8 mana per strike, nearby Dreadlord receives 4 mana |
2 | N/A | N/A | N/A | N/A | 900 | Self, Player's Dreadlord | Drains 12 mana per strike, nearby Dreadlord receives 6 mana |
3 | N/A | N/A | N/A | N/A | 900 | Self, Player's Dreadlord | Drains 15 mana per strike, nearby Dreadlord receives 7 mana |
![]() | Ability Name: Summoning (Ultimate) Ability description |
Duration | Cooldown | Mana Cost | Range | Area of Effect | Allowed Targets | Effect | |
4 summons | 120 | 175 | Infinite | 500 | Air, Ground, Player Units | Teleports 3 player units from a select location to the Nathrezim Agent every 3 seconds | |
Nice one.
Nearby Dreadlords? You mean dreadlord heroes?
Here's my WIP (sorta) for the Undead faction.
Nathrezim Agent
General Information
Abilities
![]()
![]()
The Nathrezim Agent is a much needed agility-based, short-ranged hero. The Undead faction has three strength-based tanky heroes, which is far too boring in my opinion. Also, the original Dreadlord is hardly to never used in any game, solely on the fact that he just gets overshadowed by all the better options.
For the Nathrezim Agent, I wanted to make a unique and lore-integrating stand on the hero. The Nathrezim are known for their tricky, deception, and their capabilities with teleportation - none of which were presented with the vanilla Dreadlord. These demons are also bound by their own laws to fight as one; thus should have some sort of bond in the battlefield.
I believe that this hero feel fit in fairly well with the rest of the Undead faction. He brings forth the aspects that no other hero there has. His play style can be either solo, commanding, or a dual-role with his brethren. The hero may be solo, like the main role of Undead, this hero is self sustaining; he may remain invisible while still feeding upon the enemies mana. As a commander, he may summon forth an entire army across the enemy base; or use it for a hasty escape. And finally, as a dual-hero, the Agent is made specifically for fighting along side Dreadlords. He has two abilities that work specifically designed to increase the Dreadlord's offensive capabilities. Maybe now the Dreadlord won't be so outrageously underused.
Affiliation: Burning Legion
Role: Support/Attacker
Race: Nathrezim
Gender: Male
Strength = 16 + 1.9 Agility = 20 + 2.6(Primary) Intelligence = 16 + 1.5
Movement Speed: 300Attack Range: 350 Attack Cooldown: 2.0 s
Causes trickery in the mind of enemies in the an area, making them unable to attack for a short time.
![]()
Ability Name: Mind War
Ability description
Level Duration Cooldown Mana Cost Range Area of Effect Allowed Targets Effect
16 s 15 s 75 900 150 Air, Ground, Organic, Enemy Prevents Attacks
29 s 15 s 75 900 200 Air, Ground, Organic, Enemy Prevents Attacks
312 s 15 s 75 900 250 Air, Ground, Organic, Enemy Prevents Attacks
Infuses the Agent with layers of darkness, making the Agent invisible even when attacking or casting spells. Nearby Dreadlord and the Agent gain additional attack rate while ability is active. Drains mana until deactivated.
![]()
Ability Name: Deceive
Ability description
Level Duration Cooldown Mana Cost Range Area of Effect Allowed Targets Effect
1N/A Toggle 25, -10 per s N/A 900 Self, player's Dreadlord Shade, +10% attack rate
2N/A Toggle 25, -10 per s N/A 900 Self, player's Dreadlord Shade, +20% attack rate
3N/A Toggle 25, -10 per s N/A 900 Self, player's Dreadlord Shade, +30% attack rate
The Agent's vampiric magics drain the mana from enemies he attack, replenishing his own in the process. Nearby Dreadlord gains half as much mana.
![]()
Ability Name: Feeding
Ability description
Level Duration Cooldown Mana Cost Range Area of Effect Allowed Targets Effect
1N/A N/A N/A N/A 900 Self, Player's Dreadlord Drains 8 mana per strike, nearby Dreadlord receives 4 mana
2N/A N/A N/A N/A 900 Self, Player's Dreadlord Drains 12 mana per strike, nearby Dreadlord receives 6 mana
3N/A N/A N/A N/A 900 Self, Player's Dreadlord Drains 15 mana per strike, nearby Dreadlord receives 7 mana
Convene player-units in an area, teleporting them to the current location of the Agent. Summons 3 random unit's in the area to every 3 seconds. Each summons group arrives at the Agent's current location, not the point where it was casted. Lasts for 4 summons.
![]()
Ability Name: Summoning (Ultimate)
Ability description
Duration Cooldown Mana Cost Range Area of Effect Allowed Targets Effect
4 summons 120 175 Infinite 500 Air, Ground, Player Units Teleports 3 player units from a select location to the Nathrezim Agent every 3 seconds
Aw nonsense! There are plenty of good ideas floating around in the MPQs! In fact, I hope to be writing up a list of some of the better un-used Hero/Unit models up for the 2nd post to help people get ideas.
Besides, users shouldn't be making Hero ideas solely on the basis of custom resources... If the Hero leans too heavily on the aesthetics/art/presentation, that becomes a crutch. Good Hero Design can stand up even with no art.
They look good, be careful if it becomes OP.
Suggestion though; reduce the AoE of each Crossfire piece.
My Hero. Undead.
Reincarnated Ghoul [Ghoul Model] [Attack Damage Carry] [Agility]
1st Ability - Flesh Consume [Passive]
- Heals hp for every 8/12/18% of the damage done to enemy units.
2nd Ability - Deadly Claws
- Each attack has a 10% chance to deal 10/30/50 damage to the target.
3rd Ability - Ghoul Rage
- Each time the Ghoul kills a unit. It has a 5% chance to gain a temporary rage for 3/4/5 seconds. Has a 30% chance to Deadly Claws and +10% on Flesh Consume. If the Ghoul is on rage already this skill can't proc.
4th Ability - Smell Death
- Activate skills. For 20 seconds any unit who is below 15% will give Ghoul a 5% attackspeed and 20 damage. Up to 10/20/30 units can be detected. Cooldown 50 seconds. Consume 100 hp to activated. If Ghoul is below 100 hp this skill is free.
Tell me if this skill is OP..
That's totally cool. And don't worry about "things already being taken"; the rules say nothing about "dibs" (i.e. people can't "call ideas/models" & reserve them for themselves), and In-Game is somewhat constrained so I expected there to be a few Heroe submissions that would use the same model; it'll just go to show how creative either of you are as by direct comparison.Will be doing a Gilnean Pack Lord, Bandit lord? I think I'll use Garithos' but it's already taken.
I don't know about "imbalance" (time & play-testing will tell that), but I can tell you to check the First Post; your Hero is definitely a bit AoS-styled (you even said so with the 'long description'My Hero:
Name : Yange(Sange+Yasha=Yange xD)
Sub-Name : Polar Warrior
...
Brother of Ulfassar, Keeper of fallen knight's sword, Yange. And he named himself Yange. Ulfassar always fight with him without no reason. And Ulfassar told to move away from him. So he goes to northrend. During in there, he met Magina and Magina teaches him mana techiniques. And then he met Yurnero and Yurnero teaches him how to omnislash. And suddenly he dream about his brother. Yange quickly moves to his brother in day because he can't feel curse of dream again. When he reaches his village, Villager said that he moved to Sentinel to protect us. And then Yange is now joined Sentinel. Making friendly relations between Ulfassar.
Skills:
...
2nd Ability : Mana Swipe
- Yange's each attacks destory 10/15/20 mana and deals Intelligence as extra damage to heroes.
...
Oh and tell me if this is IMBALANCE!
I kinda posted with that purpose. xDi.e. people can't "call ideas/models" & reserve them for themselves
You may use any script or system from a Wc3 Modding-Site's database for your map. This means if you want to use a system you, yourself, have made, it will have to be approved and in the database before the contest's beginning.
What WIP lol.
What the hell does that mean? I don't want to get all theoretical, but the difference between "systems" and "spells" is totally indefinite - not to mention logic/data duality
Yeah that rule should be removed/deleted.
Whoo!!! I'm IN!!!! PLS!!!!!!May i join?
Love Seeker said:Can I use other's systems?
CakeMaster said:Wait, are icon recolors allowed?
Please check the Rules in the First Postbusterkomo said:Are we allowed any small model edits, like removing a unit's weapon/banner/etc?
I don't see why not; it's not in the Rules one way or another, and it's just using a tool to make your map smaller (not substantively change it or utilize outside/custom resources)... But I fail to see why you would need to; is the KB limit that small? "In-Game" contest means filesize limit is nearly a non-issue, methinks.Love Seeker said:... and can I optimize my map?
Bwaah? Nonsense. You don't have to be good at spells to make this Contest work for you; you just have to be good at Design! There are loads of unused Abilities in the Object Editor that you could take a look at... And as for "minimum 2 triggered abilities", well simply have a "Dummy-Casted" ability and you're set!Edge45 said:Dang it!, I would have joined this if I was good at spells, >.<#
Well, goodluck to the contestants,![]()
Glad to see you coming around, man. And unfortunately for you, while Night Elves are generally unpopular, that hasn't stopped me from making myKingz said:Seems Night Elfs are unpopular.
That makes my choice ever so easy.
Joining.
Schweet! Glad to see some people coming out of the woodwork to come full-circle (mixing euphemisms...). Hope you like how this one goes.busterkomo said:Haven't modded in like 4 years or some stuff but I'm totally in.
Fun fact: I ran the first ever Hero Contest at THW
Sure, I don't see why not. People, don't get too hung up on the "ENTRANTS MUST GO SOLO" thing; this is a community of collaboration. Now, I think we can all expect that the entry must be physically created (i.e. Editor-work) by you, and I think a majority (if not all) of the actual Design should be from your own mind... But getting some help playtesting? Trigger debugging? Tossing ideas around? That's all fair game, methinks.Footman16 said:Oh and by the way Kyrbi0 are you allowed to consult someone with better expertise than myself to check (quality/MUI check) the triggers before I submit?
Thanks!Garfield1337 said:Cool contest, I'll be watching this.
I might apply for a judge since I have time atm, but not sure yet.
1) S...u...r...e? I don't know in what setting they would be used (please let me know), but Blizzard has the golden-yellow Tooltip color, so everyone's should (at least) have that... Do you mean, like, information about the map (like at the beginning), or in the tooltips?Shadow Fury said:I have 2 question:-
1- Are coloured texts allowed?
2- Can I type "Cooldown" and "Mana cost" for the learn tooltip and Cooldown only for the tooltip or I must follow the basic blizzard style?
Eh, see above (Shadow Fury). When it comes to Contest Rules, I intend to be rather strict; when it comes to things inside the Rules it's up to you. "Theme" & "Role" are major components of the Criteria and are (hopefully) well-explained; if you want to make a Forest Troll hero by all means, go ahead. However, you might struggle in the Judging if you can't adequately rationalize what Forest Trolls are doing in whatever Faction you pick (Orcs being the most logical choice, but they have Darkspear Trolls now, so...)Chenralstrasz said:Revantusks?
Oh dang, thanks for reminding me about that. I meant to attach that map to the first post (even though anyone who can enter must have World Editor & thus Warcraft 3, & should be able to find it).Empirean said:yey i found turtle (4)rock.w3x
I would say something about how having only 1 "Proper Name" is problematic for fitting into Wc3... But see the above (Chen & ShadowFury). Just keep that in mind. : )Dalvengyr said:Anyway, my Hero's name is Wind Tempest (Proper name: Auorax). It's a night elf Hero which will be replacing Hero Warden...
Wow, what a fancy-dancy WIP you got there, man... A few years back, and I'd be right there with you (posting a beautifully-illustrated WIP post)... But nowadays I'm lucky if I have time to make the darn thing. Well anyway...Wa666r said:My WIP: The Nathrezim Agent!
Cokemonkey11 said:What the heck does that mean? I don't want to get all theoretical, but the difference between "systems" and "spells" is totally indefinite - not to mention logic/data duality
u gaiz r 2 smrt 4 me...Dat-C3 said:Yeah that rule should be removed/deleted.
See the above (Shadow Fury, Chen, Dalv, etc). We won't dictate to that level what contestants do, but remember that it will be judged according to Theme & how well it fits in Wc3, and (like with Wa666r), using the same exact model (even with SFX attachments) could prove problematic.can we use hero model that already used in altar? example i use warden model but modifiy her skill
and can we use attachment to give some effect that differ it from the hero like give it sphere or something in their hand
This is precisely why I put that Rule in 'underlines', because I wasn't positive about it's implementation. See my earlier post about why this might be a good Rule to keep, Dat-C3... But as for you, CokeMonkey, I'll be honest; I have no friggin' clue. Lol, I would've said "spells are chunks of code that make a specific custom ability" and "systems are stand-alone instances of code that let you do some different things more easily"... But I am realizing that the distinction is not quite so clear-cut as I had hoped. (How are things 'differentiated' here in the Spells Resource Section, then??)
'Spells' are one-night-stands, while 'Systems' are full-on marriages.
As in my earlier post, we want to encourage people to create as much as possible 'from scratch'; if, for example, someone were to whip up a Hero utilizing entirely existing Systems & uploaded Spells, that would not be fair to those whoslaved over a hot Trigger Editor or JNGPworked hard to make their stuff from scratch.
Almia said:Name : Gairam, The Fate Weaver
Race: Undead
Primary: Agi
Abilities:
1. Time Blanket
Gairam enters a temporal blanket that exists between time frames, pausing the fates of his and everyone that he collides. Units affected by this ability receives damage and causes the effects Gairam applied to be extended, if they are affected.
2.?
3. Age Molt
By manipulating his own time frame, Gairam grows much faster, causing an additional HP regeneration for a short time. After he is fully grown, Gairam molts his own exoskeleton, becoming younger again, causing all buffs he has to be removed.
4. Fate Weave
Gairam manipulates the fate of every enemy, disabling the enemy's regeneration for a short time. Any kind of regeneration, natural, instant or over time, will not affect it's host.
Still thinking for a passive because all of the above are active! XD
Those both sound really interesting, but I would like to point out that those seem rather "AoS-y" (one Proper Name, a unique & non-repeatable entity, self-centered spells, etc)... Maybe it's just me, but remember the setting for this Contest (i.e. Hero Additions to the Factions).CakeMaster said:======================
Hero Change;
Arash the Keen - Orc Machinist
Q - Jet Flame
[Toggle] Spawns heavy flames forwards, dealing 20/30/40 damage per second to enemies in a line but draining mana.
W - Firewall
Creates a wall of fire at a target location, lasting for 3 seconds. Enemies that are in it take 10/20/30% more damage and are slowed by 15/20/25%.
E - Combustion
Every three attacks deals 100/120/140% of Agility as bonus damage and grants the Machinist 15/20/25% movement speed for 2 seconds. Attacks against enemies in a Firewall count as two.
R - ?
Um no?So basically you're saying you'd prefer to limit the quality of others' software engineering so that you can make things marginally more difficult for people who want to reuse code?
originality and design are judgment criteria, not line-count and obfuscation. That's just masochistic![]()
Good questions... Erg...VermillionEdict said:Would a 'custom' soundset, made from other ingame content be okay?
What about cosmetic abilities like Spider Attack, or Lightning Attack, which modify the basic attack graphics.
All submitted entries must have a filename in the format:
THW.HC7.<MyHeroName>.w3x
Sure, I don't see why not. People, don't get too hung up on the "ENTRANTS MUST GO SOLO" thing; this is a community of collaboration. Now, I think we can all expect that the entry must be physically created (i.e. Editor-work) by you, and I think a majority (if not all) of the actual Design should be from your own mind... But getting some help playtesting? Trigger debugging? Tossing ideas around? That's all fair game, methinks.
Meh, we'll see. I'm not super-sold either way.Makes more sense to be <UserName> than <HeroName>, but hey your rule.
It's a fine line.Kingz said:This is really not the way it should be tho.
Asking others to fix your code or optimize it defeats the purpose of actually using it in the final grade of your submission.
It's not paired hero contest lol.
Bug testing is fine as in: i played your submission, spotted a bug doing this.
But shouldn't be fine: your code at line X can/will cause a problem cause of reason Y.
Or we will see the spell section populated by spells from this contest and getting fixed by others.
Others might not see to this point as me but it's how i feel on the subject.
Kyrbi0 said:u gaiz r 2 smrt 4 me...
This is precisely why I put that Rule in 'underlines', because I wasn't positive about it's implementation. See my earlier post about why this might be a good Rule to keep, Dat-C3... But as for you, CokeMonkey, I'll be honest; I have no friggin' clue. Lol, I would've said "spells are chunks of code that make a specific custom ability" and "systems are stand-alone instances of code that let you do some different things more easily"... But I am realizing that the distinction is not quite so clear-cut as I had hoped. (How are things 'differentiated' here in the Spells Resource Section, then??)
Think of it this way...
'Spells' are one-night-stands, while 'Systems' are full-on marriages.
As in my earlier post, we want to encourage people to create as much as possible 'from scratch'; if, for example, someone were to whip up a Hero utilizing entirely existing Systems & uploaded Spells, that would not be fair to those who slaved over a hot Trigger Editor or JNGP worked hard to make their stuff from scratch.
At the same time, there are certain systems (I believe; again, showing my ignorance as a true Coder) that provide invaluable functionalities & really make life easier for Coders (things like Timers, Damage Detection, Dynamic Hash-Duplex Indexing (<- made that up)...?); as long as they are publicly available (i.e. "already uploaded to the site") it makes sense that people can use them.
I think? Let me know. I will definitely ask some questions of my betters about it, though.
scope FrozenSpellpack
globals
private constant integer DUMMY_ID = 'h000'
private constant real SFX_DECAY_TIME = 5.0
endglobals
private module FrostwaveData
static constant integer SPELL_ID = 'A000'
static constant integer SHARD_COUNT = 7
static constant real LAUNCH_Z = 40.0
static constant real SPEED_MIN = 20.0
static constant real SPEED_MAX = 50.0
static constant real ACCELERATION = 5.0
static constant real TURN_RATE = 6.0 * bj_DEGTORAD
static constant string MISSILE_PATH = "war3mapImported\\IceBolt.mdx"
static constant method aoe takes integer l returns real
return 100.0
endmethod
static constant method damage takes integer l returns real
return 60.0 * l
endmethod
static constant method duration takes integer l returns real
return 2.75
endmethod
endmodule
native UnitAlive takes unit id returns boolean
private function getDistance takes real x, real y, real xt, real yt returns real
return SquareRoot((xt - x) * (xt - x) + (yt - y) * (yt - y))
endfunction
private function getAngle takes real x, real y, real xt, real yt returns real
return Atan2(yt - y, xt - x)
endfunction
private function isInBound takes real x, real y returns boolean
return x >= WorldBounds.minX and x <= WorldBounds.maxX and y >= WorldBounds.minY and y <= WorldBounds.maxY
endfunction
private struct Freeze
static method apply takes unit u, real dur returns thistype
local thistype this = allocate()
return this
endmethod
endstruct
scope Frostwave
private module KillShard
call UnitApplyTimedLife(i.m.u[j], 'BTLF', SFX_DECAY_TIME)
call DestroyEffect(i.m.e[j])
set i.m.e[j] = null
set i.m.u[j] = null
set i.m.b[j] = false
set i.m.c = i.m.c - 1
if i.m.c < 0 then
call i.m.destroy()
set b = true
endif
endmodule
private struct data extends array
implement FrostwaveData
static constant real TAU = bj_PI * 2
static constant real ANGLE_ADD = TAU/data.SHARD_COUNT
static constant player PASSIVE = Player(PLAYER_NEUTRAL_PASSIVE)
endstruct
private keyword Frostwave
private struct IceShard
readonly integer c
readonly real array s[data.SHARD_COUNT]
readonly real array a[data.SHARD_COUNT]
readonly real array x[data.SHARD_COUNT]
readonly real array y[data.SHARD_COUNT]
readonly unit array u[data.SHARD_COUNT]
readonly boolean array b[data.SHARD_COUNT]
readonly effect array e[data.SHARD_COUNT]
private static method inRadius takes real x, real y, real xt, real yt, real r returns boolean
return (x - xt) * (x - xt) + (y - yt) * (y - yt) <= r * r
endmethod
static method move takes Frostwave i returns boolean
local integer j = 0
local boolean b = false
local real a
loop
exitwhen j > data.SHARD_COUNT
if i.m.b[j] then
set i.m.x[j] = i.m.x[j] + i.m.s[j] * Cos(i.m.a[j])
set i.m.y[j] = i.m.y[j] + i.m.s[j] * Sin(i.m.a[j])
if isInBound(i.m.x[j], i.m.y[j]) then
if inRadius(i.m.x[j], i.m.y[j], i.tX, i.tY, i.m.s[j]) then
implement KillShard
else
set a = getAngle(i.m.x[j], i.m.y[j], i.tX, i.tY)
call SetUnitX(i.m.u[j], i.m.x[j])
call SetUnitY(i.m.u[j], i.m.y[j])
call SetUnitFacing(i.m.u[j], i.m.a[j] * bj_RADTODEG)
if data.TURN_RATE != 0 and Cos(i.m.a[j] - a) < Cos(data.TURN_RATE) then
if Sin(a - i.m.a[j]) >= 0 then
set i.m.a[j] = i.m.a[j] + data.TURN_RATE
else
set i.m.a[j] = i.m.a[j] - data.TURN_RATE
endif
else
set i.m.a[j] = a
set i.m.s[j] = i.m.s[j] + data.ACCELERATION
if i.m.s[j] > data.SPEED_MAX then
set i.m.s[j] = data.SPEED_MAX
endif
endif
endif
else
implement KillShard
endif
endif
set j = j + 1
endloop
return b
endmethod
static method create takes real x, real y, real f returns thistype
local thistype this = allocate()
local integer i = 0
set f = f - data.ANGLE_ADD * (data.SHARD_COUNT/2)
set .c = data.SHARD_COUNT - 1
loop
exitwhen i > .c
set .s[i] = data.SPEED_MIN
set .a[i] = f
set .b[i] = true
set .x[i] = x
set .y[i] = y
set .u[i] = CreateUnit(data.PASSIVE, DUMMY_ID, x, y, f * bj_RADTODEG)
set .e[i] = AddSpecialEffectTarget(data.MISSILE_PATH, .u[i], "origin")
if UnitAddAbility(.u[i], 'Amrf') and UnitRemoveAbility(.u[i], 'Amrf') then
endif
call SetUnitFlyHeight(.u[i], data.LAUNCH_Z, 0)
set f = f + data.ANGLE_ADD
set i = i + 1
endloop
return this
endmethod
endstruct
private struct Frostwave extends array
unit c
player p
real tX
real tY
real a // AoE
real d // Damage
real r // Duration
IceShard m
implement CTL
local boolean b
implement CTLExpire
set b = IceShard.move(this)
if b then
call destroy()
endif
implement CTLEnd
private static method onCast takes nothing returns boolean
local thistype this = create()
local integer l
local real a
local real x
local real y
set .c = GetTriggerUnit()
set .p = GetTriggerPlayer()
set x = GetUnitX(.c)
set y = GetUnitY(.c)
set .tX = GetSpellTargetX()
set .tY = GetSpellTargetY()
set l = GetUnitAbilityLevel(.c, data.SPELL_ID)
set a = getAngle(x, y, .tX, .tY)
set .m = IceShard.create(x, y, a)
set .d = data.damage(l)
set .a = data.aoe(l)
set .r = data.duration(l)
return false
endmethod
static if not LIBRARY_SpellEffectEvent then
private static method check takes nothing returns boolean
if GetSpellAbilityId() == data.SPELL_ID then
call thistype.onCast()
endif
return false
endmethod
endif
private static method onInit takes nothing returns nothing
local trigger t
static if LIBRARY_SpellEffectEvent then
call RegisterSpellEffectEvent(data.SPELL_ID, function thistype.onCast)
else
set t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t, Condition(function thistype.check))
endif
endmethod
endstruct
endscope
endscope